王巧華 顧 偉 蔡沛忠 張洪洲
(1.華中農業大學工學院, 武漢 430070; 2.農業農村部長江中下游農業裝備重點實驗室, 武漢 430070)
我國棉花產量巨大,棉花產業是南疆地區的支柱產業,2020年新疆棉花播種面積達2 501.9 hm2,然而棉種品質問題卻給棉花生產帶來極大影響,嚴重制約了棉花產業發展[1],因此棉種的精選對提升新疆地區棉花產量具有重要意義。
王暉軍等[2]利用傳送帶作為主體,搭配單CCD相機以及控制系統后,搭建了檢測棉種品質的裝置,識別準確率約為90%,但檢測方法只停留在單面棉種檢測的層面。XU等[3]提出土壤澇漬和高溫同時發生會影響棉種的質量。坎雜等[4]利用棉種的介電性能,對有損傷和完好的棉種進行了分級,硬件部分采用滾筒式結構攜帶棉種。黃蒂云等[5]利用高光譜圖像技術融合圖像特征信息對脫絨棉種的品種進行判別分析,建模總體識別率達90%以上,但是沒有對棉種的品質鑒別提出自動化裝備設計。彭順正等[6]設計了相關實驗采集裝置,使用OpenCV圖像處理庫對棉種的外觀和顏色進行判別,實現了對棉種活性的分級。GOLSHAN等[7]利用不同的算法自動檢測圖像中的種子。AHMED等[8]提出使用X射線CT成像對辣椒種子品質進行分類。向陽等[9]提出采用翻面的方法實現芒果的雙面檢測,并用遷移學習方法及卷積神經網絡模型進行芒果成熟度分級。趙靜[10]設計了2個CCD相機,對透明玻璃板承載的玉米種子進行拍照收集圖像,達到了采集完整種子外表圖像的要求,綜合兩幅圖像進行結果分析,對玉米種子進行破損判別。綜上所述,目前已有研究停留在棉種的單面檢測分級層面,這容易導致另一面結果的不確定性。而對于果物的雙面檢測停留在單個果物的雙面檢測,對于棉種這樣的小尺寸物體,單粒棉種雙面檢測效率較低,并且目前沒有針對棉種雙面信息采集并進行品質檢測的相關文獻報道。
使用機器視覺對棉種破損進行檢測,需要采集大量樣本,然后對圖形進行一系列的圖像處理[11]手段對棉種數據進行分析建模,得到結果保存模型,最后部署到實際生產中。YOLO(You only look once)[12]是一種基于深度神經網絡的對象識別和定位算法,運行速度快,可以用于實時系統,并已經成功應用到農產品檢測領域[13-16]。對于群體農產品的品質研究,李慶旭等[17]提出一種基于改進SSD(Single shot multibox detector)的目標檢測算法,對孵化早期整盤群體種鴨蛋中的受精蛋與無精蛋進行精準識別。目前目標檢測算法主要分為兩種,一種是單步目標檢測算法,另一種是雙步目標檢測算法,雙步檢測方法的準確度高,但實時性相對較差;單步檢測方法的準確度較前者稍低,但實時性很好,檢測速度也較快[18]。目前較成熟的單步檢測算法有SSD與YOLO,相比較雙步目標檢測算法,識別群體棉種的破損信息主要考慮的因素是高效,單步檢測算法能更好地適配群體棉種的破損檢測,可為以后部署于生產實際提供技術支持。YOLO v4[19]深度學習檢測是目前最高效的單步目標檢測算法之一,YOLO v4模型檢測效果優于YOLO v3、Tiny-YOLO v4、SSD、Faster R-CNN 等模型[20]。但其對棉種檢測性能仍有提升空間,本文對YOLO v4網絡結構進行調整,研究改進模型檢測能力,通過設計群體棉種雙面檢測裝置,提出一種基于改進YOLO v4的棉種雙面破損檢測方法,進一步提高群體棉種識別精度以及模型魯棒性。
選擇新疆新陸早棉種3 000粒,其中破損與完好棉種比例約為1∶1.2。群體棉種通過上料漏斗滑入透明亞克力板上,亞克力板上有4個棉種放置塊,每個放置塊上面有3×5個凹槽,一次可檢測15粒棉種。
基于雙CCD相機的棉種分選機結構示意圖如圖1所示,主要由電控箱、機架、視覺識別模塊、上料裝置、轉盤、下料裝置、收集裝置等組成。工作時,步進電機運轉,主動齒輪開始運轉(俯視逆時針),與齒輪相連的中心軸開始轉動,帶動轉盤一起逆時針運動(俯視),為實現群體棉種雙面圖像獲取,利用亞克力板透明的特性,在轉盤上等間距安裝了由亞克力板制作的4個帶有3×5凹槽的棉種放置塊,每個凹槽長10 mm,寬6 mm,深5 mm,每個棉種放置塊可放15粒棉種。棉種依次經過上料裝置底部的料道、視覺識別模塊的上下2個CCD相機、電磁閥分別完成上料、圖像采集、下料分級回收的全過程。最后分選完畢的破損和完好棉種分別經由收集桶落入到各自的收集箱當中,圖中分別有2個收集桶、箱,分別收集破損和完好的棉種。根據機械設計要求對齒輪進行設計,并對材料進行選型[21],采用工程塑料作為齒輪制作材料,以降低工作時的噪聲,增加運動平穩性。參考自動化零件設計要求,考慮到轉盤軸承載工件時的軸向力,使用7208AC型角接觸軸承作為整機的軸承支撐件,其內徑40 mm,外徑62 mm,尺寸系列02,接觸角25°。

