高 林,張玉蓉,李升凱,朱慶港,姜旭輝
(青島科技大學 自動化與電子工程學院,山東 青島 266100)
瓶裝酒的生產(chǎn)過程中,受到原材料質量(酒瓶)以及加工工藝(灌裝)等因素[1,2]的影響,產(chǎn)品中可能存在各類瑕疵影響產(chǎn)品質量。一條生產(chǎn)線需要有3個到5個質檢環(huán)節(jié)分別檢測不同類型的瑕疵[3]。由于瑕疵種類多樣,有的瑕疵體積小不易察覺,瓶裝酒廠家往往需要投入大量人力成本用于產(chǎn)品質檢。但人力觀察往往存在漏檢、難以量化、檢測速度較慢等問題。
機器視覺系統(tǒng)采用高分辨率攝像技術,光學照明技術配合機電控制技術以及實時圖像處理技術,具有很好的實時性、準確性及穩(wěn)定性的性能[5]。
近年來,基于卷積神經(jīng)網(wǎng)絡[6](CNN)的目標檢測算法異軍突起,相比傳統(tǒng)目標檢測算法不論是檢測精度,還是速度都有較大的提升。其中比較有代表性的是Ren等[7-9]提出的R-CNN系列為代表的兩階段目標檢測算法,此類方法精確度效果較好,但速度稍慢。另外一種為Redmon等[10]提出的YOLO(You only look once)系列的一階段算法,該方法將要檢測的圖片劃分多個網(wǎng)格,每個網(wǎng)格獨立檢測目標,速度較快但檢測精度不高。由于酒瓶瑕疵檢測任務對檢測精度要求較高,所以選用兩階段的目標檢測算法。
本文以實際生產(chǎn)中瓶裝酒的瑕疵檢測為研究目標,以Zhaowei Cai等[11]提出的Cascade R-CNN為基本框架,結合目標檢測的最新技術,提出一種改進的Cascade R-CNN算法,在檢測速度基本持平的情況下,對酒瓶的瑕疵檢測精度有了明顯的提升。
本文提出的算法檢測框架主要基于Cascade R-CNN模型的改進模型,具體的:①提出基于聚類算法[12,13]的Anchor生成策略;②使用多尺度融合檢測的骨干網(wǎng)絡[14](ResNet-FPN網(wǎng)絡)代替原先的VGG網(wǎng)絡;③感興趣對齊層[15](ROI Align)代替感興趣池化層(ROI Pooling)。
經(jīng)典的算法模型Faster R-CNN在區(qū)域提案網(wǎng)絡生成區(qū)域提案的過程中,需要通過錨框(anchors)與真實框(ground truth)的交并比(intersection over union,IOU)來判定錨框為前景或背景。通常設置IOU=0.5時選出的前景框中含有較多的背景會造成很多的誤檢,而直接提高IOU的閾值會導致可用的前景框呈指數(shù)下降,訓練正樣本不足[16]。Zhaowei Cai等在Faster R-CNN基礎上提出的Cascade R-CNN使得檢測效果有了較大的提高,彌補了Faster R-CNN的IOU閾值設置困難的問題。
Cascade R-CNN通過級聯(lián)3個回歸器作為一種重采樣的機制,逐階段提高區(qū)域提案的IOU閾值,從而使得前一個階段重新采樣過的區(qū)域提案能夠適應下一個有更高閾值的階段,最終產(chǎn)生更高質量的區(qū)域提案,使得模型在檢測速度損失較少的情況下,檢測精度有了明顯的提高。


圖1 Anchor與IOU
K-means算法是一種無監(jiān)督的聚類算法。K-means算法通常對于給定的數(shù)據(jù)集,按照樣本點之間的歐氏距離大小,將樣本劃分為K個簇。能夠使輸出的簇中類內相似度最小,類間差異盡可能大。常規(guī)K-means算法中采用的距離為歐氏距離
(1)
式中:K為聚類數(shù),n為樣本總數(shù),xi為樣本點,μj為聚類中心點。
可以看出如果使用歐氏距離大的anchor可能會產(chǎn)生較大的誤差。本文提出使用目標檢測的常用評價指標IOU來定義k-means中的距離度量如圖1(b)所示

