朱紅春 李 旭 孟 煬 楊海濱 徐 澤 李振海
(1.山東科技大學測繪與空間信息學院, 青島 266590; 2.北京市農林科學院信息技術研究中心, 北京 100097;3.重慶市農業科學院茶葉研究所, 重慶 402160)
中國的種茶面積和產茶量世界第一[1],是世界級茶葉大國[2]。茶葉采摘是其生產過程中的重要環節,采摘質量很大程度影響茶葉品質。目前人工采摘和機械采摘都是重要的茶葉采摘方式。但隨著農業機器人傳感技術及圖像識別算法的提高,機械采摘對識別的準確率提出了更高的要求[3]。因此,在實現茶葉采摘機械化的過程中,如何有效識別茶葉嫩芽,以提高機械采摘的準確度,通過采摘路線規劃以避免傷害茶樹,是一個亟需解決的問題。
深度學習技術已經在農業方面得到了大量的研究應用[4-7]。但在茶葉方面研究較少,羅浩倫等[8]基于晴天和陰天自然環境下的茶葉圖像數據集,通過Faster R-CNN網絡模型和VGG16網絡進行訓練與測試,平均精度均值為0.76。施瑩瑩等[9]以自然環境下不同天氣情況、不同茶葉品種的茶葉嫩芽圖像為試驗樣本,采用基于深度神經網絡的YOLO v3算法構建模型,研究了茶葉嫩芽目標的多尺度檢測方法,平均精度為0.64。在研究基于圖像處理方法的嫩芽識別方面,吳雪梅等[10]提出了基于圖像的G和G-B分量信息,利用最大方差自動提取閾值識別茶葉嫩芽的方法,并研究了距離對識別精度的影響,相機距茶葉10 cm處準確率為92%;楊福增等[11]以G分量作為顏色特征,采用雙閾值法分割背景與茶葉嫩芽,根據形狀特征檢測茶葉邊緣,識別準確率達到94%。但由于背景過于復雜,現階段茶葉嫩芽檢測基本是限定在一個鏡頭較近并且包含少量芽頭的小范圍內,對于鏡頭較遠包含芽頭數量更多及類型多樣、背景更復雜的場景下的嫩芽檢測,還需開展深入研究。但此類場景下的研究,可為機械采摘中更大范圍的路徑規劃提供指導,在采摘嫩芽的過程中避免損傷茶樹。
相比于以往的R-CNN和Fast R-CNN,Faster R-CNN是真正的端到端的二階段目標檢測網絡模型,通過分類器和位置回歸任務共享卷積特征,解決了目標定位和分類的同步問題,具有更好的檢測速度和精度[12-13]。在用于鏡頭較遠、包含芽頭數量更多及類型多樣、背景更復雜的場景下的嫩芽識別方面從理論上具有應用潛力。因此,本文擬通過Faster R-CNN模型構建該類場景下的茶葉嫩芽檢測算法,特別是評估不同芽頭類型下的深度學習識別精度,并與傳統目標檢測算法進行對比,綜合評價深度學習算法在茶葉嫩芽檢測中的精度,以期為茶葉的嫩芽檢測提供準確的數據支撐。
試驗區位于農業農村部土壤質量數據中心觀測監測基地——重慶市永川區茶山竹海(29.38°N,105.89°E,圖1)。試驗區地處亞熱帶濕潤季風氣候,春季回暖早,夏季氣溫高,雨熱同季,空氣相對濕潤,年均日照時數1 218.7 h,無霜期317 d,年均氣溫為17.7℃,年均降水量為1 015.0 mm。主栽品種為福鼎大白茶,該品種長勢旺盛,抗逆性強,耐旱亦耐寒。試驗設計為不同肥力配施試驗(圖1),具體試驗設計參照文獻[14]。

