李國進(jìn),黃曉潔,李修華
(廣西大學(xué) 電氣工程學(xué)院,南寧530004)
芒果是我國盛產(chǎn)的熱帶水果之一, 目前它的采摘工作主要依靠人工完成。 采摘工作耗費大量的人力和時間,導(dǎo)致其生產(chǎn)成本較高。利用機器視覺的方法識別和定位樹上芒果,有利于實現(xiàn)芒果的機器采摘,從而降低芒果的生產(chǎn)成本,提高其生產(chǎn)效率。傳統(tǒng)基于視覺的芒果檢測主要依據(jù)果實的顏色、形狀和紋理等特征,或是使用簡單的BP 神經(jīng)網(wǎng)絡(luò)來完成檢測任務(wù)[1-4]。 如HUSSIN 等[5]利用顏色特征除去與芒果顏色無關(guān)的背景,使用霍夫變換進(jìn)行目標(biāo)檢測,檢測精度只有60%。 PAYNE 等[6]利用密集像素分割方法,提取超級像素中SIFT 算子,設(shè)計基于顏色和橢圓形狀的模型,檢測夜間采集的樹木冠層圖像中的芒果,算法檢測正確率達(dá)到84%。張烈平等[7]運用BP 神經(jīng)網(wǎng)絡(luò)技術(shù),對損傷芒果進(jìn)行不同等級的分類,識別芒果的準(zhǔn)確率達(dá)85.5%。 在受到光照、枝葉遮擋和果實重疊的影響下,傳統(tǒng)方法識別果實的準(zhǔn)確度較低,耗時較長,無法滿足現(xiàn)代農(nóng)業(yè)中果實智能化收獲的需求。
目前,對于水果的目標(biāo)檢測方法主要采取深度學(xué)習(xí)的方法,利用深度卷積神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)到圖像中目標(biāo)的隱含特征,解決了上述傳統(tǒng)方法的不足問題,也為實現(xiàn)樹上芒果的檢測提供了新的方向[8-10]。 薛月菊等[11]通過設(shè)計帶密集連接的Tiny-yolo 網(wǎng)絡(luò)結(jié)構(gòu),復(fù)用和融合了網(wǎng)絡(luò)的多層特征及語義信息,對于未成熟芒果的檢測取得了97.02%的準(zhǔn)確率。 彭紅星等[12]使用改進(jìn)的SSD 深度學(xué)習(xí)水果檢測模型對臍橙、蘋果、皇帝柑和荔枝4 種水果在各種環(huán)境下進(jìn)行檢測,平均檢測精度達(dá)到88.4%。岑冠軍等[13]采用Faster R-CNN 深度學(xué)習(xí)模型構(gòu)建了芒果圖像識別算法,對芒果圖像的計數(shù)識別準(zhǔn)確率達(dá)到82.3%;熊俊濤等[14]結(jié)合殘差網(wǎng)絡(luò)和密集連接網(wǎng)絡(luò),構(gòu)成Des-YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu),實現(xiàn)夜間復(fù)雜環(huán)境下對成熟柑橘的檢測,平均精度為90.75%,檢測速度為53FPS。為提高自然環(huán)境中樹上芒果檢測算法的適用性、準(zhǔn)確性和高效性,以實現(xiàn)芒果果實的機器采摘,減少人工采摘作業(yè)耗費的成本,綜合考慮算法的實時檢測性和準(zhǔn)確性,本研究提出改進(jìn)的YOLOv3 算法對不同顏色和種類的芒果進(jìn)行檢測。 所提方法以YOLOv3 作為芒果果實檢測的基礎(chǔ)框架, 采用引入密集模塊和eSE 模塊的改進(jìn)SE_ResNet50 網(wǎng)絡(luò)作為新的特征提取網(wǎng)絡(luò),并與其他不同主干網(wǎng)絡(luò)或基礎(chǔ)框架的檢測方法在芒果圖像數(shù)據(jù)集上進(jìn)行對比試驗。
在自然條件下采集不同樹上的芒果圖像,對圖像中的芒果果實進(jìn)行人工標(biāo)注,建立目標(biāo)檢測的訓(xùn)練集和測試集;本研究采用的樹上芒果圖像數(shù)據(jù)集由在芒果成熟階段拍攝的果園芒果照片構(gòu)成,在不同時間段采集了不同距離、方向和角度的芒果圖像。 初始經(jīng)過篩選后的數(shù)據(jù)集的總共數(shù)目為360 張圖片,包含了順光、逆光、近距離、遠(yuǎn)距離、部分遮擋、顏色和種類各異等情況。 經(jīng)過隨機亮度、隨機對比度、隨機飽和度、水平鏡像翻轉(zhuǎn)和隨機裁剪等圖像增強方式,將數(shù)據(jù)集擴增至3200 張的圖像,并隨機劃分其中的2500 張為訓(xùn)練集(含3487 個芒果目標(biāo)),剩下的700 張為測試集(含1656 個芒果目標(biāo))。 圖1 為部分芒果數(shù)據(jù)集圖像。
由于YOLOv3 模型的輸入數(shù)據(jù)要求具有分類標(biāo)簽和定位信息,所以在將訓(xùn)練集和測試集的圖像分別統(tǒng)一重新命名后,還需要對每一張圖像中的目標(biāo)進(jìn)行人工標(biāo)記感興趣區(qū)域和類別標(biāo)注。本次試驗使用標(biāo)注工具LabelImg 完成相應(yīng)的標(biāo)注工作,該工具會自動保存每幅圖像的分辨率大小、用戶所標(biāo)記的包圍目標(biāo)對象的矩形邊界框的左上角與右下角坐標(biāo)以及目標(biāo)所屬的類別信息,從而將篩選出來的圖像數(shù)據(jù)按照PASCAL VOC2012檢測標(biāo)準(zhǔn)進(jìn)行標(biāo)注和存儲。
2015~2018 年,REDMON 等[15-17]先后提出了YOLOv1、YOLOv2 和YOLOv3 算法,將目標(biāo)檢測任務(wù)看作為回歸問題,只需單個網(wǎng)絡(luò)就能直接從完整的圖像中預(yù)測出目標(biāo)的邊界框和類別概率。YOLOv3 首次利用帶有殘差神經(jīng)網(wǎng)路[18]的DarkNet53 網(wǎng)絡(luò)作為特征提取器,解決了YOLOv1 和YOLOv2 在小目標(biāo)檢測上不準(zhǔn)確的問題,提出了在檢測中運用多尺度特征融合和多尺度預(yù)測的策略,擁有更快的檢測速度和更高的準(zhǔn)確度。 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)如圖2。
圖1 樹上芒果數(shù)據(jù)集示例Figure 1 The examples of mango dataset on trees
圖2 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)Figure 2 The YOLOv3 network structure
YOLOv3 算法首先將原始輸入圖像縮放至608×608 像素的大小,經(jīng)過DarkNet53 網(wǎng)絡(luò)進(jìn)行特征提取后,得到大小為19×19,38×38,76×76 的3 個尺度的特征圖(網(wǎng)格);其次將3 種特征圖分別輸出到檢測模塊,利用2倍的上采樣(Upsample)對相鄰兩尺度的特征圖進(jìn)行串聯(lián)拼接(Concat),即多尺度特征融合;最后通過非極大值抑制方式融合3 種不同尺度特征圖的檢測結(jié)果。 每個網(wǎng)格預(yù)測3 個邊界框和邊界框的置信度, 以及所有類的類別概率。 置信度反映了邊界框的準(zhǔn)確性和邊界框包含檢測目標(biāo)的概率大小。 置信度的定義為:
式中:Pr為預(yù)測邊界框包含目標(biāo)的可能性,若含有目標(biāo),則為1,否則為0;IoU 為真實標(biāo)記框與預(yù)測框的交集和并集之比。
YOLOv3 網(wǎng)絡(luò)在每個網(wǎng)格上預(yù)測每個邊界框的4 個坐標(biāo),即tx、ty、tw和th。其中,tx和ty為預(yù)測邊界框的中心坐標(biāo),tw和th為預(yù)測邊界框的寬度和高度。 假設(shè)目標(biāo)中心在網(wǎng)格中相對于圖像左上角有偏移(cx,cy),并且錨框的高度和寬度分別為pw和ph,則經(jīng)過修正后的邊界框坐標(biāo)為:
Sigmoid 函數(shù)的定義為:
在基于深度學(xué)習(xí)的目標(biāo)檢測算法中,主干網(wǎng)絡(luò)用于完成目標(biāo)特征提取任務(wù),其在圖像分類上的精度和速度會影響目標(biāo)檢測算法的性能。 通常分類精度越高的網(wǎng)絡(luò)提取目標(biāo)特征的能力越強。 HU 等[19]提出的SE_ResNet50 網(wǎng)絡(luò),在ImageNet 數(shù)據(jù)集上的分類效果優(yōu)于DarkNet53 網(wǎng)絡(luò)。 因此,本研究采用SE_ResNet50 替換DarkNet53 作為YOLOv3 算法的主干網(wǎng)絡(luò),并借鑒密集網(wǎng)絡(luò)思想[20]和VoVNetV2[21]的思想,對其進(jìn)行改進(jìn),進(jìn)一步提高模型的檢測性能。 SE_ResNet50 網(wǎng)絡(luò)主要由殘差模塊和SE 模塊構(gòu)成的SE_ResNet 模塊構(gòu)成。 SE模塊可以讓模型關(guān)注更多通道中信息量最大的特征,同時抑制通道中不重要的特征,帶來模型性能的提升。 SE_ResNet50 采用的SE_ResNet 模塊如圖3。 輸入是H′(高度)×W′(寬度)×C′(特征圖通道數(shù))的特征圖X,經(jīng)過不同的卷積操作(Convs)得到大小為H(高度)×W(寬度)×C(特征圖通道數(shù))的特征圖U;然后,利用全局平均池化(Global Pooling)操作對U 進(jìn)行“擠壓”,屏蔽其空間上分布的無用信息,提取特征通道的全局信息,輸出1×1×C 大小的特征圖;再經(jīng)過兩個帶不同激活函數(shù)的全連接層(FC)實現(xiàn)“激勵”;Scale 為特征重標(biāo)定操作,將FC輸出的權(quán)重與U 相乘,以增強重要特征;最后將特征圖U*與原輸入特征圖X 進(jìn)行殘差連接后輸出。
圖3 SE_ResNet 模塊Figure 3 The schema of the SE_ResNet model
SE 模塊中的首個全連接層的主要作用是降維,在一定程度上會造成特征信息丟失,去掉該層,并將保留的全連接層中的Sigmoid 激活函數(shù)改成與其數(shù)值近似而計算量更小的Hsigmoid 激活函數(shù),得到eSE 模塊[21],圖4。在模型中使用eSE 模塊,能夠有效增強提取到的特征信息,使模型性能得到改善。 其中HSigmoid 函數(shù)的定義為:密集網(wǎng)絡(luò)以前饋的方式將每個密集模塊中的所有層連接起來,使每一層的輸入都包含了其之前所有層的特征圖。 通過層間連接有效緩解梯度消失問題,加強特征的傳遞和復(fù)用,同時降低計算量。 假設(shè)一個密集模塊含有L 層,其第l 層由前面l 個層的輸出作為輸入,第l 層的輸出也會作為其余L-l 層的輸入,則該密集模塊共包含L×(L+1)/2 個連接。 密集模塊中的第l 層輸出為:
式中:[x0,x1,…,xl-1]為第l 層之前的輸入特征圖拼接;Hl(·)為非線性組合函數(shù),由批量歸一化(BatchNormalization,BN)操作、ReLU 函數(shù)、Conv1×1、BN 操作、ReLU 函數(shù)和Conv3×3 組成。
本研究采用的密集模塊如圖5。 共有4 層,大小為19(高度)×19(寬度)×1024(特征圖通道數(shù))的輸入層x0,經(jīng)過H1、H2、H3操作后,得到大小為19×19×1120 的特征圖x3。x3層融合了前3 層x0、x1和x2的特征信息,達(dá)到多層特征復(fù)用的效果。
圖5 密集模塊Figure 5 The schema of the Dense Block
本研究算法采用密集模塊替換SE_ResNet50 中的最后3 個殘差模塊,使網(wǎng)絡(luò)深層充分利用各層之間的特征,實現(xiàn)芒果特征的多層復(fù)用和融合,并在密集模塊之后增加eSE 模塊和殘差連接以進(jìn)一步增強特征,提升模型性能。 改進(jìn)后的YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)(ISD-YOLOv3)如圖6。
ISD-YOLOv3 采用改進(jìn)的SE_ResNet50 網(wǎng)絡(luò)提取芒果圖像的特征, 輸出76×76×512 維、38×38×1024 維和19×19×1120 維的特征圖; 接著通過連續(xù)使用1×1 和3×3 大小的二維卷積層、2 倍上采樣操作和串聯(lián)拼接等操作實現(xiàn)多尺度特征融合與預(yù)測;由3 個不同尺度特征圖的反復(fù)訓(xùn)練確定模型的權(quán)重參數(shù),最終在測試階段輸出帶有分類和定位信息的樹上芒果測試圖像。
本試驗是在配置為CPU Intel Core i3-8100、英偉達(dá)Tesla V100 顯卡、主頻3.6GHz 和內(nèi)存8G 的PC 端上完成。 使用的操作系統(tǒng)為Windows10 專業(yè)版,訓(xùn)練和測試框架均為Python3.7.3 環(huán)境下的PaddlePaddle1.7.1 機器學(xué)習(xí)開發(fā)框架。
本試驗對象為3200 張自然環(huán)境下的樹上芒果圖像,其中2500 張為訓(xùn)練集,700 張為測試集。 在模型訓(xùn)練過程,設(shè)定網(wǎng)絡(luò)中的目標(biāo)類別數(shù)為1,權(quán)重衰減系數(shù)為0.0005,批量大小為8,迭代次數(shù)為14000 次;每次訓(xùn)練輸入圖像的分辨率從設(shè)定的多尺度集{320, 352, …, 608}中隨機選擇一個尺度進(jìn)行訓(xùn)練,并通過隨機裁剪、隨機調(diào)整飽和度、曝光量以及色調(diào)等方式增強訓(xùn)練樣本,提高網(wǎng)絡(luò)對不同分辨率輸入圖像的泛化能力和準(zhǔn)確性;初始學(xué)習(xí)率為0.001,當(dāng)網(wǎng)絡(luò)訓(xùn)練迭代7000 次和9000 次時,學(xué)習(xí)率依次降低為0.0001 和0.00001,防止網(wǎng)絡(luò)出現(xiàn)過擬合。 在測試階段,使用的批量大小為8,IoU 閾值為0.7,類別分?jǐn)?shù)閾值為0.05,輸入圖像的分辨率大小固定為608×608 像素。
圖6 ISD-YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)Figure 6 The ISD-YOLOv3 network structure
為更準(zhǔn)確地表現(xiàn)本研究所提出模型的性能,試驗使用目標(biāo)檢測中常用的平均精度(AP)和每秒檢測的圖片數(shù)量(FPS)作為模型的評價指標(biāo)。 AP 是衡量網(wǎng)絡(luò)結(jié)構(gòu)對目標(biāo)物體敏感度的標(biāo)準(zhǔn)之一,AP 數(shù)值越高就說明卷積神經(jīng)網(wǎng)絡(luò)的檢測精確度越高。其計算方式與準(zhǔn)確率(Precision, P)和召回率(Recall, R)有關(guān)。假設(shè)預(yù)測框與真實標(biāo)記框的交并比大于IoU 閾值,則將該預(yù)測框歸為正樣本,否則為負(fù)樣本。 準(zhǔn)確率P(%)和召回率R(%)計算公式為:
式中:TP 為正樣本正確檢測數(shù)量;FP 為正樣本錯誤檢測數(shù)量;FN 為未檢測出的真實標(biāo)記框數(shù)量。
本研究AP 的計算方式采用COCO 數(shù)據(jù)集評價方式中的101 點插值法,即分別選取[0,0.01,…,1]101 個不同的召回率數(shù)值,計算每個數(shù)值對應(yīng)的最大準(zhǔn)確率,將其求和后取平均得到AP:
式中:r 為召回率;r′為101 個不同的數(shù)值。
通過調(diào)用訓(xùn)練過程保存的模型參數(shù)文件,即生成的權(quán)重文件,可對芒果數(shù)據(jù)集中的圖片進(jìn)行相應(yīng)的測試,測試后可自動識別并定位測試圖片中的芒果,顯示相應(yīng)的定位信息和類別信息。 試驗對于單個樹上芒果的部分測試結(jié)果如圖7。圖中紅色的矩形邊界框?qū)δ繕?biāo)芒果做出了定位,邊界框的左上角標(biāo)明了該目標(biāo)的類別為芒果和被識別為芒果的概率。由圖7 可知,模型能夠很準(zhǔn)確地定位和識別單個不同條件下的芒果;圖7c 雖然有小部分的遮擋,也不影響目標(biāo)檢測的準(zhǔn)確性。 對于含有多個果實且有重疊的芒果圖像檢測結(jié)果示例如圖8,除了個別被嚴(yán)重遮擋的果實外,對于含有小部分重疊的芒果,模型依舊能夠正確識別并準(zhǔn)確定位,說明本研究算法對于芒果的檢測具有良好的檢測性能。
圖7 單個樹上芒果測試結(jié)果實例Figure 7 The result of single mango test
圖8 多個樹上芒果測試結(jié)果實例Figure 8 The result of multiple mangoes test
為進(jìn)一步驗證本研究算法的檢測效果,在同等的試驗平臺和模型參數(shù)下,使用相同的樹上芒果數(shù)據(jù)集,分別在YOLOv3_DarkNet53、YOLOv3_SE_ResNet50、Faster R-CNN[22]以及本研究算法ISD-YOLOv3 共4 種不同算法模型上進(jìn)行算法的訓(xùn)練與測試。部分測試結(jié)果如圖9。試驗在測試集上獲得的平均精度AP、檢測速度以及網(wǎng)絡(luò)模型大小的統(tǒng)計結(jié)果見表1。
由圖9 可知,由于圖像1 中的芒果被葉片遮擋面積較大,只有YOLOv3_SE_ResNet50 和本研究算法ISDYOLOv3 能夠正確檢測出,YOLOv3_DarkNet53 和Faster R-CNN 算法出現(xiàn)了漏檢;圖9 中的圖像2 含有3 個芒果果實,其中一個果實面積很小,其他3 種算法未能檢測出,本研究算法能正確識別并定位的芒果數(shù)量最多,說明本研究提出的ISD-YOLOv3 目標(biāo)檢測算法召回率更高,檢測目標(biāo)更準(zhǔn)確。
由表1 可知,由于SE_ResNet50 網(wǎng)絡(luò)引進(jìn)了可以增強通道特征的SE 模塊,采用其作為YOLOv3 算法的主干網(wǎng)絡(luò),與原來使用的DarkNet53 算法相比,在保持較高檢測速度的同時,平均精度AP 提高6%;本研究的算法ISD-YOLOv3 通過將SE_ResNet50 的部分卷積層改為密集模塊結(jié)合eSE 模塊及殘差連接,增強網(wǎng)絡(luò)的特征復(fù)用,使AP 提高至94.91%,檢測速度達(dá)到85FPS,在精度和和速度上都明顯高于其他3 種算法。 結(jié)果表明,ISD-YOLOv3 網(wǎng)絡(luò)規(guī)模更小,提高了目標(biāo)識別精度和速度,可很好地用于水果采摘機器人的定位檢測。
圖9 不同算法模型檢測結(jié)果示例Figure 9 Detection results of different algorithms
HUSSIN 等[5-6]采用基于手工特征的傳統(tǒng)方法識別芒果, 人工選取果實的顏色和橢圓形狀作為特征,由于環(huán)境的多樣性變化容易使這些特征發(fā)生明顯改變,造成識別的精度較低,因而適用性不高。 本研究采用基于深度學(xué)習(xí)的目標(biāo)檢測算法,通過卷積神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)目標(biāo)隱含的特征,對樹上芒果進(jìn)行檢測。 其中的Faster R-CNN[22]算法利用區(qū)域建議網(wǎng)絡(luò)(RPN)生成檢測框,YOLOv3[17]算法使用檢測模塊生成檢測框,與YOLOv3 的檢測模塊相比,RPN 包含更少的卷積層,但能生成更多的檢測框。 因此,F(xiàn)aster R-CNN 在網(wǎng)絡(luò)結(jié)構(gòu)上比YOLOv3 小,檢測的平均精度較高,而檢測速度僅有6 FPS,無法滿足高效的機器采摘作業(yè)需要的最低實時速度30 FPS。由于YOLOv3 生成的檢測框數(shù)遠(yuǎn)少于Faster R-CNN,導(dǎo)致其檢測精度較低,但其能達(dá)到78 FPS的實時檢測速度。 本研究綜合考慮了算法的精度和速度,選擇YOLOv3 作為芒果檢測方法的主要框架,采用在分類任務(wù)上精度更高的SE_ResNet50 網(wǎng)絡(luò)替換DarkNet53 網(wǎng)絡(luò),能夠提取芒果圖像中更多的果實通道特征,在保持較高的實時檢測速度的同時,提高了檢測精度;采用密集模塊和eSE 模塊改進(jìn)SE_ResNet50 網(wǎng)絡(luò),可以減少模型參數(shù),加強深層卷積層中特征信息復(fù)用與融合,進(jìn)一步提高芒果檢測的實時速度和精度。
表1 不同檢測算法性能對比Table 1 Comparison of different detection algorithms
本研究結(jié)果表明,提出的ISD-YOLOv3 方法對于自然環(huán)境下的樹上芒果果實檢測具備更加良好的實時性、準(zhǔn)確性和魯棒性,為現(xiàn)代農(nóng)業(yè)的果實智能化收獲提供了新的方法。 此外,如何提高識別重疊度較大且目標(biāo)很小的果實的準(zhǔn)確度和減少人工標(biāo)注樣本將是今后研究的主要方向。