姜紅花 王鵬飛 張 昭 毛文華 趙 博 齊 鵬
(1.山東農業大學信息科學與工程學院, 泰安 271018; 2.寶雞文理學院電子電氣工程學院, 寶雞 721016;3.中國農業機械化科學研究院, 北京 100083; 4.山東永佳動力股份有限公司, 臨沂 276000)
田間雜草是影響農作物產量的重要因素[1-2]。目前我國主要采用噴灑農藥的方式進行除草作業,農藥過量噴灑帶來環境污染、食品安全等一系列問題[3]。因此,實施精準噴藥[4]是解決農藥過量噴灑、提高農藥利用率的關鍵。
精準施藥的前提是精準識別雜草,國內外研究人員對此進行了一系列研究。劉劍[5]在圖像預處理基礎上,設計出基于ANN(Artifical neural network)的玉米田間雜草圖像特征提取和識別算法,根據所提取的作物和雜草圖像特征,在玉米田間區分出雜草。何東健等[6]在對田間植物圖像處理的基礎上,提取植物葉片形狀、紋理及分形維數3類特征,分別以3類單特征的SVM分類結果構造基本概率指派,引入DS融合算法,根據融合結果及分類判決門限給出最終的識別結果。梁媛等[7]利用D-S證據理論將圖像邊緣鄰域一致性、方向性和結構性3種測度進行融合,有效降低噪聲的影響,提高了雜草邊緣檢測的準確性。TANG等[8]利用K-means算法預處理雜草識別模型,以其權重初始化新的卷積神經網絡模型權重,最終準確度達到92.89%,優于普通卷積神經網絡和無fine-tuning處理的神經網絡。FERREIRA等[9]利用SLIC superpixel算法生成超像素圖像,并利用卷積神經網絡進行識別處理,分類準確度達98%以上。LOTTES等[10]利用四通道(RGB+NIR)相機采集圖像,并利用近紅外光譜圖像實現植被與土壤背景分割,之后提取雜草特征并利用隨機森林算法區分雜草與作物。目前現有的大多數雜草識別算法均依賴于人工選擇的雜草特征(如形狀、紋理等),識別準確度仍有待于進一步提高。
本文利用深度學習[11-13]的方法實現雜草圖像特征的自動提取(不依賴于人工特征篩選),結合二進制哈希碼壓縮高維雜草特征數據,實現雜草的快速識別,為后續的田間農藥噴灑提供信息支持。利用雜草數據在預訓練的多層級卷積神經網絡基礎上進行fine-tuning,生成雜草識別模型,提取雜草圖像的普通特征碼和哈希特征碼,并存入數據庫。利用訓練好的模型提取輸入圖像哈希特征碼和普通特征碼,與數據庫中的哈希特征碼和普通特征碼進行對比,分別計算其歐氏距離與漢明距離,找出與其最相似的K幅圖像,統計這K幅圖像的標簽,將其歸入頻率最高的一類,以達到分類識別的目的。
以玉米及其伴生雜草作為研究對象進行識別。試驗采用Canon PowerShot SX600 HS型相機,主要參數為:背照式CMOS傳感器,最高分辨率4 608像素×3 456像素,有效像素數1 600萬。采集陜西省地區的玉米、刺兒菜、灰菜、莎草、早熟禾5類植物各1 200幅高清圖像(4 608像素×3 456像素,180 dpi)。作物及雜草圖像樣本如圖1所示。

