吳 越, 楊延竹, 蘇雪龍, 韓阜益
(1.東華大學 a.機械工程學院; b.資產(chǎn)管理處, 上海 201620; 2.上海船舶研究設計院, 上海 201203)
鋼板表面在生產(chǎn)過程中會產(chǎn)生各種各樣的缺陷,如白鐵鱗、刮痕和結(jié)疤等,這些缺陷會影響鋼板的質(zhì)量以及進一步的加工,因此生產(chǎn)中需對鋼板缺陷進行檢測、分類和定位。隨著機器視覺的發(fā)展,國內(nèi)外很多學者對鋼板表面缺陷視覺檢測方法進行了研究。胡超[1]采用主成分分析法得到16維缺陷特征,采用二叉樹支持向量機(BT-SVM)對鋼板表面缺陷進行分類;Suvdaa等[2]提出一種基于尺度不變特征變換和支持向量機的算法,并將其用于鋼板表面缺陷檢測;為提高鋼板表面缺陷分類的精度,Gong等[3]提出一種對噪聲不敏感的支持向量超球面分類方法。這些方法需要設計特定的特征提取算法,并且能夠檢測的缺陷種類有限。鋼板表面色澤暗淡且不均勻,有些缺陷與鋼板顏色極為相近,故缺陷特征不明顯,并且不同類型缺陷存在較大的相似性,同種類型缺陷也不盡相同,這些都提高了傳統(tǒng)視覺檢測的難度。
深度學習的快速發(fā)展使得其具備通用性、自我學習能力,以及無需針對某一缺陷設定特定算法等特點,因而在缺陷視覺檢測中得到了廣泛的應用。Liu等[4]提出一種基于卷積神經(jīng)網(wǎng)絡和長短期記憶的缺陷檢測方法,這對于檢測輥印這種周期性鋼板缺陷具有較好的效果;Li等[5]針對冷軋帶鋼表面缺陷改進了YOLO算法,可實現(xiàn)端到端的自動化缺陷檢測;He等[6]提出一種基于YOLO算法的分類優(yōu)先網(wǎng)絡,并將其用于自動檢測鋼板表面缺陷?;谏疃葘W習的檢測方法,僅需將采集的缺陷圖像輸入到網(wǎng)絡模型中即可自動完成特征提取,從而實現(xiàn)多種類型缺陷的檢測,但目前研究涉及的缺陷種類還較少,且分類和定位的檢測準確率尚待進一步提高。
本文對鋼板表面的常見缺陷進行分析,根據(jù)鋼板表面缺陷特點,選用基于Faster R-CNN(region-based convolutional neural network)的網(wǎng)絡模型并對其進行改進,同時將在小缺陷細節(jié)特征中表現(xiàn)較好的RoI Align用于Faster R-CNN中RoI區(qū)域的特征池化,以提升算法的檢測精度[7]。
圖1為5種常見的鋼板表面缺陷,由于各缺陷原圖像尺寸大小不一,本文將其縮放為統(tǒng)一大小。
(a) 白鐵鱗
(b) 輥印
(c) 刮痕
(d) 結(jié)疤
(e) 銹皮
圖1所示5種缺陷的基本特征如下:
(1) 白鐵鱗。主要呈長短不一的條狀,顏色一般為白色,多為成片聚集分布,缺陷尺寸大小不一。
(2) 輥印。主要包括3類特征:缺陷為較淺的灰白色時分布為微弧形散狀,與背景的對比度較低;缺陷為暗灰色時呈弧形微折疊狀;少量缺陷為灰黑色時呈連續(xù)周期性直帶狀。
(3) 刮痕。主要呈寬度不一的連續(xù)周期性帶狀,一般為灰黑色。當背景顏色較暗時,缺陷與背景顏色相近,對比度較低。
(4) 結(jié)疤。主要呈大小不一的黑色點或面狀,通常成片聚集分布,部分分布較散。圖像背景明亮程度不一,隨著背景顏色越來越深,特征對比度逐漸下降。
(5) 銹皮。主要呈一定寬度的灰黑色短條狀,特征較為明顯,通常為單個分布,極少數(shù)呈聚集分布。
主要對以上5種缺陷進行研究。分析大量缺陷圖像可知,不同類型缺陷之間存在相似性(如銹皮的斷續(xù)部分與結(jié)疤,較淺、較小的結(jié)疤與白鐵鱗等),同種類型缺陷具有多種不同形態(tài)和尺寸(如輥印缺陷有3種不同形態(tài)和尺寸)。傳統(tǒng)的視覺檢測方法難以解決這些問題,而基于深度學習的智能視覺檢測算法則可有效檢測這些復雜形態(tài)的缺陷。
基于深度學習的表面缺陷檢測算法主要有Faster R-CNN、 YOLO系列網(wǎng)絡模型等。Faster R-CNN算法主要是通過區(qū)域生成網(wǎng)絡(region proposal network, RPN)生成候選區(qū)域并進行初步分類和定位,然后對獲取的候選區(qū)域進行池化,最后對池化后的缺陷特征再次進行分類及位置回歸,其主要特點是對缺陷進行了兩次分類和定位,可提高檢測精度,適合檢測小目標缺陷,而池化使其適用于各種尺寸缺陷的檢測,但該方法的檢測速度稍慢[8]。YOLO系列網(wǎng)絡模型通過卷積網(wǎng)絡對圖像直接進行處理,只實現(xiàn)一次缺陷目標定位與分類,其主要特點是檢測速度快,但對小目標缺陷檢測效果不好,定位誤差較大[9-10]。
分析上述缺陷檢測網(wǎng)絡模型特點并結(jié)合1.1節(jié)中鋼板表面缺陷的特點可知,在鋼板生產(chǎn)線上對鋼板檢測精度要求比速度要求更為重要的前提下,對檢測鋼板這種小目標、多尺度和多類別的缺陷而言,采用Faster R-CNN可獲得更好的檢測效果。
Faster R-CNN結(jié)構(gòu)圖如圖2所示,其可分為4個部分,即特征提取網(wǎng)絡、RPN模塊、RoI Pooling模塊和R-CNN模塊。
圖2 Faster R-CNN結(jié)構(gòu)圖Fig.2 The architecture of Faster R-CNN
特征提取網(wǎng)絡。由于鋼板表面缺陷圖像色澤暗淡,缺陷特征不明顯,為獲得較好的特征圖,采用VGG16的13層卷積網(wǎng)絡等提取縮放后圖像的缺陷特征。卷積層使用參數(shù)量較少的3×3小卷積核,而更多的激活層使其具有更好的非線性能力,可提高卷積網(wǎng)絡的學習能力[11]。此部分包括5個卷積模塊,每個模塊輸出特征圖的數(shù)量依次為64、 128、 256、 512和512。
RPN模塊。對特征圖進行Anchor生成,預測每一個Anchor的類別得分與位置偏移值,根據(jù)獲取的Proposal分別進行缺陷的二分類(即是否存在缺陷)以及缺陷初步定位。訓練時對預測Anchor生成的大量Proposal進行篩選得到RoI,測試時則直接將Proposal作為RoI。此模塊與R-CNN檢測網(wǎng)絡共享全圖的卷積特征,節(jié)省了時間,且為R-CNN檢測網(wǎng)絡提供高質(zhì)量的Proposal,可提高模型的檢測精度。3×3卷積部分輸出特征圖數(shù)量為512,后面分類和定位部分輸出特征圖數(shù)量分別為18和36。
RoI Pooling模塊。由于Faster R-CNN后面的R-CNN模塊使用了全連接層,因此在將缺陷特征子圖輸入至全連接層前要求其為統(tǒng)一的固定維度(本文的特征子圖大小為7×7)。由于鋼板缺陷圖像尺寸不一,其RoI對應的特征圖尺寸也不相同,故利用RoI Pooling進行特征尺度變換,以使其可將任意大小的缺陷圖像作為輸入,最后輸出固定的特征圖尺寸,適合用于檢測本文中的5種不同尺度的缺陷,可使訓練過程更為靈活和準確。此部分特征圖數(shù)量保持不變。
R-CNN模塊。將RoI Pooling得到的RoI特征子圖映射至整張?zhí)卣鲌D上,輸出到R-CNN模塊的全連接網(wǎng)絡中,分別再次進行缺陷類別預測與位置回歸并計算損失值,可提高檢測精度。此部分全連接層輸出特征圖數(shù)量為4 096,分類和定位部分輸出特征圖數(shù)量為6和24。
Faster R-CNN會分別在RPN和R-CNN模塊中計算損失值,其中RPN 可為R-CNN提供較好的RoI,如式(1)所示。該多任務損失函數(shù)將分類損失和邊框定位回歸損失結(jié)合在一起進行統(tǒng)一訓練,最終輸出對應的分類和邊框位置,可提高檢測精度,并適合檢測小目標缺陷。
(1)
RoI Pooling部分承上啟下,連接VGG16中提取的特征圖和RPN的RoI特征子圖,實現(xiàn)端到端的形式缺陷檢測,可加快訓練和測試速度,是檢測過程中尤為重要的部分,其核心思想是利用最近鄰差值算法實現(xiàn)特征的池化過程。具體原理如圖3所示。
以鋼板結(jié)疤缺陷圖為例,假設圖中結(jié)疤缺陷的RoI大小為332×332。由于下采樣率為16(圖像縮小為原圖的1/16),則缺陷RoI特征池化后對應大小為332/16=20.75。此時RoI Pooling進行第1次量化,將該缺陷RoI的特征圖大小取整為20×20,如圖3中第3步所示。然后將該20×20區(qū)域固定成7×7大小的特征子圖,由于20/7≈2.857不是整數(shù),故采用RoI Pooling進行第2次量化,將2.857取整為2,從左上角開始以2為步長,取2×2區(qū)域中的最大值作為輸出,獲得7×7的特征圖。由圖3中第4、5步可知,原圖像中完整的缺陷特征在進行兩次RoI Pooling量化取整后,最后輸入到R-CNN模塊的全連接層中檢測到的缺陷特征的實際大小為224×224(7×2×16=224)。然而原圖像中缺陷特征的大小為332×332,由此可見RoI量化取整操作帶來的偏差影響較大。
圖3 RoI Pooling實現(xiàn)過程Fig.3 The implementation process of RoI Pooling
由2.1節(jié)分析可知, RoI Pooling量化取整帶來的計算偏差導致RoI區(qū)域內(nèi)的像素偏差及空間對應位置的偏差。因此從實質(zhì)上來說,F(xiàn)aster R-CNN并未實現(xiàn)完全的平移不變性,即在實現(xiàn)從RPN的卷積映射到實際圖像的像素映射時,兩者的結(jié)構(gòu)是不同的。Faster R-CNN的輸入與輸出之間并不是像素到像素的對齊,尤其對于鋼板這種小尺寸缺陷而言,微小的偏差也會對其檢測精度產(chǎn)生較大的影響,包括缺陷分類準確率和缺陷位置回歸精確度。
為降低RoI Pooling量化取整造成偏差的影響,需對Faster R-CNN的池化方法進行改進。RoI Align中并未進行量化取整操作,故保留了所有的浮點,采樣點的特征值通過周圍相鄰的整型特征點雙線性插值獲得,不會造成量化偏差,更適合用于鋼板缺陷特征的池化。
RoI Align的具體實現(xiàn)原理如圖4所示。同樣是將結(jié)疤缺陷的RoI映射對應到原圖像的特征圖對應位置,下采樣后的缺陷大小為20.75×20.75,坐標與大小都保留浮點數(shù),不做量化取整。然后將特征圖上的20.75×20.75區(qū)域劃分為7×7的49個同等大小的小區(qū)域,中間的點仍然保留浮點數(shù)。RoI Align雙線性插值與池化過程如圖5所示,假設一個小區(qū)域內(nèi)取2×2大小的方格,在每個方格內(nèi)選取4個采樣點進行特征采樣,并取其最大值作為此方格的最終特征輸出。
圖4 RoI Align實現(xiàn)過程Fig.4 The implementation process of RoI Align
圖5 RoI Align雙線性插值與池化Fig.5 The bilinear interpolation and pooling of RoI Align
每格里面4個采樣點的位置確定,即將單個小方格均分為4份,然后取每份中各自的中心點作為采樣點的位置。RoI Align使用雙線性插值計算得到4個中心點的值,即此4個中心點中每個中心點的周圍會有特征圖上的4個特征點,利用這4個特征點雙線性插值出該中心點的值作為此方格的采樣點的值。由于使用了采樣點與保留浮點的操作,RoI Align可獲得更好的檢測性能,尤其是對于受RoI Pooling影響較大的情形,如鋼板缺陷這種本身特征區(qū)域較小的目標,其改善效果更為明顯。
在湘潭鋼鐵廠搭建試驗臺,利用線掃相機對鋼板進行在線圖像采集,篩選后得到缺陷樣本共5 000張,每種缺陷樣本各1 000張,其中,4 000張作為訓練樣本,1 000張作為測試樣本。在本文的數(shù)據(jù)集中,每張缺陷圖像中至少含有一個缺陷,部分圖像中含有多個不同尺度的缺陷,以確保訓練后的檢測模型能適應不同尺度的多類型缺陷檢測。
本文中缺陷樣本采用Labelimg標注軟件以矩形框?qū)θ毕葸M行標注,其中標簽名為各缺陷中文拼音的首字母大寫,如白鐵鱗為TL、輥印為GY、刮痕為GH、結(jié)疤為JB、銹皮為XP。
在Ubuntu 18.04系統(tǒng)下完成試驗,計算機CPU為Intel?Xeon(R) W-2135,運行內(nèi)存為32 G;GPU型號為GeForce RTX 2080Ti,顯存為8 G;Python版本為3.6.9;利用Cuda 10.0和Cudnn 7.4.1進行加速運算;采用的深度學習框架為PyTorch 1.2.0。
為進一步證明本文使用的Faster R-CNN方法的有效性,共訓練了3種模型,即YOLOv3、Faster R-CNN及改進Faster R-CNN,并在預訓練后在本文數(shù)據(jù)集上訓練了100個epoches(輪次),訓練時間及權(quán)重文件大小如表1所示。訓練方法如下:模型的初始學習率設置為0.000 1;采用adam優(yōu)化器;每5個epoches進行一次學習率衰減,其衰減率為0.1; batch_sizes設置為8(batch sizes為一次訓練所選取的樣本量,其大小受設備的GPU限制,根據(jù)模型最佳優(yōu)化和速度選擇);采用Tensorboard進行訓練過程中的可視化,以便實時監(jiān)督損失值變化。
表1 模型訓練時間與權(quán)重文件大小
改進后的Faster R-CNN網(wǎng)絡模型在進行預訓練后,再在本文數(shù)據(jù)集上訓練了100個epoches的損失值圖如圖6所示,其中,縱坐標為損失值(loss),橫坐標為訓練次數(shù)。訓練過程中的損失值收斂較快,最終收斂于0.18左右。
圖6 改進Faster R-CNN的損失圖Fig.6 The loss of the improved Faster R-CNN
本文采用平均精度和幀率作為缺陷檢測的實際度量標準,取最終保存的最優(yōu)網(wǎng)絡模型進行測試。5種缺陷在測試集上的平均檢測精度如表2所示。
表2 缺陷的平均檢測精度
由表2可知,YOLOv3、Faster R-CNN、改進Faster R-CNN網(wǎng)絡模型的平均檢測精度依次為82.33%、85.07%與87.14%。每種模型每張圖像的平均檢測速度如表3所示。
表3 缺陷的平均檢測速度
由表2和3可知:采用Faster R-CNN可在測試集上獲得比YOLOv3更好的檢測精度;改進Faster R-CNN的缺陷檢測精度有所提高,其中銹皮缺陷的平均檢測精度提高至97.67%,相比Faster R-CNN提升7.5%。相比Faster R-CNN及YOLOv3模型,改進Faster R-CNN模型消耗的檢測時間有所增加,但影響不大,可滿足實際要求。
圖7為采用改進Faster R-CNN模型檢測后縮放至統(tǒng)一尺寸的效果圖。
圖7 改進Faster R-CNN檢測效果Fig.7 The detection results of the improved Faster R-CNN
利用訓練好的模型對測試集進行測試,發(fā)現(xiàn)存在缺陷誤檢、漏檢等問題。白鐵鱗:小面積的單個缺陷在多次卷積后易丟失缺陷特征,易造成漏檢。輥?。寒旑伾^淺、偏亮且為白色時,易被誤檢為白鐵鱗;當與背景顏色極為相近時,特征不明顯,容易漏檢。此類缺陷類間缺陷特征差異大,與其他幾類缺陷具有一定的相似性,檢測準確率較低。刮痕:當缺陷為聚集型的灰白色條狀時,易被誤檢為白鐵鱗。結(jié)疤:靠近圖像邊緣的小結(jié)疤易漏檢,當結(jié)疤分散為斷續(xù)的橫狀短條時與銹皮特征相似,易造成誤檢。銹皮:當缺陷顏色較深且缺陷為斷續(xù)狀態(tài)時,易被誤檢為結(jié)疤。
對比3種檢測方法的平均檢測精度,以及不同類缺陷的平均檢測精度和速度可知,當需要檢測圖像中較多小目標缺陷時,如銹皮缺陷,推薦采用改進Faster R-CNN模型,其平均檢測精度得到顯著提高。
本文分析5種常見鋼板缺陷特征及Faster R-CNN網(wǎng)絡的特點,采用基于Faster R-CNN網(wǎng)絡模型對鋼板缺陷進行檢測。為提高缺陷檢測的精度,用RoI Align池化方法代替原有的RoI Pooling算法,可減少池化過程中的量化誤差。通過搭建深度學習環(huán)境進行試驗可知,改進的Faster R-CNN網(wǎng)絡可提高缺陷,尤其是小目標缺陷的平均檢測精度。