鄧中港,代 剛,吳湘寧,鄧玉嬌,王 穩,陳 苗,涂 雨,張 鋒,方 恒
(中國地質大學(武漢)計算機學院,湖北 武漢 430078)
金屬材料由于具有抗腐蝕性、電導率低等優點,被廣泛用于航空航天、交通運輸等領域。然而,在生產、加工、冶煉和運輸過程中,由于諸多因素影響,金屬材料表面會出現起坑、涂層開裂和臟點等瑕疵,從而影響金屬材料的質量。為保證金屬材料的質量,需要對金屬表面的損傷進行檢測。
工業界曾使用一些傳統的金屬表面缺陷的檢測方法。基于電磁感應原理的二維渦流檢測方法[1]利用了正弦波電流激勵探頭內線圈周圍的交變磁場,在金屬表面產生感應電渦流,同時電渦流產生的磁場與線圈磁場的頻率相同,方向相反,引起的探頭阻抗的變化量可用來檢測金屬表面的缺陷及其深度。但是,該方法的檢測深度與檢測靈敏度相矛盾,檢測速度與材料的材質和表面狀態等高度相關。鋼鐵制品無損檢測的漏磁檢測技術利用了磁源對被檢測材料局部磁化,材料表面裂紋使局部區域的磁導率降低,磁阻增加,磁化場將從該區域部分外泄,從而形成可檢驗的漏磁信號[2],通過研究缺陷漏磁場的特點可以確定缺陷的特征。但是,該方法只適用于鐵磁材料,且難以檢測出很小的裂紋。
近年來,基于深度學習的方法逐漸被應用于工業金屬表面損傷檢測。Wang等人[3]較早使用了深度學習方法進行表面損傷檢測,通過對輸入圖像進行切片,然后把切片圖像輸入深度學習網絡中,在推理時使用滑動窗口檢測方式對各位置逐一識別,準確率較高,但是速度較慢。Chen等人[4]采用3階段的方式來檢測接觸網支架緊固件是否存在缺陷,第1階段采用SSD(Single Shot MultiBox Detector)[5]作為檢測網絡,定位主要結構件的位置,第2階段采用YOLO(You Only Look Once)[6]網絡對第1階段檢測出的各個結構圖像中的緊固件進行檢測,第3階段對圖像進行裁減,再利用深度卷積神經網絡DCNNs(Deep Convolutional Neural Networks)進行分類與回歸,但由于不是端到端模型,實際應用起來比較困難。Tao等人[7]討論了一種能準確定位和分類的雙重過程來自動檢測金屬缺陷,設計了一種新的級聯自動編碼器CASAE(CAScade Auto Encoder)結構,用于缺陷的分割和定位,該方法滿足了一定的金屬缺陷檢測的穩健性和準確性要求。Zhao等人[8]提出了一種新的基于正樣本訓練的缺陷檢測框架,結合對抗生成網絡GAN(Generative Adversarial Network)[9]和自動編碼器建立一個重建網絡,用于修復樣本中存在的缺陷區域,然后將輸入樣本與恢復樣本進行比較,以評估修復GAN缺陷區域的能力,但是GAN的訓練需要達到納什均衡,否則會因為訓練不穩定而導致生成的結果非常差。
本文在傳統深度學習目標檢測模型的基礎上針對特定的模塊進行改進,提出了ADC-Mask R-CNN(Attention-Deformable-Cascade Mask Region based Convolution Neural Network)模型。該模型引入注意力機制與特征金字塔FPN(Feature Pyramid Network)[10]以幫助網絡更好地關注目標區域的信息,通過可變形卷積與可變形感興趣區域池化技術來處理樣本中的長條狀等不規則瑕疵;并參照Cascade R-CNN[11]的思想,將多個基于區域的卷積神經網絡R-CNN(Region based Convolutional Neural Network)基于不同的交并比IoU(Intersection over Union)閾值級聯,從而優化金屬表面細微不規則損傷檢測的效果。
ADC-Mask R-CNN模型在Mask R-CNN[12]的基礎上進行了一部分結構上的修改。Mask R-CNN是一種深度神經網絡,作為Fast R-CNN[13]的擴展,也是一個靈活的目標檢測框架。它可以分離圖像或視頻中的不同對象,并且將其進行邊框、類和掩碼的預測。Mask R-CNN的骨干網絡是一種特征金字塔網絡FPN[10]類型的深度神經網絡。FPN優于其他單一卷積網絡的主要原因是它在不同分辨率尺度下都能保持強大的語義特征,對小目標物體的檢測更加有效。
ADC-Mask R-CNN模型的結構如圖1所示,分為以下幾個部分:

