孔思曼 周晨陽 王家華 李 林 孫踐知
(北京工商大學計算機學院,北京 100048)
金屬板材在工業生產和日常生活中用途廣泛,涉及的應用領域較多,包括但不限于建筑、航空航天、機械、汽車和船舶等領域,是很多產品的基礎材料。但在實際生產過程中,生產設備的不同、生產環境的變化以及其他因素的影響會導致出現各種各樣的表面缺陷,如凹陷、裂紋、氣泡和劃痕等。這些缺陷會降低金屬板材的質量和可靠性,甚至對金屬板材的使用造成安全隱患。因此,及時準確地檢測和識別金屬板材表面缺陷是非常重要的。
傳統的金屬板材表面缺陷檢測方法主要依靠人工檢測[1]或基于一些簡單的圖像處理算法,這些方法存在人工誤差、適用范圍有限、檢測速度和精度低等缺陷。近年來,計算機技術的快速進步極大地推動了基于卷積神經網絡(convolutional neural network,CNN)的目標檢測算法的發展,并帶來了該領域的發展熱潮。目前出現的目標檢測算法主要劃分為兩大類,一類是以SSD[2]、YOLO[3]、Retinanet[4]、CornerNet[5]、CenterNet[6]為代表的單階段算法,另一類是以R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]、Mask R-CNN[10],Cascade R-CNN[11]為代表的兩階段算法。其中,單階段算法中的YOLO 是一種端到端檢測算法,它將候選區和目標分類合二為一,采用一個單獨的CNN 模型進行目標檢測,雖然提升了檢測速度,但是檢測的準確性不是很高;而兩階段算法中的Faster R-CNN 在準確性方面表現良好,目前已在多個領域廣泛應用。祝文韜等[12]對Faster RCNN 算法中的RoI Pooling 方法進行了改進和優化,采用雙線性插值法來解決原先存在的位置失配問題,并在飛機目標檢測場景上取得了顯著成效。杜蕓彥等[13]針對大規模數據獲取難、標注難等問題,提出了一種基于Faster R-CNN 的少樣本目標檢測算法(CA-FSOD),在目標類別僅有少量標注樣本的情況下,對目標樣本進行檢測。Cai J 等[14]開發了一種基于Faster R-CNN 的創新方法,專門用于在水面環境中檢測無人船障礙物。此方法在Faster R-CNN中添加了膨脹卷積和群卷積的多尺度特征提取層,并改變了分類算法,提高了模型的魯棒性和準確性。
考慮到金屬板材應用的廣泛性,對精度的要求高,本文提出一種基于優化Faster R-CNN 算法的金屬板材表面缺陷檢測方法。從特征提取網絡和候選框定位兩個方面對模型進行優化,通過提升模型特征提取能力以及候選框的定位準確性,實現金屬板材表面缺陷的高質量檢測。
2016 年,Ren S 等[9]提出了Faster R-CNN 算法,屬于R-CNN 系列算法的第三代,基本結構如圖1 所示。

圖1 Faster R-CNN 結構圖
Faster R-CNN 檢測部分主要可以分為四個模塊。
(1)特征提取網絡。采用一組基本的卷積層、激活層和池化層,用于從輸入圖像中提取有用的特征圖。
(2)區域建議網絡。通過softmax 對預設的anchors 進行二分類,然后采用邊框回歸技術對錨點進行微調,從而得到更加精確的生成區域。
(3)興趣區域池化層。將輸入的特征圖和生成的區域相結合,然后綜合這些信息提取特定的感興趣特征圖,送入后面全連接網絡做分類和回歸。
(4)分類和回歸。通過softmax 對圖像進行分類,然后使用邊框回歸獲得位置精確的檢測框。
相比于Fast R-CNN,Faster R-CNN 引入了區域建議網絡(region proposal network,RPN)用于提取候選區域,并將其有機地融入整體網絡,提高了模型的檢測精度和速度,是兩階段目標檢測算法中的典型代表。
在表面缺陷檢測領域,Faster R-CNN 也會出現精度不能滿足實際生產需求的情況。為了提高檢測精度,本文采用訓練效果較好且被廣泛應用的殘差網絡ResNet50[15]作為主干特征提取網絡,替代模型中原有的VGG16[16],然后從特征提取網絡和候選框定位兩個方面對Faster R-CNN 模型進行優化。優化后的Faster R-CNN 網絡結構如圖2 所示。

