吳昊然, 陳曉星, 高 傲
(東華大學 計算機科學與技術學院, 上海 201620)
食品包裝檢測是食品生產過程中一項不可或缺的生產流程。 傳統的人工缺陷檢測方法存在效率低下,檢測主觀性較強等問題。 同時,長期工作產生的視覺疲勞現象,會降低質檢員對食品包裝缺陷判斷的準確性。 另一方面,傳統質檢投入極高的人工成本,檢測效率也并不穩定。 因此研究基于機器視覺的計算機自動檢測算法顯得尤為重要。 在以往的研究中,常用的缺陷檢測方式主要包括: 超聲波檢測法、滲透檢測法、X 射線檢測、磁粉檢測法,但這些技術都需要專業的設備儀器,價格高昂,無法在現代工業生產中得到更大范圍的推廣。 隨著圖像處理技術的發展,推出了基于深度學習的缺陷包裝檢測方法。薯片食品生產線光照條件穩定,單一流水線產品類型固定,比較適合采用基于深度學習的方式檢測產品缺陷,本文研究則著重于使用深度學習的方法對流水線上食品包裝進行缺陷檢測。
對于解決傳統人工缺陷檢測方法的不足給食品生產帶來的諸多負面影響,眾多專家學者對機器質檢進行了研究,如:王鑫等學者[1]提出基于HOBS 異常檢測算法,屬于基于概率統計異常檢測算法中的一種,HOBS 異常檢測算法屬于無監督模式檢測算法,該方法具有數據集不需要標注,硬件環境要求較低,在普通CPU 下就可訓練。 趙寶水[2]用了一種基于最小二乘擬合的圖像區域提取算法,最終設計了一種基于Lab 顏色空間下分塊Otsu 算法的包裝檢測方案。 鞏曉云[3]提出了一種組合去噪方法,用均值濾波器、中值濾波器、高斯濾波器完成了對3 種噪聲的去除,進而采用大津算法閾值分割增強圖像對比度,去除了去噪后形成的模糊效應。 但是這些方法主要依賴人工提取特征,可移植性較弱。 而深度學習的特征提取是由機器自動完成的,而且數據量越大,表現就越好,同時還可以通過調參進一步提高性能上限。 所以本文擬基于深度卷積神經網絡對包裝缺陷進行研究。
目前,基于深度學習的目標檢測網絡大體可以分為one-stage 和two-stage 兩種。 其中, two-stage有R-CNN[4]、Faster R-CNN[5]、SPP-Net[6]等, twostage 目標檢測算法是先提出備選框,再對備選框進行判斷,從而進行定位和分類。 one-stage 目標檢測算法有SSD[7]、 YOLO 系列[8]等,這類算法是將目標檢測問題視為一個回歸問題進行處理,直接通過單階段的網絡,一體化實現生成備選框的過程,從而進行目標的定位和分類。
分析研究可知,YOLO 系列的目標檢測算法在速度和效率上更優,因此本文針對數據集的特點選擇了YOLOv5 算法及其對應的主干特征提取網絡,并對網絡結構進行改進。 因為薯片包裝背景單一、不復雜,缺陷重在邊緣,YOLOv5 中的Mosaic 數據增強意義不大,從邊緣信息這一角度出發,改用了基于Canny 邊緣檢測算法求得圖片的邊緣線條。 再引入SENet 網絡,根據特征通道間的相關性進行建模,篩選出了針對通道的注意力,并對重要的邊緣特征進行強化來提升識別準確率。 抑制網絡中無用特征,強化邊緣特征。 另外,將YOLOv5n 模型的傳統卷積層改為深度可分離卷積層,有效減少了SE-YOLOv5包裝缺陷檢測算法的參數量和計算量。 最后所提的SENet-YOLOv5 模型檢測準確率、平均精度均值(mAP) 都得到了一定的提升,表明該方法可應用于薯片包裝缺陷檢測以提高企業的工作效率。
YOLOv5 是一種高效快速的目標檢測模型,具有速度快、靈活性高的特點。 網絡結構主要包括DarkNet- 53 主干網絡、 路徑聚合網絡(Path Aggregation Network, PANet)[9]。 主 干 網 絡 采 用CSP1_X 結構,主要包括2 個分支。 分支一由X個Bottleneck 模塊串聯,分支二為卷積層,然后2 個分支拼接到一起,使網絡深度增加,特征提取能力大幅增強。 PANet[10]結構是由卷積操作、上采樣操作、CSP2X 構成的循環金字塔結構,可以使圖像不同特征層之間相互融合,以進行掩模預測,經非極大值抑制(Non-Maximum Suppression,NMS)[11]獲得最終預測框。 具體網絡模型[12]如圖1 所示。