Figure 1 Structure of ADC-Mask R-CNN model圖1 ADC-Mask R-CNN模型結構圖
(1)數據處理模塊:對金屬表面損傷數據集進行預處理和數據增強。
(2)ResNet101(Residual Neural Network-101)骨干(Backbone)網絡:在ResNet101的卷積層之間嵌入特征金字塔和一個封裝好的注意力模塊(Attention Module),以此來增強對小目標的語義提取及檢測精度。ResNet101中的第5層卷積層conv5_x被替換為可變形卷積網絡DCN(Deformable Convolution Net),用來增強對長條狀等不規則瑕疵的特征提取。
(3)候選區域推薦網絡RPN(Region Proposal Network):從特征圖中提取候選區域。RPN生成的候選區域是可變形感興趣區域池化(Deformable RoI Pooling)模塊的輸入,同時還將生成的候選區域進行RoI對齊。最后將2條分支生成的特征圖進行拼接與疊加。
(4)頭部(Head)網絡:采用與Faster R-CNN[14]類似的結構,包含了感興趣區域RoI對齊和可變形感興趣區域池化模塊。RoI對齊取消了量化操作,使用雙線性內插的方法獲得坐標為浮點數的圖像數值,從而將整個特征聚集過程轉化為一個連續的操作。RoI對齊流程如下所示:
①遍歷每一個候選區域,保持浮點數邊界不進行量化。
②將候選區域分割成k×k個單元,每個單元的邊界也不進行量化。
③在每個單元中計算固定4個坐標的位置,用雙線性內插的方法計算出這4個位置的值,然后進行最大池化操作。
RoI對齊反向傳播的公式如式(1)所示:
(1)

head網絡中的可變形感興趣區域池化模塊對RPN的輸出進行處理,增強對長條狀目標的檢測精度。最后將輸出的特征圖送入第2階段的分支網絡,分別用來進行分類、回歸和掩碼。
模型的損失函數定義如式(2)所示:
L=Lcls+Lreg+Lmask
(2)
其中,Lcls表示分類誤差,Lreg表示檢測誤差,Lmask表示分割誤差。對于每個RoI,Mask分支定義一個K×m×2維的矩陣,表示K個不同的分類對應每一個m×m的區域。對于每個像素,都是用Sigmoid函數求相對熵,得到平均相對熵誤差Lmask。對于每個RoI,如果檢測出RoI屬于哪個分類,就只使用那個分支的相對熵誤差作為差值進行計算。最后通過與閾值(0.5)進行比較,輸出二值掩碼(Mask),二值掩碼的交叉熵定義如式(3)所示:
crossentropy(t,o)=
-(t·log(o)+(I-t)·log(I-o))
(3)
其中,t表示目標張量,o表示輸出張量,I表示各個元素均為1的標準張量,·表示點乘操作。
ADC-Mask R-CNN模型引入了注意力模塊CBAM(Convolutional Block Attention Module)[15],如圖2所示,將注意力同時運用在通道和空間2個維度上,在不顯著增加計算量的前提下提升了網絡模型的特征提取能力。注意力不僅能告訴網絡模型該注意什么,同時也能增強特定區域的表征。

Figure 2 CBAM圖2 注意力模塊CBAM
對于一個中間的特征圖,模塊從通道和空間2個維度計算注意力圖,然后將輸出的注意力圖與輸入的特征圖相乘,以自適應方式對特征進行改進。由于CBAM是輕量級的,融合在CNN架構中時,其開銷可忽略不計。圖3是將CBAM嵌入到ResBlock(Residual Block)中的示意圖。