圖1 研究區示意圖Fig.1 Schematic of study area
試驗拍攝設備為華為P30手機,所用攝像頭配置為后置徠卡三攝6 400萬像素,拍攝時間為2020年3月26日14:00—15:00,高度約0.5 m,角度為垂直拍攝,拍攝對象為36個小區,每個小區拍攝2幅圖像。本次研究以拍攝的72幅圖像(分辨率為3 648像素×2 736像素)為基礎數據集,來制作VOC2007格式標準數據集。
基于顏色特征、閾值以及學習的分割算法是3種主要的植被提取算法[15]。包括茶葉在內的目標檢測與識別主要依賴于顏色特征,且大多是基于計算機和圖像處理技術[11,16]。本研究通過在復雜背景下,對比傳統基于顏色特征和閾值分割算法,來評估基于深度學習算法識別茶葉嫩芽的性能,2種算法的具體思路如圖2所示。在深度學習算法中,首先進行了圖像裁切、標簽制作,以及必要的數據增強[17-18]等處理來制作數據集,然后利用Faster R-CNN模型和VGG16特征提取網絡進行模型訓練,最后對已訓練模型進行精度評價。在基于顏色特征和閾值分割的茶葉嫩芽識別算法中,首先對圖像進行過綠處理,得到灰度圖像,然后進行p分位二值化、去噪和膨脹,使其可以被OpenCV檢測輪廓[19],通過程序完成坐標提取,并進行真值檢驗以及精度評價。

圖2 技術路線圖Fig.2 Technological roadmap

圖3 Faster R-CNN模型與VGG16網絡Fig.3 Faster R-CNN model and VGG16 network
使用Faster R-CNN模型與預訓練的VGG16網絡進行模型訓練以及目標檢測。
VGG16[20]是牛津大學計算機視覺組和Google DeepMind公司研究員一起研發的特征提取深度網絡,它通過反復堆疊帶有3×3卷積核的卷積層和2×2的池化層,來構建包含13個卷積層和3個全連接層的深層卷積神經網絡,其中13個卷積層分別在第2、4、7、10、13層被池化層分隔,通過池化可將特征圖(Feature map)尺寸減少1/2,結構如圖3所示。
Faster R-CNN是REN等[21]在Fast R-CNN[22]基礎上提出的具有更好檢測速度與準確度的深度學習算法,它可以看作是由區域建議網絡(Region proposal network,RPN)和Fast R-CNN檢測網絡結合而成(圖3)。Faster R-CNN通過VGG16前13個卷積層用來獲得Feature map,并且RPN網絡代替了自我搜索(Selestive search,SS)[23],獲得前景或背景信息以及檢測框坐標偏移量等建議(Proposal);然后通過VGG16的第5個池化層進行感興趣區池化(RoI pooling),收集Proposal并結合圖像尺寸信息(im_info)計算出帶有Proposal的Feature map;最后通過VGG16的3個全連接層與Softmax,對Proposal進行分類與檢測框坐標修正,獲得目標檢測類別(cls_prob)與檢測框精準坐標(bbox_pred)。相較于Fast R-CNN,Faster R-CNN實現了同一框架下提取候選框與分類回歸,從而在GPU的幫助下大大提高檢測速度。
茶葉嫩芽識別的學習與實現主要包含4部分:
(1)數據集制作:考慮到計算機的硬件與GPU性能問題,本次研究需要對原圖像進行適當裁切,將3 648像素×2 736像素原圖4等分,裁切為1 824像素×1 368像素圖像,并在Python中進行批量命名得到圖像數據集。然后使用開源工具LabelImg用于標注圖像,得到標準的VOC2007數據集,并在程序中對數據集進行包括翻轉、鏡像、中心對稱、亮度改變、中心對稱且亮度改變、高斯模糊等數據增強,其中亮度用來模擬天氣陰晴情況,改變系數為0.9~1.1,高斯模糊系數為0.5,得到包含2016幅圖像和73 080個包圍框的數據集。
(2)模型訓練:深度學習分為直接訓練和預訓練模型2種方式。本研究選用預訓練模型的方式,訓練過程主要包含:①使用預訓練的VGG16對RPN進行初始化和訓練,并端到端進行微調。②使用預訓練的VGG16初始化Fast R-CNN,并利用RPN生成的候選框,訓練出一個單獨的檢測網絡。③使用該檢測網絡再次初始化RPN并進行訓練,但固定共享的卷積層,只微調RPN特有的層,就使卷積層達成了共享。④再次訓練Fast R-CNN,但固定共享的卷積層,只對其進行微調。因此能夠實現2個網絡共享相同卷積層,構成統一的已訓練網絡。訓練所用軟硬件配置見表1,其中訓練參數max_iters設置為70 000,batch_size設置為128,其余保持默認值。