圖2 優化后的Faster R-CNN 網絡結構圖
針對原有Faster R-CNN 模型只采用具有較少信息的頂層特征作預測,并且常規矩形結構的卷積核對不規則形狀缺陷的特征學習能力較弱的情況,本文提出在模型特征提取網絡部分融合特征金字塔網絡及可變形卷積層來提高網絡的檢測精度。
2.1.1 Feature Pyramid Network
特征金字塔網絡(feature pyramid network,FPN)[17]是一種用于對象檢測和語義分割的圖像特征提取方法,包含自底向上的過程、自頂向下和側向連接的融合過程兩個部分。
在目標檢測方法中,較淺層的特征雖然目標定位相對精確,但語義信息相對少;而深層的特征雖然目標定位相對粗糙,但語義信息相對多。另外,在通過ResNet50 獲取特征后,圖像也將進行壓縮,從而導致特征候選框較小,在一定程度上降低了模型對特征的判別功能。為了克服該現象,本文在Faster R-CNN 基礎上融合FPN 對特征進行提取,具體結構如圖3 所示。

圖3 ResNet50 與FPN 融合圖
首先通過ResNet50 獲得不同層上的特征圖C1~C5,然后對頂層特征圖進行1×1 卷積得到特征圖M5,將卷積后的C4 與采樣后的M5 相加得到M4。以此類推,生成特征圖M3 和M2。M2~M4融合了不同特征層的特征信息,在保留細節的同時實現了高層語義。最后,對M2~M5 進行3×3 卷積,以此獲得特征圖P2~P5,并將其輸入到RPN 和Fast R-CNN 網絡中作為最終的特征提取結果進行訓練。整個過程中,FPN 同時利用自底向上、自頂向下、橫向連接的線路,將深層特征和淺層特征進行融合,使每層特征都得到較豐富的語義,增強了檢測網絡對于缺陷的檢測能力。
2.1.2 Deformable ConvNets v2
傳統的卷積核是常規的矩形形狀,是它根據事先定義的濾波器大小,在目標圖像上按照預先設定的矩形網格進行卷積操作,其形狀和大小是固定的,無法處理非剛性的目標形變和旋轉等情況。而可變形卷積網絡(deformable convolutional networks,DCN)[18]則在傳統卷積基礎上引入了可變形采樣機制,通過對卷積核中各個采樣點的位置都增加一個偏移變量,使卷積核在一定程度上自適應地變形,從而更好地適應數據集中不規則的缺陷。
DCN 通過一個并行卷積分支計算骨干卷積核坐標的偏移,其實現的流程如圖4 所示。通過一個作用在輸入特征圖的卷積操作得到一組卷積核偏移的預測結果,這個偏移特征圖的尺寸和輸入特征圖保持相同。偏移特征圖的通道數為2N,其中2 指每個偏移是(x,y)兩個值,N為卷積核的像素個數。

