張先潔,汪小旵,2,孫國祥,施印炎,魏天翔,陳 昊
(1 南京農業(yè)大學 工學院,江蘇 南京 210031; 2 江蘇省現(xiàn)代設施農業(yè)技術與裝備工程實驗室,江蘇 南京 210031)
對番茄植株不同成熟階段的番茄果實數(shù)量準確測定不僅有助于精細化調整番茄種植過程中的施肥量,而且有助于提前制定番茄果實收獲、倉儲以及銷售等計劃[1-3]。番茄植株的生長形態(tài)不同,尚未完全成熟的番茄果實的顏色與葉片顏色相近,番茄果實容易出現(xiàn)重疊、被遮擋現(xiàn)象,復雜的環(huán)境背景導致番茄果實識別困難[4-5]。在復雜的環(huán)境背景下準確識別番茄果實是測定不同成熟階段番茄果實數(shù)量的關鍵。
針對農作物的果實識別,國內外學者進行了廣泛的研究[6-9]。目前大多數(shù)農作物的果實識別是通過深度學習和圖像處理等方法處理二維RGB圖像數(shù)據(jù)實現(xiàn)的[10-13]。這些方法識別果實的成功率較高,但是通過二維RGB圖像數(shù)據(jù)識別果實無法獲得果實的距離信息,因而無法分辨被識別果實是否屬于當前被統(tǒng)計植株,被識別果實的歸屬不明確導致果實數(shù)量評估的不準確[14-15]。也有部分學者采用其他數(shù)據(jù)進行農作物果實識別[16-18]。Mehta等[19]通過多個視角的二維RGB圖像數(shù)據(jù)合成偽立體視覺,在立體視覺的基礎上識別果實,但該方法多個視角的相機布置降低了方法的可操作性。李寒等[20]在二維RGB圖像中確定番茄果實輪廓,結合深度信息獲取番茄果實點云數(shù)據(jù),利用改進的SOM-K-means聚類算法實現(xiàn)番茄果實的識別,但該方法僅適用于識別成熟的紅色番茄果實。目前針對農作物的果實識別已經(jīng)有了較多的研究,但針對指定距離內不同成熟階段的番茄果實數(shù)量識別的方法研究較少。
為準確測定近距離內不同成熟階段的番茄果實數(shù)量,本文提出一種基于彩色點云圖像的番茄數(shù)量測定方法。首先通過點云深度信息篩選出近距離內的番茄植株點云,去除遠距離番茄果實對果實數(shù)量準確評估的干擾,然后合成2個視角的點云增加番茄果實的特征信息,提高番茄果實識別的準確率,再使用深度學習方法PointRCNN目標檢測網(wǎng)絡識別合成點云中的番茄果實,最后利用支持向量機(Support vector machine,SVM)分類器對已識別出來的果實進行分類,得到不同成熟階段番茄果實的數(shù)量。
番茄植株圖像數(shù)據(jù)采集于江蘇省農業(yè)科學院信息所番茄種植溫室,番茄品種為‘奇美’與‘桃太粉’,番茄植株采用吊蔓式種植,高度為145~165 cm,株距為40 cm,行間距為120 cm,試驗現(xiàn)場如圖1所示。
圖1 番茄種植溫室試驗現(xiàn)場Fig.1 Test site in the greenhouse for tomato plant
圖像采集時間為2020年12月17日14時至17時和2020年12月23日14時30分至17時,在不同光照條件下共采集252組番茄植株圖像數(shù)據(jù)。將微軟公司的RGB-D相機KinectV2.0搭載在深圳玩智商科技有限公司研發(fā)的ROS機器人移動平臺DashGo B1上,設定移動平臺定點??坎⒉杉阎仓甑牟噬珗D像和深度圖像。KinectV2.0的彩色相機的分辨率為1 920像素×1 080像素,深度相機的分辨率為512像素×424像素,采集圖像如圖2所示,深度圖像中由綠到黃表示目標距離相機由近到遠。
圖2 番茄植株圖像Fig.2 Image of tomato plant
首先將番茄植株RGB圖像和深度圖像合成番茄植株點云,然后將番茄植株不同視角下的2個點云配準合成1個番茄植株點云,再采用PointRCNN目標檢測網(wǎng)絡對番茄植株點云進行番茄果實目標檢測,輸出番茄果實識別框,最后利用訓練好的SVM分類器對PointRCNN目標檢測網(wǎng)絡的檢測結果進行成熟階段分類。
1.3.1 番茄植株點云獲取 KinectV2.0 通過不同的相機采集得到RGB圖像與深度圖像,相機精度不同與位置不同導致同一目標點在RGB圖像與深度圖像坐標不同,因此需要通過標定獲取相機內置參數(shù),進而得到RGB圖像與深度圖像的坐標映射關系,根據(jù)映射關系生成同時包含RGB信息和深度信息的RGB-D圖像。
根據(jù)RGB-D圖像的坐標與坐標對應的深度值可以轉換生成三維空間坐標。本文使用Python語言調用Open3D庫中的庫函數(shù),根據(jù)標定獲得的相機參數(shù),將RGB-D圖像轉換生成具備RGB信息的三維點云。
1.3.2 點云預處理 點云坐標中的Z軸坐標反映點到相機的距離,根據(jù)實際距離情況選取合適的閾值z分割點云得到距離相機近排的番茄植株點云,以便準確檢測近排番茄植株上的番茄果實。
受到溫室環(huán)境以及深度相機本身精度等因素影響,KinectV2.0獲取的點云數(shù)據(jù)中存在部分離群點噪聲,離群點會影響后期點云配準的精度,需要通過濾波移除離群點。離群點的特點是相同距離內點的數(shù)量較小,因此,采用統(tǒng)計濾波法將指定半徑內臨近點的數(shù)量小于指定數(shù)量的點記為離群點并移除。
從單視角采集到的番茄植株點云數(shù)據(jù)中,存在多處不同程度的番茄果實遮擋、重疊現(xiàn)象。本文提出將具有一定距離的2個視角采集到的點云數(shù)據(jù)配準融合,獲取更全面的番茄植株三維信息,減少因重疊、被遮擋等現(xiàn)象導致的番茄果實檢測錯誤。
點云配準是指將2個具有一定數(shù)量對應點的點云轉換到同一個坐標系下,融合成1個點云,如圖3所示。點云配準分為粗配準與精配準2個部分。
圖3 番茄植株點云配準Fig.3 Point cloud registration of tomato plant
點云粗配準是在未指定2個點云的初始相對位姿情況下,將2個點云進行配準,為精配準提供一個較優(yōu)的平移矩陣和旋轉矩陣初始值。粗配準的主要方法包括基于特征匹配的配準方法和基于隨機采樣一致性的配準方法。本文選用基于隨機采樣一致性的配準方法對番茄植株點云粗配準。
點云精配準是在粗配準提供的平移矩陣和旋轉矩陣初始值的基礎上,通過不斷迭代改進平移矩陣和旋轉矩陣的參數(shù)來完成配準。精配準的主要方法是迭代最近點 (Iterative closest point,ICP)算法以及各種改進的ICP配準方法。本文選用基于pointto-plane的改進ICP配準方法[21]對粗配準后的番茄植株點云精配準。
調用Open3D庫中的全局配準函數(shù)選擇隨機采樣一致性參數(shù),設定體素采樣為0.02,距離閾值為0.03,進行點云的粗配準;調用ICP精配準函數(shù)選擇point-to-plane方法參數(shù),設定距離閾值為0.001,進行點云的精配準。
基于點云的目標檢測網(wǎng)絡主要分為2類,一類是一階段的目標檢測網(wǎng)絡,另一類是二階段的目標檢測網(wǎng)絡。二階段的目標檢測網(wǎng)絡是在一階段目標檢測結果的基礎上進行修正檢測,因此一般二階段目標檢測網(wǎng)絡的準確率要高于一階段目標檢測網(wǎng)絡。本文選用二階段檢測網(wǎng)絡PointRCNN[22]在番茄植株點云中檢測識別番茄果實。
PointRCNN目標檢測網(wǎng)絡的第一階段通過PointNet++網(wǎng)絡提取點云特征,對點云進行自底向上的搜索,選出3D候選區(qū)域。第二階段檢測網(wǎng)絡在第一階段提取的點云特征和3D候選區(qū)域的基礎上,對3D候選區(qū)域的評分進行修正,得到檢測結果。PointRCNN目標檢測網(wǎng)絡的框架如圖4所示。
圖4 PointRCNN網(wǎng)絡結構Fig.4 PointRCNN network structure
PointRCNN采用PointNet++網(wǎng)絡提取點云特征輸入到前景點分割網(wǎng)絡,前景點分割網(wǎng)絡在前景點分割中采用Focal Loss函數(shù)解決類別不平衡問題,同時通過加入邊框回歸頭對前景點進行3D邊框回歸產(chǎn)生3D候選區(qū)域。在獲得3D候選區(qū)域后,PointRCNN在點云區(qū)域池化的基礎上結合之前產(chǎn)生的前景點特征獲得新的局部區(qū)域特征和全局特征。PointRCNN二階段網(wǎng)絡融合局部區(qū)域特征和全局特征后對3D候選區(qū)域和置信度進行修正,得到最終的預測結果框。
算法基于 Pytorch(v1.3.1) + OpenPCDet(v0.3.0)框架實現(xiàn),硬件配置為處理器Intel(R) Gold 6226,內存 256 GB,顯卡 NVIDIA GeForce RTX 2080Ti,操作系統(tǒng) Ubuntu 18.04。使用標注工具CloudCompare對點云進行人工標注得到番茄果實標簽,通過腳本轉換標注文件為Kitti數(shù)據(jù)集格式。在本試驗中點云標簽類別為番茄和其他2類,按照4∶1的比例隨機劃分為訓練集和驗證集。
采用遷移學習的方法對本試驗的點云數(shù)據(jù)進行處理,主要設定參數(shù)包括:epochs為20 000,batch_size_per_gpu為 3,GPU 為 2,Learn_rate為0.01,div_factor為 10,optimizer為 adam_onecycle。其中,參數(shù)epochs是指訓練的回合數(shù),1回合是指把所有的訓練樣本全部處理1次;參數(shù)batch_size_per_gpu是指每個GPU每次處理樣本的個數(shù);參數(shù)GPU是指GPU的個數(shù);參數(shù)Learn_rate為最高學習率;參數(shù)Learn_rate除以參數(shù)div_factor得到初始學習率;參數(shù)optimizer為優(yōu)化器的選擇。PointRCNN目標檢測網(wǎng)絡的損失函數(shù)如下:其中,Npos為 前景點的數(shù)量,與為正確標注的bin分配和殘差,為前景點p的被預測的bin分配和殘差,F(xiàn)reg為回歸損失函數(shù),F(xiàn)cls為分類損失函數(shù)。
將數(shù)據(jù)集投入PointRCNN目標檢測網(wǎng)絡中訓練,損失函數(shù)隨迭代次數(shù)的變化趨勢如圖5所示縱坐標為損失函數(shù)值,橫坐標為訓練回合數(shù)。損失值在迭代前期快速下降至0.5附近,在迭代中期略有上升后重新下降,在迭代后期降至0.3附近。
圖5 網(wǎng)絡損失值的變化曲線Fig.5 Change curve of the loss value of the network
對番茄果實成熟階段分類,首先,按照番茄果實內部的成熟情況對番茄果實的成熟階段分類,然后分析番茄果實不同成熟階段顏色特征的差異,選取合適的顏色特征組成特征矩陣訓練SVM分類器,最后利用訓練好的SVM分類器[23]對PointRCNN目標檢測網(wǎng)絡識別出的番茄果實進行成熟階段判定。
將番茄果實切開后,通過肉眼觀察番茄果實內部果肉顏色情況將番茄果實分為4種成熟階段。如圖6所示,果肉部分呈綠色(約90%以上)為綠熟;果肉部分出現(xiàn)微紅(約占10%~40%)為微熟;果肉部分呈紅色(約占40%~90%)為成熟;果肉部分完全為紅色(約占90%以上)為完熟。
圖6 番茄果實的成熟階段Fig.6 Ripening stage of tomato fruit
選取番茄果實4個成熟階段的RGB圖像各80張,總計320張RGB圖像作為樣本數(shù)據(jù)。使用閾值法去除樣本圖像中背景像素,僅保留番茄果實像素,并分別獲取番茄果實R、G、B 3個通道的像素值;將RGB圖像數(shù)據(jù)轉換為HSV圖像數(shù)據(jù),分別獲取番茄果實S、V 2個通道的像素值,其中,HSV顏色模型中V分量為亮度分量,不做分析考慮。選取平均值 (μ)、方差 (σ) 2 個數(shù)字特征表征數(shù)據(jù)的分布情況,分別計算番茄果實5個通道(R、G、B、S、V)像素值的3個數(shù)字特征作為番茄果實的10個顏色特征(μR、μG、 μB、 μS、 μV、 σR、σG、 σB、σS、 σV)。統(tǒng)計計算得到番茄果實4個成熟階段的10個顏色特征,并將4個成熟階段的同一顏色特征數(shù)據(jù)歸為一組計算變異系數(shù),如表1所示。
表1 不同成熟階段的番茄果實顏色特征Table 1 Color characteristics of tomato fruits at different ripening stages
分析表1可知,在5個顏色分量(R、G、B、S、V)的平均值顏色特征中,顏色特征 μG在各成熟階段的均值相差較為明顯,變異系數(shù)最大,表明顏色特征μG分布較為離散,適宜作為區(qū)分各成熟階段的特征之一;同理,選取方差顏色特征中 σS作為選定特征之一。將剩余8個顏色特征依次與 μG、 σS2個顏色特征組合成特征矩陣進行SVM分類訓練,選取預測結果最優(yōu)的特征矩陣[μG,σS,μV]作為最終選定的特征矩陣。
從320個樣本數(shù)據(jù)中隨機選擇60%的數(shù)據(jù)作為訓練集,40%的數(shù)據(jù)作為測試集。將訓練集數(shù)據(jù)的特征矩陣投入SVM分類器訓練,使用訓練好的SVM分類器進行預測,訓練集的預測準確率為94.27%,測試集的預測準確率為96.09%。
通過2個方面對PointRCNN目標檢測網(wǎng)絡識別方法的性能進行評價。一方面是識別結果的數(shù)量比較,即比較PointRCNN目標檢測網(wǎng)絡識別出的番茄果實的數(shù)量與點云中番茄果實數(shù)量;另一方面是識別結果的位置比較,即比較PointRCNN目標檢測網(wǎng)絡識別出的番茄果實中心位置與點云中番茄果實中心位置。
針對識別結果的數(shù)量比較,將識別結果分為正檢、錯檢和漏檢3類,如圖7所示。PointRCNN目標檢測網(wǎng)絡識別出的番茄果實總數(shù)量記為檢出數(shù)(ND),識別正確的番茄果實數(shù)量記為正檢數(shù)(NC),識別錯誤的番茄果實數(shù)量記為錯檢數(shù)(NF),未被識別出的番茄果實數(shù)量記為漏檢數(shù)(NM),點云中番茄果實總數(shù)量記為參考數(shù)(NR)。通過計算精確率(AD),召回率(AR)對識別結果的數(shù)量方面進行性能評價。
圖7 番茄果實識別結果分類示意圖Fig.7 Classification diagram of tomato fruit recognition results
番茄果實數(shù)量識別的AD計算公式為:
番茄果實數(shù)量識別的AR計算公式為:
針對識別結果的位置比較,將PointRCNN目標檢測網(wǎng)絡識別結果3D框與人工標注3D框做對比統(tǒng)計,引入平均中心相對誤差(CR)作為PointRCNN目標檢測網(wǎng)絡識別結果位置方面的評價指標。
CR的計算公式為:
式中,Di為中心距離,即第i個番茄果實的人工標注3D框中心與識別結果3D框中心的距離;Ri為標注框邊長均值,即第i個番茄果實的人工標注3D框的長、寬、高均值。
根據(jù)標定得到的相機參數(shù)將采集到的252組番茄植株圖像數(shù)據(jù)轉化生成252個番茄植株點云,通過點云配準技術合成獲得246個合成的番茄植株點云。使用標注工具CloudCompare對合成的番茄植株點云中番茄果實進行標注,隨機選取196個的番茄植株點云標注結果投入到PointRCNN目標檢測網(wǎng)絡中訓練。利用訓練好的模型對剩余的50個合成的番茄植株點云進行預測識別,并將預測結果與人工標注結果做統(tǒng)計對比。
將PointRCNN目標檢測網(wǎng)絡對50個番茄植株點云的預測識別結果可視化,并統(tǒng)計PointRCNN目標檢測網(wǎng)絡識別出的番茄果實總數(shù)、識別正確的番茄果實數(shù)、識別錯誤的番茄果實數(shù)、未被識別出的番茄果實數(shù)、點云中番茄果實總數(shù)。如圖8所示,圖8a中番茄果實數(shù)為6,PointRCNN目標檢測網(wǎng)絡識別出的番茄果實數(shù)為5,識別錯誤的番茄果實數(shù)為0,未被識別出的番茄果實數(shù)為1。
圖8 番茄果實識別結果Fig.8 Recognition results of tomato fruit
根據(jù)“1.7”針對番茄果實數(shù)量識別的評價指標,對50個番茄植株點云的預測結果進行統(tǒng)計,計算精確率和召回率,PointRCNN目標檢測網(wǎng)絡識別番茄果實數(shù)量的參考數(shù)、檢出數(shù)、正檢數(shù)、錯檢數(shù)、漏檢數(shù)分別為 277、268、231、37、46,精確率為86.19%,召回率為83.39%。
根據(jù)“1.7”針對番茄果實位置識別的評價指標,從50個番茄植株點云的預測結果中隨機選擇50個番茄果實預測框與人工標注框做對比統(tǒng)計,計算平均中心相對誤差,如表2所示,平均中心相對誤差為36.83%。
表2 PointRCNN目標檢測網(wǎng)絡識別番茄果實位置的精度評價Table 2 Accuracy evaluation of tomato fruit position recognition based on PointRCNN object detection network
遍歷獲取PointRCNN目標檢測網(wǎng)絡對50個番茄植株點云的預測結果框中的點云,獲取對應的RGB信息,計算得到結果框內點云的特征矩陣,使用訓練好的SVM分類器對點云的特征矩陣進行成熟階段分類預測。分類結果顯示,綠熟果實112個,微熟果實72個,成熟果實55個,完熟果實29個。
設定移動平臺DashGo B1采取定點??康男凶卟呗裕肈ashGo B1搭載的KinectV2.0采集溫室內4行番茄植株的圖像數(shù)據(jù),使用基于彩色點云圖像的番茄成熟數(shù)量測定方法進行數(shù)量測定,結果顯示,綠熟果實448個,微熟果實393個,成熟果實294個,完熟果實281個,共計1 416個。
1)本文提出了一種基于彩色點云圖像的番茄果實數(shù)量測定方法。為消除遠距離番茄果實的干擾,減輕番茄果實遮擋、重疊等的影響,準確評估不同成熟階段的番茄果實數(shù)量,以二視角合成后的彩色點云作為數(shù)據(jù)處理對象,通過深度信息截取近距離點云,利用PointRCNN目標檢測網(wǎng)絡獲取番茄果實識別框,使用SVM分類器對番茄果實識別框進行成熟階段預測。
2)針對番茄果實成熟階段分類識別,選取番茄果實顏色特征組成特征矩陣訓練SVM分類器,SVM分類器對訓練集預測準確率為94.27%,對測試集的預測準確率為96.09%。
3)選取精確率和召回率2個指標評價番茄果實數(shù)量識別的精度;選取平均中心相對誤差指標評價番茄果實位置識別的精度。PointRCNN目標檢測網(wǎng)絡的番茄果實識別方法的精確率為86.19%,召回率為83.39%,平均中心相對誤差為36.83%。