圖1 基于雙CCD相機的棉種分選機結構示意圖Fig.1 Structure diagram of cotton seeds sorter based on double CCD camera1.電控箱 2.機架 3.上料裝置 4、5.視覺識別模塊 6.電機支撐架 7.減速器 8.步進電機 9.完好棉種電磁閥 10.主動齒輪 11.從動齒輪 12.中心軸 13.轉盤 14.破損棉種電磁閥 15.收集桶 16.棉種放置塊 17.收集箱
圖像采集系統如圖2所示。轉盤上方和下方設置兩套完全相同的圖像采集裝置,分別采集棉種上、下面圖像。圖像采集裝置包括工業相機、鏡頭、光源、背景板、三腳架。新陸早棉種形狀為類橢球狀,長軸長8~10 mm,短軸長5~7 mm。工業相機采用綠視森林USB1080P型,外觀尺寸70 mm×65 mm×60 mm,采集時調整分辨率為1 280像素×720像素,曝光度為-9。鏡頭采用5~50 mm變焦,最大光圈F1.4工業鏡頭,拍攝時兩個相機鏡頭垂直于轉盤且高度均為55 mm,棉種經由轉盤下方相機拍攝棉種反面圖像,待轉盤轉過45°時,再由轉盤上方相機采集棉種正面圖像。光源采用歐普環形光源,色溫6 500 K,功率22 W,采用Lenovo B50-30型計算機處理圖像。

圖2 圖像采集系統Fig.2 Image acquisition system
控制系統原理圖如圖3所示,系統工作流程如圖4所示,上、下方相機均由光電傳感器觸發采集圖像,STM32控制器在整個流程當中負責接收傳感器信號、輸送傳感器信號以及獲得計算機判別結果,并輸出判別結果。系統對每顆棉種都進行上、下兩次圖像采集,通過算法分析得到判別結果之后,通過控制器進行信號輸出,控制執行機構中的破損棉種電磁閥進行推桿的伸出與回縮,伸出時即與棉種放置塊的撥桿發生碰撞打開承接塊的通孔,有損棉種由自身重力落入下方收集裝置當中,即可將有損棉種剔除。有損棉種剔除之后,剩下的無損棉種由完好棉種電磁閥的常開推桿與撥桿發生碰撞后,同樣也是打開承接塊的通孔后,棉種因為自身重力落入到下方的收集裝置當中,重復此過程,將預選的棉種進行全部分級回收。

圖3 系統原理圖Fig.3 System schematic

圖4 系統工作流程圖Fig.4 System working flow chart
STM32控制器以及相關配件如圖5所示,根據STM32F103開發設計手冊進行單片機程序設計,利用STM32單片機完成對模型的運動控制,搭配電源、步進電機、步進電機驅動器、紅外遙控器,分別編寫紅外遙控程序以及步進電機串口通信控制,實現用紅外遙控器控制步進電機運動的過程,步進電機的控制采用STM32輸出PWM波進行控制,PWM的頻率和周期都可以使用串口調試助手在計算機端調試,通過軟件在線調試步進電機轉速,得到最佳轉速后固定數值至其內部程序當中,避免后期的程序改動影響后續試驗。通過修改程序,設置紅外遙控器可在多個速度擋位進行調整選擇,以適配各種不同場合速度的要求。最終設計紅外遙控程序可在PWM頻率100、150、200 Hz情況下運行,轉速分別為3、5、8 r/min。