圖1 YOLOv5 算法網絡結構Fig. 1 Network structure of YOLOv5 algorithm
SENet[13]篩選出針對通道的注意力,并通過強化重要的特征來提升準確率。 這種結構的原理是通過控制scale的大小來加強重要的特征、減弱不重要的特征,從而讓提取的特征指向性更強。 具體做法為:
(1)進行壓縮(Squeeze)操作,找到通道間信號的關系并輸出。 使用全局平均池化(global average pooling) 將feature map 所有特征值進行處理,計算成一個值(可看作1×1 卷積),即經過壓縮操作后特征圖被壓縮為1×1× C向量。 公式如下:
(2)激勵(Excitation)操作。 通過一定方式提取通道信息,再利用這些通道信息,來全面捕獲通道依賴性。 為了滿足這些標準,選擇采用一個簡單的門機制,并使用sigmoid激活(這里得到的標量S就相當于后續要加在輸出信息U的某個Fm上的權重了)。 此處需用到的數學公式為:
其中,σ表示sigmoid激活;δ表示Relu激活函數;W1和W2是用于降維和升維的2 個全連接層的權重。 通過在非線性周圍形成2 個全連接(FC) 層的瓶頸來參數化門機制,即降維層參數為W1,降維比例為r。 將通道權重相乘,原有特征向量為W ×H ×C,將SE 模塊計算出來的各通道權重值(標量s) 分別和原特征圖對應通道的二維矩陣相乘,并輸出得到的結果。 SENet 的Block 單元如圖2 所示。

圖2 SENet 的Block 單元Fig. 2 The Block unit of SENet
雖然YOLOv5 網絡模型在目標檢測上有顯著的優點,但由于本數據集樣本視距一致,目標大小一致且顯著,背景單一,為了提高檢測精度和速度,提出SE-YOLOv5 包裝缺陷檢測算法,模型如圖3 所示。

圖3 SE-YOLOv5 算法網絡結構Fig. 3 Network structure of SE-YOLOv5 algorithm
本文對于該模型的主要改進為:針對數據集的特點,YOLOv5 中的Mosaic 數據增強意義不大,改用了基于Canny 邊緣檢測的數據增強,提升數據集細節;將注意力機制SENet 與DarkNet-53 融合組成新的特征提取網絡SEDarkNet-53,作為SE-YOLOv5的主干網絡,加強網絡提取特征的能力;通過深度可分離卷積層代替主干網絡中傳統卷積的結構以降低模型參數量,提高識別速度。
由圖3 可看到,首先輸入端將640×640 大小的RGB 圖像作為輸入,為了凸顯圖像的邊緣特征以更好地進行網絡的特征提取,將圖片進行Canny 邊緣算法處理,并將其作為一個通道拼接至原圖像,至此形成4 通道的圖像輸入。 主干網絡(backbone)由卷積操作、下采樣(Focus)和跨階段結構(Cross Stage Partial,CSP)組成,這里將普通卷積替換成深度可分離卷積,以此來減少網絡的參數量和提高識別速度,同時為了減少深度可分離卷積帶來的性能損失,加入了通道注意力機制(SE)來提高模型性能。 將處理過后的圖像輸入至主干網絡來提取圖像特征(feature)。 頸干網絡(Neck)由特征金字塔(Feature Pyramid Networks,FPN) 和 像 素 聚 合 結 構(Pixel Aggregation Network,PAN)組成,將主干網絡提取的特征向量輸入頸干網絡進行特征的融合,最終通過3 個不同尺度下的YOLO 檢測頭(head)輸出坐標偏移值和分類結果。
經過大量現場觀察,可知薯片包裝缺陷的數據集主要為封口不良,且視距一致,目標大小一致且顯著,背景單一,因此Mosaic[14]數據增強對于本研究意義不大。
封口各類問題一般是體現在包裝邊緣的不規整性,存在強烈的邊緣信息,因此從邊緣信息這一角度出發,通過Canny[15]邊緣檢測算法求得圖片的邊緣線條,并作為一個圖像通道加入至輸入端原有的RGB 三通道中,形成具有邊緣信息的4 通道圖像,從而有利于主干網絡提取特征,提升了性能。
為了抑制網絡中的無用特征,強化重要的邊緣特征,SEDarkNet-53 引入SEnet 增加網絡深度并提升特征提取能力,進一步對包裝缺陷進行更加精確的定位和識別。 篩選出針對通道的注意力,把重要的特征進行強化來提升準確率,控制scale的大小,把重要的邊緣特征加強,減弱次要特征,從而強化特征指向性。 原BottleNeck 具有簡易的線性運算,在輕量化的同時保持準確性,CBS 模塊改進流程如圖4 所示。 圖4 右側增加LeakyRelu函數,避免負值輸入的梯度為0,進而解決部分神經元不學習的問題,更充分地學習圖像特征,再與SENet 結合生成CBS單元,以此達到對包裝缺陷進行更加精確的定位和識別的效果。

