魯 濠, 王淑青, 魯東林, 張子蓬, 湯 璐
(1 湖北工業(yè)大學電氣與電子工程學院, 湖北 武漢 430068; 2 武漢奮進智能機器有限公司, 湖北 武漢 430074)
近年來,中國龍蝦養(yǎng)殖產業(yè)發(fā)展迅猛,人們對于優(yōu)質小龍蝦的食品需求也在逐步擴大,我國小龍蝦的消費市場增長十分火熱。在龍蝦生產過程中,商戶需要保證龍蝦的新鮮程度,確保市場上的小龍蝦為合格產品。目前,生產線上小龍蝦質量檢測通常由人工完成,這需要消耗更多的人工成本,并且由于人工的疏忽以及其他因素,極易發(fā)生誤判的情況,因此小龍蝦的質量檢測已成為龍蝦生產中一個急需改進的環(huán)節(jié)[1-2]。小龍蝦的質量檢測分為兩步:首先從相機捕獲的圖像中提取小龍蝦,其次檢測不同場景下的小龍蝦是否合格[3]。
隨著硬件的提升以及深度學習理論迅速地發(fā)展,越來越多經典的深度卷積網絡被應用在食品科技領域,如Faster-RCNN,ResNest,YOLO等[4-7]。這些基于深度學習的目標檢測方法充分展現了其快速、準確以及實用性。余偉聰等[8]提出了一種輕量化深度學習Monilenet-SSD的網絡模型對海珍品進行檢測,通過驗證的檢測AP達到了83.87%,該方法能檢測復雜情況下的目標,但是檢測精度不高;劉陽等[9]采用高斯混合模型對青梅表面缺陷進行檢測,驗證其對復雜的背景有比較強的適應能力,但是模型復雜,可行性較差;陳斌等[10]提出利用Faster-RCNN對自然環(huán)境下的油茶果進行檢測,準確率為98.92%,檢測精度較高,然而未解決查錯率高的問題 ;薛勇等[11,12]采用GoogLeNet深度遷移學習對蘋果進行缺陷檢測,測試樣本的識別準確率達到了91.91%,有較好的泛化能力和魯棒性,但是網絡訓練速度不高。
目前利用深度卷積網絡識別小龍蝦缺陷方面的研究較少,深度學習在目標定位和識別方面效果較好,然而差異化的數據集會對模型的訓練與調優(yōu)存在影響。在上述相關學者的研究基礎上,對原YOLOv5s網絡模型進行改進,將其應用在小龍蝦質量檢測中[13-14]。首先設置幀率截取工業(yè)相機在多場景下進行多角度拍攝的視頻,獲得圖片,通過添加噪聲,高斯模糊抑制噪聲等方法,制作一個多類型小龍蝦數據集[15-16]。送入改進的YOLOv5s模型進行訓練,得到最優(yōu)權重,對驗證集圖片進行檢測分析。實驗結果表明,本文所提出的研究方法,檢測精度和檢測速度較高,且滿足小龍蝦生產要求,可以提高小龍蝦生產檢測效率。
生產質檢會將小龍蝦處理至半熟狀態(tài)。小龍蝦在被煮熟前為鮮活,則肉質更佳,反之肉質松散。煮熟前是否鮮活可通過判斷小龍蝦尾部是否蜷曲至胸前,若蜷曲度<90°則為合格的鮮活小龍蝦。本文對小龍蝦的檢測方法,通過蜷曲度來判斷其質量好壞[17]。
本實驗設計了基于YOLOv5s網絡的生產線小龍蝦質量檢測。使用標注完畢的數據集對模型進行有監(jiān)督訓練。在生產線上使用機器視覺型工業(yè)相機實時采集圖片,調整工業(yè)光源補充圖片采集的清晰度,進一步提升檢測率。將訓練好的網絡模型移植到生產線中工業(yè)計算機上,用于小龍蝦缺陷檢測,由機械臂或自動化分揀工具挑選出不合格產品。
YOLOv5s是YOLOv5系列中深度最小、特征寬度最小的網絡,其與YOLO系列其余網絡結構相似,均為基于回歸高精度實時的one-stage網絡,其結構分為Input,Backbone,Neck以及Prediction四個部分。網絡結構見圖1所示。

