林 峰,張師嘉,傅 莉
(沈陽航空航天大學 a.電子信息工程學院;b.自動化學院,沈陽 110136)
玻璃瓶在日常生活中的廣泛應用推動了玻璃瓶生產需求,同時玻璃瓶質量的檢測給生產廠家帶來的困擾也隨之而來,裂紋,氣泡等缺陷容易導致玻璃瓶包裝產品爆瓶,給玻璃瓶消費者帶來的安全隱患也隨之而來。最初,在玻璃瓶的質量檢測上使用較多的是人工檢測,大批量檢測工作強度、疲勞作業、操作不當等因素導致肉眼檢測準確性不穩定,并且在不同的光線背景下黑點、氣泡等這類小目標缺陷,通過肉眼很難辨識出來,導致檢測結果不可靠,直接影響了生產質量。相比之下,實現玻璃瓶的自動化檢測具有更多優勢,而基于機器視覺的檢測技術已廣泛應用于交通[1]、醫療[2]、農業[3]、通信[4]、工業生產[5]等行業其在玻璃瓶質量檢測中的應用日漸普及。
傳統的玻璃瓶缺陷檢測算法主要有3個步驟構成[6]:(1)選出候選檢測區域;(2)提取待測目標特征;(3)設計分類器分類。傳統的缺陷檢測方法[7]需要基于人類的先驗知識實現提取缺陷特征,然后再進行分類,可以達到一定程度的檢測效果。但是面對缺陷的多樣性,數據量劇增等情況仍有滑窗效率低下、特征不夠魯棒等不足之處存在,阻礙了在工業生產中的大規模應用[8]。
近幾年,深度學習在目標檢測領域的優勢逐漸顯現出來,然而深度學習并不是近幾年才誕生的全新技術,早在2006年,Hinton[9]等人提出了深度學習這一概念,運用卷積神經網絡從數據中學習特征。隨著GPU(Graphics Processing Unit)在矩陣計算領域的能力不斷提升,2012年,深度卷積神經網絡 AlexNet[10]的首次提出使人們把目光再一次聚集在了深度學習上。從R-CNN[11](Region-based Convolutional Neural Networks)到Fast R-CNN[12]再到Faster R-CNN[13],被稱為R-CNN系列,他們都是先提取候選框,再進行分類與回歸的原理,被稱為two-stage方法。
本文針對玻璃瓶缺陷目標的檢測問題,將FasterR-CNN引入到玻璃瓶缺陷檢測的瓶身檢測任務中,根據玻璃瓶的缺陷特征以及實驗環境對Kaming He等人在文獻[12]中提出的FasterR-CNN進行了改進,選擇適用的特征提取網格并調整錨框的尺度和數量,最終對于小目標的玻璃瓶缺陷也具有較好的檢測效果。
本文使用改進的FasterR-CNN進行目標檢測,首先將玻璃瓶缺陷數據集的圖片輸入Resnet101的特征提取網絡,然后將提取的特征圖分成兩部分,一部分直接輸入RoI pooling層,另一部分先輸入RPN區域生成網絡之后再輸入RoI pooling層進行池化。經過若干層的卷積和池化操作后,將得到的特征圖依次按行展開,連接成向量,輸入全連接層,最后進入到分類回歸網絡中實現目標分類和目標框的輸出,完成玻璃瓶缺陷檢測。圖1為基于Faster R-CNN的玻璃瓶缺陷檢測網絡結構。

圖1 基于Faster R-CNN的玻璃瓶缺陷檢測網絡結構
FasterR-CNN檢測目標時的特征提取網絡(backbone)使用VGGNet[14]時,目標檢測的準確率受特征提取網絡的影響頗深,因此綜合玻璃瓶的缺陷微小、顏色單一、尺寸比例不一的特點以及訓練的環境要求,本文選用Resnet101作為玻璃瓶缺陷檢測模型的特征提取網絡,雖然網絡深度增加但是復雜度卻更低,同時準確率得到明顯提升。
ResNet[15]是由微軟研究院Kaming He等人提出的一種網絡結構,ResNet又名殘差神經網絡,受VGGNet的啟發在傳統卷積神經網絡中加入殘差學習的思想,圖2為殘差網絡的基本單元結構。

