王 華 張燕超 吳 波 翟象平 魏明強
1江蘇省特種設備安全監督檢驗研究院 南京 210036 2南京航空航天大學計算機科學與技術學院 南京 211106
起重機械作為我國國民經濟建設中的重要基礎設施,在重大工程建設和重大戰略規劃的落實上均發揮了重要的支撐作用。由于其廣泛分布在各種工業生產場所,長期處于高強度、重載荷的運行狀態,工作環境復雜多變,特別是高溫高壓的易爆環境或強風高濕的露天沿海場所,且作業人員長期暴露在其周圍,導致安全事故頻發,給人民群眾的生命財產安全構成極大威脅[1]。
為了降低起重機設備發生事故風險,起重機損傷檢測已是特種設備的監管的一項重要工作。起重機的損傷主要包含銹蝕、斷裂、裂紋等[2],本文只關注起重機的銹蝕損傷檢測工作。
起重機損傷檢測的主流方法為人工檢測,這種方式勞動強度大,高空作業存在危險性,且成本昂貴、誤檢率高、效率低下。為了解決上述問題,自動化的表面缺陷檢測法逐步引入到了實際應用中。與人工檢測方法相比,基于計算機視覺的檢測方法具有高魯棒性、高效率等特點[3-5]。
目前,基于計算機視覺的缺陷檢測方法可分為傳統檢測方法和深度學習檢測方法2類。傳統檢測方法依賴手工設計的特征提取算子[6-8],針對特定情境的缺陷進行檢測,無法適用于復雜的場景變化,魯棒性較差。深度學習方法則利用卷積深網絡層[9,10]從輸入的大量缺陷數據中抽象出高維特征,通過多次迭代訓練檢測缺陷。與傳統檢測算法相比,深度學習方法對缺陷特征描述更貼近真實情況,魯棒性較好,識別率高,在工業場景下得到了越來越廣泛的應用。
本文所涉及的起重機械金屬結構形狀復雜,包含箱形梁、工字梁、桁架等多維度平面和三維曲面檢測,不同表面光照差異大、反光強、對比度低、銹蝕形態多變(見圖1),同時也存在物體陰影、黑色背景物等與銹蝕顏色非常相似的特征干擾。另一方面,目前尚無起重機銹蝕損傷相關的公開數據集,收集大量的銹蝕損傷相關圖片并標注,特別是標注需要細粒度分割的損傷部位,需要耗費大量的人力,進一步加大了起重機銹蝕檢測的難度。