圖1 玉米及田間雜草圖Fig.1 Pictures of corn and field weeds
對采集的圖像進行人工分類和標記,構建數據庫,并進行打標建立數據集,其中訓練集各類植物1 000幅,測試集各類植物各200幅。刺兒菜、灰菜、莎草、玉米、早熟禾標簽分別為0、1、2、3、4。
由于相機獲得的原始圖像尺寸為4 608像素×3 456像素,不適合進行識別模型的訓練。為了加快模型的訓練速度,提高模型精度,在將圖像輸入神經網絡前將圖像尺寸調整為208像素×208像素。
卷積神經網絡[14-18]由多層網絡構成,每層網絡包含數個二維平面,每個平面又由多個獨立的神經元組成。其獨特的結構能有效提取視覺層面的特征,適用于復雜環境下的田間雜草識別[19-21]。
在本文卷積神經網絡中,雜草圖像的一部分(局部感受區域)首先進入網絡的最低層再依次向高層傳遞,各層網絡通過卷積提取雜草圖像的一個或多個特征(低層次的網絡輸出側重于空間幾何信息,高層次的網絡輸出側重于語義等抽象信息)。卷積神經網絡的特征提取過程可表示為
y=F(M|θ)=fl(…f2(f1(M|θ1)|θ2)…|θl)
(1)
式中M——輸入的雜草圖像矩陣
θ——待調整的參數
f——卷積函數y——雜草特征向量
F——雜草識別函數
雜草識別網絡通過不斷調整參數θ使雜草識別函數F(M|θ)的輸出不斷向y逼近。
l1:32個(3,3)卷積核,激活函數采用Relu激活函數[22],其可表示為f(x)=max(0,x),池化層為寬高方向步長均為2,大小為(3,3)的最大池化層[23-24],池化層后連接應局部響應歸一化函數[23](Local response normalization,LRN)。
l2:64個(3,3)卷積核,激活函數采用Relu激活函數,池化層為寬高方向步長均為2,大小為(3,3)的最大池化層。
l3:128個(3,3)卷積核,激活函數采用Relu激活函數,池化層為寬高方向步長均為2,大小為(3,3)的最大池化層。
l4:256個(3,3)卷積核,激活函數采用Relu激活函數,激活函數后先連接LRN函數再連接池化層,池化層為寬高方向步長均為2,大小為(3,3)的最大池化層。
l5:4 096個神經元,權重w為(dim,4 096),dim為l4展開成一維向量的長度,激活函數采用Relu激活函數。
l6:256個神經元,權重w為(4 096,256),激活函數采用Relu激活函數。
l7:Dropout層,保留比例設為0.9。
l8:Hash層,權重w為(256,128),激活函數采用Sigmoid函數。
l9:輸出層,權重w為(128,5),激活函數采用Softmax函數。
1.2.1雜草識別網絡卷積層
本試驗所提出的雜草識別網絡中,前4層即l1、l2、l3、l4為卷積層,以其提取所需要分類特征,其過程可表示為
yl=fl(Ml|θl)=Relu(w?Ml+b)
(2)
其中
θl=[wb]
式中yl——l層雜草圖像輸出矩陣,是由雜草特征圖組成的三維向量
Ml——l層雜草圖像輸入矩陣,是由雜草特征圖組成的三維向量
θl——卷積核 ?——卷積運算
b——偏置
padding方式設置為SAME,stride在寬高方向都設為1,Ml、θl、yl可分別表示為(hl,wl,il)、(hl,wl,il,ol)、(hl,wl,ol),其中在第1層卷積層中hl=wl=208。在每層卷積層之后都連接一個最大池化層和局部響應歸一化函數,池化層有利于減小特征圖的尺寸從而加快模型訓練速度,LRN通過對局部神經元的活動建立競爭機制,進一步激活較為活躍的神經元并抑制不活躍的神經元,增強模型的泛化能力。
1.2.2雜草識別網絡全連接層
所提出的雜草識別網絡l5、l6為全連接層,在這2層中雜草模型特征圖被展開成一維特征向量并被進一步壓縮,提取其主要特征,其過程可表示為
y=f(x|θ)=Relu(wx+b)
(3)
其中
θ=[wb]
式中x——雜草特征圖展開后的長度為N的一維向量
隨后接入Dropout層,它的作用在于使部分神經元隨機失活,防止過擬合。然后將隨機失活后的一維特征向量輸入Hash層提取特征哈希碼,再將提取的特征哈希碼輸入一個全連接層映射成一個固定長度k(本試驗共有玉米、各類雜草共5個類別,此處固定長度k=5)得到特征向量N,之后將特征向量N輸入線性分類器進行分類預測。采用Softmax作為分類函數
(4)
式中Pi——類別i的概率
lj——特征向量N的第j個元素
li——特征向量N的第i個元素
k——特征向量N的長度,1≤j≤k
經過分類函數得到預測標簽后,利用交叉熵損失函數計算預測標簽與實際標簽的偏離程度
(5)
式中Ri——實際的概率分布
最后通過反向傳播算法來調整神經網絡的權重等參數,實現對數據集特征的提取,完成雜草識別模型構建。
1.2.3雜草網絡Hash層結構
近來研究表明,由輸入圖像引入的全連接層的特征激活作為視覺特征[22-24],可以提高圖像分類、檢索精度。然而這些特征維度較高,難以應用于大規模圖像的快速檢索和識別。為了提高雜草識別效率,引入Hash層將雜草特征轉換為二進制碼,通過哈希或者漢明距離實現二進制碼的快速比較以有效降低運算量。
本文試圖提取特定區域的圖像特征并將其轉換為一系列的二進制哈希碼(Hash-like)。假設最后一個全連接層的輸出依賴一系列隱藏的有on和off狀態的屬性h。即是說,圖片誘導相似的二進制激活有同樣的label(標簽)。為了實現該想法,在全連接層和輸出層之間部署一個隱層H,H也是一個全連接層,受后面編碼語義特征和實現分類的輸出層的調整。H層不僅提供對前面全連接層豐富特征的抽象,也是中層特征和高層語義的橋梁(承上啟下)。H層的神經元通過Sigmoid函數激活近似到(0,1)之間。
為了實現領域適應,通過在目標數據集上反向傳播fine-tuning,CNN的初始化權重為預訓練模型的最終權重,H層和輸出層的權重隨機初始化。H層的初始化隨機權重類似于LSH(局部敏感度哈希)。在監督學習下,編碼能夠從LSH調整為更好匹配數據的形式。不用通過大規模的網絡模型修改,該模型能夠同時學習特定區域的視覺表示和二進制哈希函數以用于圖像分類。
給定圖像,提取隱層H的輸出,再二進制化得到二進制哈希碼
(6)
式中 Out(H)——隱層H輸出的圖像標簽
h——隱層節點的個數
首先在ImageNet數據集上利用卷積神經網絡進行預訓練獲得卷積網絡中參數和豐富的圖像表示。然后在預訓練的網絡上添加Hash層,在雜草數據集上fine-tuning學習到二進制哈希碼特征。最后利用所得到的雜草識別網絡模型進行雜草特征提取。在雜草識別時,采用由粗到細的策略,利用學習到的二進制哈希碼和全連接層特征碼,實現雜草分類檢索。預訓練過程如圖2所示。