圖4 CBS 模塊改進流程Fig. 4 CBS module
SE-YOLOv5 包裝缺陷檢測算法將YOLOv5n 模型的3 處傳統卷積層替換為深度可分離卷積層。 第一步進行Depthwise Convolution-深度卷積,與常規卷積操作不同,深度卷積的一個卷積核負責一個通道,逐個通道分開卷積,對于一張3×3 像素、四通道彩色輸入圖片(shape 為3×3×4),如圖5 所示,經過第一次卷積運算,Depthwise Convolution[16]完全是在二維平面內進行。 卷積核的數量與上一層的通道數相同(通道和卷積核相對應),Feature map 通道數與卷積核個數相同,所以一個四通道的圖像經過運算后生成了4 個通道的Feature map。

圖5 深度卷積流程圖Fig. 5 Depthwise Convolution
這樣運算后,不會改變卷積前后的通道數,然后通過Pointwise Convolution[17],逐點卷積流程如圖6所示。

圖6 逐點卷積流程圖Fig. 6 Pointwise Convolution
將卷積分解成 Depthwise Convolution 和Pointwise Convolution 后,這個卷積的計算量約減少了56%,整個網絡參數下降到原本參數量的43.92%,有效減少了SE-YOLOv5 包裝缺陷檢測算法的參數量和計算量,利于后續模型的開發板部署。
本次實驗中,實驗環境設置見表1。