圖1 YOLOv5s網絡模型結構
INPUT部分采用Mosaic數據增強,運用隨機縮放,隨機排布,隨機裁剪的方式對圖片進行拼接,既能夠豐富數據集,同時每次訓練都能夠根據不同的數據集計算出最適合的錨點框。
Backbone部分采用了特征切片模塊(Focus)和CSPNet(Cross stage Paetial Networks )結構。Focus在圖片進入Backbone之前,在一張圖片上間隔一個像素取值采樣,將圖片切分為4塊,保留圖片信息。將高度和寬度信息集中到通道內,使得輸入通道擴充為原來的4倍,再將新的圖片進行卷積操作,得到無損失信息的二倍采樣圖。跨階段部分網絡CSPNet結構能夠將梯度變化完全集中到特征圖里面,減少計算量的同時增強梯度的表現。
Neck部分采用SPP+FPN結構,自上而下,通過上采樣得到的高、低特征層拼接實現特征融合得到新的特征圖,而后通過路徑融合網絡(PAN)自下而上由弱到強傳遞特征,使特征層實現更多的特征融合。SPP模塊對特征圖進行多次卷積,采用不同大小的Max池化核進行最大池化,針對不同尺度的特征圖,充分增加感受野[18]。
OUTPUT部分采用GIOU_Loss作為回歸框(Bounding box)的損失函數,相比較YOLOv4采用的CIOU_Loss,緩解了非極大值抑制的問題。
(1)
(2)
式中:A,B表示兩塊區(qū)域面積,C表示包圍A、B的最小面積。
在實際檢測情況下,由于尺度不同、光照不均勻等外界干擾,直接使用YOLOv5s進行小龍蝦缺陷檢測仍不夠理想,主要表現在對于不同尺度、不同亮度對象,不足以充分提取淺層特征等問題,同時原網絡訓練時間長,推理能力不足。為了解決模型對于多尺度特征提取不足的問題,需要根據自制的數據集對網絡進行優(yōu)化。為提升網絡訓練速度以及解決過擬合問題,定義DP-Conv卷積層代替模型中普通CNN卷積[19]。在普通卷積的基礎上進行Depthwise操作,將普通卷積替換為DP-Conv卷積,處理后可以大幅增加卷積后獲取特征核的個數,并且?guī)缀醪辉黾佑嬎阈枨?大幅提高網絡訓練的速度與精確度。傳統(tǒng)卷積對feature maps進行處理,以特征圖單個通道計算為例,則其作用的窗口可表示為一個二維張量:
P∈R(M×N)×Cin
(3)
在輸出feature maps通道為Cout的情況下,輸出層的可訓練核可表示為一個三維張量;
W∈RCout×(M×N)×Cin
(4)
則卷積算子的輸出Ο=W*p可以表示為一個高維度輸出:
(5)
式中,Cin為輸入通道數,卷積核滑動窗口尺寸為M×N。采用Depthwise卷積后,特定輸出特征的通道只與特定的輸入特征通道與權重有關,進行獨立的運算,而不受其余輸入特征通道的影響。假定有Dmul個卷積核,作用的窗口大小為M×N,將會輸出Dmul個特征,假定輸入通道數為Cin,則會輸出Cin個feature maps。由于這種獨立的運算會丟失獨立通道在互通空間上的特征,因此在其后結合Pointwise Convolution算法,其卷積核大小為1×1×M(M為上一層卷積的通道數),該算法會將之前得到的feature maps按深度進行加權組合,生成一個完整的feature maps。其中權重矩陣可表示為:
D∈R(M×N))×Dmul×Cin
(6)
故DP-Conv卷積首先采用權重D對輸入特征進行Depthwise卷積操作,然后對于輸出結果采用權重為W的CNN操作,定義DP-Conv操作為?,該操作可以表示為:
O=(D,W)?P
(7)
通過計算可以得知,DP-Conv卷積對特征進行操作,其感受野仍為M×N,與傳統(tǒng)卷積相同。然而相比較傳統(tǒng)卷積,DP-Conv多使用了2個權重矩陣(4)和(6)來計算,傳統(tǒng)卷積的卷積核參數為Cout×(M×N)×Cin,一般Dmul≥M×N,假定Dmul=M×N,DP-Conv操作的卷積核個數也遠比傳統(tǒng)卷積更多,故DP-Conv是一種過度參數化操作。實驗佐證,過度參數化能夠加速深層次網絡的訓練速度。
過度參數化由于參數更多,因此在訓練時能夠更加逼近真實特征,偏差(Bias)會變得更小。對于過擬合問題,到了高維度學習,當特征參數的數量遠大于樣本的數量時,偏差越來越小,方差(Variance)越來越大的問題并不會發(fā)生,不會出現double descent(雙重下降,誤差隨著參數的增加而先下降后增加)[20]。由于大量特征中會摻雜噪聲,加之引入正則化條件,單個特征所得到的系數絕對值會更小,泛化效果更佳。因此隨著參數的增加,誤差會小幅上升波動而后持續(xù)下降,能夠避免過擬合的現象。在線性回歸模擬中選取隨機樣本數為100,包含223個特征,特征數目遠大于樣本數,此時滿足過度參數化后的模型擬合誤差效果見圖2。