圖1 起重機表面銹蝕情況
為解決以上問題,本文提出了一種適應起重機械金屬結構復雜背景和復雜表面特征的小樣本銹蝕損傷檢測算法,旨在對起重機金屬結構表面銹蝕損傷進行自動識別。對基于Mixed Supervision For Surface-defect Detection(以下簡稱MSFSD)的小樣本缺陷檢測算法進行改進,在MSFSD的卷積層的Block中引入殘差結構,解決深層網絡中的梯度消失的問題,使網絡更易于收斂。實驗結果表明,在自建的起重機小樣本圖像銹蝕數據集上,改進后的MSFSD算法將模型的平均精度由94.2%提升到了98.1%,檢測性能得到了有效提升。
隨著深度學習技術的廣泛應用,缺陷檢測任務中出現了一批基于卷積神經網絡的深度學習方法。Shang L D等[11]提出了一種需要預處理的二階段鐵軌缺陷識別算法,首先使用Canny算子結合直線擬合算法定位鐵軌區域并裁剪原始圖像,然后使用Inception V3[12]網絡對缺陷圖片進行特征提取和分類。為了同時檢測多種損傷,Cha Y J等[13]提出一種基于Faster R-CNN的檢測方法。與傳統的卷積神經網絡相比在檢測速度上占有很大優勢。Huang Y B等[14]提出MCue Push Unet對磁瓦表面缺陷進行顯著性檢測。MCue模塊將原始圖像處理為三通道圖像輸入Unet,提升了預測結果的存儲效率。
雖然上述各種深度學習方法的缺陷檢測效果較好,但是需要大量的訓練樣本更新網絡參數,而在工業界實際應用場景中大部分缺陷樣本屬于少量樣本,無法滿足上述網絡需要大量樣本的訓練要求。
樣本增廣和數據合成是小樣本學習常用的2個手段。樣本擴增指的是對訓練樣本采用鏡像、旋轉、平移、裁剪、濾波、對比度調整等基礎的圖像處理方式增加樣本數量[15]。在缺陷檢測領域,數據合成是指將單獨缺陷部分疊加至無缺陷的負樣本上構成缺陷樣本。由于在圖像生成工作中展現出了卓越的性能,Goodfellow I等[16]、Zhang H D 等[17]和 Chou Y C等[18]也被應用到了缺陷樣本生成任務中。除了以上2種常見的解決方案,Karlinsky L等[19]提出一種基于代表性的度量學習 (Representative-Based Metric Learning,RepMet) 網絡,通過衡量輸入圖像的嵌入特征向量與目標類別表征向量之間的相似性實現小樣本的檢測識別。另外,優化網絡結構也可達到減少訓練樣本的目的。Bo?i? J等[20]設計了一個融合分類和分割的多任務缺陷檢測網絡MSFSD,2個分支共享Backbone提取的特征,在分割網絡中輸入圖像的每個像素都被看作訓練樣本進行訓練,故該方式大大增加了有效樣本數量。在不進行預訓練的情況下,在KolektorSDD數據集上,整個網絡能夠僅利用33張帶有分割標簽的缺陷樣本實現有效訓練,并取得了平均精度(Average Precision,AP)100%的缺陷檢測效果。
鑒于MSFSD網絡在小樣本缺陷檢測上取得的顯著效果,本文通過將MSFSD二階段網絡由類似于VGGNet的結構提升到為類似于ResNet的殘差結構來實現起重機銹蝕檢測,提升其在起重機小樣本銹蝕損傷中的檢測性能。
MSFSD是一種二階段的小樣本的表面缺陷檢測網絡,具有精度高、訓練樣本少、無需預訓練、計算量小的特性,能在KolektorSDD數據集上僅用33張帶有分割標簽訓練樣本進行有效訓練,并取得了AP100%的缺陷檢測效果。
整個網絡分為分割網絡(Segmentation Network)和決策網絡(Decision Network)2個部分。其中,分割網絡提取圖片特征,輸出標記缺陷區域的二元分割圖;決策網絡對分割網絡得到的高維特征做進一步提取,最終輸出圖片中是否存在缺陷的判斷結果。具體網絡結構如圖2所示。

