王淑青 黃劍鋒 張鵬飛 王 娟
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北 武漢 430068)
近年來,中國小龍蝦產(chǎn)量逐步上升,蝦球與整蝦的剝離是其初加工的重要部分,而識別小龍蝦合格與否是其中重要的一環(huán)[1-2]。目前,小龍蝦質(zhì)量的判別一般由人工完成,需花費大量的時間和人力成本,而且誤判的可能性較大。根據(jù)小龍蝦蜷曲程度進(jìn)行質(zhì)量檢測的研究尚未見相關(guān)報道,但是目標(biāo)檢測技術(shù)在食品領(lǐng)域的應(yīng)用較多,其中基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)在眾多領(lǐng)域中展現(xiàn)了其優(yōu)越性[3-6],在食品加工與檢測中也備受青睞[7-9]。宋超[10]使用無監(jiān)督的K-means結(jié)合支持向量機(jī)的傳統(tǒng)方法與深度學(xué)習(xí)方法對雞蛋裂紋進(jìn)行了檢測,結(jié)果表明傳統(tǒng)方法的環(huán)境適應(yīng)性較差,基于深度學(xué)習(xí)的缺陷識別率較傳統(tǒng)方法提高了近3%;Fan等[11]使用基于候選缺陷區(qū)域計數(shù)和支持向量機(jī)的方法對蘋果外觀缺陷進(jìn)行了在線檢測,其檢測精度遠(yuǎn)低于深度學(xué)習(xí)方法。尹宏鵬等[12]研究發(fā)現(xiàn),深度學(xué)習(xí)是當(dāng)下最優(yōu)秀的視覺識別方法,而且相比傳統(tǒng)方法有著更大的發(fā)展空間。
YOLOv4是近期被提出的檢測效率更高的深度卷積神經(jīng)網(wǎng)絡(luò)。為確保小龍蝦檢測模型的工作效率,文章擬設(shè)計一種基于YOLOv4深度學(xué)習(xí)網(wǎng)絡(luò)的小龍蝦質(zhì)檢方法,通過對小龍蝦圖像進(jìn)行添噪、旋轉(zhuǎn)等制作多種形態(tài)的小龍蝦數(shù)據(jù)圖像,使用YOLOv4網(wǎng)絡(luò)模型對數(shù)據(jù)集進(jìn)行學(xué)習(xí)與訓(xùn)練,使用工業(yè)CCD相機(jī)在線采集并檢測小龍蝦的質(zhì)量類別,驗證該模型的分類準(zhǔn)確率和檢測速度都能滿足生產(chǎn)需求,可以提高小龍蝦生產(chǎn)效率。
蝦球的生產(chǎn)需將小龍蝦煮至半熟狀態(tài),此時外殼鮮紅,蜷曲角度<90°的為合格小龍蝦(圖1),文章提出的小龍蝦檢測方法即通過小龍蝦的蜷曲特征判斷其質(zhì)量。
小龍蝦檢測主要由圖像獲取、圖像處理和小龍蝦分揀3部分完成,其檢測系統(tǒng)模型如圖2所示[13]。使用工業(yè)相機(jī)對小龍蝦生產(chǎn)線進(jìn)行拍攝取圖,工業(yè)光源有助于獲取更清晰的生產(chǎn)圖像,有利于提高系統(tǒng)檢測的準(zhǔn)確率;
圖1 小龍蝦質(zhì)量分類Figure 1 Crayfish quality classification
1. 傳送帶 2. 工業(yè)光源 3. 工業(yè)相機(jī) 4. 計算機(jī) 5. 人機(jī)交互 6. 分揀裝置圖2 小龍蝦質(zhì)量檢測系統(tǒng)Figure 2 Crayfish quality inspection system
圖像處理通過事先采集大量小龍蝦圖像數(shù)據(jù),使用YOLOv4網(wǎng)絡(luò)對數(shù)據(jù)集進(jìn)行訓(xùn)練,將訓(xùn)練好的YOLOv4模型移植到工業(yè)計算機(jī)用于小龍蝦生產(chǎn)線的實時檢測;小龍蝦分揀主要由機(jī)械臂或其他分揀裝置挑揀出檢測到的質(zhì)量不合格小龍蝦。
YOLO網(wǎng)絡(luò)是一種利用回歸網(wǎng)絡(luò)實現(xiàn)目標(biāo)檢測的分類算法,與傳統(tǒng)區(qū)域候選網(wǎng)絡(luò)[14-15]相比,YOLO網(wǎng)絡(luò)整合產(chǎn)生候選區(qū)和檢測兩個階段,直接將檢測任務(wù)視作回歸問題,因此擁有更快的檢測速度,并在大多目標(biāo)檢測任務(wù)中表現(xiàn)出良好的效果,能夠?qū)崿F(xiàn)端到端的預(yù)測[16]。YOLOv4整體網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
YOLOv4目標(biāo)檢測網(wǎng)絡(luò)以CSPDarknet53為主干,包含5個CSP模塊,各模塊前的卷積核大小為3×3,步幅為2,能夠進(jìn)一步增強(qiáng)網(wǎng)絡(luò)學(xué)習(xí)能力;路徑聚合網(wǎng)絡(luò)(PANet)作為頸部,增添空間金字塔池(SPP)附加模塊,采用1×1,5×5,9×9,13×13最大池化方式,能夠增加感受區(qū)并分離出更重要的上下文特征;沿用YOLOv3檢測頭作為頭部。YOLOv4采用Mosaic及CutMix數(shù)據(jù)增強(qiáng)策略增加輸入圖像可變性,豐富圖像特征信息,所設(shè)計的目標(biāo)檢測模型可以獲得更高的魯棒性,同時采用標(biāo)簽平滑、學(xué)習(xí)率余弦退火衰減等技巧優(yōu)化網(wǎng)絡(luò)訓(xùn)練過程[17]。
YOLO網(wǎng)絡(luò)將輸入的小龍蝦圖像劃分為N×N格。待測小龍蝦的中心坐標(biāo)落在某個網(wǎng)格中,則該網(wǎng)格負(fù)責(zé)檢測小龍蝦目標(biāo)。檢測過程中,每個網(wǎng)格單元預(yù)測B個邊界框,每個邊界框包含5個預(yù)測值:tx、ty、tw、th和置信度,置信度反映預(yù)測目標(biāo)框的置信水平與預(yù)測精度[18]。按式(1)計算預(yù)測框的中心坐標(biāo)(bx,by)和寬高bw、bh。
(1)
式中:
σ(x)——Logistic函數(shù);
cx、cy——特征圖中每個網(wǎng)格的左上角坐標(biāo);
pw、ph——先驗框相對于特征圖的寬和高;
tx、ty、tw、th——模型預(yù)測的中心坐標(biāo)及寬高。
將預(yù)測框的中心坐標(biāo)及寬高除以對應(yīng)的特征圖尺寸,再乘以原始輸入圖片尺寸便可得到預(yù)測的邊界框相對于小龍蝦原圖的坐標(biāo)實際值。
每個網(wǎng)格仍需預(yù)測一個類別信息,記錄為C類,因此輸出為尺寸N×N(5×B+C)的張量。同時,檢測系統(tǒng)按式(2)計算交并比。
(2)
式中:
IoU——交并比;
DR——預(yù)測框;
GT——實際框。
IoU是衡量預(yù)測框精準(zhǔn)度的重要指標(biāo),IoU越大,預(yù)測框所在位置越精準(zhǔn)。
圖3 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)Figure 3 YOLOv4 network structure
小龍蝦的具體預(yù)測流程如圖4所示,YOLOv4算法先將輸入的小龍蝦圖像重置為608×608大?。皇褂肅SPDarknet53網(wǎng)絡(luò)提取圖像特征;將特征向量發(fā)送至SPP和PANet進(jìn)行預(yù)測;運用非極大值抑制算法消除重復(fù)預(yù)測,獲得最終預(yù)測結(jié)果。
YOLOv4網(wǎng)絡(luò)訓(xùn)練時的損失函數(shù)由邊界框回歸損失Lciou、置信度損失Lconf、分類損失Lclass3部分組成,若在某個邊界框內(nèi)不存在目標(biāo),僅計算置信度損失,若存在目標(biāo),則計算3種損失。損失函數(shù)表達(dá)式為:
(3)
式中:
S2、B——特征圖尺度與先驗框;
λnoobj——權(quán)重系數(shù);
ρ(·)——歐氏距離;
c——預(yù)測框與實際框閉包區(qū)域的對角線距離;
b、w、h——預(yù)測框的中心坐標(biāo)及寬高;
bgt、wgt、hgt——實際框的中心坐標(biāo)及寬高;
置信度損失與分類損失通過交叉熵方法計算,邊界框回歸損失通過CIoU損失函數(shù)計算,相比傳統(tǒng)的均方誤差損失函數(shù),CIoU有效避免了對目標(biāo)物體尺度敏感的問題,能夠更好地關(guān)注預(yù)測框與實際框的位置關(guān)系,反映兩者之間的聯(lián)系。
小龍蝦網(wǎng)絡(luò)檢測模型訓(xùn)練所用數(shù)據(jù)集是一個自制數(shù)據(jù)集,使用工業(yè)攝相機(jī)現(xiàn)場拍攝小龍蝦生產(chǎn)過程視頻,截圖,按1∶1的樣本類別分布擇優(yōu)挑選1 000張小龍蝦圖片。
由于相機(jī)采集的圖像數(shù)據(jù)較少,為避免導(dǎo)致模型過擬合,提高網(wǎng)絡(luò)模型的泛化能力,采用隨機(jī)旋轉(zhuǎn)、鏡像翻轉(zhuǎn)、添加噪聲、高斯模糊、亮度增強(qiáng)、背景渲染等策略擴(kuò)充數(shù)據(jù)樣本,因此訓(xùn)練后的網(wǎng)絡(luò)模型能夠滿足多場景多形態(tài)的小龍蝦檢測需求,其數(shù)據(jù)擴(kuò)充示例見圖5。
圖4 小龍蝦預(yù)測流程Figure 4 Crayfish detection process
通過數(shù)據(jù)擴(kuò)充得小龍蝦圖片共6 000張,包含不同大小、形態(tài)、色彩的小龍蝦樣本。圖片數(shù)據(jù)中共有兩類小龍蝦樣本,總計4 500個合格品樣本,4 500個不合格品樣本,數(shù)據(jù)量級及豐富性可得到保證。
訓(xùn)練YOLOv4模型前需對數(shù)據(jù)集進(jìn)行標(biāo)注,使用LableImage數(shù)據(jù)標(biāo)注工具,設(shè)置合格小龍蝦類別為0,標(biāo)簽為qualified,不合格類別為1,標(biāo)簽為unqualified,標(biāo)注后默認(rèn)保存YOLO數(shù)據(jù)格式的文本文件,兩種類別小龍蝦的樣本標(biāo)記信息如圖6所示。
數(shù)據(jù)標(biāo)注后保存的文本文件內(nèi)容見表1,表中每行都代表了一個小龍蝦目標(biāo)的位置信息,標(biāo)簽代表具體目標(biāo)標(biāo)注的類別,x,y,w,h是0~1的浮點數(shù),是相對于整幅圖片尺度的歸一化值。隨機(jī)劃分80%的標(biāo)注圖像作為訓(xùn)練集,20%作為測試集。
深度學(xué)習(xí)網(wǎng)絡(luò)模型訓(xùn)練通常對訓(xùn)練平臺配置有較高要求,YOLOv4網(wǎng)絡(luò)可在CPU或GPU上進(jìn)行訓(xùn)練,由于GPU的計算能力遠(yuǎn)高于CPU,其訓(xùn)練成本低,故選擇在GPU上進(jìn)行訓(xùn)練。將已標(biāo)注和劃分好的小龍蝦數(shù)據(jù)集作為訓(xùn)練樣本,YOLOv4網(wǎng)絡(luò)模型訓(xùn)練平臺的具體配置信息見表2。
圖5 數(shù)據(jù)擴(kuò)充Figure 5 Data expansion
圖6 數(shù)據(jù)標(biāo)注Figure 6 Data annotation
網(wǎng)絡(luò)學(xué)習(xí)模型的訓(xùn)練基于Darknet 深度學(xué)習(xí)框架,其訓(xùn)練參數(shù)為:輸入圖像大小為608×608,每次迭代訓(xùn)練輸入的圖片總數(shù)為64,分成8批次進(jìn)行訓(xùn)練,動量值為0.9,權(quán)重衰減系數(shù)為0.000 5,最大迭代次數(shù)為10 000,初始學(xué)習(xí)率為0.001,選用mosaic數(shù)據(jù)增強(qiáng)策略,迭代至8 000,9 000步時,學(xué)習(xí)率開始衰減。
3.2.1 損失值 損失值是樣本預(yù)測值與真實值之間的誤差,由損失函數(shù)計算得到,損失值越小,預(yù)測效果越好。網(wǎng)絡(luò)訓(xùn)練過程中保存完整的訓(xùn)練日志,訓(xùn)練完畢后根據(jù)日志信息進(jìn)行可視化繪圖,其損失值折線圖如圖7所示。
表1 數(shù)據(jù)標(biāo)注?
表2 訓(xùn)練平臺配置
由圖7可知,隨著迭代次數(shù)的增加,損失值減少,8 000次迭代后,損失值普遍<0.5,在0.3附近波動,證明網(wǎng)絡(luò)模型的訓(xùn)練效果良好。
3.2.2 測試結(jié)果 平均精度均值(mAP)是測量目標(biāo)檢測效率的重要指標(biāo),由精確率和召回率決定。以召回率為橫軸,精確率為縱軸的曲線簡稱P-R曲線,P-R曲線下面積記為精度均值,所有目標(biāo)類別的平均精度均值的值越大,神經(jīng)網(wǎng)絡(luò)模型效果越好。
使用訓(xùn)練好的網(wǎng)絡(luò)模型進(jìn)行小龍蝦測試集預(yù)測,按式(4)分別計算精確率(P)和召回率(R)。
(4)
式中:
TP——被判為正類的正類;
FP——被判為正類的負(fù)類;
FN——被判為負(fù)類的正類。
測試集中共包含1 567個合格小龍蝦樣本,1 402個不合格小龍蝦樣本。由表3可知,兩種類別小龍蝦的預(yù)測結(jié)果存在少許誤檢樣本,但各類別的精確率和召回率均>97%,模型預(yù)測性能較優(yōu)。
3.2.3 對比分析 使用YOLOv4模型對小龍蝦數(shù)據(jù)集進(jìn)行訓(xùn)練與測試后,訓(xùn)練平臺的配置信息不變,使用Faster RCNN[19]、EfficientDet[20]和YOLOv3深度學(xué)習(xí)模型在相同數(shù)據(jù)集上進(jìn)行訓(xùn)練分析,不同模型的平均精度均值和每秒幀數(shù)(FPS)對比見表4。
圖7 損失值曲線Figure 7 Loss value curve
表3 兩種類別小龍蝦預(yù)測結(jié)果
表4 模型性能對比
由表4可知,與主干為ResNet101[21]的Faster RCNN,主干為EfficientNet-B0的EfficientDet 和主干為Darknet53的YOLOv3模型相比,YOLOv4模型的平均精度均值分別提高了2.9%,2.1%,7.5%;每秒幀數(shù)分別提高了11,14,5幀,其預(yù)測精度及檢測速度均得到了較大改善。
為驗證YOLOv4模型的可行性和小龍蝦檢測系統(tǒng)的在線檢測能力,將模型移植到小龍蝦實時檢測平臺,采用主板為Z390,CPU為i7-9700K,主頻3.6 GHz,GPU為英偉達(dá)RTX 2080Ti,顯存11 G,內(nèi)存32 G。使用工業(yè)CCD相機(jī)在線獲取小龍蝦生產(chǎn)流水線圖像,網(wǎng)絡(luò)模型對獲得的圖像進(jìn)行尺度裁剪和分類特征提取,實時檢測高速流水線中小龍蝦的質(zhì)量類別,由攝像頭實時采集的圖像并完成檢測的效果見圖8。
圖8 檢測效果Figure 8 Detection effect
由圖8可知,該模型能完成多種形態(tài)下的小龍蝦檢測任務(wù),其檢測準(zhǔn)確率達(dá)97.8%,平均檢測時間為37 ms,能夠滿足高速生產(chǎn)過程中的小龍蝦檢測任務(wù)。
提出了一種基于YOLOv4神經(jīng)網(wǎng)絡(luò)的小龍蝦質(zhì)量檢測方法,自主采集與標(biāo)注小龍蝦圖片后,通過圖像擴(kuò)充策略以滿足數(shù)據(jù)集中小龍蝦形態(tài)的豐富性,訓(xùn)練后得到的檢測模型優(yōu)于Faster RCNN、EfficientDet等網(wǎng)絡(luò),具有較好的魯棒性。由于自主采集大量復(fù)雜的數(shù)據(jù)存在一些難度,自制的小龍蝦數(shù)據(jù)圖像背景較為單一,模型在復(fù)雜背景下的小龍蝦類別檢測能力欠佳,存在一定的誤檢率,后續(xù)工作重點將針對這一問題進(jìn)行克服改善,以進(jìn)一步增強(qiáng)檢測模型的泛化性能。