圖4 可變形卷積流程圖
在DCN 中,使用?Pn對特征圖上的一點Pn進行擴充,其中{?Pn|n=1,2,3,···,N},即圖4 上側的通過卷積操作預測的卷積核偏移值。此時可變形卷積的計算方式:
式中:Pn為整數,表示卷積輸出的每個點相對于感受野上的每個點的偏移量;?Pn表示每個點所增加的偏移量。這樣,通過對每個采樣點的位置增加偏移量,可變形卷積能夠實現卷積核的自適應變形,從而更好地適應數據集中存在的不規則缺陷。
Deformable ConvNets v2(DCNv2)[19]是基于DCN 模塊改進的一個版本,其改進點包括增加更多的可變形卷積層、讓模型學習采樣點的偏移及每個采樣點的權重、使用R-CNN 對Faster R-CNN 進行知識蒸餾。DCNv2 的提出減少了DCN 中無關的干擾信息,提高了模型對不同幾何變化的適應能力,其表達式為
在式(1)的基礎上,DCNv2 為每個采樣點添加了一個權重系數?mk。其中?Pk和?mk分別為第k個位置的可學習偏移和調制標量。調制標量?mk位于范圍[0,1]內,而?Pk是范圍不受約束的實數。因為加入了一個新的要學習的參數,所以圖4 的預測結果的通道數變成了3N。
本文所提出的模型將Faster R-CNN 的主干網絡ResNet50 所生成的Conv3、Conv4 和Conv5 三個卷積塊的普通卷積層替換為DCNv2 模塊,通過增強提取模塊中空間采樣位置的能力來增加網絡對缺陷形狀的學習,便于檢測一些不規則形狀的缺陷。
在本文的實驗數據集中,Faster R-CNN 算法中原始的anchor 生成方案并不適合,并且經過粗修后的RoIs 需要經過RoI Pooling 操作,此過程中出現的兩次量化過程會導致候選框在原圖和特征圖之間映射的過程中位置發生明顯的偏差。針對以上問題,本文選擇采用在torchvision 中提供的MultiScale-RoIAlign 替代RoI Pooling 操作獲取更精準的定位,同時采用K-means++聚類算法來獲取合適的Anchor比例。
2.2.1 RoI Align
RoI Pooling 是對輸入的特征圖進行量化操作,在操作過程中,一般會進行兩次量化,一是把侯選區映射到特征圖中固定網格上,然后通過向下取整的方式將浮點型坐標變成矩陣坐標值;二是對所獲得的區域進行平均分割時會出現浮點單元坐標量化取整的情況。這兩次量化操作會造成信息損失,特別是對于較小的感興趣區域。
為了解決這個問題,一些研究人員[20-22]采用RoI Align[10]替換已有的RoI Pooling。RoI Pooling 和RoI Align 的過程示意如圖5 所示。

圖5 RoI Pooling 和RoI Align 的過程示意圖
相較于Rol Pooling,Rol Align 取消了量化操作,用雙線性插值的方法將兩次量化的過程轉化為一個連續的操作,可避免位置偏差問題的出現,更好地保留了感興趣區域的位置信息和特征信息。
本文采用torchvision 中提供的MultiScaleRoIAlign替換原有的RoI Pooling。MultiScaleRoIAlign 可以在多個尺度的特征圖中進行RoI Align。具體來說,對于每個感興趣區域,MultiScaleRoIAlign 會根據感興趣區域的大小在多個尺度的特征圖上分別計算感興趣區域的坐標,然后在每個尺度的特征圖上劃出一個大小與感興趣區域相適應的的區域,最后對這些區域進行池化操作,從而會得到一個尺寸固定的特征圖。因此,MultiScaleRoIAlign 能夠更好地處理不同大小的感興趣區域,并且可以從多個尺度的特征圖中獲得更豐富的特征信息。
2.2.2 K-means++
在Faster R-CNN 中,RPN 網絡的候選框設定是固定的,包括了預定義的3 種尺度{322, 642, 1282}和3 種寬高比{1∶2, 1∶1, 2∶1}。然而,這種設定無法根據具體圖像中缺陷的大小進行自適應調整,導致生成的候選框與缺陷大小相差較大,并且候選框之間的重疊較多。為了解決這個問題,本文采用聚類算法對RPN 網絡進行改進,使候選框的選取更適合實驗數據。
考慮到K-means 算法[23]聚類中心的個數需要預先人工調試選定,且可能出現局部最優解,本文采用改進版的K-means++聚類算法[24]進行錨點框尺寸優化。該算法通過一定的概率分布來初始化聚類中心,有效避免了聚類結果出現局部最優解。Kmeans++算法具體步驟如下:
(1)在數據集中隨機選擇一個樣本作為第一個初始聚類中心。
(2)篩選出其余的聚類中心。首先計算剩余樣本點與當前聚類中心之間的距離,并選擇距離最短的樣本點成為最新的聚類中心;然后按照距離大則被選取概率大的原則,從剩余樣本點中選擇下一個聚類中心;重復上述步驟,直到選出預先設定的k個聚類中心為止。
(3)對k個初始的聚類中心利用K-means 算法進行迭代,直到收斂,得到最終的聚類中心。
改進后的RPN 網絡利用Annotations 中的.xml文件,將其中所有類別缺陷對應的坐標信息提取出來,并計算前景目標的大小。然后,將獲取的所有長寬尺寸組成向量,作為K-means++聚類模型的輸入。為了適應數據集的實際情況,設置合適的聚類中心數量,并開始執行聚類運算。本文將聚類中心k設置為3,NEU-DET 數據集[25]聚類后的結果分布如圖6 所示。根據聚類結果設置合適的候選框規模,最終的錨大小設置為{32,64,128,256,512},縱橫比設置為{0.5,1.3,3.0}。

