□ 傅云龍 □ 梁 丹 □ 梁冬泰 □ 方 寧 □ 陳賢兒
寧波大學(xué) 機(jī)械工程與力學(xué)學(xué)院 浙江寧波 315211
近年來(lái),隨著我國(guó)馬鈴薯主糧化戰(zhàn)略的實(shí)施,馬鈴薯在我國(guó)的種植面積迅速增大,成為僅次于水稻、小麥、玉米的種植面積第四大糧食作物[1-2]。我國(guó)馬鈴薯種植面積為5.8×104km2左右,年總產(chǎn)量約9.9×108t,位居世界第一[3]。馬鈴薯不但有較高的食用價(jià)值和藥用價(jià)值[4],而且因自身含有豐富的淀粉,成為塑料、造紙、化工等領(lǐng)域不可缺少的原材料。馬鈴薯在采摘、運(yùn)輸、儲(chǔ)存過(guò)程中,不可避免會(huì)存在發(fā)芽、病斑、機(jī)械損傷、腐爛等表面缺陷,影響馬鈴薯的品質(zhì)與食用安全性。
目前,在進(jìn)行馬鈴薯表面缺陷檢測(cè)時(shí),主要由人工進(jìn)行分揀,工作強(qiáng)度大,效率低,可靠性和一致性比較差[5],嚴(yán)重阻礙馬鈴薯加工自動(dòng)化產(chǎn)業(yè)的發(fā)展。隨著機(jī)器視覺(jué)技術(shù)的發(fā)展[6],國(guó)內(nèi)外學(xué)者針對(duì)馬鈴薯缺陷機(jī)器視覺(jué)檢測(cè)方法開(kāi)展了相關(guān)研究。王溯源[7]將馬鈴薯表面缺陷統(tǒng)分為三類,分別基于六角錐體顏色空間、三基色顏色空間、單值段同化核算子實(shí)現(xiàn)三類表面缺陷的檢測(cè)。趙明富等[8]應(yīng)用高光譜成像技術(shù)和改進(jìn)的貝葉斯分類器,實(shí)現(xiàn)對(duì)馬鈴薯外部缺陷的識(shí)別,平均識(shí)別精度達(dá)到95%以上。楊森等[9]基于輕量卷積網(wǎng)絡(luò)實(shí)現(xiàn)馬鈴薯外部缺陷的無(wú)損檢測(cè),平均識(shí)別準(zhǔn)確率能夠達(dá)到96.04%。 Zhang等[10]采用單次激發(fā)法多光譜成像系統(tǒng),建立一種基于全特征集的最小二乘支持向量機(jī)馬鈴薯缺陷分類模型,能夠檢測(cè)六類馬鈴薯表面缺陷。上述研究中,基于傳統(tǒng)圖像處理和高光譜成像技術(shù)的方法,雖然能夠?qū)崿F(xiàn)馬鈴薯表面缺陷的識(shí)別,但是識(shí)別缺陷種類和精度有限,系統(tǒng)的穩(wěn)定性較差?;谳p量卷積網(wǎng)絡(luò)的方法雖然提高了系統(tǒng)的穩(wěn)定性,但是識(shí)別精度和識(shí)別速度仍有待提高。
針對(duì)馬鈴薯表面缺陷快速準(zhǔn)確檢測(cè)的需求,筆者提出一種基于機(jī)器視覺(jué)和YOLO算法的馬鈴薯表面缺陷檢測(cè)方法。
這一方法采用圖像增廣對(duì)原始圖像進(jìn)行擴(kuò)充,通過(guò)最大類間方差法將部分?jǐn)?shù)據(jù)集的馬鈴薯圖像從背景中分離出來(lái),用于預(yù)訓(xùn)練。建立基于YOLO算法的馬鈴薯表面缺陷識(shí)別方法,對(duì)原YOLO算法中的聚類方法進(jìn)行改進(jìn),基于二分K均值聚類算法進(jìn)行目標(biāo)框聚類分析。在訓(xùn)練過(guò)程中,采用分步訓(xùn)練方式優(yōu)化學(xué)習(xí)權(quán)重,提高檢測(cè)方法的穩(wěn)定性和檢測(cè)精度。
馬鈴薯常見(jiàn)的表面缺陷主要有腐爛、發(fā)芽、機(jī)械損傷、蟲(chóng)眼、病斑五類,如圖1所示。
▲圖1 馬鈴薯常見(jiàn)表面缺陷
從寧波市某批發(fā)市場(chǎng)篩選73個(gè)帶有表面缺陷的馬鈴薯和28個(gè)完好的馬鈴薯,用工業(yè)相機(jī)在不同的光照強(qiáng)度和背景下采集363張馬鈴薯圖像。市場(chǎng)采購(gòu)的馬鈴薯,表面缺陷的多樣性有限,不能滿足工業(yè)數(shù)據(jù)集的要求,因此從網(wǎng)絡(luò)上另外收集687張帶有表面缺陷的馬鈴薯圖像。
為避免數(shù)據(jù)集不足造成訓(xùn)練過(guò)程中產(chǎn)生過(guò)擬合問(wèn)題,筆者通過(guò)調(diào)節(jié)亮度和對(duì)比度、旋轉(zhuǎn)、翻轉(zhuǎn)、縮放、高斯模糊、添加椒鹽噪聲等方法,進(jìn)一步對(duì)原有的馬鈴薯數(shù)據(jù)集進(jìn)行增廣。采用最大類間方差法對(duì)原始數(shù)據(jù)集進(jìn)行灰度閾值分割,去除背景,凸顯馬鈴薯表面特征,使YOLO算法在預(yù)訓(xùn)練過(guò)程中能更快地學(xué)習(xí)馬鈴薯缺陷特征。
通過(guò)以上方式,將原有1 050張馬鈴薯圖像數(shù)據(jù)集擴(kuò)增至7 123張,數(shù)據(jù)集見(jiàn)表1。
表1 馬鈴薯數(shù)據(jù)集
最大類間方差法具有良好的自動(dòng)閾值分割性能,基本思路是按照?qǐng)D像灰度特性將原始圖像灰度值分為兩部分,使兩部分間的灰度值差異最大,同時(shí)每部分內(nèi)部差異最小。假設(shè)原始圖像大小為M×N,灰度值閾值為T,圖像中像素屬于目標(biāo)部分的灰度值區(qū)間為(T,L],像素屬于背景部分的灰度值區(qū)間為[0,T],灰度值k對(duì)應(yīng)的像素?cái)?shù)記為Nk,對(duì)應(yīng)的概率記為Pk,Pk為:
Pk=Nk/(M×N)
(1)
則類間方差g(T)為:
g(T)=ω1(T)[μ(T)-μ1(T)]2
+ω2(T)[μ(T)-μ2(T)]2
(2)
式中:ω1(T)、ω2(T)分別為像素被分為背景部分和目標(biāo)部分的概率;μ1(T)、μ2(T)為兩類像素的均值;μ(T)為圖像的整體均值。
(3)
(4)
(5)
(6)
μ(T)=μ1(T)ω1(T)+μ2(T)ω2(T)
(7)
將式(7)代入式(2),化簡(jiǎn)得:
g(T)=ω1(T)ω2(T)[μ1(T)-μ2(T)]2
(8)
令T遍歷灰度值區(qū)間[0,L],尋找g(T)的最大值,此時(shí)所對(duì)應(yīng)的T即為所求閾值。
筆者通過(guò)labelImg圖像標(biāo)注軟件對(duì)7 123張馬鈴薯圖像進(jìn)行在線標(biāo)注,其中發(fā)芽、機(jī)械損傷、腐爛、蟲(chóng)眼、病斑的類別號(hào)依次為0~4。缺陷標(biāo)簽內(nèi)容見(jiàn)表2。將原圖像長(zhǎng)、寬歸一化至0~1,然后以(x,y)代表缺陷中心坐標(biāo),w、h分別代表缺陷目標(biāo)框的長(zhǎng)和寬。
表2 缺陷標(biāo)簽內(nèi)容
YOLO算法是一種端對(duì)端學(xué)習(xí)的深度學(xué)習(xí)模型算法[11-14],不同于基于候選區(qū)域的深度學(xué)習(xí)模型算法,不需要提取候選區(qū)域,可直接輸入圖像獲得目標(biāo)類別和目標(biāo)邊框,擁有較好的檢測(cè)速度和精度。YOLO V4算法在YOLO V3算法目標(biāo)檢測(cè)架構(gòu)的基礎(chǔ)上,對(duì)數(shù)據(jù)處理、網(wǎng)絡(luò)訓(xùn)練、激活函數(shù)、損失函數(shù)等進(jìn)行優(yōu)化。
筆者基于YOLO V4算法來(lái)實(shí)現(xiàn)馬鈴薯表面缺陷識(shí)別。馬鈴薯表面缺陷識(shí)別YOLO V4算法網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,這一網(wǎng)絡(luò)結(jié)構(gòu)由輸入端、主干網(wǎng)絡(luò)、頸部、檢測(cè)頭四部分組成。輸入端引入馬賽克數(shù)據(jù)增強(qiáng)和自對(duì)抗訓(xùn)練兩種新的數(shù)據(jù)增強(qiáng)方法,增強(qiáng)圖像可變性,提高目標(biāo)檢測(cè)系統(tǒng)的穩(wěn)定性。通過(guò)自對(duì)抗訓(xùn)練改變?cè)紙D像,使神經(jīng)網(wǎng)絡(luò)對(duì)自身進(jìn)行對(duì)抗性訓(xùn)練。頸部采用路徑聚合網(wǎng)絡(luò)附加空間金字塔池化結(jié)構(gòu),空間金字塔池化結(jié)構(gòu)采用內(nèi)核為1×1、5×5、9×9、13×13的最大池化層串聯(lián)結(jié)構(gòu)。圖2中,Mosaic為馬賽克數(shù)據(jù)增強(qiáng),SAT為自對(duì)抗訓(xùn)練,CBM為Mish卷積塊,CSP1~CSP5為跨階段局域網(wǎng)絡(luò),CBL為泄漏線性單元卷積塊,SPP為空間金字塔池化結(jié)構(gòu),PAN為路徑聚合網(wǎng)絡(luò)。
▲圖2 馬鈴薯表面缺陷識(shí)別YOLO V4算法網(wǎng)絡(luò)結(jié)構(gòu)
馬鈴薯表面缺陷的識(shí)別流程如下:首先,構(gòu)建馬鈴薯表面缺陷圖像數(shù)據(jù)集,通過(guò)馬賽克數(shù)據(jù)增強(qiáng)和自對(duì)抗訓(xùn)練,對(duì)原始數(shù)據(jù)集進(jìn)行圖像增強(qiáng)處理;然后,使用CSPDarknet53主干網(wǎng)絡(luò)提取不同尺度的馬鈴薯表面缺陷特征,由頸部完成缺陷特征的路徑聚合;最后,由YOLO算法檢測(cè)頭完成目標(biāo)框和目標(biāo)類別置信度的檢測(cè)。置信度C為:
C=PrI
(9)
(10)
式中:Pr為用于判斷是否有目標(biāo)物落入候選網(wǎng)格的值,有為1,沒(méi)有為0;bP為預(yù)測(cè)目標(biāo)框面積;bT為真實(shí)目標(biāo)框面積;I為交并比。
馬鈴薯表面缺陷識(shí)別方法采用CSPDarknet53作為特征提取的主干網(wǎng)絡(luò),將Darknet53網(wǎng)絡(luò)原有的殘差塊與跨階段局域網(wǎng)絡(luò)相結(jié)合,以減小整個(gè)網(wǎng)絡(luò)的計(jì)算量,縮短計(jì)算所需要的時(shí)間,并且保證檢測(cè)的準(zhǔn)確率。CSPDarknet53主干網(wǎng)絡(luò)結(jié)構(gòu)由五個(gè)跨階段局域網(wǎng)絡(luò)構(gòu)成,跨階段局域網(wǎng)絡(luò)3~5是三個(gè)有效輸出層,分別輸出52×52×256、26×26×512、13×13×1 024圖像特征??珉A段局域網(wǎng)絡(luò)將淺層映射特征分為兩部分,對(duì)兩部分信息進(jìn)行融合??珉A段局域網(wǎng)絡(luò)將梯度信息融合在特征圖中,避免梯度信息重復(fù),在縮短網(wǎng)絡(luò)計(jì)算量的同時(shí)保證準(zhǔn)確率。
殘差單元由特征提取層與兩個(gè)卷積塊經(jīng)過(guò)兩層卷積構(gòu)成。卷積塊是CSPDarknet53主干網(wǎng)絡(luò)中最基本的單元,由Mish函數(shù)、批歸一化和卷積操作組成。
與傳統(tǒng)帶泄漏線性單元函數(shù)和線性單元函數(shù)相比,使用Mish函數(shù)作為主干網(wǎng)絡(luò)激活函數(shù),可以優(yōu)化梯度流。Mish函數(shù)具有的平滑特性使圖像信息能更深入地融合進(jìn)神經(jīng)網(wǎng)絡(luò),以獲得更好的精度和泛化能力。主干網(wǎng)絡(luò)Mish函數(shù)H(a)為:
H(a)=atanh[ln(1+ea)]
(11)
式中:a為圖像像素經(jīng)卷積操作后的像素值。
目標(biāo)框指置信度最高的檢測(cè)目標(biāo)所在的矩形框,傳統(tǒng)深度學(xué)習(xí)方法通過(guò)多尺度窗口滑動(dòng)遍歷來(lái)進(jìn)行選取。YOLO算法在COCO數(shù)據(jù)集中進(jìn)行K均值聚類分析,得到一組先驗(yàn)框,在訓(xùn)練過(guò)程中根據(jù)先驗(yàn)框匹配程度來(lái)調(diào)整目標(biāo)框。 COCO 數(shù)據(jù)集所包含的檢測(cè)對(duì)象多種多樣,所聚類的先驗(yàn)框在自然場(chǎng)景中具有較好的檢測(cè)效果。由于馬鈴薯表面缺陷識(shí)別的對(duì)象是五類典型缺陷,使用原有先驗(yàn)框檢測(cè)難以滿足實(shí)時(shí)快速檢測(cè)要求,因此需重新進(jìn)行先驗(yàn)框聚類分析。
K均值聚類算法是一種無(wú)監(jiān)督的聚類分析算法,對(duì)于給定的樣本集,按照樣本的分布將樣本劃分為K個(gè)簇,并隨機(jī)選取K個(gè)對(duì)象作為初始的聚類中心,計(jì)算每個(gè)對(duì)象與各子聚類中心的歐氏距離。歐氏距離D為:
D=1-I
(12)
采用誤差二次方和準(zhǔn)則函數(shù)作為聚類準(zhǔn)則函數(shù),誤差二次方和J為:
(13)
式中:ni為第i個(gè)聚類樣本點(diǎn)數(shù)量;mi為第i個(gè)聚類中心;xij為第i個(gè)聚類中的第j個(gè)樣本點(diǎn)。
K均值聚類算法收斂速度相對(duì)較快,聚類效果較優(yōu),但最終結(jié)果和運(yùn)行時(shí)間受初始聚類中心選取的影響較大,初始聚類中心選擇不當(dāng),很可能會(huì)造成局部最優(yōu)解。為解決隨機(jī)初始聚類中心點(diǎn)問(wèn)題,筆者采用二分K均值聚類算法來(lái)進(jìn)行目標(biāo)框分析。二分K均值聚類算法不需要選取初始聚類中心,由一個(gè)樣本集分裂后得到兩個(gè)簇,對(duì)于K個(gè)簇則進(jìn)行K-1次分裂,具體流程如圖3所示。經(jīng)過(guò)多次試驗(yàn),在K為9的情況下,二分K均值聚類算法得到的馬鈴薯表面缺陷檢測(cè)先驗(yàn)框最優(yōu),分別為(18,18)、(22,37)、(40,25)、(39,62)、(75,43)、(71,81)、(165,80)、(82,165)、(210,211)。
在筆者試驗(yàn)平臺(tái)中,中央處理器采用英特爾酷睿i3-9100,主頻為3.6 GHz,圖形處理器采用英偉達(dá)GTX 1080Ti,顯存為11 GByte,內(nèi)存為16 GByte。模型參數(shù)中,輸入圖像大小為418像素×418像素,類別數(shù)設(shè)置為5,每次訓(xùn)練輸入的圖片數(shù)量為 64。動(dòng)量值設(shè)為 0.949,權(quán)重衰減因數(shù)設(shè)為 0.000 5,學(xué)習(xí)率設(shè)為 0.001,最大迭代次數(shù)設(shè)為30 000。
▲圖3 二分K均值聚類算法流程
為提高馬鈴薯表面缺陷檢測(cè)精度和模型訓(xùn)練速度,筆者用分步訓(xùn)練方式優(yōu)化模型參數(shù)。
對(duì)最大類間方差法處理后的950張馬鈴薯圖像進(jìn)行預(yù)訓(xùn)練。經(jīng)過(guò)最大類間方差法處理的圖像沒(méi)有背景因素干擾,模型可以更快、更準(zhǔn)確地學(xué)習(xí)馬鈴薯表面缺陷特征,但此時(shí)模型穩(wěn)定性較差。
為提高模型穩(wěn)定性和檢測(cè)精度,在預(yù)訓(xùn)練權(quán)重基礎(chǔ)上,對(duì)數(shù)據(jù)集7 123張圖像進(jìn)行多次訓(xùn)練。
在基于YOLO算法的馬鈴薯表面缺陷識(shí)別訓(xùn)練過(guò)程中,每訓(xùn)練100次采集一次損失函數(shù)值,損失函數(shù)值變化曲線如圖4所示。在訓(xùn)練過(guò)程中,迭代至24 000次和27 000次時(shí),學(xué)習(xí)率開(kāi)始衰減。由圖4可知,隨著迭代次數(shù)的增加,損失函數(shù)值不斷減小,在訓(xùn)練到25 000次時(shí),損失函數(shù)值已經(jīng)趨于平穩(wěn)。
▲圖4 損失函數(shù)值變化曲線
通過(guò)精度AP、平均精度MP、識(shí)別時(shí)間t三個(gè)主要指標(biāo)來(lái)評(píng)價(jià)馬鈴薯表面缺陷檢測(cè)的效果。召回率R為:
(14)
精確率P為:
(15)
平均精度MP為:
MP=AP/E
(16)
式中:Tp為馬鈴薯表面有缺陷樣本被檢測(cè)為有缺陷的數(shù)量;Fp為馬鈴薯表面無(wú)缺陷樣本被檢測(cè)為有缺陷的數(shù)量;FN為馬鈴薯表面有缺陷樣本被檢測(cè)為無(wú)缺陷的數(shù)量;E為識(shí)別數(shù)量。
選取360張馬鈴薯圖像用于測(cè)試筆者提出的馬鈴薯表面缺陷檢測(cè)方法的識(shí)別效果,每類缺陷圖像均在60張以上,其中38張圖像至少包含兩種缺陷,另有無(wú)缺陷圖像60張。識(shí)別結(jié)果如圖5所示,在不同背景下,筆者提出的檢測(cè)方法均能夠準(zhǔn)確識(shí)別缺陷位置和缺陷種類,對(duì)60張無(wú)缺陷的馬鈴薯圖像,也均可以實(shí)現(xiàn)準(zhǔn)確檢測(cè)。
▲圖5 馬鈴薯表面缺陷檢測(cè)方法識(shí)別結(jié)果
為進(jìn)一步分析馬鈴薯表面缺陷檢測(cè)方法的識(shí)別效果,與高光譜成像法、基于輕量卷積網(wǎng)絡(luò)的方法、多光譜成像法、原YOLO V4算法進(jìn)行對(duì)比,對(duì)比結(jié)果見(jiàn)表3。表3中,×表示方法不能檢測(cè),Δ表示沒(méi)有試驗(yàn)數(shù)據(jù)。對(duì)于發(fā)芽缺陷,高光譜成像法和筆者方法識(shí)別精度達(dá)到100%,原YOLO V4算法和多光譜成像法識(shí)別精度不足90%。對(duì)于機(jī)械損傷缺陷,筆者方法明顯高于其它方法。對(duì)于病斑缺陷,筆者方法識(shí)別精度相比原YOLO V4算法提高了10個(gè)百分點(diǎn)以上。對(duì)于蟲(chóng)眼缺陷,筆者方法與原YOLO V4算法的識(shí)別精度均達(dá)到100%,多光譜成像法識(shí)別精度只有84.71%,高光譜成像法和基于輕量卷積網(wǎng)絡(luò)的方法不能檢測(cè)此類缺陷。對(duì)于腐爛缺陷,筆者方法識(shí)別精度達(dá)到98.86%,高于其它檢測(cè)方法。
表3 馬鈴薯表面缺陷檢測(cè)方法對(duì)比
在平均識(shí)別精度方面,筆者方法相比原YOLO V4算法提高了7.03個(gè)百分點(diǎn),相比其它三種檢測(cè)方法均提高了3個(gè)百分點(diǎn)以上,單幅圖像的識(shí)別時(shí)間只需要29 ms。筆者方法的平均識(shí)別精度達(dá)到99.46%,其中,發(fā)芽、蟲(chóng)眼和合格品的檢測(cè)精度達(dá)到100%。試驗(yàn)結(jié)果表明,基于機(jī)器視覺(jué)和YOLO算法的馬鈴薯表面缺陷檢測(cè)方法可以滿足馬鈴薯表面缺陷快速準(zhǔn)確檢測(cè)的需求。
針對(duì)馬鈴薯表面存在發(fā)芽、機(jī)械損傷、腐爛、蟲(chóng)眼、病斑五類缺陷的檢測(cè)問(wèn)題,筆者提出一種基于機(jī)器視覺(jué)和YOLO算法的馬鈴薯表面缺陷檢測(cè)方法。構(gòu)建馬鈴薯數(shù)據(jù)集,對(duì)馬鈴薯數(shù)據(jù)集進(jìn)行圖像增廣,解決原始數(shù)據(jù)集中圖像數(shù)量少且缺陷特征不均衡的問(wèn)題。對(duì)原YOLO算法中的聚類方法進(jìn)行改進(jìn),采用二分K均值聚類算法進(jìn)行目標(biāo)框分析。通過(guò)最大類間方差法將950張馬鈴薯圖像從背景中分離出來(lái),用于預(yù)訓(xùn)練,在預(yù)訓(xùn)練權(quán)重的基礎(chǔ)上對(duì)整個(gè)數(shù)據(jù)集進(jìn)行訓(xùn)練,得到最終權(quán)重。試驗(yàn)結(jié)果表明,筆者提出的檢測(cè)方法明顯優(yōu)于其它四種檢測(cè)方法,平均識(shí)別精度達(dá)到99.46%,對(duì)五類缺陷檢測(cè)的精度均高于98%,單幅圖像識(shí)別時(shí)間約29 ms,可以有效實(shí)現(xiàn)對(duì)馬鈴薯表面缺陷的快速準(zhǔn)確檢測(cè)。