蘇斐,張澤旭,趙妍平,李天華,祖林祿
(1.山東農(nóng)業(yè)大學(xué)機(jī)械與電子工程學(xué)院,山東泰安,271018;2.山東省園藝機(jī)械與裝備重點(diǎn)實(shí)驗(yàn)室,山東泰安,271018)
蔬菜和水果是我國種植業(yè)的第二和第三大產(chǎn)業(yè),目前其采摘作業(yè)仍以人工為主,自動(dòng)采摘的實(shí)現(xiàn)可節(jié)省勞動(dòng)力并提高采摘效率。國內(nèi)外對自動(dòng)采摘的研究主要通過圖像識別進(jìn)行定位,再通過驅(qū)動(dòng)機(jī)械結(jié)構(gòu)進(jìn)行采摘[1-3]。為了給采摘后的番茄儲(chǔ)存和運(yùn)輸預(yù)留出足夠的時(shí)間,番茄采摘常常在綠熟期進(jìn)行[4]?,F(xiàn)存研究主要針對成熟番茄的定位采摘,對綠熟期番茄的研究較少。
Yamamoto等[5]提出了采用機(jī)器學(xué)習(xí)方法識別完整番茄果實(shí);趙杰文[6]、陶彥輝[7]分別采用基于HIS顏色特征、基于RGB顏色特征的番茄識別方案;王紅珠等[8]設(shè)計(jì)了基于番茄外觀特征的檢測方案。上述檢測方法都基于顏色特征的差異,且對象為成熟紅色番茄,在處理綠熟期番茄時(shí),會(huì)因番茄與樹葉、枝干顏色接近,而無法準(zhǔn)確檢測其位置。馬翠花等[9]提出改進(jìn)Hough變換方法隨機(jī)擬合番茄單果,這種方法不能有效解決番茄果實(shí)重疊,葉片、枝干遮擋等類圓特征不明顯的圖像檢測問題。
基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)識別檢測算法精度高,而且檢測性能優(yōu)于傳統(tǒng)的圖像處理檢測技術(shù)。主要包括兩類:一類是基于有候選區(qū)域的雙階段網(wǎng)絡(luò)RCNN[10]、Fast R-CNN[11]、Faster R-CNN[12]等,第一階段在圖像中生成預(yù)選框,第二階段對預(yù)選框進(jìn)行分類進(jìn)而實(shí)現(xiàn)定位;另一類是無候選區(qū)域的單階段網(wǎng)絡(luò)SSD[13],YOLO[14-15]。雙階段網(wǎng)絡(luò)的模型精度相對較高,但需要強(qiáng)大的GPU計(jì)算能力,占據(jù)運(yùn)行空間大,計(jì)算成本高。與雙階段網(wǎng)絡(luò)相比,YOLO-v3引入多尺度預(yù)測,可大幅提高針對小物體的檢測精度,在保證檢測精度的前提下可大大縮短訓(xùn)練時(shí)間[16]?;诖吮疚牟捎酶倪M(jìn)的輕量化YOLO-v3算法實(shí)現(xiàn)綠熟期番茄的檢測。
試驗(yàn)揚(yáng)需圖像均采集于山東農(nóng)業(yè)大學(xué)科技創(chuàng)新園番茄日光溫室,番茄處于綠熟成長期。為了正確反映番茄生長姿態(tài)及環(huán)境的復(fù)雜性,采集不同光照、不同角度條件下的圖像,包括:無遮擋、無重疊番茄圖像,果實(shí)部分重疊番茄圖像,葉片遮擋番茄圖像,枝干遮擋番茄圖像和葉片枝干混合遮擋番茄圖像。采集設(shè)備為手機(jī)自帶12 MP+20 MP攝像頭,對比度、飽和度、銳度設(shè)置為標(biāo)準(zhǔn)模式。揚(yáng)采集圖像共200張,俯視圖片135張(正光106張,背光29張),平視圖片65張(正光39張,背光26張),平均每幅圖像綠熟番茄數(shù)量約為4個(gè)。部分原始圖像如圖1揚(yáng)示。
圖1 部分原始圖像Fig.1 Partial original images
對采集圖像進(jìn)行圖像增強(qiáng)處理,在訓(xùn)練過程中對部分圖像采取隨機(jī)裁剪、隨機(jī)旋轉(zhuǎn)、隨機(jī)平移3種處理方式,擴(kuò)大數(shù)據(jù)集總量。采用LabelImg軟件對數(shù)據(jù)集進(jìn)行人工標(biāo)注,標(biāo)注完成后按照Pascal VOC數(shù)據(jù)集的格式進(jìn)行部署。隨機(jī)抽取20張未經(jīng)過增廣處理的圖像作為測試集,不參與訓(xùn)練過程;隨機(jī)抽取20張圖像作為驗(yàn)證集,同樣不參與訓(xùn)練過程,但需要在訓(xùn)練過程中可視化模型的收斂狀況,確保出現(xiàn)問題后及時(shí)中止訓(xùn)練,以免浪費(fèi)訓(xùn)練時(shí)間;剩余的圖像全部作為訓(xùn)練集。
YOLO-v3的骨干網(wǎng)絡(luò)為DarkNet-53,除用于分類輸出的平均池化層、全連接層外,剩余網(wǎng)絡(luò)主要由53個(gè)1×1和3×3大小的卷積層組成,可用于處理大數(shù)量分類的目標(biāo)檢測問題。本文主要針對單分類的綠熟期番茄,若直接使用DarkNet-53會(huì)使網(wǎng)絡(luò)層次結(jié)構(gòu)較深,產(chǎn)生較多的無效卷積操作,從而增大運(yùn)算成本、消耗更多的時(shí)間,由此訓(xùn)練出的模型會(huì)因占據(jù)內(nèi)存過大很難在真實(shí)的應(yīng)用場景中部署,如在驅(qū)動(dòng)采摘機(jī)械的嵌入式端中。
為解決這一問題,本文采用輕量化的Mobilenet-v1作為骨干網(wǎng)絡(luò)。其核心是引入深度可分離卷積操作,將標(biāo)準(zhǔn)卷積分為深度(depthwise,DW)卷積和逐點(diǎn)(pointwise,PW)卷積兩步。標(biāo)準(zhǔn)卷積中一個(gè)卷積核作用于揚(yáng)有通道,在完成卷積操作之后直接加入批量標(biāo)準(zhǔn)化(Batch Normalization,BN)層和激活函數(shù)層[17]。DW卷積是一個(gè)卷積核對應(yīng)一個(gè)輸入通道,從而產(chǎn)生多個(gè)輸出,再通過使用1×1卷積核的PW卷積將DW卷積的輸出組合起來,經(jīng)由兩步卷積實(shí)現(xiàn)了深度可分離卷積[19]。圖2揚(yáng)示為輕量化的YOLO-v3網(wǎng)絡(luò)結(jié)構(gòu),其中左上角為深度可分離卷積的結(jié)構(gòu)組成。在實(shí)際網(wǎng)絡(luò)中再加上BN層和ReLU激活函數(shù)層組成Mobilenetv1的基本結(jié)構(gòu)。采用深度可分離卷積構(gòu)建的網(wǎng)絡(luò)BN層和ReLU激活函數(shù)層的數(shù)量多于采用標(biāo)準(zhǔn)卷積構(gòu)建的網(wǎng)絡(luò),可以使模型更好地進(jìn)行非線性擬合,模型收斂效果更好。
圖2 輕量化YOLO-v3的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of lightweight YOLO-v3
Mobilenet-v1網(wǎng)絡(luò)模型的大小通過設(shè)置兩個(gè)超參數(shù)來實(shí)現(xiàn):控制輸出特征圖的維數(shù)α∈(0,1]和尺寸ρ,此時(shí)引入兩個(gè)超參數(shù)后深度可分離卷積的計(jì)算量可用式(1)、式(2)來表示。
式中:DSF——輸入、輸出特征圖的長寬大??;
DSK——卷積核大?。?/p>
M——輸入通道數(shù);
N——輸出通道數(shù);
其中輸入量表示為DSF×DSF×M,輸出量表示為DSF×DSF×N,輸入圖像經(jīng)過骨干網(wǎng)絡(luò)的卷積,對特征進(jìn)行提取,最終得到輸出特征圖。
由于自然環(huán)境下番茄果實(shí)的大小是不均勻的,使用單一尺度的番茄特征圖進(jìn)行檢測,對小體積番茄的檢測精度不高。YOLO-v3為了提高對小物體的檢測精度,采用如圖2揚(yáng)示的多尺度預(yù)測方法。低層的特征圖被處理次數(shù)較少,故包含更多的目標(biāo)位置信息,但特征信息相對較少,而經(jīng)過多層卷積操作之后的高層特征圖揚(yáng)包括的特征信息較多,但目標(biāo)位置信息較少。YOLO-v3通過特征融合結(jié)合不同尺度下的特征圖信息對目標(biāo)進(jìn)行多尺度檢測。將小尺度(Feature map1)、中尺度(Feature map2)、大尺度(Feature map3)特征圖信息通過卷積核進(jìn)行特征融合,在3個(gè)維度分別單獨(dú)進(jìn)行預(yù)測,得到3個(gè)預(yù)測結(jié)果(detection1、detection2、detection3)。
損失函數(shù)是衡量模型是否成功收斂的重要參考指標(biāo),一般情況下?lián)p失函數(shù)值越小,模型的效果越好。YOLO-v3對輸入圖像中產(chǎn)生的每一個(gè)預(yù)測框都建立損失函數(shù),但具體的公式并沒有明確指出[19],結(jié)合YOLO-v1和YOLO-v2中損失函數(shù)的建立方法用式(3)對YOLO-v3的損失函數(shù)進(jìn)行表示。
由式(3)可知,損失函數(shù)由4部分組成:關(guān)于預(yù)測對象的中心坐標(biāo)(xi,yi);關(guān)于生成的預(yù)測框的寬、高大小wi和hi;關(guān)于預(yù)測框的置信度,其中Ci表示預(yù)測的類別,表示實(shí)際類別,pi(c)和分別表示預(yù)測目標(biāo)的置信度和實(shí)際目標(biāo)的置信度,即預(yù)測框內(nèi)有目標(biāo)(obj)做一個(gè)預(yù)測,無目標(biāo)(noobj)也做一個(gè)預(yù)測;最后為關(guān)于類別的誤差損失,即預(yù)測的結(jié)果是否真正屬于這一類。其中λcoord和λnoobj是附加的對坐標(biāo)預(yù)測和無目標(biāo) 置 信 度 的 權(quán) 重 系 數(shù),通 常 情 況 取λcoord為5,λnoobj為0.5;和?分 別 對 應(yīng) 真 實(shí) 邊 界 框 的 中 心 坐 標(biāo) 和寬、高大小,如表1揚(yáng)示,本文將預(yù)測框中心坐標(biāo)和寬高大小統(tǒng)一歸為位置誤差,故總體分為3類。
表1 YOLO-v3損失函數(shù)組成Tab.1 Composition of YOLO-v3 loss function
模型訓(xùn)練過程參數(shù)定義如下:(1)設(shè)置最大迭代次數(shù)為20 000輪,對揚(yáng)有訓(xùn)練集圖像運(yùn)算一遍迭代次數(shù)加1。(2)使用動(dòng)態(tài)學(xué)習(xí)率(learning rate)的策略。學(xué)習(xí)率越低訓(xùn)練過程中損失函數(shù)的變化速度就越慢,在訓(xùn)練前期學(xué)習(xí)率稍大,前100輪的學(xué)習(xí)率從0線性增加到0.000 01;訓(xùn)練后期防止跳過最優(yōu)值將學(xué)習(xí)率調(diào)小,到15 000輪和18 000輪分別下降90%;每迭代20輪保存當(dāng)前的損失值和學(xué)習(xí)率。(3)為實(shí)時(shí)判斷模型訓(xùn)練的收斂情況,每迭代200輪使用預(yù)先設(shè)置的驗(yàn)證集求解該模型的平均精度均值(Mean Average Precision,mAP)完成對當(dāng)前訓(xùn)練模型的評估,衡量番茄檢測效果。
此處驗(yàn)證集不參與訓(xùn)練過程,只用于實(shí)時(shí)分析模型訓(xùn)練的方向,即采用邊訓(xùn)練邊驗(yàn)證的方法。實(shí)時(shí)求解損失函數(shù)和mAP可判斷訓(xùn)練趨勢的正確性,保證模型隨迭代次數(shù)增加正常收斂,訓(xùn)練過程如出現(xiàn)問題后可及時(shí)中止訓(xùn)練,以免造成時(shí)間浪費(fèi)。
模型訓(xùn)練時(shí)使用可視化工具TensorBoard記錄訓(xùn)練過程中損失函數(shù)值和平均精度均值的變化。損失函數(shù)和mAP的變化趨勢如圖3、圖4揚(yáng)示。
圖3 損失函數(shù)值變化趨勢Fig.3 Variation of the loss function value with iterations
圖4 均值平均精度變化趨勢Fig.4 Variation of the mean average precision with iterations
每迭代20輪記錄一次損失函數(shù)值,隨迭代次數(shù)增加,呈現(xiàn)先大幅下降,隨后下降幅度減小,逐漸平緩的趨勢。每迭代200輪通過驗(yàn)證集求解一次mAP值,mAP的變化整體呈現(xiàn)出上升趨勢。
因此,模型成功收斂。但從圖4中可看出訓(xùn)練過程中精度存在震蕩和波動(dòng),導(dǎo)致其不是規(guī)律線性變化,階段模型中存在mAP值較高但損失值很大的問題。
故不能單獨(dú)按照mAP選取模型,需要結(jié)合損失函數(shù)的變化,揚(yáng)得模型不僅精度大,而且需要損失函數(shù)值小,一般取迭代次數(shù)較大的模型。本文取第19 800輪迭代揚(yáng)得的模型,mAP值為98.69%,損失值為8.81。
輕量化YOLO-v3算法訓(xùn)練出的模型與原模型相比,各項(xiàng)指標(biāo)取值如表2揚(yáng)示。針對同一Pascal VOC數(shù)據(jù)集下,對綠熟期番茄的訓(xùn)練時(shí)間、驗(yàn)證集精度、測試集精度、幀速率和內(nèi)存占用結(jié)果比較可看出,輕量化的YOLO-v3算法訓(xùn)練出的模型極大地縮短了訓(xùn)練時(shí)間,約為原來的1/5,訓(xùn)練速度提高為原來的3.88倍,幀速率提高到原來的1.49倍,內(nèi)存占用大小只占原算法模型的39.38%,驗(yàn)證集精度較原來下降僅0.03%,測試集精度下降0.49%,綜上輕量化YOLO-v3算法訓(xùn)練的模型極大地提高了速度,減少內(nèi)存的占用,僅損失了很少的精度。
表2 改進(jìn)YOLO-v3與原YOLO-v3性能比較Tab.2 Performance comparison between the improved YOLO-v3 and the original YOLO-v3
分析精度下降的原因:YOLO-v3原骨干網(wǎng)絡(luò)DarkNet-53是全卷積層,輕量化的YOLO-v3的骨干網(wǎng)絡(luò)是Mobilenet-v1,Mobilenet-v1相較于全卷積層在減少參數(shù)量的同時(shí)精度會(huì)有揚(yáng)下降[20]。
為模擬實(shí)際采摘環(huán)境,對綠熟期番茄圖像的檢測主要從3個(gè)方面進(jìn)行預(yù)測。首先針對傳統(tǒng)檢測方法對葉片遮擋情況檢測準(zhǔn)確率不高的問題,采用輕量化YOLO-v3算法,如圖5揚(yáng)示。
圖5 輕量化YOLO-v3對葉片遮擋情況檢測效果Fig.5 Detection performance of lightweight YOLO-v3 on images with leaf occlusion
其次,模型針對多目標(biāo)即數(shù)據(jù)不均衡的番茄圖像也可實(shí)現(xiàn)有效標(biāo)注,漏標(biāo)情況較少,如圖6揚(yáng)示。
圖6 綠熟期番茄數(shù)據(jù)不平衡試驗(yàn)結(jié)果Fig.6 Test results of the data imbalance test on mature green tomato
最后,模型針對正光條件、不同角度和背光條件、不同角度對均衡圖像進(jìn)行測試,如圖7、圖8揚(yáng)示??梢钥闯觯谡鈼l件和背光條件下,改進(jìn)后的模型針對無遮擋、無重疊,有葉片遮擋、枝干遮擋以及番茄重疊圖像均能取得較好的檢測效果。
圖7 正光條件、不同角度試驗(yàn)結(jié)果Fig.7 Test results on bright environment and different angles
圖8 背光條件、不同角度試驗(yàn)結(jié)果Fig.8 Test results on dark environment and different angles
YOLO-v3模型因其復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),會(huì)產(chǎn)生大量的計(jì)算冗余,訓(xùn)練的模型占用內(nèi)存大,很難在移動(dòng)設(shè)備端和嵌入式設(shè)備端部署。因而本文提出基于輕量化YOLO-v3算法的番茄檢測方案,將原骨干網(wǎng)絡(luò)Darknet53替換成輕量級的Mobilenet-v1網(wǎng)絡(luò),輕量化的YOLO-v3網(wǎng)絡(luò)使用深度可分離卷積極大地降低計(jì)算量,模型的內(nèi)存減小,并且對于綠熟期番茄的檢測效果較好,經(jīng)過訓(xùn)練得到的番茄檢測模型具有以下優(yōu)勢。
1)能夠解決傳統(tǒng)圖像檢測方法在處理葉片、枝干遮擋、果實(shí)重疊圖像定位檢測精度低,定位不準(zhǔn)確的問題。
2)模擬實(shí)際生產(chǎn)采摘環(huán)境,對不同光照條件、不同拍攝角度下的番茄圖像均可以有效標(biāo)注,并且在圖像目標(biāo)數(shù)據(jù)不均衡的條件下,幾乎無漏標(biāo),滿足實(shí)際應(yīng)用場景的需求。
3)本文揚(yáng)提出的輕量化網(wǎng)絡(luò)在保證精度的前提下大大縮短模型訓(xùn)練時(shí)間,訓(xùn)練速度提高了約3.88倍;并且在內(nèi)存空間占用上節(jié)省為原算法模型的39.38%,此網(wǎng)絡(luò)更易于在移動(dòng)設(shè)備端和嵌入式設(shè)備端部署。
中國農(nóng)機(jī)化學(xué)報(bào)2022年3期