圖6 NEU-DET 數據集聚類結果圖
通過K-means++聚類算法設計的anchors 生成方案更適用于金屬板材表面缺陷數據集,能夠減少背景等無關信息的干擾,加快缺陷檢測網絡的收斂,實現更精準的缺陷目標定位。
本實驗采用ubuntu20.04 操作系統,CPU 為12 vCPU Intel(R)Xeon(R)Platinum 8255C CPU @ 2.50 GHz,GPU 為RTX 3090,Pytorch 版本為1.11.0,Python 版本為3.8,CUDA 版本為11.3。網絡優化器選擇SGD 優化器,初始學習速率設置為0.01,動量參數為0.9,權重衰減因子為0.000 5,batch size 設置為8,Epoch 設置為50 次。
本實驗選用了來源于東北大學帶鋼表面缺陷數據集中的NEU-DET 部分[25]。數據集中包含六類金屬缺陷,如圖7 所示,分別是細裂紋(crazing),即多道狹長且細小的黑色裂縫;表面雜質(inclusion),即形狀為點狀、塊狀或者線條狀的非金屬夾雜物;斑點(patches),即不規則或像小島形狀的黑色或者褐色的塊狀物;麻點(pitted_surface),即大面積的凹形黑色小點;軋入氧化皮(rolled_in_scale),即點狀、條狀或魚鱗狀的黑色斑點;劃痕(scratches),即直且細、深淺不一的溝槽。每類金屬缺陷包含300 張圖片,共1 800 張圖片,每張圖片的原始分辨率為200×200,具體分布情況如圖7 所示。為滿足實驗需求,將數據按照8∶2 的比例分別作為訓練集和測試集。

圖7 NEU-DET 數據集
在目標檢測中,常用的評價模型泛化能力的檢測指標有精確率、召回率、平均精確度(AP)和平均AP 值(mAP)。
式中:C為檢測類別數;P(Precision)為精確率,R(Recall)為召回率,兩者計算公式為
式(5)和式(6)中,TP表示成功預測的正例,FP表示被誤判為正樣本的負例,FN表示被誤判為負樣本的正例。而正負樣本按照IoU的閾值來劃分,當IoU>0.7 時為正樣本,否則為負樣本。
在工業背景下,目標檢測算法中還有一個關鍵的評價指標就是檢測速度,即每秒內可以檢測出的幀數或圖片數量(frames per second,FPS)。并且,FPS也會受到硬件資源、目標數量和復雜性等因素影響。
使用不同的主干網絡作為Faster R-CNN 的特征提取部分對缺陷檢測精度進行研究。具體地,分別采用了VGG16、ResNet18、ResNet50 和MobileNetV2作為主干網絡進行模型訓練。通過這樣的實驗設計,旨在探究不同的特征提取網絡對缺陷檢測性能的影響。實驗結果見表1,可以看出,相比于模型原有的VGG16 網絡,使用ResNet50 和MobileNetV2 網絡訓練得到的mAP值相對較高。二者雖相差不大,但MobileNetV2 權重文件偏大,當訓練次數過大時對設備存儲量要求高;并且ResNet50 的特征表示能力和泛化能力較強,可以很容易地應對各種復雜場景,也有較多預訓練的ResNet 模型可供選擇,便于遷移學習,從而加速特定任務的訓練。因此,本文選用ResNet50 作為特征提取網絡。