表1 仿真實驗配置Tab. 1 Configuration of the simulation experiment
本研究采用的薯片包裝缺陷數據集圖像均為生產流水線攝像頭拍攝的視頻截取而成,數據集一共1 000張具有包裝缺陷的圖像,考慮實際的生產環境,具有缺陷的包裝為少數,若訓練集均為具有缺陷的正樣本,則檢測誤檢的概率就會很高,同時加入了2 000張沒有包裝缺陷的負樣本,以保障正負樣本平衡,測試中減少誤檢,提升召回率Recall。 因此,正負樣本圖片共3 000張圖片,將其以9 ∶1 的比例分為訓練集和驗證集,圖像的大小都是2 448*2 048,為方便訓練和測試,本論文統一將圖像大小放縮(resize) 為640*640。 為了滿足試驗要求,首先,借助Lableimg 軟件對數據集進行標注,手動設置類別為合格包裝和badbox 兩類;然后,把數據集轉變成yolo 格式。 此外,為體現算法魯棒性,數據集中圖像為原始圖像,沒有進行任何清晰化等預處理。 在網絡訓練前,使用K-Means 算法對先驗框尺寸進行計算,初始錨框的參數設定為[9,14,17,32,33,23]、[32,64, 65,49, 60,120]、[127,92,140,188,352,333],通過在大型數據集COCO 上訓練得到預訓練模型進行權重的初始化,使用SGD 優化算法更新網絡參數,學習率設置為0.001,訓練批次為16,模型迭代500 次,網絡的輸入圖片尺寸為640×640×3。為了驗證本文改進YOLOv5 的檢測性能,進行消融實驗。測試集每批次訓練記錄一次loss值,當訓練集和測試集的loss值趨于穩定時,即停止訓練。
由本論文提出的算法檢測效果可以看出,通過本研究提出的改進YOLOv5s 的算法,可以有效地檢測出大部分的缺陷,但也存在一定程度上的漏檢和誤檢。 從對數據集的分析來看,這是典型的樣本不均衡導致的。 對檢測效果分析可知,誤檢其一為生產流水線的雜物導致的誤檢,說明模型的抗噪聲能力有待進一步提升。 其二為小目標的誤檢,但其較低的置信度完全可以通過置信度過濾的方法將其去除。 一個優秀的深度學習算法不僅僅取決于模型的架構,同時優良的數據集也是重要的因素。 正負樣本的不均衡導致的漏檢,抗噪能力的提升這些完全可以從數據集的角度進行解決,解決方法即為增加該類型的封口不良類別、包含雜物的負樣本圖片以及小目標的樣本數量,并進行重新訓練。
為了驗證本文提出的改進模塊對YOLOv5s 算法性能的影響,設計7 組實驗對不同的改進部分進行消融實驗,驗證其有效性,對表2 進行分析可見,模型8 是本文所提出的網絡模塊。 模型2 將原有的三通道圖像輸入加入了Canny 邊緣檢測的通道,即本文提出的基于邊緣的數據增強,相較于基線模型,將mAP從0.88 提升至0.91(3.4%),邊緣數據增強將圖片的隱式信息顯式化,有利于主干網絡提取特征,從而提升了性能。 而模型參數和識別速度方面,因為輸入從三通道變成了四通道,對應的卷積核通道數也從三通道變成了四通道,保證張量計算的一致性,從而讓模型的參數量有略微的提升,但從識別速度來看,影響并不大。 模型3 在YOLOv5s 主干網絡(backbone)中使用深度可分離卷積結構替代原有的卷積的微調后,在犧牲極少的mAP性能的情況下(0.88→0.86),或者說準確率基本不變的情況下,有效地減少了模型參數量和提升了模型識別效率。 其中,相較于基線網絡,模型參數量從7.2 M 下降至4.1 M(66%),識別速度從95.1 ms 提升至55.1 ms(42%);模型3 在基線模型的基礎上加入通道注意力機制(SE),能將通道的注意力信息嵌入到YOLOv5s 的模型,使得模型對特征圖的注意力更加集中,來提升模型的性能。 從表1 來看,通道注意力將基線模型的mAP從0.88 提升至0.94 (6.8%),略微增加了識別速度,模型的性能取決于精度與速度的權衡,而不是一味地提升性能或速度,因此該改進模塊使得mAP的提升讓識別速度的增加是可以接受的;從表1 中的模型4 ~7 來看,各個改進模塊兼容程度較好,并未出現加入多個改進模塊mAP反而下降的情況,這是由于本文的改進模塊是對YOLOv5 的不同階段算法進行改進的。 最終加入3個改進模塊的模型8 的mAP達到0.95,識別速度為59.7 ms,相較于基線模型,精度提升了7.9%,而識別速度提升了37%。

表2 消融試驗Tab. 2 Ablation experiment
為了節省大量人力,提高食品包裝檢測效率,保證產品質量,本文提出一種基于SENet-YOLOv5 網絡的包裝缺陷實時檢測方法,在YOLOv5 架構的基礎上,本研究采用基于Canny 邊緣檢測算法的數據增強,通過深度可分離卷積層代替主干網絡中傳統卷積的結構以降低模型參數量,提高識別速度,融合通道注意力機制SE 模塊,加強網絡提取特征的能力。 實驗表明,本研究所提出的SENet-YOLOv5 模型,mAP達到0.95,識別速度為59.7 ms,相較于基線模型,精度提升了7.9%,而識別速度提升了37%,可應用于實際的生產過程。