邱 呂,任德均,郜 明,付 磊,吳華運,胡云起
(四川大學機械工程學院,四川 成都 610065)
現(xiàn)代工業(yè)生產(chǎn)中大量的自動化生產(chǎn)流水線上產(chǎn)品需要進行裝箱計數(shù)檢測,計數(shù)精度關(guān)系到裝箱產(chǎn)品的數(shù)量,直接決定了裝箱的質(zhì)量。在醫(yī)用塑瓶裝箱過程中由于機械故障、震動等導(dǎo)致少瓶、多瓶裝箱失誤從而影響企業(yè)信譽。傳統(tǒng)的人工方法不僅容易出差錯,而且勞動強度大、效率低。在生產(chǎn)線上的自動計數(shù)檢測方法,已經(jīng)有很多的相關(guān)研究。如楊東燕[1]使用單片機作為控制器,并結(jié)合對射型光電傳感器,實現(xiàn)對流水線上產(chǎn)品數(shù)目的自動計數(shù)。圖爾克(天津)傳感器有限公司[2]使用偏振反射板式光電傳感器對透明瓶子進行計數(shù)檢測,該方法適用于檢測表面光亮的物體,在啤酒/飲料自動化生產(chǎn)線上廣泛使用。此類方法對傳感器以及設(shè)備安裝要求較高,且若待檢測物體有輕微震動將會對檢測結(jié)果產(chǎn)生重大影響。
相比于傳統(tǒng)方法,基于機器視覺的檢測方法克服了人工方法主觀因素帶來的影響,并在速度、精度和穩(wěn)定性方面具有優(yōu)勢。該方法主要分為2種:一種是利用數(shù)據(jù)特征建立模型求解實現(xiàn),如Hough變換[3]和背景相減法[4]等。夏天煜等[5]通過Blobs分析解決了小包裝食鹽裝箱過程中由于疊包、近包缺陷引起的裝箱計數(shù)精度誤差。另一種是將特征提取方法[6-7]結(jié)合分類器得到檢測結(jié)果。將基于機器視覺的檢測方法應(yīng)用于本文的醫(yī)用塑瓶檢測任務(wù)中時,存在以下問題:1)醫(yī)用塑瓶瓶身透明與背景灰度差異不明顯,若基于圖像提取塑瓶特征很難實現(xiàn)檢測;2)在塑瓶裝箱實際成像中由于光照變化、瓶體反光等干擾使算法魯棒性降低;3)在裝箱過程中存在倒瓶、歪瓶等異常情況時,使用上述檢測方法計數(shù)精度不高、缺乏穩(wěn)定性,往往還需要現(xiàn)場人工加以調(diào)整。
基于深度學習的目標檢測方法框架主要分為基于區(qū)域候選框的二階段目標檢測框架和一階段目標檢測框架2大類[8]。二階段目標檢測算法先生成一系列目標候選區(qū)域,然后通過卷積神經(jīng)網(wǎng)絡(luò)提取特征進行目標位置的回歸和類別的識別,這類算法定位和識別精度高但速度慢,如R-CNN[9]、Fast R-CNN[10]、Faster R-CNN[11]等。王靜濤等[12]以深度卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),以Faster R-CNN為原型實現(xiàn)了對葉片氣孔快速檢測與統(tǒng)計計數(shù)。一階段的目標檢測算法由于沒有候選區(qū)域生成過程直接從圖片獲取檢測結(jié)果,只處理一次圖像即可得到目標的類別和位置信息,所以速度快,足以滿足檢測實時要求,但檢測效果不如二階段檢測算法,其代表算法主要有SSD[13]、YOLO[14]等。劉小剛等[15]利用YOLOv3方法在復(fù)雜背景中實現(xiàn)了對草莓的識別與定位。
圖1 醫(yī)用塑瓶裝箱計數(shù)檢測流程圖
因深度學習方法強大的特征自學習能力,無需人為提取特征,具有檢測精度高、速度快、魯棒性好等優(yōu)勢,本文提出一種基于深度學習的醫(yī)用塑瓶裝箱計數(shù)算法,計數(shù)檢測流程如圖1所示。首先用工業(yè)相機采集裝箱塑瓶圖像用作數(shù)據(jù)集,在訓(xùn)練過程中為了豐富圖像訓(xùn)練集,更好地提取圖像特征、泛化模型從而防止模型過擬合,對圖像進行隨機旋轉(zhuǎn)、隨機剪切、水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)等圖像增強預(yù)處理。然后將圖片送入目標檢測網(wǎng)絡(luò),利用深度神經(jīng)網(wǎng)絡(luò)提取特征預(yù)測出目標。最后統(tǒng)計塑瓶目標個數(shù)與預(yù)先設(shè)定的每箱合格塑瓶數(shù)量作比較,若相等則為裝箱合格,否則為裝箱不合格做后續(xù)處理。
RetinaNet[20]是簡單密集型的one-stage detector,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。整體是由骨干網(wǎng)絡(luò)ResNet[21],特征金字塔網(wǎng)絡(luò)(FPN)和分類、回歸2個子網(wǎng)絡(luò)組成。FPN對ResNet的多尺度特征進行了強化,得到表達力更強、包含多尺度目標區(qū)域信息的卷積特征圖。分類子網(wǎng)絡(luò)對輸出進行分類,回歸子網(wǎng)絡(luò)執(zhí)行邊框回歸任務(wù)。
圖2 RetinaNet網(wǎng)絡(luò)結(jié)構(gòu)圖
1.2.1 特征金字塔網(wǎng)絡(luò)
FPN通過自頂向下(top-down)和橫向連接(lateral)通路[22]來增強卷積神經(jīng)網(wǎng)絡(luò),從而有效地從單分辨率輸入圖像構(gòu)建出豐富的多尺度特征金字塔,把底層特征和高層特征進行融合,使金字塔的每一層都可以用來檢測不同尺度的物體。本文的FPN由P3~P7構(gòu)成(Pi層的分辨率縮小到輸入圖像的2i),其中P3、P4、P5層分別由ResNet的C3、C4、C5計算得來。P6是由C5使用stride=2的3×3卷積得到,P7是由P6經(jīng)過stride=2的3×3卷積得到,特征金字塔所有層的channel=256。
1.2.2 子網(wǎng)絡(luò)輕量化
FPN的每一層輸出都連接分類和回歸子網(wǎng)絡(luò),用來預(yù)測目標類別和位置。在本文檢測任務(wù)中,圖像內(nèi)容簡單,僅包含塑瓶一類目標,因此可以對子網(wǎng)絡(luò)進行精簡。在圖2的RetinaNet網(wǎng)絡(luò)結(jié)構(gòu)圖中,class subnet連接在FPN的每層FCN,參數(shù)共享。特征圖使用4個3×3的卷積層,每個卷積層接一個ReLU層,輸出的channel=CA(C是類別數(shù),A是anchor數(shù)),最后使用sigmoid激活函數(shù)。box subnet結(jié)構(gòu)與class subnet相同但不共享參數(shù),最后一層的channel=4A。原始的RetinaNet子網(wǎng)絡(luò)為5層卷積,本文將5層卷積層刪減為2層,實現(xiàn)網(wǎng)絡(luò)輕量化設(shè)計。
1.2.3 Focal Loss
Focal Loss損失函數(shù)是交叉熵(CE)損失函數(shù)的簡單變形,其公式如下:
(1)
CE(pt)=-log(pt)
(2)
FL(pt)=-αt(1-pt)γlog (pt)
(3)
(4)
式中y表示真實標簽的值,p表示概率,pt表示估計概率。α為正負樣本平衡因子,取值范圍為0~1。γ為調(diào)節(jié)參數(shù),控制著縮放的比例。Focal Loss克服CE損失函數(shù)在易于分類的簡單樣本上也有相當大損失的缺點。簡單樣本的pt較大則權(quán)重減少,困難樣本pt較小則權(quán)重增大,由此來抑制那些容易分類樣本的權(quán)重,將注意力集中在那些難以區(qū)分的樣本上,有效地解決正負樣本比例嚴重失衡的問題,從而大大地提高了一階段目標檢測器的精度。本文模型訓(xùn)練時定位損失函數(shù)采用Focal Loss損失函數(shù),分類采用的損失函數(shù)為平滑損失函數(shù)。
在圖2的RetinaNet網(wǎng)絡(luò)結(jié)構(gòu)圖中P3~P7層的Anchors面積從32×32依次增加到512×512。每層使用{20,21/3,22/3}這3種尺度和{1:2,1:1,2:1}這3種不同高寬比生成共9種不同大小的錨框。每個錨框都對應(yīng)C(類別數(shù))維分類向量和4維的回歸向量,分別表示該框的類別和位置坐標。若使用原始固定錨框或者手動設(shè)置尺寸,并不能很好地對尺度以及高寬比差異較大的目標進行良好檢測。所以提出使用K-means聚類算法對裝箱塑瓶訓(xùn)練數(shù)據(jù)集的真實標注框高寬比進行聚類操作,實現(xiàn)根據(jù)檢測對象自適應(yīng)地設(shè)計合適的錨框個數(shù)以及尺寸,讓模型更容易學習,降低檢測任務(wù)的難度,提高本文塑瓶裝箱計數(shù)在倒瓶歪瓶等異常情況下的檢測效果。
K-means聚類是指把集合分成多個類,每個類中的對象都是彼此相似的。通過肘部法合理地設(shè)置聚類的K值為3,將真實塑瓶標注框高、框?qū)捴涤成涞侥P?,輸入尺寸后的聚類結(jié)果如圖3所示。
圖3 真實框高寬聚類結(jié)果圖
由圖3可得,塑瓶的高、寬值聚類的中心為[82,58],[80,68],[101,79],所以本文以{1.17,1.28,1.41}作為Anchor的比例值。由聚類結(jié)果知都是高瘦的box,符合將圖像縮放至網(wǎng)絡(luò)輸入尺寸的視覺效果。
本文采用的數(shù)據(jù)為某廠家采集的塑瓶裝箱圖像共計200張,圖像的分辨率為1600×1200。將數(shù)據(jù)集中的100張圖像用標注工具labelImg標注為Pascal VOC的數(shù)據(jù)集格式,并按照8∶2的比例隨機劃分為訓(xùn)練集和驗證集,剩余的100張圖像用來測試。訓(xùn)練集共制備了3996個瓶體的標簽,其中異常情況(歪瓶、倒瓶)在總數(shù)據(jù)中的占比為1.8%。裝箱少瓶(標準為40瓶/箱)示例標注圖如圖4所示,可見在異常情況下,即存在倒瓶、歪瓶時標注框尺寸差異較大。
圖4 塑瓶標注圖
IoU即交并比,表示了目標預(yù)測框(DR)和真實標注框(GT)的重疊度,是目標檢測中測量在特定數(shù)據(jù)集中檢測對應(yīng)物體準確度的一個標準,其計算公式如下:
(5)
在很多情況下,不管是準確率P(模型預(yù)測出的樣本中真樣本的比例)還是查全率R(模型預(yù)測出的正樣本占所有正樣本的比例)均不能比較全面地對模型性能進行有效評估。F度量值(F-measure)是查全率和查準率在非負權(quán)重β下的加權(quán)調(diào)和平均值,其計算公式如下:
(6)
本文采用F1值(即β=1時)作為算法的評價指標。
對本文算法在上述構(gòu)建的數(shù)據(jù)集上進行實驗,實驗所用到的硬件環(huán)境為GPU:NVIDIA GeForce GTX 1060;CPU:Intel i7-8750, 2.20 GHz;RAM:16 GB。操作系統(tǒng)為Windows 10,使用的深度學習框架為Pytorch。
2.3.1 Anchor改進前后檢測結(jié)果對比
為驗證對Anchor使用了聚類操作的網(wǎng)絡(luò)模型性能,本文設(shè)計了對照實驗1,分別將直接使用RetinaNet原始的Anchor尺度以及比例值與使用聚類得到的Anchor進行訓(xùn)練作對比。2組數(shù)據(jù)均使用ResNet18預(yù)訓(xùn)練權(quán)重初始化網(wǎng)絡(luò),優(yōu)化器選擇Adam,初始學習率設(shè)置為0.0001,batch size設(shè)置為2,訓(xùn)練輪數(shù)為20,每經(jīng)過15個epoch學習率衰減1/10,輸入尺寸為640×640。如圖5(a)所示,在訓(xùn)練過程中Anchor使用聚類操作比直接使用RetinaNet原始的Anchor尺度以及比例值的網(wǎng)絡(luò)收斂速度相對較快。如圖5(b)所示,在驗證過程中不使用聚類操作的驗證精度F1值為0.991,低于聚類Anchor的0.998。由此可得對Anchor使用聚類操作之后使訓(xùn)練過程中的損失收斂速度和驗證F1值均得到了改善。
(a) 訓(xùn)練過程損失值圖
(b) 驗證過程F1值圖圖5 原始Anchor和聚類Anchor訓(xùn)練驗證比較
表1為2種方法驗證過程中的IoU和F1值對比結(jié)果。由表可得,使用聚類操作后的模型不僅F1值較高,而且檢測IoU值也相對較高,即檢測框和GT真實框重合度較高,模型更容易擬合目標的真實框。
表1 Anchor和聚類Anchor的性能對比
實驗1檢測結(jié)果如圖6所示,圖6(a)為原始Anchor實驗組得到的裝箱目標檢測結(jié)果,圖6(b)為Anchor經(jīng)過聚類操作之后的檢測結(jié)果。由左邊2圖對比可得雖然2種方法的計數(shù)檢測均很準確,均為40個,但是Anchor使用了聚類操作對于圖中裝箱四周瓶形狀差異較大的瓶子定位更加準確,能將塑瓶目標完整框出。由右邊2圖對比可得,使用原始Anchor訓(xùn)練得到的檢測模型對由于倒瓶、歪瓶異常情況導(dǎo)致的被遮擋瓶體會產(chǎn)生漏檢,而經(jīng)過聚類操作的訓(xùn)練模型魯棒性更強,得到正確的計數(shù)結(jié)果為36。比較檢測結(jié)果可以得到以下結(jié)論:1)使用了聚類操作Anchor相比于原始Anchor在正常情況下檢測的定位精度更高;2)改進算法的魯棒性更強,能在異常情況下自適應(yīng)從而實現(xiàn)精確計數(shù),減少漏檢。
(a) 原始Anchor檢測結(jié)果圖
(b) 聚類Anchor檢測結(jié)果圖
2.3.2 不同算法性能對比
為了驗證本文算法對裝箱塑瓶檢測的有效性,設(shè)計了實驗2。將本文提出的改進RetinaNet算法(Proposed)與機器學習算法Hough變換和深度學習目標檢測算法YOLOv3和原始RetinaNet算法在本文裝箱測試數(shù)據(jù)集上進行性能對比。不同檢測算法的漏檢率、誤檢率、準確率以及每一張裝箱圖像的檢測時間(FPS)的實驗結(jié)果如表2所示。由表可知,Hough變換在本文的裝箱數(shù)據(jù)集上漏檢率和誤檢率均相對較高,準確率84.27%為最低,且檢測時間最長為58 ms。而本文提出的算法準確率達到最優(yōu)99.98%,耗時33 ms。所以相比于機器學習算法,本文深度學習算法在精度和速度均取得較大優(yōu)勢。由于本文YOLOv3使用的是Tiny精簡網(wǎng)絡(luò)所以速度最快,在本文實驗環(huán)境下每張圖片的檢測時間為22 ms,但是漏檢率較高為3.10%,誤檢率為1.20%,檢測準確率為96.84%。本文改進RetinaNet算法相對于原始RetinaNet算法在準確率和速度上均有提升。綜合可得本文提出的改進RetinaNet在保證速度的同時漏檢率和誤檢率最低,達到了計數(shù)精度最優(yōu)。
表2 與其他目標檢測算法的性能對比
本文使用深度學習算法對箱內(nèi)的塑瓶進行目標檢測,完成精確計數(shù)。使用FPN融合深層特征信息到淺層特征層以提高淺層特征層的塑瓶高級語義信息,并對原始RetinaNet子網(wǎng)絡(luò)進行優(yōu)化。然后采用K-means聚類算法改進Anchor提高了算法的定位精度并有效地減少漏檢率,若應(yīng)用于數(shù)據(jù)集中長寬比差異較大的目標自適應(yīng)檢測效果更為明顯。實驗結(jié)果表明,相對于傳統(tǒng)算法,本文所提算法效率高、計數(shù)精度高、速度快、穩(wěn)定性高、適用性強,且滿足工業(yè)實時檢測要求,能夠很好地應(yīng)用到實際生產(chǎn)應(yīng)用中。同時此計數(shù)方法也可以用于其他產(chǎn)品裝箱計數(shù),如啤酒瓶、藥瓶等,具有廣闊的應(yīng)用前景。