王姍姍 余山山 張文毅 王興松
(1.東南大學機械工程學院, 南京 211189; 2.農(nóng)業(yè)農(nóng)村部南京農(nóng)業(yè)機械化研究所, 南京 210014)
作為精準農(nóng)業(yè)的重要組成部分,農(nóng)業(yè)機器人視覺導航技術越來越受關注[1-4],并已廣泛應用于農(nóng)作物種植、除草、施藥、收獲等[5-8]作業(yè)環(huán)節(jié)。水稻秧苗行檢測可為插秧機的自動導航和水稻行間除草提供依據(jù),是水田農(nóng)業(yè)機械智能化的重要組成部分[9-10],促進了精準農(nóng)業(yè)的發(fā)展。
目前,國內外專家學者主要對玉米、小麥、蔬菜等旱地作物的作物行檢測進行了研究,對水田水稻秧苗行檢測的研究極少。最小二乘法已被廣泛用于作物行中心線提取[11],與Hough變換相比,最小二乘法計算簡單、實時性好,但其準確性易受噪聲影響,導致作物行中心線提取的魯棒性差[12]。MONTALVO等[13-14]將最小二乘法應用于具有高雜草密度的玉米田作物行圖像檢測。JIANG等[15]在假設作物行間距相等的基礎上,采用多個感興趣區(qū)域(ROI)移動的方法將特征點進行聚類,該算法在高雜草密度的作物圖像中可以成功提取特征點,但作物行等間距的前提條件使該方法在實際農(nóng)田環(huán)境中應用受限。司永勝等[16]提出基于最小二乘法的早期作物行中心線檢測算法,利用特征點的鄰近關系對目標點分類,用最小二乘法對作物行的特征點集進行擬合,然而在分類過程中,當前點的選擇對分類以及直線擬合有很大影響,容易受到噪聲點干擾。ZHANG等[17]提出一種玉米田穩(wěn)健作物行檢測方法,該方法先采用基于Ostu的雙閾值結合粒子群優(yōu)化的改進分割算法將作物行從背景中分離,然后通過位置聚類算法和最短路徑確認最終的聚類特征點集,最后采用最小二乘法擬合作物行。
Hough變換和一些原始變換形式已被廣泛用于基于視覺的農(nóng)業(yè)導航系統(tǒng)中的作物行檢測[18-21],結合顏色特征和閾值處理將作物從圖像中分割出來,通過Hough變換及其改進方法提取作物行的中心線,這適用于低雜草密度分布情況下的作物行檢測。JI等[22]提出一種基于梯度的隨機Hough變換算法,該算法可以有效地適應植株密度的變化,比標準Hough變換的速度更快,檢測準確率更高。JIANG等[23]提出了Hough變換與消隱點約束相結合的算法。張勤等[24]提出一種基于最小核值相似區(qū)(SUSAN)的除草機器人導航方法,根據(jù)SUSAN角點提取秧苗特征點,使用改進的順序聚類算法和基于已知點的Hough變換提取秧苗行中心線。Hough 變換受噪聲影響小,魯棒性強,但存在峰值檢測難和計算量大等問題。
針對水稻秧苗行檢測容易受到雜草噪聲和農(nóng)田環(huán)境光照變化等因素影響的問題,為提高秧苗行檢測的魯棒性和精度,本文基于卷積神經(jīng)網(wǎng)絡(Faster RCNN)獲得秧苗特征點,提出一種基于秧苗特征點鄰域的Hough變換算法,計算特征點鄰域Hough空間的峰值,以解決Hough變換峰值檢測困難的問題,從而準確提取秧苗行中心線。
本研究使用的圖像采集于江蘇省鹽城市的水稻實驗田,選擇機插秧苗作為研究對象,在秧苗的第1個雜草萌發(fā)期即機插后8~12 d,此時的雜草主要以禾本科和異型莎草科雜草為主,分別在晴天和陰天情況下,在水稻實驗田采集不同位置(不同密度的雜草分布和秧苗生長狀況)圖像。
將佳能數(shù)碼相機安裝在可移動支架上進行靜態(tài)圖像采集,相機離地高度約1.0 m,相機中心線相對于垂直方向的傾斜角約為30°,相機隨著支架移動以采集不同位置的水稻秧苗行圖像。獲得的圖像通過 USB線傳輸?shù)接嬎銠C,采集的原始水稻秧苗行圖像的分辨率為2 592像素×1 728像素,以jpeg格式存儲在RGB顏色空間,圖1為不同情況下采集的水稻秧苗行圖像。
圖1 具有代表性的水稻秧苗行圖像Fig.1 Representative images of rice seedling rows
采用Windows 10系統(tǒng),CPU為Intel i7-6900K,8核16線程,主頻3.20 GHz,32 GB DDR4內存,英偉達GTX1080Ti顯卡。采用軟件為CUDA9.0、CUDNN7.1、Python3.6,Tensorflow 1.10 框架搭建深度學習環(huán)境,Visual Studio 2015配置OpenCV4.0圖像處理庫。
1.3.1圖像預處理
2018年7月在江蘇省鹽城市的水稻實驗田采集了約1 000幅水稻秧苗圖像,采集的原始水稻秧苗行圖像的分辨率為2 592像素×1 728像素,過高的分辨率導致增加訓練參數(shù)和時間耗費,因此先對原始圖像進行縮放,縮放為原分辨率的1/4,則縮放后的分辨率為648像素×432像素。采集圖像的80%作為訓練集,20%作為測試集。然后使用LabelImg工具對樣本集中的水稻秧苗進行逐一標注,生成對應的xml格式的目標框位置文件。
1.3.2基于Faster RCNN的水稻秧苗檢測模型
基于Faster RCNN[25]的水稻秧苗檢測模型框架如圖2所示。①使用13 Conv+13 ReLU+4 Pooling提取圖像特征,生成一組特征圖,其中Conv層的卷積核尺寸為3×3,填充為1,步長為1,Pooling層的卷積核尺寸為2×2, 步長為2,輸出特征圖的尺寸是輸入圖像的1/16,該特征圖被共享用于后續(xù)Region proposal networks (RPN)層和全連接層。② RPN用于生成能夠區(qū)分前景和背景的精確候選區(qū)域,RPN層通過Softmax分類錨點框屬于前景還是背景,再利用Bounding box回歸修正錨點框獲得精確的候選框。③ROI Pooling 層利用RPN生成的候選框和VGG16得到特征圖,從特征圖中得到候選特征圖(尺寸、位置由RPN生成),并通過Pooling層生成固定尺寸的輸出。④Classifier層對ROI Pooling層形成固定尺寸的特征圖進行全連接操作,利用Softmax進行秧苗和背景的分類,同時利用Bounding box回歸操作獲得秧苗的精確位置,完成秧苗目標識別和精確定位。
圖2 基于Faster RCNN的水稻秧苗檢測模型結構Fig.2 Rice seedling detection model structure based on Faster RCNN
秧苗檢測中感興趣區(qū)域搜索使用Faster RCNN 中的RPN 模塊,錨點框的中心點坐標就是當前特征圖的像素點映射到輸入圖像上對應區(qū)域的中心點,設置不同尺寸和不同長寬比可以在輸入圖像上獲得不同尺寸的先驗錨點框。本研究選擇3種尺寸、3種長寬比,對當前特征圖的每個點從原圖中標記出9個錨點框。其中在生成錨點框時,先定義一個尺寸為16×16的基準錨點框,長寬比的參數(shù)設置為[0.5, 1, 2],根據(jù)輸入圖像中秧苗尺寸,設定3 種尺寸為 [2, 4, 8];經(jīng)過尺寸和長寬比不同的組合,形成 [32, 32]、[16, 32]、[32, 16]、[64, 64]、[32, 64]、[64, 32]、[128, 128]、[128, 64]、[64, 128]共9種錨點框。
針對水稻秧苗數(shù)據(jù)集,需要把原始的多類檢測模型修改為針對水稻秧苗檢測的單類檢測模型。水稻秧苗檢測模型使用VGG16網(wǎng)絡的13個卷積層提取水稻秧苗圖像的特征,并在Classifier層保留VGG16網(wǎng)絡的前兩個全連接層,由于模型只檢測單個類別,需要去掉VGG16網(wǎng)絡的最后一個全連接層,如圖2所示,Classifier層兩個全連接層后的輸出包括cls_score和bbox_predict,其中cls_score層用于分類,輸出p=(p0,p1)表示屬于背景和秧苗的概率;bbox_predict層輸出Bounding box回歸的位置偏差。
利用水稻秧苗檢測模型得到水稻秧苗的特征點即預測框的中心點后,由于插秧機的前進方向不完全筆直,受地形坡度等影響,水稻秧苗行曲率較大。傳統(tǒng)的Hough變換對曲率較大的作物行檢測效果較差,本文提出一種基于特征點鄰域的Hough變換算法,可以用來識別不同曲率的水稻秧苗行,并且對孤立的雜草噪聲不敏感,相對于最小二乘法具有較好的魯棒性。該方法主要包括基于特征點鄰域的Hough圖像計算和基于直方圖投影的峰值參數(shù)計算。
1.4.1基于特征點鄰域的Hough圖像計算
Hough變換的主要思想是將直角坐標系下的直線映射為參數(shù)空間下的峰值點,假設直線方程為r=xcosθ+ysinθ,其中r表示該直線到原點的距離,θ表示該直線經(jīng)過原點的垂線與x軸之間的夾角。Hough變換將x、y作為已知量,那么直角坐標系下的直線方程在參數(shù)空間表示為點(r,θ)。直角坐標系下的每個點對應參數(shù)空間的一條曲線,直角坐標系下的一條直線上有多個點,在參數(shù)空間對應多條曲線,這些曲線相交于一點,該點坐標值即為所求參數(shù)r和θ。
如圖3所示,水稻秧苗預測框的中心點即為秧苗的特征點,用紅色點表示。水稻秧苗檢測模型得到的特征點不一定在一條直線上,可能分布于直線兩側,本文提出對秧苗特征點的鄰域進行Hough變換,假設特征點的鄰域是[xi-d,xi+d](圖3中用藍線表示,鄰域長度設置為2d),以每個特征點為鄰域中心,把特征點鄰域內的所有點映射到Hough參數(shù)空間。
圖3 特征點鄰域示意圖Fig.3 Schematic of neighborhood of feature points
特征點鄰域的Hough空間計算方法如下:
(1)建立一個二維圖像hough_2D,寬度方向表示距離r,高度方向表示角度θ,遍歷所有水稻秧苗特征點的鄰域,對每個鄰域點按照θ從-45°到45°,精度為1°,計算出相應的距離r,并且每當有相同的距離r和角度θ出現(xiàn)時,hough_2D中對應位置(r,θ)的像素進行累加:p(r,θ)←p(r,θ)+Δp。獲得的基于特征點鄰域的Hough空間圖像如圖4所示。
圖4 基于特征點鄰域的Hough空間圖像Fig.4 Hough space image based on feature point neighborhood
(2)然后對圖像hough_2D進行閾值處理去除大部分噪聲,首先計算圖像hough_2D的像素最大值pmax,并以pmax的1/2作為閾值Tp遍歷圖像,根據(jù)圖像的像素p(r,θ)和Tp的關系,如果p(r,θ) 圖5 閾值處理后的圖像hough_2D Fig.5 Hough_2D after threshold processing (3)最后對hough_2D進行形態(tài)學處理,去除一些孤立噪聲,先進行腐蝕操作再進行膨脹操作。其中腐蝕操作去除噪聲,消除小物體,膨脹操作平滑物體輪廓,連接溝壑。設置結構元素分別為3×3、5×5的矩形元素,腐蝕膨脹后的效果如圖6所示,5×5的矩形結構元素過大,導致部分前景被消除,本文選擇3×3的矩形結構元素對hough_2D進行形態(tài)學處理。 圖6 不同矩形結構元素的形態(tài)學處理結果Fig.6 Morphological post-processing results of different rectangular structural elements 1.4.2基于直方圖投影的峰值參數(shù)計算 對形態(tài)學處理的結果進行直方圖變換,并對直方圖進行垂直投影計算峰值區(qū)域的距離索引,然后在距離索引范圍內對每個峰值區(qū)域進行聚類操作,具體步驟如下: 圖7 hough_2D的距離直方圖分布Fig.7 Distance histogram distribution of hough_2D (2)對直方圖進行垂直投影,記錄每個非零區(qū)域的距離索引,具體如下:設置非零區(qū)域的開始距離索引為bi,結束距離索引為ei,每次進入非零區(qū)域的距離為bi的值,每次進入空白區(qū)域的距離為ei的值。 (3)將開始距離索引值和結束距離索引值相近的2個區(qū)域合并,計算bi+1-ei的差值,如果該差值小于設定閾值Tr,則區(qū)域i和區(qū)域i+1合并為一個區(qū)域,最終得到的bk和ek分別保存了峰值區(qū)域的開始距離索引和結束距離索引。 (4)hough_2D在每個開始距離索引bk和對應的結束距離索引ek范圍內進行聚類操作,統(tǒng)計每個峰值區(qū)域的像素最大值,以該值對應的像素作為種子點,尋求周圍像素相同的點進行聚類,對聚類后的每個峰值區(qū)域求出質心(cxk,cyk),即為所求秧苗行中心線的參數(shù)(rk,θk)。 該算法得到的秧苗行中心線識別結果如圖8所示。綜上所述,基于特征點鄰域Hough變換的水稻秧苗行檢測流程如圖 9所示。 圖8 秧苗行中心線識別結果Fig.8 Recognition results of centerlines of seedling rows 圖9 基于特征點鄰域Hough變換的秧苗行檢測流程Fig.9 Detection process of seedling row centerlines based on Hough transform of feature point neighborhood 圖10 基于Faster RCNN的水稻秧苗檢測模型的損失值曲線Fig.10 Loss curve of rice seedling detection model based on Faster RCNN 對標注好的水稻秧苗樣本,采用在ImageNet數(shù)據(jù)集上訓練得到的模型參數(shù)VGG16.ckpt,對基于Faster RCNN的水稻秧苗檢測模型進行遷移學習,初始網(wǎng)絡參數(shù)設置如下:初始學習率為0.001,權值衰減系數(shù)為0.000 5,動量系數(shù)為0.9,批尺寸設置為32,最大迭代次數(shù)設置為10 000次。訓練過程中, 對算法的各項指標進行動態(tài)記錄,隨著迭代次數(shù)的增加,損失值的變化趨勢如圖10所示。訓練集最初的損失值在4.5左右,開始時下降速度較快,迭代4 000次后,損失值在1.0到1.5之間振蕩,之后損失值下降速度減慢,迭代6 000次后,損失值下降到1.0以下,迭代8 000次后,損失值在0.5左右振蕩,最小損失值為0.25。 對于不同的置信度閾值,精度和召回率會發(fā)生變化,選取多個閾值,可以獲得相應的精度和召回率。繪制精度-召回率曲線如圖11所示。由圖11可以看出,當召回率為0時,精度是1.0,當召回率逐漸增加到0.4時,精度變化幅度很小,從1.0下降到0.85左右,當召回率增加到0.5時,精度降低到0.8以下,根據(jù)精度-召回率曲線和坐標軸之間的面積,可以計算出秧苗的平均精度(AP)為0.484 2。AP值較低的原因為:以傾斜角度拍攝得到的原始圖像中水稻秧苗之間有重疊,人工很難標注出完整的秧苗,標注框之間會有重疊(密集標注導致標注框數(shù)量較多),2棵水稻秧苗的分界對于模型來說沒有很明確;秧苗的外觀非常相似,預測出的秧苗框和標注框的重疊性多種多樣,導致交并比(IOU)不高,AP值較低。雖然AP值較低,但是不影響后續(xù)秧苗中心線的識別。因為預測秧苗框的中心點反映了秧苗行的成行趨勢,如果有雜草被誤識別為秧苗,提出的基于特征點鄰域的Hough變換算法對孤立的中心點(誤識別的雜草)不敏感,具有較好的魯棒性。 圖11 基于Faster RCNN的水稻秧苗檢測模型的精度-召回率曲線Fig.11 P-R curve of rice seedling detection model based on Faster RCNN network 采用測試集評估基于Faster RCNN的水稻秧苗檢測模型的預測值和標簽值的統(tǒng)計像素偏差,結果如表1所示。 表1 基于Faster RCNN的水稻秧苗檢測模型統(tǒng)計偏差Tab.1 Statistical deviation of rice seedling detection model based on Faster RCNN 圖12 基于Faster RCNN的水稻秧苗檢測模型的測試效果Fig.12 Test effect of rice seedling detection model based on Faster RCNN 使用訓練好的基于Faster RCNN的水稻秧苗檢測模型對水田秧苗圖像進行測試,測試效果如圖12所示。 為了判斷秧苗行中心線的識別準確性,需要人工標注秧苗行中心線作為衡量基準。人工標注的秧苗行中心線與算法提取的秧苗行中心線之間的夾角為誤差角,該誤差角用來衡量算法提取秧苗行中心線的識別精度。本文算法參數(shù)設置如下:d=10 cm,θ∈[-45°,45°],Δp=20。 對比本文算法和標準Hough變換對測試集中的200幅圖像的識別準確率和算法平均運行時間,識別準確率的判斷標準是單個秧苗行的識別精度超過3°,即認為秧苗行識別失敗。測試集包括晴天采集的秧苗圖像 60 幅,陰天采集的秧苗圖像50幅,高雜草密度的秧苗圖像40幅,低雜草密度的秧苗圖像50幅,本文算法和標準Hough變換的性能比較結果如表2所示。 表2 不同算法的性能比較Tab.2 Performance comparison of different algorithms 本文算法是在秧苗特征點鄰域的基礎上通過直方圖投影、種子點聚類操作對秧苗行在參數(shù)空間的峰值區(qū)域進行定位,通過表2可知,該算法對測試集的200 幅秧苗行圖像的平均識別準確率達到92%,比標準Hough變換算法的平均識別準確率提升19個百分點,但算法運行時間達0.458 s,比標準Hough變換的運行時間高26 ms。后續(xù)需要考慮對算法進行優(yōu)化改進,以提高算法的檢測速度。本文算法在農(nóng)機行駛速度不超過1.5 m/s時,可以滿足每秒2幀的實時性要求。 對于測試集中不同雜草密度分布下的水稻秧苗行圖像,對比本文算法和標準Hough變換對4個不同秧苗行的中心線識別精度,對比結果如表3所示。 由表3可知,本文算法對低雜草密度的秧苗行中心線的平均識別精度為0.460 5°,對高雜草密度的秧苗行中心線的平均識別精度為0.495 3°。標準Hough變換對低雜草密度的秧苗行中心線的平均識別精度為1.389 9°,對高雜草密度的秧苗行中心線的平均識別精度為1.461 3°。 圖13從左至右分別是低雜草密度秧苗圖像、高雜草密度秧苗圖像、晴天秧苗圖像和陰天秧苗圖像。 表3 不同雜草密度分布下的秧苗行中心線識別精度對比Tab.3 Comparison of centerline recognition accuracy of seedling rows with different weed densities (°) 對于不同雜草密度分布的秧苗行圖像,圖13a為采用本文算法的秧苗行中心線識別效果。由圖13a可以看出,本算法對秧苗行中心線的識別不受雜草噪聲和光照變化的影響,具有較好的魯棒性,識別出的4個秧苗行中心線和人工標注的中心線相比,都具有較小的角度偏差,并且對藍色區(qū)域內的彎曲秧苗行也可以準確識別,但當秧苗行的曲率較大時,識別精度會降低。 圖13b為采用標準Hough變換的秧苗行中心線識別效果。由圖13b可以看出,標準Hough變換對于雜草密度分布不均和光照變化的情況,在一定的角度偏差范圍內可以識別出秧苗行,其中部分秧苗行相對于人工標注的中心線產(chǎn)生較大偏差;尤其當秧苗行曲率較大的時候,此時秧苗特征點較為分散,標準Hough變換對秧苗行的檢測結果具有較大的誤差(藍色區(qū)域所示)。 圖13 不同雜草密度和光照條件下的秧苗行中心線識別效果對比Fig.13 Comparison of recognition effects of centerlines of seedling rows under different weed densities and light conditions (1)在雜草萌發(fā)期,建立不同光照條件、不同雜草密度和不同秧苗生長狀況的水稻秧苗行圖像數(shù)據(jù)庫,采用基于Faster RCNN的目標檢測模型對秧苗位置進行檢測,以獲得秧苗特征點。根據(jù)基于特征點鄰域Hough變換識別秧苗行中心線,可以有效解決秧苗行周圍背景噪聲和雜草噪聲的影響,對光照不均、秧苗行曲率較大的問題,具有較好的魯棒性。 (2)通過對測試集200 幅圖像進行測試可知,本文算法對秧苗行中心線的平均識別準確率為92%,高于標準Hough變換。 (3)采用本文算法和標準Hough變換對測試集中不同雜草密度分布下的水稻秧苗行圖像進行了秧苗行中心線識別精度對比,結果表明,本文算法對不同雜草密度分布下的秧苗行平均識別精度小于0.5°,能夠準確提取秧苗行中心線。2 實驗
2.1 秧苗位置檢測
2.2 秧苗行中心線提取
3 結論