圖5 STM32控制器以及相關配件Fig.5 STM32 controller and related accessories
將棉種放入上料漏斗中,通過步進電機帶動透明亞克力轉盤轉動,棉種自動落入凹槽中,利用CCD相機采集群體棉種上下兩面圖像,之后用labelImg軟件對采集的圖像進行人工標注,分別標注為破損與完好,按7∶2∶1劃分訓練集、驗證集、測試集。共采集200幅群體棉種圖像,每幅圖像有15粒棉種,圖像分辨率為1 280像素×720像素,將圖像分辨率調小至416像素×416像素,在使用YOLO v4訓練數據前,手動標注生成含有類別和位置信息的txt文件,圖像標注時利用棉種的最小外接矩形框進行標注,保證每個棉種盡量在一個矩形框里,具體數據如表1所示。

表1 數據集分布Tab.1 Data sets distribution
采集得到的原始圖像的上下兩面分別如圖6和圖7所示,圖像尺寸為1 920像素×1 080像素。通過棉種表面可以明顯觀察出破損棉種與完好棉種的區別,破損棉種表面坑洼或裂紋,完好棉種表面光滑。由于上下2個鏡頭拍攝,所得到的圖像翻轉180°即可得到原來的圖像,其中圖6為從上向下拍到的棉種,圖7為從下向上拍到的棉種,可以發現圖6棉種從上向下正面拍攝時表面完好,圖7存在破損,因此本文采用雙面拍攝來減少棉種誤判的情況。此外,深度學習需要大量的數據,本研究對140幅群體棉種圖像進行旋轉、平移、裁剪等操作進行數據增強,增強之后的訓練集圖像為560幅,棉種的數量達到8 400粒。

圖6 正面群體棉種圖像Fig.6 Positive group cotton seeds image

圖7 反面群體棉種圖像Fig.7 Negative group cotton seeds image
YOLO目標檢測算法已經被運用到各個領域,YOLO系列檢測算法屬于一階段檢測算法,在檢測速度方面優于二階段算法,如區域卷積神經網絡[22-24](Regions with convolutional neural network,RCNN)。YOLO v4相比較YOLO v3對小目標的識別效果有了顯著的提升,整體框架是基于YOLO v3改進而來,使用多種新的算法思想對各個子結構進行了改進,首先是輸入端的改進,主要包括Mosaic數據增強、CMBN交叉小批量標準化、SAT自對抗訓練,Mosaic數據增強法隨機使用4幅圖像進行縮放、拼接、翻轉,再組合為一幅圖像,減少了GPU的使用,豐富了檢測數據集,提升了網絡的魯棒性。YOLO v4的骨干網絡是在YOLO v3的DarkNet53上進行改進,使用了CSPDarkNet53,由CBM結構和5個CSP1-n結構組成,其中CBM結構是由卷積層、批歸一化(Batch normalixation)層、Mish激活函數組成,CSP1-n是由CBM模塊和n個Res unint模塊串聯組成,Res unint借鑒了ResNet網絡結構,降低了內存成本,增強了學習能力,讓網絡更深。CSPNet[25]通過將梯度的變化從頭到尾地集成到特征圖中,在減少了計算量的同時可以保證準確率。此外在Neck網絡上進行了創新,用SPP作為Neck的附加模塊,使用池化時卷積核的尺寸為{1×1,5×5,9×9,13×13}的最大池化方式,得到不同尺度的特征圖進行串聯合并操作,增加主干特征的接收范圍。用PANet作為Neck的特征融合模塊進一步提高了特征提取能力。改進前YOLO v4網絡結構如圖8所示。

圖8 改進前YOLO v4網絡結構Fig.8 Network structure of YOLO v4 before improvement
YOLO v4首先通過主干網絡對群體棉種進行特征提取,將輸入群體棉種的圖像劃分成S×S格,目標中心所在的網格負責對棉種的檢測,每個網格需要預測B個邊界框以及棉種破損與完好的條件概率,每一個邊界框都包含5個預測值(tx、ty、tw、th以及置信度),則邊界框中心點坐標與邊界框的寬與高分別為
(1)
式中 (cx,cy)——網格偏移圖像左上角的位置坐標
pw、ph——模板框的寬與高
tx、ty、tw、th——預測模型的中心位置坐標以及寬、高
σ(x)——Logistic函數
每個網格需要預測一個類別信息。目標檢測任務的損失函數一般由Classificition loss(分類損失函數)、Bounding box regeression loss(回歸損失函數)、Loss of confidence(置信度損失)3部分構成。YOLO v4在訓練時使用的回歸損失函數為LCIoU,置信度損失函數為Lconf,分類損失函數為Lclass,預測框篩選的非極大值為DIOU_nms。損失函數的表達式為
(2)