表1 計算機軟硬件配置Tab.1 Computer software and hardware configuration
(3)模型測試:對已訓練模型進行測試時,Faster R-CNN模型會將圖像進行多層卷積與池化,然后由RPN網絡獲取Proposals,判斷Positive或Negative以及計算坐標偏移,RoI pooling會綜合Feature map和候選框信息,后續進行分類以及獲得精準坐標。這些類別和坐標會被保留,用于后續的真值檢驗,獲得評價指標參數,以及與真值建立1∶1圖。
(4)交叉驗證:將原始數據隨機分成5份,將其中的1份作為測試集,剩余4份作為訓練驗證集,其中訓練集和驗證集各占其一半,即20%的數據用于測試,80%的數據用于訓練驗證。為了更全面地評價性能,采用交叉驗證的方式對模型進行5次重復訓練和測試。
本研究進行了基于過綠指數(Excess green, EXG)[16,24]和圖像二值化的茶葉嫩芽識別算法對比試驗,具體思路為:
(1)過綠指數處理:在該對比試驗中,利用EXG來對圖像進行灰度化,使嫩芽老葉能在單通道進行區分,其計算式為
EXG=2G-B-R
(1)
式中R、G、B——對應紅、綠、藍通道圖像
(2)圖像二值化:場景范圍較大的圖像中,由于包含了非常多的老葉與嫩芽,其在過綠特征上的亮度也有更多的交集,2種類型的特征峰區分并不明顯,并且存在一部分背景值,無法利用大津法(OTSU)一類的方法來進行區分。但小芽在EXG上的亮度總體大于背景,所以采用了直方圖p分位截取的方法,截取像元累計前100%-p作為背景,后p作為前景,來進行二值化。為了找到最佳的p分位,取后4%~11%像元進行8次試驗,分別進行圖像二值化。
(3)嫩芽噪聲去除:隨著截取像元的增加,二值化后的圖像所包含的圖像信息越來越多,噪聲也隨之增多。試驗對斑塊面積進行閾值分割,去除小面積斑塊噪聲,大面積斑塊因為可能是芽頭疊加造成,不作為去除對象。在二值化的過程中,嫩芽邊緣并不能提取完整,產生微小斑塊也會被去除,芽頭輪廓會變得銳利,所以采用了3×3的膨脹矩陣對斑塊處理,平滑嫩芽邊緣,并填充內部空洞。
(4)嫩芽計數:使用OpenCV來對斑塊進行輪廓檢測,并保留檢測包圍框的坐標信息,用于后續的真值檢驗,建立1∶1圖,以及后續的結果可視化。
深度學習的評價指標主要有交并比(Intersection over Union,IoU)、準確度(Precision)、召回率(Recall)、平均準確度(Average precision,AP)。
同時,在真值檢測的過程中,為了避免出現同一個標注框檢測多個預測框的情況,每個預測框和標注框僅考慮一次。如果存在一個標注框和某個檢測框IoU大于0.5,那么這個標注框就不再參與預測框的評估。
首先,進行不區分嫩芽類型的模型訓練,交叉驗證測試結果如表2策略A所示。后續對每幅圖進行檢測,并將其IoU大于0.5的預測框數量(TP)與真值數量之間建立1∶1圖(圖4a),檢測結果的RMSE為3.32,表現并不理想。從圖5可以看出有較多的漏檢以及一部分的錯檢,分析漏檢/錯檢原因發現主要為尺寸較小的芽頭檢測效果不佳,來自單芽識別漏檢/錯檢較多,部分采摘時認定為不摘的小芽頭被錯檢,而部分單芽因為在圖像視場內的位置較遠而漏檢,導致總體識別較差。文獻[25-26]表明目標尺寸對檢測結果存在較大影響,所以有必要對數據集進行尺寸上的篩選與重分類,來探究目標尺寸對于識別模型的影響。

表2 不同策略下交叉驗證結果Tab.2 Results of cross validation under different strategies %