(2)
式中:K為聚類數(shù),n為樣本總數(shù), (xj,yj,wj,hj) 為標注框的坐標值, (Wi,Hi) 為聚類中心點的坐標。所以通過聚類生成Anchor尺寸的步驟見表1。
圖像中存在不同尺寸的目標,而不同的目標具有不同的特征,利用淺層的特征就可以將簡單的目標區(qū)分開來;利用深層的特征可以將復雜的目標區(qū)分開來。對此Tsung-Yi Lin等[14]提出的基于特征金字塔結構(FPN)目標檢測網(wǎng)絡,能夠在多個不同特征圖上分別提取區(qū)域提案,實現(xiàn)在多尺度預測。

表1 聚類生成Anchor scales流程
如圖2所示,基于ResNet[14]的FPN骨干網(wǎng)絡,將各個層級的特征進行融合,使其同時具有語義信息和強空間信息。

圖2 ResNet-FPN網(wǎng)絡結構
從圖2中可以看出,ResNet-FPN骨干網(wǎng)絡主要包括2部分:
(1)自下而上:將ResNet作為骨干網(wǎng)絡,根據(jù)特征圖的大小分為5個階段。其中stage2、stage3、stage4、stage5每個階段最后一層的卷積核輸出分別定義為C2、C3、C4、C5,它們各自相對于原始圖片的步長分別為 {4,8,16,32}。
(2)自上而下與橫向連接:對C2、C3、C4、C5中的每一層經(jīng)過一個1×1的卷積操作用以降低通道數(shù),將輸出通道全部設置為相同的256,將從最高層開始進行最近鄰上采樣,將卷積后的特征圖與執(zhí)行上采樣后的特征圖進行加和操作。在融合之后再次使用3×3的卷積核對融合后的卷積圖進行處理以消除上采樣的混疊效應。最終得到的特征圖為 [P2,P3,P4,P5] 作為后續(xù)RPN網(wǎng)絡的輸入和R-CNN網(wǎng)絡的輸入。
Cascade R-CNN的感興趣池化層(ROI Pooling)就是將感興趣的區(qū)域從特征圖上劃分出來,然后縮放成固定大小區(qū)域提案。但是在處理過程中會存在兩次取整操作:①候選區(qū)域的位置信息 {x,y,w,h} 通常是小數(shù),但為了方便操作會把它整數(shù)化;②整數(shù)化后的候選區(qū)域平均分割成k×k個單元,會對每一個單元的邊界進行整數(shù)化。
從圖3可以明顯看出,經(jīng)過兩次整數(shù)化后可能會出現(xiàn)“不匹配問題(misalignment)”:候選區(qū)域與最開始回歸選出來的區(qū)域會有一定的位置偏差,這個偏差會影響檢測或者分割的準確度。
為了解決ROI Pooling的不匹配問題,使用He等[15]提出了ROI Align算法消除了不匹配的問題。具體的:取消整數(shù)化操作,保留浮點數(shù)坐標,并用雙線性插值法[19]獲得坐標為浮點數(shù)的像素點上的圖像數(shù)值,然后將這些坐標點進行池化得到最終結果。ROI Align如圖4所示。
可以看到ROI Align的算法步驟如下:
(1)遍歷每一個候選區(qū)域,保持浮點數(shù)邊界不做量化;
(2)將候選區(qū)域分割成k×k個單元,每個單元的邊界也不做量化處理;
(3)在每個單元中計算固定4個坐標位置,用雙線性內插值的方法計算4個位置的值,然后進行最大池化操作。

圖3 ROI Pooling過程

