黃漢成,趙衛(wèi)東,夏 冰
(1.安徽工業(yè)大學電氣與信息工程學院,安徽馬鞍山243032;2.馬鞍山鋼鐵股份有限公司設備管理部,安徽馬鞍山243000)
在汽車儀表盤指針的實際生產過程中,由于生產線上機器作業(yè)及空氣中偶有污染物等,指針上難免會產生各種類型的缺陷,如沾上黑點狀、毛發(fā)狀異物等,及時發(fā)現(xiàn)指針表面的缺陷已成為指針產品質量控制過程中的重要環(huán)節(jié)。傳統(tǒng)的目標檢測方法分為三個步驟:區(qū)域選擇,特征提取,分類器。其中,區(qū)域選擇常用的方法為滑窗,滑窗的選擇往往沒有針對性、復雜度較高;特征提取的方法有尺度不變特征變換(SIFT)[1]、方向梯度直方圖(HOG)[2]等,但是這些方法的特征魯棒性較差;分類器則以支持向量機(SVM)[3]、AdaBoost等為主流方案,但是采用這些方案易出現(xiàn)欠擬合的情況,且分類精度低。近年來,Yann等[4]提出的卷積神經網(wǎng)絡(CNN)在計算機視覺領域取得了不錯的效果,為了提升分類的準確度,模型的復雜度逐漸提高,深度也越來越深[5-6],常見的網(wǎng)絡如深度殘差網(wǎng)絡(ResNet)的層數(shù)已達152層?,F(xiàn)實中,深度學習更多地將應用在移動端和嵌入式端,其龐大的模型若被直接應用會面臨內存不足、響應速度慢等問題。為了解決這一問題,Howard等[7]提出MobileNet,MobileNet的設計思想,直接設計一個小模型進行訓練,不僅可保持模型的性能,還可提升模型的速度。由于指針表面缺陷極其細微,考慮到檢測精度,用分辨率為5 472×3 648的Balser相機采集圖片,若不對圖片進行任何處理直接輸入RFCN 進行檢測,則計算量非常大,檢測精度也不高。為此,提出一種融合MobileNet 與ResNet 的網(wǎng)絡及SSD(single shot-multibox detector)與RFCN(region-based fully convelutional networks)模型的指針缺陷檢測算法,采用SSD算法分辨出燙印和未燙印的指針,將燙印的指針輸入RFCN模型再次進行微小缺陷的檢測。
MobileNet v2采用深度可分離卷積[8](depthwise separable convolution)作為基本單元,針對每個輸入通道采用不同的卷積核,相比標準卷積,其計算量和參數(shù)量大大減少;同時引入shortcut結構,通過1×1的卷積操作來增加feature map(特征圖)的通道數(shù),在逐點卷積結束之后改用linear激活函數(shù)。
SSD算法可以直接回歸出物體的類別和位置,且使用了許多候選區(qū)域作為RoI(region of interest)。此外,SSD采用多尺度特征圖,用不同的特征圖對不同尺寸的候選框進行回歸,其基本架構如圖1。
圖1 SSD基本架構Fig.1 Basic architecture of SSD
對于每個預測框,首先根據(jù)類別置信度的排序來確定每個預測框所屬類別;然后過濾掉置信度較低的預測框,對留下的預測框降序排列,使用非極大值抑制(NMS)[9]算法確定最后的檢測結果。置信度誤差采用softmax損失函數(shù),定義如下式
為了預測目標的邊界框位置,采用回歸的方法預測邊界框的位置信息,位置誤差采用smooth L1 損失函數(shù),定義如下式:
迭代損失函數(shù)定義如下式
該損失函數(shù)定義為置信度誤差(confidence loss)與位置誤差(locatization loss)的加權和。其中:N 是先驗框的正樣本數(shù)量;c 為類別置信度預測值;α 為加權參數(shù),取值范圍(0,1]。
夏季,天氣炎熱。中午,她從吳玉梅家里回到自己家后,生了滿肚子的氣,飯也不做,一頭倒在床上,只顧想她的心事。
一味增加神經網(wǎng)絡的深度,可能會出現(xiàn)訓練集準確率下降的問題,即“退化問題”[10],對此,He等[11]提出了一種全新的網(wǎng)絡,即深度殘差網(wǎng)絡(ResNet),允許加深網(wǎng)絡。其核心思想分為identity mapping(恒等映射),residual mapping(殘差映射)兩部分。若輸出y=F(x)+α,那么第一部分即為x,第二部分即為y-x,所以稱F(x)為殘差。只要y=0,就構成了一個恒等映射F(x)=x,這樣擬合殘差會更容易,即使網(wǎng)絡深度增加,性能也不會降低,整個網(wǎng)絡會處于最優(yōu)狀態(tài)。
SPP[12],F(xiàn)aster R-CNN 等方法在RoI 池化之后,后面的網(wǎng)絡結構就失去了平移不變性。RFCN 提出了position sensitive score map(位置敏感得分圖),把目標的位置信息融入RoI pooling(RoI池化層)[13-14],從而可對目標的平移準確響應。RFCN 的基礎網(wǎng)絡去掉了ResNet-101 的average pooling layer(平均池化層)和fully connection layer(全連接層),在網(wǎng)絡的最后接上一個1×1×1 024的全卷積層[15]。其網(wǎng)絡結構如圖2。
圖2 RFCN網(wǎng)絡結構Fig.2 Network architecture of RFCN
RFCN通過規(guī)則網(wǎng)格將每個RoI矩形劃分為k×k個區(qū)間。RFCN的最后一個卷積層為每個類別生成k2通道的得分圖。在第(i,j)個區(qū)間(0≤i,j≤k-1)定義一個位置敏感的RoI池化響應操作:
為得到預測目標的所屬類別,分類損失使用交叉熵損失,定義如下式:
其中:sc(θ)是一個函數(shù),定義為(11)式;θ 為函數(shù)的參數(shù);rc(θ)為對每一類所有相對空間位置的分數(shù)的平均池化;c 為分類的個數(shù)。
為了得到預測目標的邊界框的位置,回歸損失使用smooth L1損失,定義為下式:
其中:t 為預測邊框的參數(shù)化坐標;t*為坐標向量;x 為函數(shù)的參數(shù)。
其中:tx,y,w,h為預測邊框的參數(shù)化坐標;t*為坐標向量,若c*=0,說明RoI的真實標簽為背景;λ 為加權參數(shù),取值范圍(0,1];Lcls(sc*)為分類損失函數(shù);Lreg(t,t*)為邊界框回歸損失函數(shù)。
實驗平臺:CPU 為Intel Core i7-6800K@3.400 GHz,GPU 為NVIDIA GTX1080Ti,內存為16 GB,操作系統(tǒng)為Ubuntu16.04、深度學習框架為Tensorflow-gpu,CUDA9.0。圖片采集用Basler ace Gige acA5472-5gm面陣工業(yè)相機,分辨率為5 472×3 648,幀率為5 f/s。
使用LabelImg對現(xiàn)場采集的指針圖片進行標注,標注類別為燙印指針(normal)和未燙印指針(abnormal),現(xiàn)場采集584張照片,其中燙印的指針有558張,未燙印的指針有26張。訓練集中屬于(燙印)normal類別的有500張,屬于(未燙印)abnormal類別的有20張;測試集中屬于normal類別的有58張,屬于abnormal類別的有6張。未燙印指針和燙印指針的標注如圖3。
圖3 未燙印指針和燙印指針的標注Fig.3 Marking of no stamping pointer and stamping pointer
相機拍攝的分辨率為5 472×3 648,SSD的輸入尺寸不宜過大,否則會造成內存溢出而訓練終止。為保證訓練過程的穩(wěn)定性,訓練之前先將采集照片的尺寸重新設定,寬度為450、高度為300,然后輸入神經網(wǎng)絡進行訓練。訓練完成后隨機選取部分圖片作為測試,測試圖片中的指針均以不同的角度擺放,選取的燙印與未燙印指針的檢測結果分別如圖4,5。由圖4,5 可以看出,對于擺放不同位置的燙印和未燙印指針,采用SSD-MobileNet算法均可被檢測出,且置信度為99%,說明以MobileNet作為SSD算法的特征提取網(wǎng)絡具有較高的準確性。
圖4 燙印指針的檢測結果Fig.4 Detection results of stamping pointer
圖5 未燙印指針的檢測結果Fig.5 Detection results of no stamping pointer
測試完成后,記錄檢測燙印和未燙印指針的平均邊框精度、置信度、準確率、召回率、漏檢率等評價指標,如表1。
由表1可知,無論是燙印還是未燙印的指針都沒有被漏檢,召回率均為100%。類別為燙印的邊框精度為97%,類別為未燙印的邊框精度為90%,由此說明SSD-MobileNet 算法具有較高的檢測精度,對SSD-MobileNet算法檢測的邊框進行裁剪,將其作為RFCN的輸入,進行指針表面微小缺陷的檢測。
表1 SSD-MobileNet算法的實驗數(shù)據(jù)Tab.1 Experimental data of SSD-MobileNet algorithm
將SSD算法輸出類別為燙印(normal)的圖片進行裁剪,對這558張裁剪后的圖片進行二次標注,標注的缺陷類別如圖6。由圖6可看出:第一類缺陷為邊緣不平整或有缺口,記為gap;第二類缺陷為毛發(fā)狀異物,記為hair;第三類缺陷為黑點狀異物,記為stain;第四類缺陷為白光區(qū)域,記為light。
圖6 4種缺陷的標注Fig.6 Marking of four kinds of defects
采取隨機縮放、翻轉、裁剪的方法增強數(shù)據(jù),從中隨機選取4種缺陷的檢測結果,如圖7。由圖7可看出:gap類型缺陷置信度較低,為92%;而hair,stain,light等類型缺陷置信度較高,均為99%,說明以ResNet作為RFCN的特征提取網(wǎng)絡具有較高的準確性。隨機選取指針表面缺陷的檢測結果,如圖8。其中:圖8(a)為指針表面無缺陷,圖8(b)為指針表面一種類型缺陷;圖8(c),(d)為指針表面多種類型缺陷。由圖8 可看出,采用RFCN-ResNet算法可檢測出指針表面多種類型的缺陷。
圖7 4種缺陷檢測結果Fig.7 Detection results of four kinds of defects
圖8 指針表面缺陷的檢測結果Fig.8 Detection results of pointer surface defect
檢測完成后,記錄指針表面缺陷的檢測平均邊框精度、置信度、準確率、召回率、漏檢率等評價指標,如表2。
由表2可知:邊緣缺口(gap)類型缺陷檢出的準確率偏低,為91%,因人為標注時,部分gap 類型缺陷可能被誤判為stain 類型缺陷,導致部分gap 類型缺陷被檢測為stain類型缺陷;stain類型缺陷漏檢率偏高,為4%,因標注時不同標注者對黑點大小的判斷不一致,部分微小的黑點未被標出,導致部分黑點未被檢出。由此說明采用RFCN-ResNet算法可將指針表面微小缺陷準確檢測,且可準確定位。
表2 RFCN-ResNet算法的實驗數(shù)據(jù)Tab.2 Experimental data of RFCN-ResNet algorithm
綜上分析表明:采用RFCN-ResNet算法可檢測指針表面stain,hair,gap,light等四類缺陷,準確率分別為94%,95%,91%,93%,因RFCN-ResNet算法中采用敏感位置得分圖可提高檢測準確率;采用RFCN-ResNet算法僅極少數(shù)微小缺陷未被檢出,因為置信度低而被過濾掉。現(xiàn)場要求指針表面缺陷檢測的準確率在80%以上,故RFCN-ResNet算法的檢測準確率可滿足現(xiàn)場生產要求。
設計一種融合SSD和RFCN的指針缺陷檢測算法。SSD-MobileNet算法采用多尺度特征圖和深度可分離卷積,可直接回歸出物體的類別和位置,進而檢測出指針是否燙印。將燙印的指針檢出后進行裁剪送入RFCN-ResNet 算法進行二次檢測,RFCN-ResNet 算法采用敏感位置得分圖可將指針表面細小的缺陷檢測出。實驗結果表明,采用SSD-MobileNet和RFCN-ResNet融合的指針缺陷檢測算法可精準識別指針表面微小缺陷,具有較高的精度、置信度、準確率及召回率。