圖2 基于深度卷積網絡和二進制哈希碼的雜草識別模型Fig.2 Weeds recognition model based on convolutional network and binary Hash code
給定一個待檢索雜草圖像I和候選集P,通過模型提取其全連接層特征碼和哈希碼,先利用哈希碼計算其與候選集P中圖像哈希碼的漢明距離,得到距離最小的n(n≥K)幅圖像Q。漢明距離公式可表示為

(7)
其中
X=(x1,x2,…,xn)
Y=(y1,y2,…,yn)
式中 ⊕——異或運算d(X,Y)——漢明距離
然后計算I與Q中圖像的全連接層特征碼的歐氏距離得到前K個距離最小的圖像。歐氏距離計算公式為
(8)
其中A=(a1,a2,…,an)B=(b1,b2,…,bn)
式中ρ(A,B)——歐氏距離
最后統計這K幅雜草圖像的標簽,出現頻率最高的即確定為預測標簽。當多種標簽出現頻率相同,先將Si按從小到大排序,然后從以下2種方案中選擇其一:①因Si按從小到大排列即按輸入圖像與目標圖像的歐氏距離從小到大排列,所以排名越靠前,其距離越近,因此可將輸入圖像標簽確定為出現頻率最高中排名最靠前的標簽。②可將出現頻率最高的幾種標簽的排名分別求和,將和最小的標簽確定為輸入圖像的標簽。分類流程如圖3所示。
一般來說,卷積層越多,模型越復雜,其精度就會越高,能提取到特征也就越復雜。例如在圖像分類中,卷積網絡的某一層提取到了邊緣特征,其后的卷積層網絡再用這些特征去提取形狀特征,深層網絡利用淺層網絡提取的特征檢測提取更為復雜的特征。針對雜草識別問題,為確定合理的卷積網絡層數,進行了不同深度的卷積網絡對比試驗。
按模型結構設計不同深度的卷積網絡進行對比試驗,結果見表1。由表1可知,訓練10 000步時,不同深度的卷積網絡訓練所需時間相差最大為128.04 s(3層卷積層最少3 160.65 s,8層卷積層最多3 288.69 s),因此可以忽略時間的影響,只把準確率作為選擇卷積網絡層數的因素;準確率方面,卷積層數在3~4層時,準確率逐漸提升,在5~7層時,準確率逐漸降低,可能是發生了過擬合等現象,卷積層數為4層時準確率達到最高值93.6%,因此,將卷積層數確定為4層。
在確定卷積層的層數之后,針對哈希編碼長度的選擇, 對0(沒有哈希層)、48、64、128、256位不同哈希碼長度進行對比試驗,結果見表2。