圖2 MSFSD算法原理及改進示意圖
在分割網絡中,輸入圖像經過多組卷積進行特征提取,每2個卷積組之間包含1個2h2的池化層,將特征尺寸壓縮至原來的1/2。分割網絡的前3層采用5h5的卷積核,而最后一層采用15h15卷積核。大尺寸的卷積核能有效增加模型的感受野,適合檢測高分辨率的輸入圖像。分割網絡會對缺陷圖片進行逐像素定位,使用像素級的Loss有效地將每個像素視為一個單獨的訓練樣本,從而增加訓練樣本的有效數量,防止模型出現過擬合現象。因此,為了有效應對小樣本檢測問題,可提高輸入圖片的分辨率以豐富模型的樣本數。
分割網絡的輸出為2個分支,1個分支通過1h1的卷積層將1 024個通道的特征圖壓縮為1個通道,得到1張只有原圖尺寸1/8大小的分割圖;另一個分支則直接輸出1 024維的特征圖。
隨后將這2個分支輸入決策網絡,并級聯起來使用卷積操作進一步提取豐富特征,最終得到1個32通道的特征圖。將該特征圖分別經過全局最大值池化和全局平均池化轉化為2個32維的向量,同時上一階段分割網絡輸出的分割圖也經過全局最大值池化和全局平均池化成2個標量值。將這66個值級聯起來作為最終提取的特征,再送入全連接層得到1個標量,使用Sigmoid激活函數將該標量轉成0~1范圍內的數值表示缺陷出現的可能性,靠近0表示沒有缺陷,靠近1表示有缺陷。
MSFSD的分割網絡輸出的預測圖片分辨率是輸入圖片分辨率的1/8,只能預測出缺陷的大致位置與輪廓。MSFSD更關注的是圖像是否含有缺陷,而不是缺陷的具體大小,這種方式能夠滿足很多工業實際場景要求,也讓MSFSD對標注的精度沒有較高的要求,極大地減少了標注的工作量,有利于數據集的構建。
VGGNet是深度卷積神經網絡,其結構非常簡潔,通過反復堆疊3h3的小型卷積核和2h2的最大池化層,在當時取得了較好的性能,引起了廣泛的關注。然而,VGGNet不能很好地擴展網絡深度,隨著層數不斷加深會出現深層網絡梯度消失現象,導致分類預測性能的下降。
ResNet的提出成功地解決了上述問題,ResNet使用了一種殘差結構解決了深層網絡中的梯度消失問題,使得網絡更易于收斂,突破了VGGNet不能擴展到更深層次的限制。借助這些優勢ResNet在ImageNet數據集上取得了比VGGNet更高的性能,在當前很多場景下基于殘差結構的ResNet已經代替VGGNet成為計算機視覺領域中的基礎特征提取網絡。
RepVGG[21]在VGGNet的基礎上結合了ResNet網絡的優勢對VGGNet加以改進,在VGGNet的Block中加入Identity和Conv1h1殘差分支,使RepVGG-B2在ImageNet上的準確率比VGG16提升了6.57%。
圖3a為原始的ResNet網絡結構,該網絡中包含Conv1h1和Identity的殘差結構,正是這些殘差結構解決了深層網絡中的梯度消失問題,使得網絡更加易于收斂。圖3b為RepVGG訓練階段的網絡結構,整個網絡的主體結構和ResNet網絡類似,均包含了殘差結構。2個網絡中的主要差異為:1)ResNet中的殘差塊跨越了多層,而RepVGG沒有;2)RepVGG包含2種殘差結構,在Stride為2對特征圖下采樣的Block中僅包含一個Conv1h1殘差分支,而在特征圖尺寸不變的Block中同時包含Conv1h1和Identity殘差分支。由于殘差結構具有多個分支,相當于給網絡增加了多條梯度流動的路徑,能更好地處理網絡深層的梯度消失問題。訓練1個RepVGG結構的網絡,相當于同時訓練了多個網絡,這種類似模型集成的思想在眾多的模型競賽中被廣泛使用,有效地提升了模型的性能。

圖3 RepVGG卷積層部分結構圖
在MSFSD中的分割和決策網絡都采用類似于VGGNet的Plain結構,借鑒RepVGG的思想,本文通過引入多分支結構對MSFSD進行改進,其結構如圖4所示,在每個卷積層的Block中引入了Conv1h1和Identity殘差結構分支,與RepVGG不同的是,實驗中發現使用Maxpool2h2的方式對特征圖進行下采樣比使用卷積步長為2的下采樣方式更優,原因是Maxpool能在下采樣過程中更有效地保留小而重要的細節,更有利于小目標的特征提取。另外,發現在決策網絡最后一層保持原來的Plain結構效果會更好,故對除該層以外的其他每個卷積層的Block使用上面的殘差結構,其具體改進如圖2中的紅色虛線框所示,通過在MSFSD的卷積層中引入Conv1h1和Identity殘差結構分支有效地提升MSFSD的損傷檢測性能。

圖4 改進后的MSFSD卷積層部分結構圖
由于目前沒有公開的起重機銹蝕損傷圖片數據集,本文采用現場拍攝的起重機銹蝕損傷照片作為正樣本,不含銹蝕損傷的起重機表面圖片為負樣本。該數據集圖片包含起重機不同部位的銹蝕特征,銹蝕大小與銹蝕程度不一。
數據集圖片統一像素大小為768h1 000,對于帶有銹蝕損傷的正樣本圖像,需要使用Labelme軟件進行分割標注。起重機銹蝕損傷通常伴隨著起重機表面涂層破損,銹蝕部位往往會呈現黑色或紅棕色,且銹蝕表面較為粗糙。按照該經驗標注結果如圖5所示。其中圖5a為原始的銹蝕圖片,圖5b為最終的標簽圖片,銹蝕區域用白色標注,其像素值為255,背景區域用黑色標注,其像素值為0。在完成所有圖像數據的標注工作后,將數據集劃分為訓練集64張,其中正樣本21張,負樣本43張;驗證集80張,其中正負樣本各40張。只有訓練集中的21張正樣本需要做分割標注,驗證集中的正樣本只需進行簡單的類別標注,所有負樣本都無需標注,且分割標簽也無需精細標注,極大地降低了標注難度,減少了標注成本。