圖2 高維過度參數化的誤差變化
Res_unit模塊由兩個CBL模塊組成,如圖3a所示,為跨尺度連接的Bottleneck結構,主要作用是降低網絡的參數量,通過降維-卷積-升維的結構完成多尺度特征融合。同時該模塊進行shortcut操作,形成殘差網絡,避免深度網絡出現梯度爆炸與梯度消失的問題。通過跨尺度特征融合模塊可以獲得豐富的感受野信息,然而一些噪聲信息會形成干擾,導致網絡推理過程引向錯誤的方向。SENet(Squeeze-and-Excitation Networks)模塊通過對不同channel特征進行權重劃分,使得模型在學習過程中更側重于感興趣的特征區(qū)域[21-22]。因此在Res_unit模塊嵌入SENe模塊可以學習特征權重并剔除無關信息,獲取精準定位與強語義之間的融合關系。改進后的結構對比如圖3所示。

圖3 改進Res_unit模型對比
SENet模塊對上層輸入卷積特征圖采用squeeze(壓縮操作),其主要操作為將原來H×W×C的特征維度壓縮至1×1×C,壓縮使得較小維度的參數某種程度上獲得了全局的感受野,得到每個特征通道的全局特征。隨后對全局特征采用Excitation(激勵操作),將壓縮后的特征通過一個FC全連接層,對末一個通道進行權重分配,學習通道之間的相關性和重要性,最后通過Reweight操作,使用乘法加權至對應通道的特征上,在通道維度完成對于特征的重新標定。SENet通過學習自動獲取每個通道的重要程度,提升了對特征感興趣區(qū)域的強語義效果,并抑制冗余特征,因此可以使模型更關注信息量大的通道信息,提高檢測精度與模型收斂速度。
實驗使用的數據集是自制數據集,來源于工業(yè)相機采集現場小龍蝦分揀過程,設置頻率進行視頻截取,擇優(yōu)挑選得到2500張樣本圖片。由于相機采集的圖像有限,為提升網絡模型的泛化性和特征融合,對采集的圖片添加高斯噪聲,以高斯模糊、變換背景等方式,來對差異性較大,數量較少的小龍蝦樣本進行擴充[23-24]。
經過變換增廣后的小龍蝦數據集總計8000張,包含大小不一,顏色各異的小龍蝦樣本。其中正負樣本各6000個,正樣本為合格,負樣本為不合格。在訓練數據集之前,采用Labelmg標注工具對不同蜷曲度的小龍蝦進行人工標注與分類,設置蜷曲度<90°的合格小龍蝦類別為0,標簽為qualified,否則為不合格,類別為1,標簽為unqualified。
本實驗環(huán)境為Ubuntu16.04操作系統(tǒng),采用pytorch框架,GPU為Nvidia GeForce RTX 2070 SUPER,內存為16G進行運算,采用CUDA 11.1.96加速訓練。選擇預訓練模型為改進的算法。優(yōu)化采用Adam算法,Batch-size設置為32;迭代次數設置為800次;動量因子值為0.9,;權重衰減系數設置為0.0005;采用預熱重啟更新學習率,初始學習速率設置為0.001。根據訓練日志繪制各評價參數的可視化曲線圖[25-27]。本文選取的評價指標為:精確率(Precision)和邊框損失(Giou_loss),最終訓練結果如圖4所示[28-29]。