圖4 ROI Align
本次實驗采用的數(shù)據(jù)來源于真實生產(chǎn)中采集的酒瓶瑕疵數(shù)據(jù)集,使用labelme軟件將采集到的數(shù)據(jù)集進行標注,數(shù)據(jù)集共包含3個大類瑕疵:瓶蓋瑕疵、貼標瑕疵、噴碼瑕疵。3個大類里面又包含共10個小類:{瓶蓋部分:瓶蓋破損、瓶蓋變形、瓶蓋壞邊、瓶蓋打旋、瓶蓋斷點;標貼部分:標貼歪斜、標貼起皺、標貼氣泡;噴碼部分:正常噴碼、異常噴碼},最終劃分到的訓練樣本圖片4512張,測試樣本2614張。訓練集和測試集的標簽數(shù)量見表2。
其中對應的各個類別瑕疵如圖5所示。
選取所有標注的標注文件,從標注文件中提取出待檢測目標的坐標值 (x,y,w,h) 將提取數(shù)的標注框的坐標值作為聚類算法的輸入,通過對酒瓶標注數(shù)據(jù)坐標值的分析處理,聚類得出適合酒瓶瑕疵的anchor尺寸數(shù)據(jù)。具體的對標注數(shù)據(jù)進行如下處理:
(1)統(tǒng)計標注數(shù)據(jù)的長寬數(shù)據(jù)分布,使用聚類的方法選取anchor的基礎邊長(scales)
(3)

表2 數(shù)據(jù)集標注數(shù)量

圖5 酒瓶瑕疵
(2)對標注數(shù)據(jù)的長寬比進行統(tǒng)計分析,選取合適的Anchor長寬比尺寸(ratios)。
其中對酒瓶數(shù)據(jù)的分析結果如圖6所示。其中圖6(a)中橫軸為長寬比,縱軸為對應的樣本數(shù)量;圖6(b)中橫軸為瑕疵的長,縱軸為瑕疵的寬。
Anchor ratios:在圖6(a)中可以看出,標注數(shù)據(jù)的長寬比例存在十幾種可能。所以在選取的過程中要保持兩個原則:①Anchor ratios一般成對出現(xiàn)(乘積為1);②不能極端選擇比例,選取過多比例會造成多余的計算。最終選擇的ratios為{0.2,0.5,1,2.0,5.0}
Anchor scales:如圖6(b)可以看出,通過聚類算法選出3組長寬數(shù)據(jù),并根據(jù)公式求出3個基礎邊長。具體步驟見表2。最終得到3個聚類中心的坐標和基礎邊長分別為 {(35.68,35.19),(44.93,155.90),(145.65,355.80),35,83,227}。

圖6 酒瓶瑕疵標注分析
為了驗證本文設計算法的優(yōu)越性,將本文設計的算法與幾種目前最常用的基線檢測器進行實驗:Faster R-CNN和Cascade R-CNN檢測模型。骨干網(wǎng)絡是否使用ResNet-FPN,是否使用ROI Align取代ROI Pooling的感興趣池化層。
Faster R-CNN:基礎Faster R-CNN模型,骨干網(wǎng)絡為VGG16[20]網(wǎng)絡,輸入圖像經(jīng)過骨干網(wǎng)絡生成特征圖,特征圖經(jīng)過區(qū)域提案網(wǎng)絡生成感興趣的區(qū)域,這些區(qū)域經(jīng)過一個ROI池化層,得到128個ROI,后接兩個全連接層,每個全連接層保留2048個單元,然后分別經(jīng)過softmax分類和bbox回歸網(wǎng)絡。其中帶ResNet-FPN和ROI Align的網(wǎng)絡模型如圖7所示。
Cascade R-CNN:級聯(lián)R-CNN共有4個階段,一個RPN和3個用于U={0.5,0.6,0.7} 的檢測階段,所有級聯(lián)檢測階段都具有相同的架構。其中u=0.6和u=0.7分別使用了第二階段和第三階段的建議。帶ROI Align的Cascade R-CNN結構如圖8所示。

圖7 Faster R-CNN+ResNet-FPN+ROI Align

圖8 Cascade R-CNN + ROI Align
本次實驗采用所有算法模型均在同一個硬件設備上,采用相同的運行環(huán)境,以驗證實驗的公正性。具體的:CPU為Intel 至強 E3-1231,顯卡型號為Tesla T4 16 G顯存。操作系統(tǒng)為基于Linux的Ubuntu 18.04,Cuda-10.1,Python-3.6.9,PyTorch-1.5.1+cu101,與其對應的TorchVision-0.6.1+cu101。