圖5 起重機銹蝕損傷情況
本文所涉及的二階段網絡分為分割網絡和決策網絡。其中,分割網絡采用逐像素的二元交叉熵損失函數,決策網絡采用交叉熵損失函數。
為了使二階段網絡實現端到端的學習,MSFSD融合了2種Loss,允許進行聯合訓練。

式中:Lseg和Lcls為分割網絡和決策網絡的Loss;δ為超參數,用來調節決策網絡的Loss比重,在本實驗中δ被設為0.1。
由于決策網絡依賴于分割網絡提取的特征,故在訓練時需要一個已經相對穩定的分割網絡。因此,在訓練的前期階段加大分割網絡訓練的比重,在訓練中期逐漸減少分割網絡比重同時增加決策網絡的比重,形成一個動態平衡的過程。式(2)中λ為混合因子,用來平衡2個網絡在訓練過程中Loss的比重,這里的n為當前已訓練的Epoch次數,Total_Epoch表示設定的整個訓練的Epoch次數。在訓練的開始階段λ值較大,代表此時網絡會著重關注分割部分的訓練。隨著已訓練次數n的增加,決策網絡的Loss所占比重也會增加,此時會逐漸關注決策網絡的訓練。通過這種方式可實現二階段網絡端到端的訓練。
為了對所提方法進行合理評估,所有模型均在Ubu ntu18.04+Python3.6.9+Pytorch1.6.0環境下訓練和測試,使用顯存為11 G的GeForce GTX 1080Ti顯卡進行加速。
本文實驗訓練使用SGD算法對網絡進行迭代優化。訓練輸入批次為1,決策網絡的Loss權重為0.1,學習率為0.2,迭代次數為120次。選取平均精度AP來衡量算法檢測精度。
3.4.1 對比實驗
為了驗證對MSFSD模型改進的有效性,本文在自建的起重機表面銹蝕損傷的小樣本數據集上進行訓練和評估。本文實驗模型沒有經過預訓練,所有參數都采用Xavier方式隨機初始化。為了進一步排除由于隨機初始化因素對性能比對的影響,本實驗將隨機數種固定為1 337,使得模型在同樣的初始化參數下對模型改進前后的結果進行比較。
本文實驗選擇了Chen W Y等[22]提出的Baseline、Baseline ++小樣本學習模型和U-Net語義分割模型與改進后的MSFSD性能進行對比。其中,Baseline、Baseline++是小樣本學習領域具有較高影響力的模型,雖然采用基于預訓練加微調的學習方法,但性能卻超越了元學習、度量學習等復雜的小樣本學習方法中眾多先進的模型,開啟了該領域對小樣本學習方法的重新思考。本文實驗在這2個模型中使用ResNet12作為主干特征提取網絡,在自建的起重機表面銹蝕損傷小樣本數據集上訓練驗證。U-Net模型具有非常出色的語義分割性能,在醫療領域得到了廣泛的應用。使用U-Net能充分利用自建的起重機表面銹蝕損傷小樣本數據集的分割標簽對網絡進行訓練。本文實驗將改進后的MSFSD的分割網絡替換為U-Net,其他部分不變,以此作性能對比,模型均選取了測試最好結果。表1為各模型的性能對比數據,Baseline、Baseline ++在自建起重機表面銹蝕數據集下AP分別為62.4%和72.6%,由于這2個小樣本學習模型只能利用分類標簽進行訓練,故在少量樣本下分類性能較低。使用U-Net作為分割網絡的AP為71.1%,這說明U-Net在訓練集樣本較少的情況下無法學習到損傷的有效特征,無法達到很好的性能,與改進后的MSFSD有較大差距。
3.4.2 消融實驗
為了驗證本文提出方法的效果,在MSFSD基礎上逐步加入了Identity和Conv1h1殘差分支進行消融實驗,結果如表1所示。在MSFSD基線上檢測出的AP為94.2%,此時FP(被錯誤的標記為正樣本的負樣本數)=7,FN(被錯誤的標記為負樣本的正樣本數)=1。在加入Identity殘差分支后AP提升了2%,達到了96.2%,此時FP=3,FN=5。在同時加入了Identity和Conv1h1殘差分支后AP提升了3.9%,達到了98.1%,此時FP=2,FN=1。實驗結果表明改進后的算法能夠有效提升起重機銹蝕損傷的檢測性能。

