李勝永,張智華,王勝男,王 孟
(1.江蘇航運職業(yè)技術學院 交通工程系,江蘇 南通 226000;2.南通大學 理學院,江蘇 南通 226000)
完整的缺陷檢測任務旨在實現(xiàn)識別圖像中每個缺陷的特定類別和精確位置,這使得在實踐中該任務仍然具有挑戰(zhàn)性。缺陷檢測是分類和定位結(jié)合的聯(lián)合任務,導致相關方法往往難以兼顧兩者的準確性。對金屬缺陷的檢查是保證例如高鐵軌道、輪船船體、汽車發(fā)動機等幾乎所有交通工具安全運行的關鍵步驟。然而,該過程通常依賴人工或者昂貴的精密設備,具有不可靠、不經(jīng)濟且耗時等特點。為了替換手工作業(yè),筆者希望設計一種利用計算機視覺技術自動檢查鋼材表面缺陷的輕便設備。
在此研究領域,專家們將缺陷檢測分為兩類:缺陷分類和缺陷定位,前者解決金屬是否包含某類缺陷,而后者進一步解決某類缺陷的具體位置。以往的自動缺陷檢測(ADI)有兩個常見的問題:一個是手工特征依賴人類經(jīng)驗[1],這導致缺陷類別判別誤差極大;另一個則是定位偏差較大,僅僅提供缺陷的大致位置[3]。深度學習技術克服了傳統(tǒng)ADI方法的缺陷,并在許多視覺任務中取得了顯著成果,它可以對位置注釋的樣本進行訓練以獲得精確的位置信息?;趥鹘y(tǒng)方法和深度學習的ADI技術,一些研究者進行了大量的工作?;趥鹘y(tǒng)技術,K.C.SONG等[1]改進了LBP以抵抗噪聲,并采用NNC和SVM對缺陷進行分類;S.GHORAI等[5]基于一組小波特征,使用SVM進行缺陷分類。與這兩種方法不同,M.X.CHU等[6]采用了通用特征提取器并增強了SVM。然而這些工作集中于缺陷分類,這在復雜的缺陷圖像中作用甚微。因此,后續(xù)工作集中于缺陷定位,文獻[3]和文獻[4]中的缺陷檢測器首先執(zhí)行0-1分類,判斷是否屬于缺陷類,然后根據(jù)邊緣檢測找到缺陷的位置,進而執(zhí)行不同的分類方法確定該位置屬于何類缺陷。致力于提升該算法的效率,文獻[7]去掉最后的分類方法以提升速度,但它只能識別是否缺陷而不能識別其屬于何種缺陷。
在深度學習的方法上,基于CNN的特征提取通過大量學習構(gòu)建所有輸入數(shù)據(jù)的特征表示,以克服傳統(tǒng)方法上的粗略估計缺點?;贑NN的檢測器分為兩類:基于回歸的一階段檢測器和基于區(qū)域提議的兩階段檢測器。前者專注于速度的提升[8],而后者強調(diào)目標的準確,但兩者均基于預定義的anchor框以獲取預測類別框。而最近,H.LAW等[10]探尋基于特征點的去anchor目標檢測方法,但是其并沒有顯示出特別的優(yōu)勢且增加了運算成本。實踐表明[12],這類方法會產(chǎn)生較多的誤檢。一些研究者也探尋將基于anchor的通用檢測器運用于缺陷檢測。P.H.CHEN等[13]證明,如Overfeat[14]一般的物體探測器可以通過某種方式轉(zhuǎn)移到缺陷檢測器上。而R.X.REN等[15]使用順序CNN提取特征可以提高缺陷檢測的分類準確性。另外,V.NATARAJAN等[16]采用更深層的CNN(VGG19)用于進行缺陷分類。最近,Y.HE等[17]提供了一種新穎的基于anchor的目標檢測器用于缺陷檢測,并公布一種可以用于評估金屬缺陷探測性能的公開數(shù)據(jù)集,其提出的缺陷檢測器作為了該數(shù)據(jù)集的基線。
致力于保障缺陷檢測中高準確率和高效率的目標,筆者提出一種基于特征細化融合的金屬缺陷檢測器,以提供強大的特征分類和目標精確定位的能力。其主要的貢獻在于:①設計了一種基于殘差模塊的特征細化骨干網(wǎng)絡,以提供良好的基礎特征;②吸收基于anchor框的一階段檢測器高效率和兩階段檢測器高精確的優(yōu)勢,提出一種沙漏型特征融合模塊,為檢測器的后處理階段提供細微的特征;③設計一種特征細化模塊,以加強圖像的上下文聯(lián)系;④在一階段檢測器的后處理部分添加批量歸一化以提升網(wǎng)絡泛化能力;⑤實現(xiàn)在移動端設備上端到端的自動檢測,并提供良好的性能。
在提出的檢測器中,首先由專門設計的骨干網(wǎng)絡提取圖像中的基礎特征,接著添加兩個殘差塊Res6和Res7繼續(xù)卷積計算,然后經(jīng)過沙漏模塊提取目標的細微特征,并解決來自不同尺度特征的融合問題,再在沙漏模塊的每部分后使用金字塔特征細化模塊加強上下文聯(lián)系,最后經(jīng)過一階段檢測器的后處理實現(xiàn)缺陷的定位和分類。經(jīng)過詳細的測試,在4個檢測頭的所有卷積層后添加批量歸一化有助于網(wǎng)絡的泛化并增強檢測性能。在測試階段可以將批量歸一化層合并至卷積層,使運算成本不會增加。網(wǎng)絡結(jié)構(gòu)如圖1。
圖1 金屬缺損檢測網(wǎng)絡結(jié)構(gòu)
在檢測網(wǎng)絡中,骨干網(wǎng)絡為后處理提供特征支持。常用的骨干網(wǎng)絡是VGG16[18]或殘差網(wǎng)絡ResNet[19]系列以及它們的改進版本。通常情況下,非常深的殘差網(wǎng)絡如ResNet101[19]和ResNet101[20]等具有更好的特征提取能力,但會帶來巨大的計算量,導致其在實際工業(yè)應用中常常被拋棄。ResNet成功的原因是殘差塊能夠減少特征傳遞時的損失,并且使用批量歸一化帶來較好的泛化能力。然而,較淺的殘差結(jié)構(gòu)通常不會顯示出比其它網(wǎng)絡更好的能力,如ResNet18和ResNet34,這是因為越深的網(wǎng)絡,特征損失越明顯。但是,淺層的殘差結(jié)構(gòu)能夠大幅提高網(wǎng)絡的運行效率。筆者使用淺層的殘差網(wǎng)絡,并對其進行重新設計,在保障運算速度的同時提高網(wǎng)絡特征提取能力,能夠?qū)崿F(xiàn)比其它類似骨干網(wǎng)絡更好的效果。
傳統(tǒng)殘差網(wǎng)絡在首個卷積層中使用7×7的卷積核且輸出的特征圖被池化層迅速下采樣為1/2,此為一個巨大的詬病,會嚴重損失小物體的細節(jié)特征。這樣設計的原因可能是為后面各層減輕計算負擔。為此,在ResNet的頭網(wǎng)絡部分,7×7的大卷積核用3個3×3的小卷積核卷積層堆疊取代。這3個小卷積層輸出的特征圖并不會經(jīng)過池化層進行下采樣。圖2是重新設計的Refine-ResNet18和原始ResNet18骨干網(wǎng)絡結(jié)構(gòu)對比。ResNet34的設計與ResNet18類似,圖2中數(shù)字分別表示卷積核大小、輸出通道和輸出特征圖大小。這種設計是經(jīng)過實驗結(jié)果得到的結(jié)論,也更適合針對的目標。
傳統(tǒng)的單階段檢測器如SSD和YOLOv3通常從骨干網(wǎng)絡深淺不同的卷積層輸出特征圖中按照特征點提取anchor框,以適應不同尺度的目標特征。然而此種方法太過于粗糙,各層提取的anchor框單獨分支并沒有將不同細節(jié)的特征進行融合,導致了單階段檢測器面對小物體時常常表現(xiàn)失敗。而兩階段檢測器通過生成目標提議候選框,然后分類回歸。兩步級聯(lián)回歸目標參數(shù)和兩階段特征描述對象使得它們在小目標中占據(jù)優(yōu)勢。在缺損識別定位領域,常有不易察覺或類間差異較小的缺損難以區(qū)分。所以,借助計算機視覺自動識別缺損需要捕捉極細微的特征。為此,吸收一階段和兩階段檢測器的優(yōu)點,克服兩者的缺點,筆者設計了一種沙漏型特征模塊,用以融合不同尺度的特征并為后續(xù)的檢測頭處理階段消除大量負樣本。沙漏型特征模塊使用在骨干網(wǎng)絡與檢測頭之間,具體的結(jié)構(gòu)如圖1。
原始的SSD在骨干網(wǎng)絡VGG后添加了太多額外的卷積層繼續(xù)縮小特征圖,最終得到1×1的特征圖,然而太小的特征圖被認為是多余的[21]。在本設計中,骨干網(wǎng)絡最小的輸出大小為5×5。為了結(jié)合不同尺度的特征,添加4個反卷積層,然后輸出的特征圖與對應的骨干網(wǎng)絡卷積塊輸出的特征圖相融合,并將其輸入到檢測頭進行后處理。這有利于檢測小物體。從圖1中可以看出,一系列的反卷積后,Res4模塊的輸出融合了其它3個殘差塊Res5、Res6和Res7輸出的所有尺度特征,這對目標識別的貢獻最大。
圖像中的上下文信息常常是識別物體的重要依據(jù),比如不能在天然的木材上識別到混合物。為此,筆者設計了一種金字塔特征細化模塊用以加強網(wǎng)絡的上下文聯(lián)系。該模塊的結(jié)構(gòu)如圖3。
由圖1和圖3可以看出,當每個反卷積層與對應的殘差塊進行特征融合后輸入到金字塔特征細化模塊中,而金字塔細化模塊并不會下采樣輸出的特征圖,只是采用簡單的3個不同核大小的并行卷積層進行計算后繼續(xù)融合。具體的原因是不同大小的卷積核具有不同大小的實際感受野,實現(xiàn)從不同大小的區(qū)域中感受相互之間的關聯(lián)性。
實驗分為3個部分:①通過消融實驗驗證骨干網(wǎng)絡、沙漏型特征模塊和特征融合模塊的具體作用;②比較與基線以及其它先進方法的效能,以證明提出算法的高效;③將訓練好的深度學習模型部署于嵌入式移動端,通過FPGA測試模型的實際應用能力。
NEU-DET數(shù)據(jù)集由Y.HE等[17]于2019年公布,其由2012年提出的缺陷分類數(shù)據(jù)集改版而來,提供6種類型缺陷圖像和基于CNN的基線模型。6種金屬缺陷分別為開裂、夾雜物、補丁、表面凹陷、表皮氧化以及劃痕(圖4)。訓練集共包含1 500張圖像,這些圖像中包含的6類目標框最少的有245個,最多的有261個,分布較為平衡。另外的298張圖像用于測試。為了發(fā)揮CNN的強大性能,在訓練階段采用了包括隨機翻轉(zhuǎn)、裁剪等技術的隨機數(shù)據(jù)增強策略。
圖4 NEU-DET數(shù)據(jù)集中的類別實例
為了更好的對比,采用了常用的評估方法。通過平均精度(Pave)來評估實驗的結(jié)果,并記錄每一類別的準確率P(Prcision)和召回率R(Recall)。這些指標的計算方法如式(1)、式(2)。另外,以模型測試時的速度FPS(每秒運行的幀數(shù))為單位來記錄。
(1)
(2)
式中:TP、FP代表真陽性和假陽性的數(shù)量,而FN表示假陰性的數(shù)量。
首先,基于提出的骨干網(wǎng)絡,使用ImageNet數(shù)據(jù)集進行分類預訓練,這是漫長的過程。收斂良好的骨干網(wǎng)絡模型用于微調(diào)提出的檢測器。由于為檢測頭部分添加了BN,特征細化融合缺損檢測器能夠以較大的基礎學習率進行微調(diào)訓練,學習率取值為0.01。為了在訓練過程中動態(tài)調(diào)節(jié)學習率,通過多步數(shù)衰減方式衰減3次后減小為0.000 01,衰減步數(shù)為每1萬次迭代后衰減1/10。另外,批量大小為32,權(quán)重衰減參數(shù)為0.000 1,動量為0.9,最大迭代次數(shù)為50 000 次,使用隨機梯度下降進行優(yōu)化。所有的訓練以及PC測試均基于搭配兩塊GTX 1080的caffe[22]框架完成。
整個系列的消融實驗分別以改進的骨干網(wǎng)絡、沙漏型特征模塊、特征融合模塊以及為檢測頭部分添加批量歸一化作為單獨變量進行。其中原始的Res18骨干網(wǎng)絡使用前人提供的ImageNet預訓練模型進行微調(diào)訓練,而檢測頭部分未添加批量歸一化時只能使用0.001的基礎學習率訓練。試驗結(jié)果(置信閾值為0.01,IoU閾值為0.5)如表1。
4組實驗均使用單一變量,其中無沙漏特征模塊在試驗中只去除Conv8、反卷積層及其融合模塊,只在對應的卷積層后使用特征細化模塊。從表1可以看出,無沙漏特征模塊對結(jié)果的影響最大,PmA值下降了13.77%,這表明該模塊對于提升缺損識別準確度具有巨大貢獻。而對ResNet頭部的改進對類別1和類別5的P值提升較多,這說明ResNet的頭部細化模塊能夠增強檢測器在難檢類別上的精度。而在檢測頭使用批量歸一化能夠提升網(wǎng)絡的整體性能。金字塔特征細化模塊的使用對結(jié)果并無明顯直觀的表現(xiàn),但在實際應用中能夠有效避免誤檢的發(fā)生。
表1 消融實驗結(jié)果
經(jīng)過仔細的參數(shù)優(yōu)化,特征細化融合金屬缺陷檢測器在和NEU-DET基線網(wǎng)絡及其它先進檢測器的具體性能比較中顯示出較強的優(yōu)勢。具體的結(jié)果如表2。表2中統(tǒng)計了置信閾值為0.01、IoU閾值為0.5情況下所有類別的PA值、總體的PmA值以及PC端GPU的測試速度。
表2 與先進網(wǎng)絡的測試結(jié)果比較
如表2,基于優(yōu)化后的Res18骨干網(wǎng)絡的特征細化缺陷檢測器能后實現(xiàn)與基線網(wǎng)絡相當?shù)腜mA,但測試速度更加具有優(yōu)勢。而Refine-Res34為骨干的網(wǎng)絡對比其它先進檢測器,包括一階段和除Cascade R-CNN之外的所有兩階段網(wǎng)絡均能實現(xiàn)領先,但是Cascade R-CNN實在過于緩慢,缺乏在工業(yè)生產(chǎn)中利用的實際價值。而在與anchor free網(wǎng)絡的對比中,基于Saccade骨干網(wǎng)絡的ConnerNet檢測器的PmA值能夠超過提出的Res18網(wǎng)絡,但其在速度上處于劣勢。當使用優(yōu)化后的Res34骨干網(wǎng)絡時,能夠?qū)崿F(xiàn)PmA值的完勝,并在速度上與其它網(wǎng)絡相當,超過實時檢測器YOLOv3。當忽略速度,使用多尺度測試時,所提出的網(wǎng)絡能夠超越所有的先進網(wǎng)絡。值得一提的是,筆者提出的金屬缺陷識別網(wǎng)絡僅僅使用淺層的Res34便能夠?qū)崿F(xiàn)眾多使用ResNet101為骨干網(wǎng)絡的通用檢測器。6個類別的P-R曲線(圖5)和每類PA值直方圖(圖6)可直觀地顯示筆者提出金屬缺陷檢測器的優(yōu)勢。
圖5 P-R曲線
從圖5中可以發(fā)現(xiàn),筆者提出的基于Refine-Res34骨干網(wǎng)絡的金屬缺陷檢測器在多尺度測試時能夠在P-R曲線中與先進的兩階段檢測器Cascade R-CNN保持相當?shù)淖邉荩鴥?yōu)于非常先進的單階段檢測器YOLOv3和RefineDet。
圖6的直方圖可以明顯看出,筆者提出的網(wǎng)絡在每類PA值上均能保持較為先進的結(jié)果。圖7給出了一些鋼材缺損識別的實例并與基線網(wǎng)絡進行對比。相比而言,筆者所提網(wǎng)絡的故障檢測更少,如圖7(a)~(c)可以有效減少漏檢,圖7(d)~(e)中減少重疊框和誤檢。這些故障檢測在人工經(jīng)驗中也屬于較難區(qū)分的范圍。
圖6 與先進網(wǎng)絡AP結(jié)果對比
圖7 基線網(wǎng)絡和所提方法的實際測試結(jié)果對比
基于良好的檢測模型,使用聯(lián)詠公司生產(chǎn)的NT9852X嵌入式平臺(圖8)實現(xiàn)基于實物的具體測試,其中NT9852X使用兩組FPGA實現(xiàn)CNN的運行。需要注意的是,移動端由于內(nèi)存和運算能力的限制,基于CNN的檢測器的計算量(Macc值)和參數(shù)量(Param)往往是衡量模型的重要基準。表3列舉了一些先進模型的計算量和參數(shù)量指標。由表3可以發(fā)現(xiàn),筆者提出模型的Macc值和參數(shù)量相比于一些大型網(wǎng)絡擁有較大的優(yōu)勢,而對于一些輕量級網(wǎng)絡Pelee來說,后者損失的準確率在實際工業(yè)生產(chǎn)中是不可承受的。
圖8 NT9852X嵌入式平臺
表3 一些先進網(wǎng)絡的計算量與參數(shù)值
在具體的測試過程中,首先將模型通過SDK編譯后植入嵌入式平臺。接著選用汽車部件鋼材,鋼材被人為地刻畫一些缺損信息用于測試嵌入式平臺。拍攝后的圖像用于測試,然后將結(jié)果輸出至計算機。具體的輸出結(jié)果如圖9。由圖9可以看出,筆者提出模型能夠?qū)崿F(xiàn)較為精準的測試。最后,筆者提出的模型在移動端Res18骨干網(wǎng)絡下能夠?qū)崿F(xiàn)10.5 FPS的速率。
圖9 嵌入式平臺實測
筆者以對交通安全十分重要的金屬材料的缺損檢測任務為出發(fā)點,基于CNN設計了一種可媲美兩階段網(wǎng)絡精度和一階段網(wǎng)絡速度的特征細化融合金屬缺損檢測器,實現(xiàn)對金屬缺陷的快速準確檢測。通過優(yōu)化后的骨干網(wǎng)絡、沙漏型特征模塊、特征細化模塊和檢測頭階段的批量歸一化策略相互配合得到優(yōu)秀的結(jié)果。通過公共數(shù)據(jù)集中的消融試驗和與先進網(wǎng)絡的對比,試驗結(jié)果均表明了筆者所提出網(wǎng)絡的有效性。最后,模型被部署在嵌入式平臺進行移動端測試,結(jié)果證明其能夠?qū)崿F(xiàn)良好的實踐性能。今后筆者將繼續(xù)完善算法,設計移動產(chǎn)品,豐富缺損數(shù)據(jù)類型,推動模型在汽車年檢、道路隨機車檢、軌道安全排查等領域的應用。