Figure 3 ResBlock+CBAM圖3 ResBlock+CBAM
特征的每個通道都對應一個專門的檢測器,因此,通道注意力(Channel Attention)模塊被用于關注什么樣的特征是有價值的。為了匯總空間特征,模型采用了全局平均池化和最大池化2種方式來分別利用不同的信息,計算方式如式(4)所示:
Mc(F)=σ(MLP(AvgPool(F))+
(4)
模塊的輸入是一個H×W×C的特征F,先分別進行一個空間的全局平均池化和最大池化,得到2個 1×1×C的通道描述;接著,再將它們分別送入一個2層的神經網絡,第1層神經元個數為C/r,激活函數為 ReLU,第2層神經元個數為C。第1層神經網絡的權重矩陣為W0,第2層神經網絡的權重矩陣為W1。這2層神經網絡的參數是共享的;然后,再將得到的2個特征相加后經過一個 Sigmoid 激活函數σ(·)得到權重系數;最后,將權重系數和原來的特征F相乘,即可得到縮放后的新特征F′。
在通道注意力模塊之后,又引入空間注意力(Spatial Attention)模塊來關注什么位置的特征是有價值的,空間注意力的計算方式如式(5)所示:
Ms(F)=σ(f7×7([AvgPool(F),MaxPool(F)]))=
(5)
給定一個H×W×C的特征F′,先分別進行一個通道維度的平均池化和最大池化,得到2個H×W×1 的通道描述,并將這2個描述按照通道拼接在一起;然后,經過一個 7×7 的卷積層,f7×7表示對通道進行7×7的卷積操作,激活函數為 Sigmoid,得到權重系數Ms;最后,將權重系數和特征F′ 相乘,即可得到縮放后的新特征F″。
在FPN中,自底向上得到的是每個階段的最后一層特征,即表達能力最強的特征。FPN使用的骨干網絡是ResNet,自輸入(Input)開始逐級上采樣,各級生成特征C2,C3,C4,C5,分別對應于conv2_x,conv3_x,conv4_x,DCN的輸出,與原圖相比的步長分別是4,8,16,32。由于上采樣操作降低了特征的分辨率,因而自底向上的特征C2~C5的語義信息逐漸減少,但位置信息逐漸增多。
在ResNet中將進行下采樣,先在C5上進行1×1卷積,以減少通道數,并與上采樣結果C4相加后,再進行3×3卷積處理后得到P5,以減小前面上采樣所帶來的混淆影響。同樣,對C2,C3,C4分別進行1×1卷積,和上采樣結果相加后,再進行3×3卷積處理,分別得到P2,P3,P4。
因為金字塔所有級(Level)使用相同的分類/回歸器,所以固定了特征圖上的通道數d都為256,即每個階段或每個級別的特征圖的通道數都是d=256。
由于CNNs模塊固有的幾何結構,CNNs對大型、未知形狀變換的建模存在固有缺陷:卷積單元對輸入特征圖的固定位置進行采樣,池化層以固定的比例進行池化;即使是RoI 池化也是將RoI分割到固定的單元中去。這些特性造成了在同一層卷積層中,激活單元的感受野需要根據不同位置可能出現的不同尺度或變形的物體,進行自適應調整以達到精確定位。本文采用了可變形卷積和可變形感興趣區域池化來提高對形變物體的建模能力。這2個技術都是基于一個平行網絡來學習偏移,使得卷積核在輸入特征圖的采樣點發生偏移,從而集中于感興趣的區域。為了削弱標準卷積中的規則格點采樣所導致的網絡難以適應的限制,卷積核中每個采樣點的位置都增加了一個偏移變量,以實現在當前位置附近隨意采樣而不是僅局限于固定的規則格點。與標準卷積相比,可變形卷積的采樣位置更符合物體本身的形狀和尺寸。
可變形卷積的結構如圖4所示。根據輸入圖像,利用傳統卷積核提取特征圖。對得到的特征圖再施加一個卷積層,目的是得到可變形卷積的變形偏移量。可得到H×W×2N的輸出偏移,其中2N是指需得到x和y2個方向的偏移。在訓練的時候,用于生成輸出特征圖的卷積核和用于生成偏移量的卷積核是同步學習的。偏移量是利用插值算法,通過反向傳播進行學習得到的。

Figure 4 Diagram of 3×3 deformable convolution圖4 3×3可變形卷積示意圖
可變形感興趣區域池化是對普通感興趣區域池化的拓展,池化針對所有的候選區域。將任意大小的矩形調整為固定尺寸的特征。給定輸入特征圖x和一個大小為w×h的區域R0,RoI 池化將會把這個RoI(即R0)劃分為k×k個單元,同時輸出一個尺寸為k×k的特征圖y。其計算如式(6)所示:
(6)
其中,nuv表示單元中像素的數量,p0表示采樣點,即特征圖的中心位置,p表示網格中的點,bin(u,v)表示特征圖上的坐標集合。
可變形RoI 池化計算如式(7)所示。相比于普通RoI 池化,可變形RoI池化增加了一個偏移Δpuv,其余計算與普通RoI 池化類似。ADC-Mask R-CNN中替換了骨干網絡ResNet最后一層的卷積層,對輸入的特征圖進行卷積得到變形偏移量,之后將該層輸出的特征圖與其他層輸出的特征圖送入特征金字塔。
(7)
在Faster R-CNN中,整個網絡可以分為Training與Inference 2個階段。在Training階段,RPN網絡提出2 000個區域提案,網絡會先計算每個候選區域和Ground Truth(人工標注框)之間的交并比IoU,通過預先設定的一個IoU閾值(通常為0.5),對所有的候選區域進行二分類(分為正樣本和負樣本,負樣本為背景),并對這些分類之后的樣本進行采樣,之后這些候選區域被送入RoI 池化,最后進行分類和回歸。在Inference階段,RPN會提出300個左右的候選區域,與Training階段不同的是,此處不會對這些候選區域進行采樣,所以它們會直接進入RoI 池化,隨后進行分類和回歸。在整個過程中,有2次用到IoU閾值,分別是訓練階段進行二分類時和Inference階段計算平均準確率mAP時。
然而,在2個階段邊界框回歸器的輸入分布是不一樣的,Training階段輸入的候選區域質量更高(IoU>threshold),Inference階段輸入的候選區域質量相對較差(可能存在IoU 在ADC-Mask R-CNN模型中,將Mask R-CNN與Cascade R-CNN進行融合,如圖5所示。 Figure 5 Fusion of Mask R-CNN and Cascade R-CNN圖5 Mask R-CNN融合Cascade R-CNN 在Cascade R-CNN的每一個階段添加Mask R-CNN的Mask分支,其計算如式(8)和式(9)所示。 (8) (9) 實驗使用的金屬表面損傷數據集來源于阿里天池大數據競賽的數據集,共有帶標注的圖像2 091幅。整個數據集共包含9個類別,分別是角位漏底(cornerexposure)、噴流(jet)、漆泡(lacquerbubble)、不導電(nonconducting)、桔皮(orangepeel)、臟點(dirtypoint)、擦花(scratch)、漏底(undercase)和雜色(variegated)。整個數據集為COCO格式,每幅圖像對應的標注存放在對應的.Json文件中,并且需要使用Labelme根據對應的.Json文件生成COCO格式的數據集文件夾,文件夾中包含cv2_mask、pic、labelme_json和json 4個子文件夾。cv2_mask用來存放對應的掩碼文件,pic中存放原圖,json中存放對應的Json標注,labelme_json中存放yaml文件。部分圖像中存在多種類型的損傷。圖像分辨率均為1920×2560,對于多類別樣本數據而言,其目標可能存在重疊區域,因此需要將此類樣本的掩碼分離出來。 將測試圖像輸入訓練好的模型,模型識別出測試數據集中的臟點目標,不同的目標使用不同顏色的檢測框進行標記,并給出每個目標所屬的類別及對應的置信度。 在訓練過程中,RPN的anchor_scales為(32,64,128,256,512),anchor_ratios為[0.5,1,1],過濾RPN候選區域的NMS_THREAD被設置為0.7。檢測過程中候選區域采樣數量的最大數設置為100,檢測最小置信度設為0.8,檢測的非極大值抑制閾值設置為0.3。 金屬表面損傷數據集以8∶1∶1的比例劃分為訓練集、驗證集和測試集。測試后挑選一部分測試樣本進行可視化。對ADC-Mask R-CNN的訓練過程進行分析,整個訓練過程中,loss的全局最低值出現在第29輪,此時loss值約為0.8。因此,在測試階段選用第29輪的權重模型來測試。測試集包含不同類別但數量分布均勻的樣本。 圖6為使用原始Mask R-CNN模型對部分數據檢測的結果圖,圖6a、圖6b、圖6c和圖6d中對應的標簽類別分別為臟點、臟點、不導電和臟點。圖6a中對臟點類別的瑕疵存在漏檢的情況,圖6d中無法檢測臟點。對于長條狀的損傷,如圖6c中的不導電損傷,模型檢測出不導電與角位漏底2種損傷,說明傳統的正方形卷積對于此類長條狀的損傷檢測效果不甚理想。相對于其它類別而言,臟點類別檢測難度最高,因為樣本數據集圖像分辨率均為1920×2560,而臟點所占像素可能不足100,在卷積過程中可能會丟失特征,使用特征金字塔FPN實現了對小目標檢測精度的提升。 Figure 6 Detection results of Mask R-CNN圖6 Mask R-CNN檢測結果 圖7是9種不同類別的樣本在ADC-Mask R-CNN模型上的檢測結果,輸出結果繪制出了邊界框,并標出對應目標的類別標簽和置信度。模型能準確識別出長條狀損傷的類別并定位損傷的位置。 Figure 7 Detection results of ADC-Mask R-CNN on nine categories of samples圖7 ADC-Mask R-CNN 對9種類別樣本的檢測結果 圖8為訓練過程中記錄的各類損失與訓練輪數之間的折線圖(loss-epoch折線圖),loss指總的損失,rpn_class_loss,rpn_bbox_loss,mrcnn_class_loss,mrcnn_bbox_loss,mrcnn_mask_loss為5種單項損失,loss的初始值設定為5,而每種單項損失的初始值均設為1。訓練過程包含對驗證集的驗證,并記錄每一輪驗證的6種損失,且每一批次的迭代中取后50輪進行驗證。通過圖8可知,隨著訓練輪次的增加,ADC-Mask R-CNN模型在訓練集和驗證集上的損失總體呈減小的趨勢,說明模型在迭代訓練的過程中逐漸收斂。訓練過程中最優權重模型出現在第29輪,此時驗證集的整體損失達到最小值,約為0.8。訓練過程中每一個批次迭代的輪數為100輪,且每一個輪次都會保存一個模型,方便后續實驗使用。 Figure 8 Loss-epoch diagram of ADC-Mask R-CNN圖8 ADC-Mask R-CNN 的loss-epoch圖 在訓練階段,如果RoI區域和Ground Truth框的IoU>0.5,則RoI是正樣本,否則為負樣本。損失函數中的Lmask只在正樣本上定義,具體訓練時采用以圖像為中心(image-centric)的方式訓練,將圖像的寬高中較小的一邊縮放到1 920像素,GPU的mini-batch設置為2,GPU的顯存為12 GB,初始學習率設置為0.001。 在測試階段,采用的候選區域的數量分別為300(Faster-RCNN)和1 000(FPN)。在這些候選區域中,使用邊界框預測分支配合后處理非極大值抑制來預測邊界框。然后使用 Mask 預測分支對分數最高的100個檢測框進行處理,與訓練時Mask預測并行處理的方式不同,這里主要是為了加速推斷效率。隨后,Mask 網絡分支對每個RoI預測K個掩碼圖像,只需要使用其中類別概率最大的那個掩碼圖像即可,然后將這個掩碼圖像重塑(resize)回 RoI 大小,并以0.5的閾值進行二值化處理。 圖9為ADC-Mask R-CNN在測試集上測試后得到的精準度-召回率PR(Precision-Recall)圖,測試集包含200多幅圖像,對每一幅測試圖像使用第29輪所生成的權重模型進行測試,測試過程中記錄每幅圖像的損失,而后生成所有類別的AP,AP值為PR曲線與坐標軸圍成的面積大小,大約為0.8。 Figure 9 PR diagram of ADC-Mask R-CNN圖9 ADC-Mask R-CNN 的PR圖 實驗中的對比基準模型選取較為常見的目標檢測模型,分別是Faster R-CNN、Mask R-CNN、YOLOv4[16]、Cascade R-CNN。其中Mask R-CNN采用了2種不同的骨干網絡來進行對比實驗。表1給出了4種模型的對比結果。評估指標有精準度(Precision)、召回率(Recall)、F2分數和平均準確率(mAP)。相比之下,YOLOv4在該任務上表現不理想。傳統的二階段檢測器Faster R-CNN與多階段檢測器Cascade R-CNN的表現接近于Mask R-CNN的,兩者的mAP接近80%。對于Mask R-CNN基準模型而言,使用ResNet50與ResNet101作為骨干網絡在檢測性能上存在一定差異,因為網絡深度加深能給模型帶來一定程度上的精度提升。相比于4種基準模型,Mask R-CNN在該類任務的檢測上表現最好。 Table 1 Detection results of benchmark models ADC-Mask R-CNN模型主要研究注意力機制、可變形卷積和級聯R-CNN給金屬表面損傷檢測任務帶來的精度提升,因此本文針對不同的訣竅(tricks)還進行了模型的消融實驗。主體網絡選用Mask R-CNN,骨干網絡分別選取ResNet50與ResNet101。在Mask R-CNN中,分別對單獨加入注意力機制、可變形卷積、Cascade R-CNN級聯,以及同時加入這些訣竅進行了實驗。表2給出了它們的檢測結果。對于主干網絡ResNet50與ResNet101而言,在引入相同模塊的前提下,ResNet101的表現均優于ResNet50的,說明網絡越深結果越好。其次在只加入注意力機制或可變形卷積時,Mask R-CNN模型的檢測性能均會有一定程度的提升,說明這2種手段對模型精度的提升帶來的是正面的影響。再次,同時將注意力與可變形卷積嵌入Mask R-CNN中可以給模型帶來2%~4%左右的平均準確率(mAP)提升。最后,在此基礎上將Mask分支級聯并再次實驗,結果表明使用骨干網絡ResNet101的級聯網絡模型,即ADC-Mask R-CNN,可以達到該檢測任務上最好的結果,即mAP可以達到84.19%,說明級聯R-CNN可以進一步有效提升模型的檢測精度。 Table 2 Ablation experiment of ADC-Mask R-CNN model 基于注意力機制、可變形卷積和級聯R-CNN的ADC-Mask R-CNN模型,在Mask R-CNN的基礎上引入了注意力機制和可變形卷積的思想。采用ResNet101作為主干網絡,并且在ResNet卷積層之間嵌入注意力模塊和特征金字塔,以此來增強對小目標的語義提取和檢測精度。其中注意力模塊采用先加入通道域注意力再加入空間域注意力的方式,在卷積層的每一層網絡之間都嵌入一個封裝好的注意力模塊。ResNet101中的第5層卷積層conv5_x被替換為可變形卷積網絡,并在頭部網絡使用可變形感興趣區域池化來增強對金屬表面長條狀等不規則損傷的特征提取。同時將注意力與可變形卷積嵌入Mask R-CNN中,給ADC-Mask R-CNN模型帶來了2%~4%左右的檢測平均準確率提升。再將Mask R-CNN的Mask分支級聯,進一步提升了ADC-Mask R-CNN模型對金屬表面細微不規則損傷檢測的精度。

3 實驗結果與分析






4 結束語