圖4 模型性能評估參數
精準率又被稱為查準率,表示預測真實的樣本占模型預測該類樣本的比例。精確率和召回率的計算方法見公式(8)。
(8)
式中,TP表示正類預測為正類;FN表示正類預測為負類;FP表示負類預測為正類。
圖4a可以看出,精準率總體呈現穩(wěn)定上升趨勢且震蕩較小,訓練至425輪后趨于穩(wěn)定,達到0.98,算法檢測精度高,特征提取效果好;圖4b可以看出,邊框損失有輕微震蕩過程,但總體呈收斂下降趨勢。迭代至400輪左右,邊框損失趨于穩(wěn)定且僅為0.0007,表明改進后的算法誤差小且擬合效果好。
使用DP-Conv卷積增強主干網絡后,使用兩種模型分別訓練小龍蝦數據集,驗證兩種卷積對主干網絡特征提取的影響,表1對比了原始模型以及新模型訓練的精度和速度指標。

表1 主干網絡對比
從表1可以看出,改進后的算法與原算法相比,DP-Conv卷積層獲取的特征核更多,加快了網絡的推理速度,模型訓練時間提升了約15%。
Res_unit模塊嵌入SENet的CSP1_X構建完成后,在小龍蝦數據集上進行訓練與驗證,分析融合結構對于龍蝦特征提取的影響,表2為不同結構的影響。

表2 殘差網絡對比
表2表明,嵌入SENet模塊提高了網絡的檢測精度與檢測速度[30],對于缺陷的精度提升了2.1%,速度提升了4.4%,說明融合結構能夠加強網絡對于重要特征的提取。
對主干網絡和殘差網絡的改進,兼顧了精度與檢測速度的提升,使得兩方面更加平衡。表3給出了在同等配置、數據集的情況下,與其他3種算法進行性能對比的結果。通過評價指標對比可知,本文采用的改進后的算法進行訓練與驗證,訓練速度更快、精確度更高、收斂性更好,檢測幀率為60FPS,優(yōu)于其他幾種算法,是較為理想的網絡模型,滿足實際檢測需求[31]。

表3 不同網絡效果對比
將最優(yōu)權重喂入模型,在不同場景下對小龍蝦缺陷進行定位識別。采集圖片可能因天氣、鏡頭污漬等原因導致光照強度不均勻。分揀過程中小龍蝦有斷肢殘留等情況,會對網絡淺層特征及深層特征提取造成影響。為了驗證改進后模型的泛化能力,在不同光照亮度、多背景、不同尺度以及包含斷肢的情況下對模型進行效果驗證(圖5)。

圖5 實驗驗證結果
測試圖片包含1442個合格樣本和1145個不合格樣本,存在少量誤檢樣本,整體檢測效果較好。測試結果見表4。

表4 訓練測試結果
圖5中檢測框上的數值表示置信度,表示判定該缺陷隸屬于這類缺陷的概率[32-33]。在查準的情況下,置信度越高,代表檢測效果越好。由檢測結果可知,在不同背景,包含斷肢和多尺度情況下,本文算法均能夠準確定位出圖片中的小龍蝦,檢測時間提升為14 ms,對缺陷檢測的置信度均高于95%;在不同光照條件下,過暗導致的像素低伴隨噪聲會對檢測產生影響,使得目標與背景分割定位困難,影響網絡識別的精度。通過圖5(a)可以看出,本文算法利用注意力機制加強對于特征區(qū)域的識別,加強上下信息的傳遞,使得檢測過程受光照和噪聲的影響大幅減小,提高了檢測置信度,網絡的檢測能力和泛化能力表現良好。
提出了一種基于改進的YOLOv5s網絡的小龍蝦質量檢測方法,在小龍蝦生產質檢中引入深度學習的目標檢測算法,相比較人工檢測,解決了人為主觀因素導致的效率低、成本高等問題。提供了一種多形態(tài)小龍蝦數據集的制作方法,為后續(xù)小龍蝦數據集開源提供一種思路。對YOLOv5s網絡模型進行優(yōu)化,由表3可知:改進后的模型整體性能優(yōu)于Faster-RCNN等傳統(tǒng)目標檢測網絡,總體識別準確率達到97.63%,檢測速率達到60幀/s,同時系統(tǒng)魯棒性好,可以作為小龍蝦質量檢測方法,進行推廣使用。由于受時間限制,網絡測試對比和數據集擴充工作還存在不足,后續(xù)工作將會繼續(xù)優(yōu)化對比實驗、提升數據集的多樣性,加強模型的泛化性。