圖4 不同策略下深度學習茶葉嫩芽數預測真值與真實值散點圖Fig.4 Scatter plots of predicted and truth values of tea buds in deep learning under different strategies

圖5 不區分嫩芽類型的嫩芽檢測結果Fig.5 Bud test results without distinguishing bud types
在嫩芽標簽制作過程中,根據實際嫩芽類型(單芽和一芽一葉/二葉)統計各類嫩芽的包圍框閾值,以此來制作包含單芽和一芽一葉/二葉類別的數據集(圖6)。結果表明,以2006為包圍框尺寸閾值進行分類時,單芽和一芽一葉/二葉的包圍框數量為2 091和8 349,在總包圍框中占比約20%和80%。

圖6 芽頭類型分布示意圖Fig.6 Distribution diagram of bud head types
當進行了芽頭類型區分后(策略B),再次進行模型訓練與測試評估時,交叉驗證測試結果如表2策略B所示。通過真值檢驗對每幅圖像中的TP數量與真值數量建立1∶1圖,結果見圖4b,檢測結果的RMSE為2.84。結果進一步表明單芽檢測精度較低,進而造成總體檢測結果偏差。
考慮在實際采摘過程中以一芽一葉/二葉采摘為主,因此分析剔除單芽,僅以一芽一葉/二葉的數據集,重新進行訓練以及模型評價,交叉驗證測試結果如表2策略C所示。相較于策略A,總體識別效果有較為明顯的提升。對每幅圖的TP數量與真值數量之間建立1∶1圖,結果見圖4c,檢測結果的RMSE為2.19。結果表明,深度學習算法對以茶葉一芽一葉/二葉為目標的嫩芽識別具有較好的識別精度。
為進一步評價深度學習算法在茶葉嫩芽識別中的精度(以策略C為對比標準),構建基于過綠指數和圖像二值化的茶葉嫩芽識別算法檢測一芽一葉/二葉來進行對比。考慮芽頭顏色有一定的范圍,在進行二值化時并不能保留完整輪廓,在進行真值檢驗時,IoU會普遍較低,所以將IoU設置為0.3,該算法精度結果如圖7a所示。隨著截取像元p分位的增加,召回率從35%逐步增加到56%,在截取像元9%時達到飽和;但是準確度從53%降低到33%,準確度和召回率呈現負相關關系。因此,綜合考慮準確度和召回率,選擇截取6%的像元進行圖像分割(圖8),此時準確度和召回率分別為46%和47%。利用該算法對每幅圖進行嫩芽檢測,并對其TP數量與真值數量之間建立1∶1圖(圖7b),檢測結果的RMSE為5.47。
圖9為深度學習算法與傳統目標檢測算法檢測茶葉嫩芽的識別結果。表2與圖4的結果顯示,Faster R-CNN模型在檢測不同尺寸的目標時,具有不同的精度表現;在圖像分辨率低以及目標的尺寸較小時,Faster R-CNN模型不具備良好的檢測性能,單芽頭的識別精度不佳;而一芽一葉/二葉的識別精度表現較好,圖9a中基本實現該類嫩芽的準確識別;圖7和圖9b顯示了基于顏色特征和閾值分割算法在復雜背景下茶葉嫩芽檢測的局限性,準確度和召回率都沒有達到一個較高的水平,即使召回率保持在較低范圍保證準確度的情況下,也依舊會產生大量的漏檢和錯檢,整體表現較差。在檢測時間上,深度學習算法和傳統目標檢測算法,對單幅圖像檢測耗時分別為0.20 s和0.72 s(表3),表明深度學習算法在檢測速度上也有巨大優勢。

圖7 圖像分割算法一芽一葉/二葉檢測結果Fig.7 Detection results of one bud and one leaf/two leaves of image segmentation algorithm

圖8 圖像分割過程Fig.8 Image segmentation process