(3)
(4)
式中IoU——真實框和預測框的交并比
D2——預測框和真實框中心點距離
DC——最小外接矩形的對角線距離
α——平衡參數
v——衡量長寬比一致性的參數
wgt、hgt——真實框的寬、高
w、h——預測框的寬、高
Lconf與Lclass通過交叉熵方法計算,最終損失值Loss為
Loss=LCIoU+Lconf+Lclass
(5)
為了提升棉種檢測性能,本文針對棉種對YOLO v4網絡結構進行調整,首先在YOLO v4的骨干網絡上,將第一層的CSP1-1改成DarkNet所用的第一層ResNet結構,可以得到更好的速度與精度的均衡,在骨干網絡的末尾添加一個SPP結構,SPP結構可以接受任意尺寸輸入,固定大小輸出,可對任意尺度提取的特征進行池化[26],緊接著將Neck網絡當中的SPP移除,SPP結構會影響網絡的速度,精度提升不明顯。將Neck中的CBL(由卷積層、BN層、LeakyReLU激活函數組成)結構改為CSP2-n(2n個CBL模塊、卷積層、Concat組成)結構,增強學習能力,加強網絡特征融合能力,由于在原本的YOLO v4上,YOLO v4的檢測頭有3個分支,便于檢測圖像中尺寸相差較大的物體,但是在群體棉種檢測中,棉種在圖像中的尺寸變化較小,所以將檢測頭的3個分支簡化為2個分支,減少計算量,加快模型訓練,改進后的YOLO v4網絡結構如圖9所示。

圖9 改進后的YOLO v4網絡結構Fig.9 Network structure of improved YOLO v4
在改進YOLO v4的最后輸出模塊將回歸損失函數改為LGIoU,其公式為
(6)
式中Ac——真實框和預測框最小外接矩形的面積
U——兩個框并集的面積
在棉種檢測的后處理過程中,針對多目標框的篩選,需要非極大值抑制操作來去除冗余的框,留下最接近真實的一個框,改進YOLO v4在DIOU_Loss[27]的基礎上采用DIOU_nms的方式,在傳統的非極大值抑制操作里,交并比(IoU)可以作為抑制冗余檢測的指標,其中重疊區域是唯一因素,DIOU_nms將原始部分IoU的計算方式用DIoU的方式進行替換,DIoU的計算考慮到了兩框中心點位置的信息,故使用DIoU進行評判的非極大值抑制效果更符合實際,效果更好,DIOU_nms公式為
(7)

(8)
式中RDIoU——真實框和預測框中心點之間的距離
si——分類得分
ε——非極大值抑制的閾值
ρ()——歐幾里得距離函數
b、bgt——預測框和目標框的中心坐標
c——檢測框和預測框最小外接矩形的對角線長度
M——當前最大置信度的邊界框
Bi——其它邊界框
群體棉種模型訓練的硬件平臺:GPU為NIVIDIA GeForce RTX 2080Ti;CPU為AMD Ryzen Threadripper 2920X 3.5 GHz,內存為128 GB;軟件平臺為CUDA Toolkit 10.1、 CUDNN V10.1 、 Python 3.6+Pytorch1.6.0,在Windows 10系統下對YOLO v4進行改進,本文訓練和測試時均使用GPU加速,訓練開始階段,學習率設置為0.01,衰減系數設置為0.000 5,訓練的批次圖像數量(Batch size)設置為16,最大訓練次數設置為300,每訓練10次保存一次模型,取訓練效果最好的模型作為最終模型。圖10為改進YOLO v4網絡損失函數曲線,收斂速度較快,在訓練200步時趨于穩定。

圖10 改進YOLO v4損失函數曲線Fig.10 Loss function curve of improved YOLO v4
SSD-MobileNet v3是基于經典的SSD網絡改進而來,是目前被廣泛應用的單步目標檢測算法[17]。經典SSD網絡分為2部分,分別是骨干網絡和輔助網絡,SSD-MobileNet v3將經典的SSD骨干網絡中的VGG網絡用MobileNet v3網絡代替,將MobileNet v3網絡作為圖像特征的提取網絡。輔助網絡用于產生目標檢測框,結合非極大值抑制實現目標的定位,利用SSD-MobileNet v3算法對棉種進行破損識別與定位并與改進后的YOLO v4網絡識別效果進行對比,訓練網絡訓練參數設置與YOLO v4網絡參數設置保持一致。
采用平均精度均值(mAP)、漏檢率(Missed detection rate)、檢測速度(Speed)和參數量(Parameter size)[28]評價模型,其中平均精度由準確率(Precision)和召回率(Recall)決定,平均精度均值預測目標位置以及類別,mAP越大,說明神經網絡模型效果越好。使用訓練好的改進YOLO v4模型對群體棉種進行測試集預測。
基于改進YOLO v4的模型在測試集上的準確率、召回率、mAP分別如圖11~13所示。