圖3 雜草識別流程圖Fig.3 Process of weeds identification

卷積層數步數準確率/%時間/s31000091.53160.6541000093.63219.9851000092.93278.6161000090.03246.9871000090.63262.3481000092.73288.69

表2 不同長度哈希碼對比Tab.2 Comparison of different lengths Hash code
由表2可知,在加入Hash層后,準確率相較于無Hash層有所提高,最低提高0.1個百分點(256位哈希碼),最高提高3.6個百分點(128位哈希碼);哈希碼長度在48、64、128位時逐漸提高,256位時突然下降,原因可能是128位哈希碼已經足以表達低層的特征,256位哈希碼導致特征過量表達,發生了過擬合。
在確定好卷積層層數和哈希碼長度之后,最終的雜草識別網絡采用4層卷積網絡和128維哈希編碼的Hash層。利用此結構的網絡,即可進行雜草識別。輸入待檢索圖像,利用選定的模型提取其全連接層特征碼和哈希特征碼,先利用哈希碼計算其與候選集中哈希碼的漢明距離,得到距離最小的K幅圖像,然后計算待檢索圖像的全連接層特征碼與這K幅圖像的全連接層特征碼的歐氏距離,最后將K個歐氏距離按升序排列并統計其對應的標簽頻率進行分類。選用準確率最高的模型(4層卷積層,128位哈希碼)輸入全部測試集的圖像進行測試,準確率達到98.6%。
將測試集中分類錯誤的結果進行統計,混淆矩陣如表3所示。部分錯誤識別結果,如圖4所示。由表3和圖4可知,錯誤的分類一般是將刺兒菜、灰菜與早熟禾混淆,將莎草與玉米混淆,主要原因在于刺兒菜、灰菜與早熟禾的外形較為相似,莎草與玉米的外形較為相似,所以導致少部分圖像分類錯誤。針對這一現象,可以通過增加訓練集數據以及訓練步長等可進一步提高模型準確率,減少誤分類情況。

表3 4層卷積網絡128位哈希碼模型混淆矩陣Tab.3 4 confusion matrix of model with four layers and 128 bits Hash code %

圖4 錯誤結果Fig.4 Error results
卷積網絡主要問題是計算量大,為滿足田間雜草識別的實時性要求,采用NVIDIA GTX 1080Ti GPU代替CPU進行運算,識別一幅圖像的耗時見表4。同時也可以發現,4層卷積層+128位哈希碼可以取得98.6%的雜草識別準確率,其表現優于3層卷積網絡和較小哈希碼長度的情況。
將4種不同模型的損失值繪制成折線圖,通過觀察發現加入Hash層后模型的穩定性均有所提高。

