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


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

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

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

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

圖3 ROI Pooling過(guò)程

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

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

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

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

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

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

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

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

表4 各算法模型精度對(duì)比

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