圖11 改進YOLO v4模型準確率Fig.11 Accuracy of improved YOLO v4

圖12 改進YOLO v4模型召回率Fig.12 Recall rate of improved YOLO v4

圖13 改進YOLO v4模型平均精度均值Fig.13 mAP of improved YOLO v4
對20幅驗證集群體棉種圖像的測試結果進行統計,包括準確率、召回率、漏檢率、檢測速度和模型所占內存5項評價指標。共300粒棉種,完好棉種163粒,破損棉種137粒。其中YOLO v4模型錯判25粒棉種(其中將完好棉種錯判為破損棉種8粒,將破損棉種判為非損棉種11粒,漏檢6粒);使用改進YOLO v4模型錯判14粒(其中將完好棉種錯判為破損6粒,將破損棉種判為完好棉種8粒,漏檢0粒),SSD-MobileNet v3錯判43粒棉種(其中將完好棉種錯判為破損15粒,將破損棉種判為完好棉種19粒,漏檢9粒)。圖14為同一幅圖像在不同模型中的檢測結果。

圖14 不同模型的檢測結果Fig.14 Test results of different models
為驗證數據增強后的模型效果,用數據增強后的模型對20幅群體棉種圖像進行檢測,棉種共錯判了13粒,其中將完好棉種錯判為破損棉種6粒,破損棉種判為完好棉種7粒,漏檢0粒,準確率為95.67%、召回率為96.31%、漏檢率為0。數據增強后的模型準確率提升0.34個百分點,相較于未進行數據增強的模型略有提升。
棉種正面為完好但背面不一定也是完好,本試驗采用群體棉種在透明亞克力板上進行雙面檢測,很好地解決了棉種雙面品質檢測與分選問題。
通過表2可以發現,經過改進后網絡模型的檢測速度、模型所占內存,較YOLO v4有較大的提升,雖然模型所占內存比輕量級的SSD-MobileNet v3大,但是準確率與檢測速度都有明顯改善。基于改進YOLO v4仍然存在誤檢的情況,分析原因可能是在破損棉種破損情況較小時(只有一道裂縫),當前CCD相機無法捕捉到棉種的裂縫,后續可通過提高相機的像素,捕捉更加細微的破損情況。模型存在將完好棉種檢測為破損棉種的情況,分析原因可能是脫絨棉種在經過硫酸脫絨的時候,棉種表面的

表2 模型測試結果Tab.2 Model test results
棉絨未完全脫干凈,殘留的白色棉絨會讓模型將好的棉種判斷為破損棉種。在YOLO v4和SSD-MobileNet v3網絡上都出現了棉種漏檢以及多個目標檢測框出現的情況,漏檢率是評價一個模型的重要指標[17],YOLO v4相比較SSD-MobileNet v3在漏檢率上有優勢,通過改進YOLO v4網絡的結構以及損失函數的類型,使用DIOU_nms有效地解決了漏檢和多個檢測框的情況。綜合考慮檢測精度和速度,本研究選用改進后的YOLO v4作為檢測模型。
(1)以新陸早棉種為研究對象,設計了一種群體棉種雙面破損在線檢測裝置,利用亞克力板在強光和白色背景板下透明的特點,實現了對棉種上下兩面圖像的采集,并設計了相關的上料、輸送裝置,完成了對棉種檢測的全自動化過程,對比傳統單粒、單面棉種的檢測技術,在檢測效率和精確性上有了顯著提升。
(2)使用改進YOLO v4網絡對群體棉種進行雙面檢測,將群體棉種分為破損棉種和完好棉種。通過改變YOLO v4網絡的整體結構以及損失函數,得到了改進YOLO v4模型,在此模型上,準確率和召回率分別為95.33%、96.31%。模型所占內存為27.1 MB,檢測速度達到了78幀/s,模型具有很好的魯棒性,可滿足實際生產要求。
(3)本文解決了群體棉種圖像難以分割的問題,利用卷積神經網絡代替傳統圖像識別方法,無需單獨將每一粒棉種從群體棉種中分割出來進行破損識別。利用卷積神經網絡的特點,直接檢測出群體棉種的破損以及位置信息,為檢測群體棉種的破損情況提供了一種新的思路,加速棉種分選智能化,也為后續研發相關自動化設備提供了技術支持。