表4 利用GPU加速識別單幅圖像耗時Tab.4 Time consumption per image with GPU
損失函數折線圖如圖5所示。

圖5 模型損失函數對比Fig.5 Comparison of loss function
為進一步驗證模型的性能,采集于其他地區的玉米田間雜草,將被用來驗證所提出雜草識別模型的通用性。在北京地區,采集玉米田間常見雜草馬唐、牛筋草、稗草、狗尾草、豬殃殃5類雜草圖像各500幅,對采集的圖像進行人工分類和標記建立數據集,其中訓練集各類雜草圖像400幅,驗證集各類雜草圖像100幅。
利用本文提出的模型,在新的數據集上進行訓練生成新的模型,在測試集上進行驗證測試,測試結果見表5。
由表5可知,在測試集上準確率最低為90.6%,最高為95.8%,說明本文提出的研究方法具有通用性和實用性。

表5 不同模型準確率對比Tab.5 Accuracy comparison of different models
于2018年5月20日,天氣晴,在山東農業大學南校區農學試驗站玉米田中進行除草劑噴施試驗。玉米株距50 cm,行距40 cm。試驗選用高地隙噴桿噴霧機,選擇一側噴桿的2個噴頭,調整噴頭位置,使之與玉米行間對齊,進行噴霧對比試驗,如圖6所示。2個噴頭的一側安裝Canon PowerShot SX600 HS型攝像頭,相機幀率為20幀/s,調整相機,使相機距離地面50 cm,視場角22°,并在噴頭前方安裝電磁閥,如圖6c所示。將采集到的圖像上傳到計算機,每10幀提取一幅圖像,將該圖像進行一定的預處理,輸入到構建的雜草識別模型中,依據上文的雜草識別策略識別雜草及玉米,識別出雜草則電磁閥打開,控制噴頭進行噴霧,實現精準噴霧。
選擇合適雜草情況的玉米地,啟動汽油機,打開噴桿的控制閥門,噴霧機以0.5 m/s的速度,行進10 m,關閉兩側噴桿的控制閥門及汽油機,將攝像頭采集到的圖像輸入計算機,程序識別到雜草控制電磁閥打開噴頭進行噴霧。觀察統計雜草及玉米藥液沉積情況,試驗噴霧效果如圖6c所示。

圖6 田間驗證識別率Fig.6 Verification in field1.攝像頭 2.電磁閥 3.噴頭
對靶噴霧統計結果為雜草施藥率92.7%,玉米施藥率6.5%,在無草無玉米時的噴施概率1.8%。經觀察分析知造成此現象的原因包括:有些雜草靠近玉米根部,玉米葉遮擋了藥液的滴落,以及模型識別玉米及雜草存在一定誤差,且電磁閥存在一定的響應時間,造成了噴霧延后,對玉米噴施藥物的現象;系統的響應時間及噴桿的晃動等原因造成了無草無作物噴施的現象。
綜上所述,所提出的雜草識別方法,可以有效提高雜草施藥率,使其達到92.7%,減少農藥浪費,提高農藥利用率,適用于田間玉米雜草處理。
(1)利用深度學習中的卷積神經網絡和哈希碼構建雜草識別模型,并利用提取到的全連接層特征碼和哈希特征碼進行分類。本文方法在雜草數據集
上的準確率和收斂速度相較于普通模型都有所提高,準確率可以達到98.6%,滿足實際應用需求。
(2)基于NVIDIA GTX 1080Ti GPU計算機平臺,本文方法單幅圖像識別耗時0.44 s,模型識別速率較快,能夠滿足實時性要求,可實現農作物與雜草的快速識別分類。
(3)在雜草識別基礎上進行對靶噴霧,雜草施藥率可以達到92.7%,減少了農藥浪費。另外,模型在其他數據集上同樣具有良好的表現,準確率可達95.8%,說明本文方法具有通用性。
(4)提出的基于深度卷積網絡和二進制哈希碼的田間雜草快速識別方法能夠達到較高準確性,具有通用性和實用性,為精準施藥和精準機械除草提供田間雜草信息。