圖2 殘差網絡的基本單元結構
在殘差基礎單元中,如果把輸入的一部分按照原本的神經網絡進行輸出,另一部分直接連接到輸出,兩部分相加之后作為輸出結果,那么訓練目標就成為殘差。假定殘差表示為F(x),如式(1)所示。
F(x)=H(x)-x
(1)
式中,x表示為某個堆疊層的第一層輸入,H(x)為要擬合的基礎映射,即期望輸出。ResNet解決了深層網絡中梯度彌散和精度下降的問題,使網絡能夠越來越深,既保證了精度,又控制了速度。
為了解決R-CNN在輸入不同大小候選區域時,將所有的區域縮放到同一尺寸而導致的目標變形、信息丟失的問題,Fast R-CNN中設計了RoI Pooling層,其中anchor的本質是借鑒SPP池化層[16]思想的逆向,SPP的本質是將不同尺寸的輸入重新裁剪成為相同尺寸的輸出,所以SPP的逆向就是倒推相同尺寸的輸出以得到不同尺寸的輸入。RoI Pooling層實現將原始圖像中任意大小的RoI通過RoI Pooling層之后固定為特定的維度輸出,去掉了直接對原始圖像裁剪、縮放等操作的約束。
然而Fast R-CNN并沒有解決R-CNN在selective search[17]方法上的過大計算量、過多冗余操作的問題。
在Faster R-CNN中RPN網絡代替了selective search方法,RPN與主網絡共享部分特征提取網絡,減少了過多冗余操作并保證了檢測精度。RPN網絡主要進行了3個工作:預測anchor的類別及其位置;生成訓練RPN網絡的標簽信息;生成訓練分類和回歸網絡的proposal layer以及對應的標簽信息。
錨框3個參數為base_size,ratios和scales,錨框的基本尺度等于base_size和scales的乘積,Faster R-CNN初始設置base_size=16,scales={8,16,32},那么3個基本尺度分別是128,256和512。Faster R-CNN初始設置的3個基本尺度上有3個ratio,即長寬比為{0.5,1,2},那么最終生成9個錨框。Faster R-CNN中的初始設置最小尺寸的錨框為128,不能較好完成玻璃缺陷中存在著許多尺寸較小的“黑點”類缺陷的檢測任務,為了提高針對小目標的玻璃缺陷的檢測能力,本文選擇將scales的數量改為4種,其中增加一組scales為64的anchor,長寬比不變,即RPN的anchor生成參數設置為base_size=16,scales={4,8,16,32},ratio={0.5,1,2},RPN的錨框最終改變為12種。
FasterR-CNN的損失主要分為RPN的損失和Fast R-CNN的損失,并且兩部分損失都包括分類損失和回歸損失,整體損失函數定義為

(2)


(3)
在目標檢測模型中,RPN的分類損失是二分類的交叉熵損失,而Fast R-CNN的分類損失是多分類的交叉熵損失。

(4)
式中,當進行RPN訓練時,R為smooth L1函數取σ=3時的值;當進行Fast R-CNN訓練時,R為smooth L1函數取σ=1時的值,smooth L1函數定義為

(5)

為了建立玻璃瓶缺陷數據集,本文的圖像采集系統主要由LED照明光源、工業相機鏡頭、圖像采集卡以及其他機械硬件設備等合理結合,對帶有瑕疵的玻璃瓶進行拍攝以采集圖像。由于玻璃瓶是近似透明的物體,為了更加明顯地拍攝出玻璃瓶上的瑕疵部分,將平板LED光源作為玻璃瓶的拍攝背景,目的是讓瓶體更加通透,瑕疵的細節更加明顯,使得LED平板光源、玻璃瓶、工業相機鏡頭3者中心位于一條直線上。采集到的100余張圖片中黑點17張,氣泡18張,冷斑34張,裂紋19張,模縫13張。將圖片通過LabelImg進行人工缺陷標注轉換并保存為xml格式文件。
首先,由于玻璃瓶的數量有限,本文通過編寫Python程序對原始圖片進行預處理,通過旋轉操作對采集的原圖進行處理數據增強,降低模型對目標位置的敏感性;通過使用圖像的對數灰度變換操作對采集的原圖進行數據增強,降低模型對色彩的敏感性。

