張成堯 張艷誠,2 張宇乾 趙玉清,2
(1. 云南農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,云南 昆明 650201;2. 云南省作物生產(chǎn)與智慧農(nóng)業(yè)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650201)
咖啡瑕疵豆嚴(yán)重影響烘焙過程中咖啡的風(fēng)味與品質(zhì),直接影響咖啡的出售價(jià)格。傳統(tǒng)的咖啡瑕疵豆檢測(cè)方法是通過人工目測(cè)篩選,勞動(dòng)強(qiáng)度大、效率低、主觀性大、評(píng)判標(biāo)準(zhǔn)不統(tǒng)一,難以保證咖啡品質(zhì)[1-5]。隨著圖像技術(shù)的發(fā)展,將計(jì)算機(jī)視覺應(yīng)用于咖啡瑕疵豆的檢測(cè)成為了可能[6-7]。早期的計(jì)算機(jī)視覺研究大多基于機(jī)器學(xué)習(xí)方法,主要采用人工提取形狀、顏色、紋理等特征,通過K近鄰分類方法、支持向量機(jī)(SVM)和BP神經(jīng)網(wǎng)絡(luò)進(jìn)行特征分類,實(shí)現(xiàn)咖啡瑕疵豆的檢測(cè)[8]。Akbar等[9]利用隨機(jī)森林和KNN方法,結(jié)合顏色和紋理視覺特征實(shí)現(xiàn)了阿拉比卡咖啡的品質(zhì)分級(jí)。Pinto等[10]利用CNN模型對(duì)咖啡瑕疵豆進(jìn)行分類,平均識(shí)別正確率為80%。目前深度學(xué)習(xí)已被應(yīng)用于農(nóng)業(yè)生產(chǎn)的各個(gè)方面[11-16]。宋懷波等[17]通過改進(jìn)YOLOv5s中的卷積塊并引入SE注意力機(jī)制模塊實(shí)現(xiàn)了對(duì)重度黏連的小麥籽粒的檢測(cè)。奉志強(qiáng)等[18]通過設(shè)計(jì)改進(jìn)YOLOv5的特征提取模塊并在主干網(wǎng)絡(luò)中引入Transformer,提高了復(fù)雜背景下小目標(biāo)的識(shí)別能力。胡根生等[19]基于改進(jìn)YOLOv5網(wǎng)絡(luò)實(shí)現(xiàn)了復(fù)雜背景圖像中茶尺蠖的識(shí)別,識(shí)別準(zhǔn)確率為92.89%。
綜上,改進(jìn)的YOLOv5算法在小目標(biāo)檢測(cè)、復(fù)雜背景等方面具有良好的表現(xiàn),因此研究擬針對(duì)傳統(tǒng)計(jì)算機(jī)視覺中,咖啡瑕疵豆檢測(cè)網(wǎng)絡(luò)模型深度不夠?qū)е戮炔桓?,特征提取耗時(shí)耗力,以及咖啡瑕疵豆目標(biāo)小、檢測(cè)環(huán)境復(fù)雜等問題,結(jié)合深度學(xué)習(xí)在模型深度、小目標(biāo)檢測(cè)與復(fù)雜背景識(shí)別精度高等特點(diǎn),提出一種以YOLOv5s為基線網(wǎng)絡(luò)并嵌入CBAM注意力機(jī)制模塊與Hardswish激活函數(shù)的咖啡瑕疵豆檢測(cè)算法,旨在提高咖啡瑕疵豆識(shí)別準(zhǔn)確率,以及在保證咖啡瑕疵豆檢測(cè)準(zhǔn)確率的基礎(chǔ)上提高模型的檢測(cè)速度,使模型更加輕量化,為后續(xù)基于深度學(xué)習(xí)的咖啡豆瑕疵檢測(cè)算法部署到嵌入式設(shè)備提供依據(jù)。
選用云南阿拉比卡小粒種咖啡生豆作為研究對(duì)象,使用佳能EOS 200DⅡ單反相機(jī)拍攝,拍攝時(shí)相機(jī)鏡頭距離咖啡豆60 cm,分別拍攝破損豆、霉菌豆、帶殼豆(見圖1)640像素×640像素尺寸各200張,采集的圖片包含了單粒和多粒并記錄各種豆子數(shù)量保證3種瑕疵豆總的數(shù)量相同,并對(duì)采集的數(shù)據(jù)集進(jìn)行圖像增強(qiáng),擴(kuò)充至2 400張圖片,按照9∶1將各瑕疵豆隨機(jī)分成訓(xùn)練集與驗(yàn)證集,同時(shí)檢驗(yàn)訓(xùn)練集與驗(yàn)證集的瑕疵豆數(shù)量的比例是否接近9∶1,最后使用LabelLmg軟件標(biāo)注目標(biāo)類別與目標(biāo)位置,生成txt文件格式。
圖1 缺陷豆種類Figure 1 Defective soybean species
利用OpenCV相關(guān)庫的圖像處理操作對(duì)原始圖像數(shù)據(jù)集進(jìn)行處理,以提高訓(xùn)練模型的泛化能力。該過程通過圖像鏡像翻轉(zhuǎn)、圖像噪聲增大、圖像模糊等(圖2),以達(dá)到提高網(wǎng)絡(luò)的檢測(cè)性能和魯棒性。
圖2 圖像增強(qiáng)Figure 2 Image enhancement
YOLO系列[20-21]的檢測(cè)網(wǎng)絡(luò)是典型的one-stage網(wǎng)絡(luò),研究使用YOLOv5s檢測(cè)模型。YOLOv5的主要網(wǎng)絡(luò)結(jié)構(gòu)包括輸入端(input)、Backbone、Neck和輸出端。
主干網(wǎng)絡(luò)Backbone主要由Focus結(jié)構(gòu)與CSP結(jié)構(gòu)組成。Focus模塊是將輸入特征圖像進(jìn)行切片操作,使640×640×3的圖像先變?yōu)?20×320×12的特征圖,再經(jīng)過一次卷積操作變?yōu)?20×320×32的特征圖,該操作通過增加一點(diǎn)計(jì)算量來保證圖像特征信息不會(huì)丟失,將 W、H的信息集中到通道上,使得特征提取得更加充分。CBL模塊由Conv+BatchNormal+LeakyRelu組成。在YOLOV5中Backbone和Neck分別使用兩種不同的CSP1_X和CSP2_X結(jié)構(gòu),在Backbone中使用帶有殘差結(jié)構(gòu)CSP1_X源于Backbone網(wǎng)絡(luò)結(jié)構(gòu)較深,殘差結(jié)構(gòu)會(huì)加強(qiáng)梯度值在反向傳播過程中,有效防止網(wǎng)絡(luò)結(jié)構(gòu)加深時(shí)所引起的梯度消失,得到更加豐富特征信息。通過設(shè)置不同的CSP模塊中的寬度與深度,可以得到Y(jié)OLOv5s、YOLOv5m、YOLOv5l、YOLOv5x不同的型號(hào)模型。SPP結(jié)構(gòu)在Backbone的尾部,主要目的是增大感受野,增強(qiáng)網(wǎng)絡(luò)的線性表達(dá)能力。
Neck網(wǎng)絡(luò)是一系列混合圖像特征的聚合層,采用FPN+PAN的結(jié)構(gòu)。FPN 是通過上采樣的方法傳遞和融合信息,從而獲得預(yù)測(cè)的特征圖。由于該網(wǎng)絡(luò)的特征提取采用自上而下的特征金字塔網(wǎng)絡(luò),因此能夠提高低層特征的傳輸,增強(qiáng)對(duì)不同尺度目標(biāo)的檢測(cè),可以精確地識(shí)別不同尺寸和比例的目標(biāo)對(duì)象。Neck中CSP2_X主干網(wǎng)絡(luò)中的兩個(gè)分支的輸出進(jìn)行拼接,加強(qiáng)網(wǎng)絡(luò)特征融合能力。
輸出端采用CIOU函數(shù)作為邊界框的損失函數(shù),在目標(biāo)檢測(cè)后處理過程中,使用NMS、非極大值抑制來對(duì)多目標(biāo)框進(jìn)行篩選,增強(qiáng)多目標(biāo)和遮擋目標(biāo)的檢測(cè)能力。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
1.4.1 嵌入CBAM注意力機(jī)制 注意力機(jī)制通過模仿人腦處理視覺信息的方式,模仿人類迅速觀察圖像的全局信息,找出需要重點(diǎn)關(guān)注的候選區(qū)域,并將主要注意力放在此區(qū)域,從而提取更多的細(xì)節(jié)信息。因此,在深度學(xué)習(xí),尤其是在深層次高性能網(wǎng)絡(luò)中得到了廣泛應(yīng)用。
為了獲取咖啡瑕疵豆更加豐富的特征信息,減少背景與復(fù)雜環(huán)境的干擾,引入CBAM(Convolutional Blaock Attention Module)模塊[22]。CBAM模塊是由空間與通道的注意力機(jī)制模塊組成,其中通道注意力模塊與空間注意力模塊可以并行排列和順序排列,此處采取順序排列。
輸入的特征圖為C×H×W∈F,其中C為特征圖的通道數(shù)。F進(jìn)入通道注意力模塊,通過平均池化和最大池化得到每個(gè)通道的信息,并將得到的參數(shù)通過多層感知器進(jìn)行疊加,再經(jīng)過sigmoid函數(shù)激活,從而得到通道注意力特征:
圖3 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)Figure 3 YOLOv5 network structure
圖4 CBAM模塊結(jié)構(gòu)Figure 4 CBAM module structure
(1)
式中:
Cm——通道注意力機(jī)制;
σ——sigmoid函數(shù);
MLP——多層感知器;
AvgPool、MaxPool——對(duì)模塊特征圖空間信息進(jìn)行平均池化和最大池化;
(2)
式中:
Sm——空間注意力機(jī)制。
1.4.2 激活函數(shù) 引入非線性函數(shù)作為激活函數(shù),有利于加大深層神經(jīng)網(wǎng)絡(luò)表達(dá)能力,實(shí)現(xiàn)權(quán)值模型的輕量化,使模型具備捕獲復(fù)雜的視覺布局能力,從而提高模型的綜合性能,使咖啡瑕疵豆識(shí)別更加精確。選用Hardswish函數(shù)[23]作為激活函數(shù),選擇Hardswish將YOLOv5s特征提取網(wǎng)絡(luò)骨干部分(Convolution、Batch normal、LeakReLU、CBL)模塊中的激活函數(shù)進(jìn)行替換:
(3)
1.4.3 損失函數(shù) YOLOv5s的損失函數(shù)由3個(gè)部分組成,分別是定位損失、置信度損失和類別損失,其中置信度損失和類別損失采用二元交叉熵計(jì)算,在YOLOv5s原始網(wǎng)絡(luò)中采用GIOU作為定位損失計(jì)算式。
(4)
(5)
式中:
C——兩個(gè)框中的最小外接矩形;
B∪Bgt——預(yù)測(cè)框與真實(shí)框的并集。
雖然GIOU解決了IOU中兩個(gè)框無交集時(shí),導(dǎo)致梯度消失的情況,但并未改善預(yù)測(cè)框與真實(shí)框相互包含時(shí)損失函數(shù)退化成IOU,從而不能清楚描述預(yù)測(cè)框的回歸問題,無法預(yù)測(cè)評(píng)估預(yù)測(cè)框和真實(shí)框的相對(duì)位置,影響定位精度的準(zhǔn)確性,導(dǎo)致定位框失去收斂方向。選擇CIOU[24]作為損失函數(shù),其計(jì)算式為:
(6)
(7)
(8)
式中:
b、bgt——預(yù)測(cè)框與真實(shí)框的中心點(diǎn);
ρ(·)——?dú)W式距離;
C——兩個(gè)框的最小外接矩的對(duì)角線距離;
ν——真實(shí)邊框與預(yù)測(cè)邊框的寬高比損失;
α——寬高比損失系數(shù);
αν——CIOU寬高比懲罰項(xiàng)(防止當(dāng)真實(shí)框與預(yù)測(cè)框中心點(diǎn)重合時(shí)CIOU損失退化成IOU,進(jìn)而能在中心點(diǎn)重合時(shí)CIOU仍有寬高比損失懲罰,能進(jìn)一步調(diào)整寬高比例)。
CIOU綜合考慮了真實(shí)框與預(yù)測(cè)框之間的重疊率損失、中心點(diǎn)偏移損失和自身寬高比損失3種度量?jī)?yōu)點(diǎn),使得在模型學(xué)習(xí)與訓(xùn)練中具有更好、更穩(wěn)定的收斂精度與收斂效果。
為了評(píng)價(jià)模型性能,采用準(zhǔn)確率(P)、召回率(R)、平均準(zhǔn)確率(AP)、瑕疵豆平均準(zhǔn)確率均值(mAP)以及檢測(cè)速度FPS作為評(píng)價(jià)指標(biāo)。
(9)
(10)
(11)
(12)
(13)
式中:
TP——判斷為正類的正類;
FN——判斷為負(fù)類的正類;
FP——判斷為正類的負(fù)類。
模型訓(xùn)練軟件環(huán)境為Windows 10操作系統(tǒng),使用pytorch深度學(xué)習(xí)框架,CUDA11.1。硬件環(huán)境為GeForce RTX2060顯卡,AMD的R7-4800H處理器,16 GB運(yùn)行內(nèi)存。
模型訓(xùn)練以YOLOv5s初始參數(shù)設(shè)置為基礎(chǔ),迭代周期為200;Batchsize為16;動(dòng)量因子為0.937;權(quán)重衰減系數(shù)0.000 5,采用余弦退火策略。
由圖5可知,經(jīng)過200輪次的訓(xùn)練,損失函數(shù)的最小值出現(xiàn)在155輪為0.03,召回率最大值出現(xiàn)在158輪為0.991,mAP(0.5)的最大值在154輪為98.8%,準(zhǔn)確率與mAP(0.5∶0.95)的最大值均出現(xiàn)在196輪,分別為99.5% 和71.9%,選擇196輪作為最終的測(cè)試權(quán)重文件。
圖5 各項(xiàng)指標(biāo)變化曲線Figure 5 Change curves of various indicators
在主干網(wǎng)絡(luò)Backbone中分別使用現(xiàn)有的注意力機(jī)制CBAM、SE、CA、ECA等模塊[25-27]。分別加在表1序號(hào)2、4、6、9的4個(gè)BottleneckCSP模塊后記作A;單獨(dú)加在序號(hào)9的BottleneckCSP模塊后記作B;單獨(dú)增加一層加在序號(hào)8與序號(hào)9之間記作C,結(jié)果如圖6所示。由圖6 可知,CBAM加在B處的效果最好,相比基線網(wǎng)絡(luò),mAP (0.5∶0.95)提高了2.9%。
表1 YOLOv5s的Backbone部分網(wǎng)絡(luò)結(jié)構(gòu)圖
圖6 不同注意力機(jī)制比較Figure 6 Comparison of different attention mechanisms
通常,在線性捕獲卷積層中的空間相關(guān)性后,激活層立即充當(dāng)標(biāo)量非線性變換。目前已提出了許多有效的激活函數(shù),如SILU、Hardswish和FReLU[28]。以YOLOv5s網(wǎng)絡(luò)為基線,模型默認(rèn)的激活函數(shù)為L(zhǎng)eakReLU,以模型在mAP(0.5∶0.95)為評(píng)價(jià)指標(biāo),選擇一款在該數(shù)據(jù)集上模型的泛化性能更好的激活函數(shù)。由圖7可知,Hardswish更有效,在咖啡瑕疵豆的檢測(cè)任務(wù)上表現(xiàn)更好。
圖7 不同激活函數(shù)比較Figure 7 Comparison of different activation functions
由表2可知,YOLO系列算法在召回率、準(zhǔn)確率、mAP上均大于Faster-RCNN和SSD;試驗(yàn)算法的mAP比Faster-RCNN、SSD、YOLOv3、YOLOv4、YOLOv5分別高20.4%,13.2%,7.3%,4.1%,3.1%。在模型檢測(cè)速度方面,試驗(yàn)算法識(shí)別速率為64幅/s,相比上述模型差值為+48,+9,+18,+24,-2。在模型大小方面,試驗(yàn)算法、SSD、YOLOv5s明顯優(yōu)于Fast-R-RCNN、YOLOv3和YOLOv4。綜上,改進(jìn)后的算法在識(shí)別準(zhǔn)確率與召回率上明顯提升,可大幅提高咖啡豆的品質(zhì)檢測(cè)。在工程應(yīng)用中,將檢測(cè)速率與模型可移植性作為評(píng)價(jià)指標(biāo),輕量級(jí)模型在模型的可移植性方面更好,鑒于試驗(yàn)改進(jìn)算法在檢測(cè)時(shí)間與模型大小的優(yōu)勢(shì),改進(jìn)后的YOLOv5算法更加適用咖啡豆檢測(cè)系統(tǒng)的部署應(yīng)用。
表2 算法對(duì)咖啡瑕疵豆的識(shí)別結(jié)果
2.6.1 單粒識(shí)別效果 測(cè)試了3種瑕疵豆各30張,其中破損豆與霉菌豆各出現(xiàn)一個(gè)錯(cuò)誤識(shí)別,整體的檢測(cè)置信度均在90%以上,識(shí)別準(zhǔn)確率為98%(見圖8)。
圖8 單粒識(shí)別效果Figure 8 Effects of single particle recognition effect
2.6.2 多粒識(shí)別效果 由圖9可知,試驗(yàn)算法在粒數(shù)為8的圖像中全部識(shí)別正確,整體置信度在92%以上;在粒數(shù)為30的圖像中,有一個(gè)將破損豆識(shí)別為霉菌豆,識(shí)別正確率為96.7%,其中霉菌豆目標(biāo)檢測(cè)置信度最小為82%,最大為88%,均值為84.7%,破損豆目標(biāo)檢測(cè)置信度最小為74%,最大為87%,均值為81.7%,帶殼豆目標(biāo)檢測(cè)置信度最小為84%,最大為90%,平均值為87.6%;單幅60粒的圖像中識(shí)別錯(cuò)誤有7個(gè)豆,分別是2個(gè)破損豆、2個(gè)帶殼豆和3個(gè)霉菌豆,其中有4個(gè)識(shí)別錯(cuò)誤豆是檢測(cè)框出現(xiàn)類別重復(fù)。破損豆、帶殼豆和霉菌豆正確率分別為90%,90%,85%。破損豆目標(biāo)檢測(cè)置信度最小值、最大值、平均值分別為76%,88%,83%;帶殼豆目標(biāo)檢測(cè)置信度最小值、最大值、平均值分別為83%,90%,87.1%;霉菌豆目標(biāo)檢測(cè)置信度最小值、最大值、平均值分別為74%,87%,83.7%。綜上,試驗(yàn)算法的總體識(shí)別正確率在85%以上,目標(biāo)檢測(cè)置信度在74%以上。隨著粒數(shù)的上升,模型精度會(huì)有所下滑,總體來說模型在多粒識(shí)別方面均有不錯(cuò)的效果。
圖9 多粒識(shí)別效果Figure 9 Effects of multiple grains recognition
2.6.3 黏連識(shí)別效果 采用單幅30粒的圖片分別設(shè)置3種黏連程度,由圖10可知,3種黏連程度的準(zhǔn)確率分別為100%,100%,86%,其中重度黏連中出現(xiàn)2個(gè)破損豆識(shí)別錯(cuò)誤,2個(gè)帶殼豆識(shí)別錯(cuò)誤。輕度、中度、重度黏連的目標(biāo)檢測(cè)置信度均值分別為88.1%,81.5%,85.3%。綜上,模型精度受黏連程度的影響,但模型總體識(shí)別效果較好。
圖10 黏連識(shí)別效果Figure 10 Effects of adhesion recognition
2.6.4 不同光照背景 測(cè)試了3種光照條件下的單幅9粒圖片,由圖11可知,在過度曝光情況下識(shí)別準(zhǔn)確率為100%,目標(biāo)檢測(cè)置信度均值為82.7%,在弱光環(huán)境下識(shí)別準(zhǔn)確率為100%,目標(biāo)檢測(cè)置信度均值為84.4%,在昏暗環(huán)境下準(zhǔn)確率為66.7%,其中帶殼豆與霉菌豆識(shí)別準(zhǔn)確率為100%,由于昏暗環(huán)境導(dǎo)致破損豆與霉菌豆顯示無差別,導(dǎo)致模型將破損豆全部識(shí)別為霉菌豆,目標(biāo)檢測(cè)置信度均值為83.6%。綜上,模型在相對(duì)穩(wěn)定的環(huán)境下識(shí)別效果較好,當(dāng)環(huán)境影響較大時(shí),在帶殼豆與霉菌豆檢測(cè)方面也具有較高的準(zhǔn)確率。
圖11 不同光照識(shí)別效果Figure 11 Effects of recognition in different illumination
針對(duì)瑕疵豆引起咖啡生豆的品質(zhì)問題,提出了一種改進(jìn)的YOLOv5s咖啡瑕疵豆的檢測(cè)算法。結(jié)果表明,試驗(yàn)算法比YOLOv5s基線網(wǎng)絡(luò)模型的準(zhǔn)確率、平均精度均值和召回率分別提高了1.7%,3.1%和4%,同時(shí)也優(yōu)于SSD、Fast-R-RCNN、YOLOv3、YOLOv4等模型;模型對(duì)單粒識(shí)別效果最好,識(shí)別準(zhǔn)確率為99%,在多粒與黏連環(huán)境下識(shí)別效果下降,但整體識(shí)別準(zhǔn)確率>85%;過度曝光與弱光環(huán)境下模型識(shí)別正常,但在昏暗條件下,模型易將破損豆識(shí)別為霉菌豆,導(dǎo)致破損豆識(shí)別準(zhǔn)確率下降。針對(duì)破損豆的識(shí)別率不高,如何利用在計(jì)算能力有限的嵌入式設(shè)備上,實(shí)現(xiàn)高性能的實(shí)時(shí)咖啡瑕疵豆檢測(cè)任務(wù)等問題,后續(xù)可以從數(shù)據(jù)集制作,在主干特征提取網(wǎng)絡(luò)中增加小目標(biāo)檢測(cè)層,進(jìn)一步提高破損豆在昏暗環(huán)境的檢測(cè)效果,以及對(duì)改進(jìn)后的算法進(jìn)行輕量化研究。