如圖9所示,左圖為采用標準Cascade R-CNN所采用的anchor尺寸來訓練模型的Loss曲線,右圖為采用聚類出的anchor尺寸訓練模型的Loss曲線,從圖9中可以看出,未做anchor尺寸修改時,Loss下降比較平緩,訓練模型收斂較慢,當訓練次數(shù)到達9k代,模型還未收斂,相反的修改anchor尺寸后,Loss從2k代開始下降比較迅速,直到5k代Loss下降緩慢,到6k代以后Loss趨于穩(wěn)定。由此可以得出根據(jù)k-means聚類出的anchor尺寸參數(shù),能夠有效加快模型訓練的速度,加快模型收斂。其中橫軸為訓練迭代次數(shù),縱軸為總的損失值。
從表3測試集上的檢測效果可以看出,基于k-means算法聚類得出的anchor尺寸能夠更好地適應酒瓶瑕疵檢測,平均能夠帶來約9%平均精度的檢測效果提升,具有廣泛的實用價值。
為了表明使用多尺度融合的骨干網(wǎng)絡和ROI Align帶來的檢測效果的提升,將本文設計的算法與目前較為流行的基線檢測器進行消融對比實驗。將模型通過訓練集和驗證集進行訓練和調試,當訓練誤差和在驗證集上的驗證精度不再發(fā)生變化時,保留出最好的訓練模型。然后在測試集上進行測試,在測試集上測試性能見表4。

表3 anchor修改前后的測試效果對比
從表4可以看出,在自制數(shù)據(jù)集上,F(xiàn)aster R-CNN能夠達到48.5%的平均精度,效果一般。通過ROI Align層替換ROI Pooling層能夠帶來大約4%的檢測精度的提升,將骨干網(wǎng)絡從VGG16網(wǎng)絡替換為ResNet50-FPN網(wǎng)絡,對小目標的檢測具有較大的提升,能夠使得模型具有更好的檢測效果,大約達到60%的mAP。通過級聯(lián)多個回歸器的Cascade R-CNN算法模型,各個方面的精度都優(yōu)于Faster R-CNN模型,mAP提升了將近13個百分點。本文改進的Cascade R-CNN網(wǎng)絡達到了最優(yōu)的檢測精度,高達79.6%。檢測結果如圖10所示。
總的來時,通過使用多尺度融合的骨干網(wǎng)絡和ROIAlign網(wǎng)絡,能夠有效提升檢測的精度,但是在檢測性能方面略有損失,從表中可以看出,ROI Align層對檢測速度的影響較小,多尺度融合的特征提取網(wǎng)絡會帶來檢測精度的提升,但同時會造成檢測速度略有下降??梢钥闯觯啾扔贔aster R-CNN檢測模型,本文提出的改進Cascade R-CNN能夠在檢測速度損失很小的情況下大幅度提升檢測精度。

表4 各算法模型精度對比

圖10 檢測結果
本文提出的基于聚類算法的Anchor尺寸生成策略,應用于模型區(qū)域提案網(wǎng)絡生成特定尺寸的Anchors。并結合多融合的特征提取網(wǎng)絡(ResNet-FPN)與感興趣對齊層(ROI Align)提出一種改進的Cascade R-CNN算法?;诰垲愃惴ǖ腁nchor生成策略,在訓練過程中能夠有效加快模型收斂,有效防止在訓練過程中由于尺寸設置不合理造成的模型訓練收斂困難、陷入局部最優(yōu)等情況;多尺度融合的ResNet-FPN網(wǎng)絡能夠同時利用低層特征高分辨率和高層特征的高語義信息,通過融合這些不同層的特征達到預測的效果,實驗結果表明在Faster R-CNN網(wǎng)絡和Cascade R-CNN網(wǎng)絡上面均能有3%的精度提升;ROI Align層的使用取消了原來生成區(qū)域提案時的兩次取整操作,消除了特征圖與原始圖像的不對準問題,有效提升了缺陷定位的精準度。在未來實際生產(chǎn)過程中,本文提出的算法模型將會得到廣泛的應用。