表1 不同特征提取網絡的檢測結果對比
為了評估優化后的Faster R-CNN 模型在NEUDET 數據集上的缺陷檢測性能,將本文提出的模型與SSD、YOLOv5s 和YOLOv7 幾種經典算法進行比較,采用mAP和FPS來評估模型檢測性能,實驗結果見表2,可以發現本文模型的mAP值高于其他模型。同時,本文模型每秒內處理圖片數量的能力達到29 幀/s,優于原始模型。由于是兩階段檢測算法,在檢測速度上稍有不足,但工業應用場景的高精度需求使得本文模型具有良好的實用性。

表2 不同模型的檢測結果對比
同時,為了清晰直觀地觀察改進后的Faster RCNN 模型對于金屬板材表面缺陷的檢測性能,分別用改進后的最終模型和原始模型對6 類表面缺陷進行了檢測。如圖8 所示,繪制出各類別缺陷平均精度折線圖。改進后的Faster R-CNN 模型相較于原始模型在6 類表面缺陷上的檢測精度都有不同程度的提高,可見改進后的模型具有更好的檢測效果。

圖8 各類別缺陷平均精度折線圖
為進一步驗證本文對Faster R-CNN 模型改進的有效性,在金屬板材表面缺陷數據集上進行了消融實驗。首先搭建了基于ResNet50 的Faster R-CNN模型,然后在此基礎上,逐步添加FPN、DCNv2、RoI Align、K-means++聚類算法分別進行實驗。實驗結果見表3,模型改進前后loss 值的變化情況如圖9 所示。

表3 消融實驗結果

圖9 模型改進前后loss 值變化情況
由表3 可知,改進后的Faster R-CNN 模型的Recall和mAP相較于原始模型均有提升,其中,mAP值提升了7.7%。6 種缺陷類型的AP值分別提升了11%、4.4%、9.7%、9.2%、11.4%、0.7%。同時,改進后的模型在訓練過程中的loss 值相比原始模型降低了,這是因為FPN 能夠同時利用自底向上、自頂向下、橫向連接的線路,使每層特征都得到較豐富的語義,提高了對缺陷特征的學習能力;DCNv2 為卷積核中每個采樣點增加偏移變量和權重,使卷積核自適應地變形以適應數據集中不規則的缺陷;RoI Align 和K-means++算法通過優化錨點生成方案,降低了候選框的定位誤差。最終改進的Faster R-CNN 模型與原始模型對金屬板材表面缺陷的檢測效果對比如圖10 所示。

圖10 金屬板材表面缺陷的檢測效果圖
對于工業生產中常見的金屬板材表面缺陷檢測效果不理想的情況,本文提出了一種基于優化Faster R-CNN 算法的金屬板材表面缺陷檢測方法。通過融合特征金字塔形成多尺度的特征融合模型,增強了對金屬板材表面缺陷的檢測能力,尤其是小缺陷的檢測;采用可變形卷積替換主干網絡的普通卷積層,提高了模型對不規則缺陷的學習能力;采用RoI Align 替代了原有的RoI Pooling,消除實驗中產生的量化誤差;引入K-means++算法得到針對金屬板材表面缺陷數據的特定anchors,實現更精準的定位。實驗結果表明,改進后的Faster R-CNN 模型在金屬板材表面缺陷數據集上的mAP值從71%提升到了78.7%,相較于原始網絡模型及其他目標檢測算法,改進后的模型檢測效果更佳,為之后的金屬板材表面缺陷檢測提供了可參考價值。