表1 起重機銹蝕損傷檢測實驗結果對比
3.4.3 MSFSD算法改進前后的Loss及AP曲線
圖6為MSFSD算法改進前后的Loss及AP曲線,其中,Seg Loss為分割網絡損失曲線,Dec Loss為決策網絡損失曲線,Total Loss為二階段網絡總損失曲線。圖6a為MSFSD基線Loss及AP曲線,圖6b為改進后的MSFSD Loss及AP曲線,可以看到,改進后的MSFSD二階段網絡總損失收斂速度更快,Loss曲線更平滑,模型收斂后AP曲線更接近于1.0。

圖6 改進前后的MSFSD算法Loss及AP曲線
3.4.4 MSFSD改進算法預測結果分析
圖7為模型檢測正確的樣本,圖中每張圖片的左邊為輸入的圖片,右邊為分割網絡輸出的分割圖,分割圖中高亮部分代表輸入圖片中相應部位有較高的概率含有銹蝕損傷,分割圖上Output后面的數值代表決策網絡預測輸入圖片是否含有銹蝕的概率。圖7a是模型預測正確的正樣本,此時決策網絡輸出的概率值都較大,模型輸出的分割圖中高亮處對應了輸入圖片的銹蝕部位。圖7b是模型預測正確的負樣本,此時決策網絡輸出的概率值都較小,模型輸出的分割圖中無明顯高亮部位。另外,從圖7b中看到一些圖片中存在物體的陰影與銹蝕顏色比較接近,但模型未將物體的陰影誤預測為銹蝕,說明模型對物體的陰影有較強抵干擾能力。


圖7 模型檢測正確的樣本
為了進一步檢驗模型的抗干擾能力,本文實驗在驗證集中加入了一些干擾性很強的難例樣本。圖8展示了模型檢測出錯的樣本,圖8a是模型誤將負樣本分類成了正樣本,該輸入圖片中包含了黑色的鋼架,此時模型輸出的概率值為0.908 53,模型輸出的分割圖中黑色鋼架對應的位置被高亮了,模型誤認為這里包含銹蝕損傷。其原因是該輸入圖片中黑色鋼架結構與起重機銹蝕損傷的顏色非常相似,模型不能從語義的角度去理解和區分這2種特征,故模型錯誤地認為該圖片中包含了銹蝕損傷。圖8b是模型誤將正樣本分類成了負樣本,此時模型輸出的概率值為0.112 97,原因是該樣本中包含的銹蝕損傷面積較小,模型的卷積核都較大,小目標在特征提取過程中容易丟失,故圖中的銹蝕損傷沒有被檢測到。

圖8 模型檢測出錯的樣本
本文采用二階段網絡MSFSD的改進算法對起重機銹蝕損傷進行檢測,設計了高效的檢測系統。在MSFSD模型基礎上通過在MSFSD每個卷積層的Block中引入了Conv1h1和Identity殘差結構分支提升了MSFSD的檢測性能。最終使改進后的模型在自建起重機銹蝕損傷檢測中測數據集上AP達到了98.1%,較基線算法提升了3.9%。本實驗數據集中的樣本都是在自然環境下對起重機各個部位復雜表面進行采集,對光照、相機等沒有特別的限制,在小樣本數據集下取得了較高的精度,故算法可進一步應用到其他工業檢測領域。