圖3 數據集預處理前后對比
對圖片進行預處理的同時修改相應的xml格式文件中的標記坐標,使數據集內包含了1010張帶有標注信息的圖片,大大減少了煩冗的人工操作。在經過離線數據增強所得到的數據集中,含有黑點170張,氣泡180張,冷斑340張,裂紋190張,模縫130張。然后,將數據集處理成PASCAL VOC2007數據集格式,并且,通過Python中的random.sample()方法將數據集按照8∶1∶1的比例隨機劃分為訓練集、驗證集和測試集。彼此相互獨立不重合,令實驗結果更具有獨立性和信服力。
網絡訓練平臺使用Tensorflow深度學習框架,在Python語言環境下,采用NVIDIA GTX1060Ti GPU進行加速計算。本玻璃瓶缺陷檢測實驗采用目標檢測常用評價指標mAP,表示所有類別目標的檢測準確率平均值,算法檢測精度越高,mAP數值就越高。
本文選用VGG16、Resnet50和Resnet1013種網絡分別作為特征提取網絡并對三者的計算結果進行對比,選擇準確率高的作為玻璃瓶缺陷檢測網絡訓練的特征提取網絡模型。由表1可以看出,在相同的條件下,Resnet101的mAP更高,該網絡對于玻璃瓶缺陷檢測的準確度更高。因此本文提出改進 Faster R-CNN 玻璃瓶缺陷檢測網絡結構模型,以Resnet101卷積神經網絡為特征提取網絡,其中 RPN 網絡與Resnet共享卷積層,下一步根據本文所要檢測的目標修改anchor參數。

表1 相同基本尺度下VGG16、Resnet50和Resnet101進行缺陷檢測
將3組不同尺寸的anchor全都使用Resnet101對本文建立的數據集進行訓練,由表2可以看出,當scale設置為642,1282,2562,5122時,mAP值最高,達到了0.837,相比 Faster R-CNN與VGG16的結合方式提升了5.2%。因此,玻璃瓶缺陷目標在642,1282,2562,5122的基本尺度下的錨框覆蓋率最佳,保證大目標缺陷檢測精度的同時也加強了小目標缺陷的檢測精度。

表2 不同基本尺度下Resnet101進行缺陷檢測
基于改進后Faster R-CNN模型部分檢測效果圖如圖4所示。在圖中,方框標定了模型所檢測出來的缺陷位置;方框上方左側英文代表模型對于缺陷定位得到的目標的分類名稱,右側數字代表了模型計算出的屬于此玻璃瓶缺陷類別的概率值,其中圖4b下方的冷斑缺陷識別概率值達到最高精度值0.999。

圖4 基于改進后的Faster R-CNN模型的部分檢測結果圖
實現玻璃瓶缺陷檢測技術與深度學習相結合能夠減少檢測環節中的人力物力消耗,并且能夠提高生產效率。本文實現了一種基于改進的Faster R-CNN的玻璃瓶缺陷檢測方法,把深度學習應用到玻璃瓶缺陷檢測技術的研究中,根據檢測目標的特點進行改進,能夠有效地檢測出形態各異的缺陷并識別出缺陷類型,本文所做主要貢獻如下:
(1)針對目標檢測數據不足的問題,在數據集的預處理階段引入了多種離線數據增強的方法;
(2)為解決Faster R-CNN檢測小目標的缺陷精確度不高的問題,使用Resnet101作為特征提取網絡并且調整anchor的尺度達到缺陷檢測的mAP值為83.73%,相比改進前方法提高了5.19%。
本文的研究為玻璃瓶缺陷識別技術的研究提供了思路和方法,同時為其他領域的圖像處理與識別技術提供了較好的借鑒。