圖9 茶葉嫩芽識別一芽一葉/二葉檢測結果Fig.9 Detection results of one bud and one leaf/two leaves of tea bud recognition
本文構建基于Faster R-CNN網絡的茶葉嫩芽檢測及精度評價,特別是評價不同芽頭類型的識別結果,發現單芽的識別精度不佳,原因主要為Faster R-CNN模型本身在檢測小目標時不具有良好的檢測性能[26-27]。Faster R-CNN模型是在14×14×512的卷積層(圖3)后進行RoI pooling[23],由于經過4次池化,這一層的特征所對應原圖的像元尺度非常大,單像元可以對應原圖16像素×16像素的尺寸,所以無法對小目標進行有效地特征提取。但在實際采摘的過程中,尺寸很小的單芽并不作為采摘對象,當去除該類數據集后,再進行相同參數的訓練,精度有較為顯著提升。

表3 算法耗時對比Tab.3 Time-consuming comparison of different algorithms
文獻[28-30]研究結果表明,預處理可以使特征信息更加突出,以此來更好地訓練模型,提高訓練模型的檢測性能。本研究也使用了過綠指數來對數據集進行預處理,但在初始訓練參數下,單芽和一芽一葉/二葉的平均準確度分別為9%和74%??傮w來看并沒有達到提高模型性能的目的,推測原因是EXG預處理圖像僅僅作為單通道輸入的時候,缺少了紅藍通道的信息,即使在綠通道上做到了綠色特征突出,并不能對整體有較大的貢獻,導致了訓練模型性能沒有提升,甚至精度出現了降低。
吳雪梅等[10]的研究表明,隨著拍攝距離、范圍的增加,以及背景復雜程度的加深,用圖像分割算法檢測嫩芽,會出現更多的“雜點”和“碎片”噪聲,檢測效果會越來越差。本文所采用的基于顏色特征和閾值分割的茶葉嫩芽識別算法,嘗試了很多的顏色特征(如EXG、EXG-EXR、G-B等)、閾值分割方法(如p分位、OTSU、雙峰法),以期獲得更高的精度。其中EXG的表現最好,可以較好地表達嫩芽與背景的差異,p分位相較于OTSU和雙峰法來說效果也更好。但隨著截取像元數的增加,檢出的芽頭數開始增加,召回率提升;但也產生了更多的噪聲,準確度急劇降低。并且該類方法對于拍攝場景和環境有非常高的要求,多云環境下不同亮度、不同拍攝距離和范圍的圖像,以及不同的生長環境下拍攝的圖像,都會有不同的截取分位;茶葉嫩芽之間的疊加以及覆蓋問題,也會極大地增加圖像分割算法的檢測難度。綜合已有研究[31]來看,相對于深度學習方法,傳統目標檢測方法有精度偏低、魯棒性差、速度慢的劣勢。
當數據量較少時,數據增強是提升模型準確度、魯棒性以及泛化能力的一種較為有效的途徑[17-18]。深度學習算法本身需要大量的數據,在數據量不足的情況下,本研究進行了數據增強并模擬了復雜自然場景,來增加數據量以及數據多樣性,提升模型性能。但數據增強中不論是翻轉、鏡像、對稱等像素位置的改變,還是亮度、模糊等像素值的改變,其都是在同一個數據集上進行的,增強后的數據集雖然數據更多、更具多樣性,但與原始數據仍具有較強的相關性,可能會造成訓練模型的性能和表現略差于足量真實數據集訓練出的模型。后續補充更具多樣性的足量數據,來獲得更準確、更魯棒以及泛化能力更強的模型。
針對范圍較大、背景更為復雜的茶葉嫩芽檢測問題,本文探究了Faster R-CNN模型和VGG16特征提取網絡,對目標尺寸的檢測敏感度問題,提出剔除單芽類的方法,較大地提升了模型性能。首先,對原始圖像進行了裁切、標簽制作、數據增強,然后基于深度學習的Faster R-CNN目標檢測算法對茶葉嫩芽進行檢測,并探究了該方法對不同尺寸芽頭的檢測效果,剔除小芽后重新訓練與測試,顯示出了較好的檢測性能,最后對比了基于過綠指數和圖像二值化的茶葉嫩芽識別算法檢測茶葉嫩芽的結果,表明本文基于深度學習的目標檢測算法具有良好的檢測效果,可以為復雜背景下檢測芽頭提供技術保障,以及為智能采摘提供理論指導。