成霄翔,宋寶宇
(鞍鋼集團(tuán)北京研究院有限公司,北京 102211)
近年來,隨著機(jī)器視覺和深度學(xué)習(xí)技術(shù)的迅猛發(fā)展,機(jī)器代替人工的優(yōu)勢愈發(fā)凸顯,對基于深度學(xué)習(xí)的鋼鐵領(lǐng)域缺陷檢測的相關(guān)研究也愈發(fā)受到廣大科技人員的重視。對于缺陷檢測,不同于將其視為目標(biāo)分類任務(wù)來求解,提出了一種更實用的基于目標(biāo)檢測的問題求解算法。目標(biāo)檢測任務(wù)是找出圖像中所有感興趣的目標(biāo),確定其位置、大小以及類別信息,即不僅需要輸出圖片中物體的類別信息,還需要得到物體所在的位置信息。此外,由于目標(biāo)分類針對輸入圖片整體得到輸出,而目標(biāo)檢測能夠細(xì)化到圖片中的物體,因而目標(biāo)檢測對于輸入圖片中含有混合缺陷的情形仍然適用。
現(xiàn)有的目標(biāo)檢測算法大致可分為兩類:一是以R-CNN[1]系列為代表的兩階段算法,首先使用區(qū)域候選網(wǎng)絡(luò)產(chǎn)生候選區(qū)域,然后使用檢測網(wǎng)絡(luò)對候選區(qū)域做缺陷類別分類和位置定位回歸;另一類是以YOLO[2-3]為代表的一階段算法,僅通過卷積神經(jīng)網(wǎng)絡(luò)直接預(yù)測不同目標(biāo)的位置和類別,因其不需要經(jīng)過區(qū)域候選階段,相較于二階段檢測算法,速度更快,但檢測精度較低。結(jié)合實際工業(yè)應(yīng)用場景,在鋼鐵缺陷檢測任務(wù)中,對檢測速度的考量是衡量缺陷檢測效率的一個重要指標(biāo),因此YOLO系列算法更為適用。
然而,聚焦到鋼鐵缺陷檢測中,深度學(xué)習(xí)算法直接應(yīng)用到工業(yè)環(huán)境中需要一定的策略。由于工業(yè)檢測對實時性要求較高,因此適用于工業(yè)環(huán)境的算法設(shè)計必須考慮算法的高效性,這就需要研究網(wǎng)絡(luò)結(jié)構(gòu)輕量化策略來減少計算量提升效率。此外,由于鋼鐵領(lǐng)域生產(chǎn)線的全流程性,必須充分衡量當(dāng)前產(chǎn)線缺陷檢測的誤檢率和漏檢率,以最大化降低缺陷產(chǎn)品對后續(xù)工序的影響,因此針對缺陷數(shù)據(jù)集特點提升準(zhǔn)確率也是需要研究的方向。
綜上,本文針對鋼鐵領(lǐng)域的缺陷檢測任務(wù),研究YOLOv3[3]目標(biāo)檢測算法從輕量化設(shè)計和提升檢測精度兩個維度的自適應(yīng)改進(jìn),推動算法落地應(yīng)用。
YOLOv3總體上將目標(biāo)檢測任務(wù)視為回歸問題。其基本思路為將輸入圖像分成S×S大小的網(wǎng)格,每個單元格負(fù)責(zé)檢測中心點落在該單元格中的目標(biāo)。首先將輸入圖片經(jīng)過特定的骨干網(wǎng)絡(luò)提取特征,并結(jié)合多尺度預(yù)測策略,得到分別為原始圖片1/8、1/16、1/32分辨率的特征圖。之后分別在三種維度的特征圖上同時預(yù)測類別概率和定位概率。
YOLOv3網(wǎng)絡(luò)框架結(jié)構(gòu)如圖1所示,其中DBL由卷積層、批歸一化層和非線性激活函數(shù)Leaky ReLu組成。Res_n是指包含n個殘差單元的殘差塊,每個殘差單元包含2個DBL單元和一個快捷鏈路。Conv是指1×1卷積操作,Concat為張量拼接操作。
圖1 YOLOv3網(wǎng)絡(luò)框架結(jié)構(gòu)圖Fig.1 Structure Diagram of YOLOv3 Network Framework
YOLOv3使用自定義的Darknet53網(wǎng)絡(luò)提取圖像特征,并在此過程中進(jìn)行對原始圖片的下采樣。Darknet-53網(wǎng)絡(luò)由3×3和1×1卷積連接而成,共有53層卷積層,并借鑒了ResNet的殘差結(jié)構(gòu),使得網(wǎng)絡(luò)層數(shù)加深時不會出現(xiàn)梯度消失或者爆炸的現(xiàn)象。此外為了降低池化操作帶來的梯度負(fù)面影響,舍棄了池化操作,使用步長為2的卷積進(jìn)行下采樣。
YOLOv3 借鑒了特征金字塔(FPN)[4]的思想進(jìn)行多尺度預(yù)測,相對于之前版本,尤其提升了對小缺陷目標(biāo)的檢測性能。通過將經(jīng)過上采樣的深層特征和淺層特征進(jìn)行融合,對原始圖片分別進(jìn)行32、16和8倍下采樣,相應(yīng)得到原始圖片的1/32、1/16、1/8三種不同分辨率特征圖,從而實現(xiàn)對大、中、小目標(biāo)的檢測。
以將輸入圖片映射到1/32分辨率為例 (圖2),若輸入圖片為416×416,則經(jīng)過骨干網(wǎng)絡(luò)提取特征后,特征圖大小為13×13,這樣便實現(xiàn)了對輸入圖片劃分網(wǎng)格的操作。每一網(wǎng)格負(fù)責(zé)檢測中心點落在該網(wǎng)格內(nèi)的物體,并且輸出三個邊界框,每個網(wǎng)格的輸出分別對應(yīng)一個多維向量,包含邊框坐標(biāo)、邊框置信度和目標(biāo)類別概率。為了降低網(wǎng)絡(luò)訓(xùn)練的難度,YOLOv3根據(jù)數(shù)據(jù)集,通過K-均值聚類算法生成九個錨框,分別應(yīng)用于三個特征尺度,作為該尺度下預(yù)測框的先驗知識。在錨框的基礎(chǔ)上,模型對錨框進(jìn)行微調(diào),計算相對于錨框的偏移量得到預(yù)測框。
圖2 網(wǎng)絡(luò)輸出結(jié)果示意圖Fig.2 Schematic Diagram of Network Output Results
由于網(wǎng)絡(luò)對同一個目標(biāo)可能進(jìn)行多次檢測,通過非極大值抑制(NMS)算法消除重疊較大的冗余的預(yù)測框,得到最終輸出。其基本思想是,如果有多個預(yù)測框都對應(yīng)同一個物體,則只選出得分最高的預(yù)測框,丟棄剩余預(yù)測框。其算法流程如下:
(1)從所有候選框中選取置信度最高的預(yù)測邊界框B1作為基準(zhǔn),將所有和B1重疊程度超過指定閾值的其他邊界框移除;
(2)從所有候選框中選取第二置信度的邊界框B2作為基準(zhǔn),將所有和B2重疊程度超過指定閾值的其他邊界框移除;
(3)重復(fù)上述操作,直至所有預(yù)測框都被當(dāng)成基準(zhǔn)。
YOLOv3將目標(biāo)檢測定義為回歸問題,損失函數(shù)包含三部分目標(biāo)定位損失 ,目標(biāo)置信度損失和目標(biāo)分類損失。目標(biāo)定位損失衡量的是預(yù)測框和真實框之間偏移量。目標(biāo)置信度損失為預(yù)測框的類別概率和預(yù)測框的置信度相乘而來,不僅表征是否含有目標(biāo),還包含預(yù)測框與真實框的接近程度。目標(biāo)分類損失則用于衡量預(yù)測框的類別。
2.1.1 骨干網(wǎng)絡(luò)輕量化改進(jìn)
針對圖像進(jìn)行的卷積操作,標(biāo)準(zhǔn)卷積操作是將卷積核作用在所有的輸入通道上,而深度可分離卷積則是將標(biāo)準(zhǔn)卷積拆分為一個深度卷積和一個逐點卷積,通過將卷積核拆分成單通道的形式,在不改變輸入特征圖像的深度的情況下,對每一通道進(jìn)行卷積操作,這樣就得到了和輸入特征圖通道數(shù)一致的輸出特征圖。逐點卷積就是1×1卷積,進(jìn)一步對特征圖進(jìn)行升維和降維(圖3展示了深度可分離卷積的構(gòu)成)。因此深度可分離卷積的整體效果和一個標(biāo)準(zhǔn)卷積相差不多,但是能夠大大減少模型的參數(shù)量和計算量。
圖3 深度可分離卷積構(gòu)成圖Fig.3 Composition Diagram of In-depth Separable Convolution
原始的YOLOv3(YOLOv3-Darknet53)中采用了Darknet-53網(wǎng)絡(luò)來提取特征,該網(wǎng)絡(luò)為標(biāo)準(zhǔn)的卷積結(jié)構(gòu),卷積運算部分計算量大。針對上述問題,采用卷積操作為深度可分離卷積的MobileNet[5]網(wǎng)絡(luò)作為骨干網(wǎng)絡(luò)。
2.1.2 檢測尺度改進(jìn)
通常情況下,為了能夠檢測到不同尺度的目標(biāo)框,需要進(jìn)行多尺度預(yù)測,這也是原始YOLOv3通過多尺度檢測能夠提升對小缺陷目標(biāo)檢測能力的創(chuàng)新性所在。在進(jìn)行預(yù)測框的先驗計算時,K-means算法聚類得到9個錨框,按照面積大小均勻應(yīng)用到三個不同尺度的特征圖中。小分辨率的特征圖(13×13)由于其下采樣倍數(shù)大,感受野較大,因此分配大尺度的三個錨框 (16×90)、(156×198)、(373×326),用于檢測大缺陷目標(biāo)。中等分辨率和小分辨率的特征圖(26×26,52×52)則分別用于檢測中等大小的目標(biāo)和小缺陷目標(biāo),如表1所示。
表1 多尺度預(yù)測中錨框的初值(圖片大小為416×416×3)Table 1 Initial Value of Anchor Frame in Multi-scale Prediction (Picture Size 416×416×3)
對大多數(shù)數(shù)據(jù)任務(wù)而言,由于錨框使用從大型COCO數(shù)據(jù)集上聚類得到的三種尺度的錨框,適合檢測大、中、小三尺度的缺陷,錨框參數(shù)具有代表性,因此無需進(jìn)行更改。然而,對于鋼鐵領(lǐng)域的表面缺陷檢測,數(shù)據(jù)集的缺陷尺度并非如此分布。缺陷大小不能天然地分出層級,小缺陷目標(biāo)并不常見。
因此,為了進(jìn)一步減少模型參數(shù)量和計算量,將原始網(wǎng)絡(luò)中三個尺度預(yù)測減少為兩個尺度的預(yù)測,只進(jìn)行32倍和16倍下采樣,去除針對小缺陷目標(biāo)的檢測分支,得到針對中等缺陷目標(biāo)和大缺陷目標(biāo)的特征圖檢測分支。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Network Structure Diagram after Improvement
由于鋼鐵缺陷成因復(fù)雜且類型多樣,部分缺陷類別圖片呈現(xiàn)出背景干擾且無固定形狀的特征。此外,由于部分缺陷樣本類間差異較小,容易導(dǎo)致分類錯誤,為檢測增加了難度。針對這種類別錯檢的情況,引入對分類損失函數(shù)進(jìn)行類別加權(quán)的策略,通過加大對某種類別的懲罰來進(jìn)一步約束模型的訓(xùn)練過程,進(jìn)而提升檢測精度,緩解模型在目標(biāo)檢測中出現(xiàn)的漏檢問題。
對數(shù)據(jù)集中的缺陷類別,默認(rèn)類別的重要程度均相等。在損失函數(shù)中對類別加權(quán)則是將某一類別賦予更大的權(quán)重,如果該類出錯則損失函數(shù)增大更多,增加了誤判成本。
具體而言,YOLOv3的目標(biāo)分類損失lossclass中,默認(rèn)類別權(quán)重數(shù)組為:
其中,數(shù)組長度為數(shù)據(jù)集的缺陷類別數(shù)。如果第i類缺陷的檢測精度較低,且該類缺陷圖像上呈現(xiàn)出缺陷特征不明顯,與其他類別缺陷類間差異較小,則在類別權(quán)重數(shù)組中將該類缺陷的權(quán)重設(shè)為α(α>1),此時類別權(quán)重數(shù)組更新為:
之后重新開始訓(xùn)練網(wǎng)絡(luò)。
訓(xùn)練和測試所采用的數(shù)據(jù)集為東北大學(xué)表面缺陷檢測數(shù)據(jù)集(NEU-DET)[6]。 該數(shù)據(jù)集包含六種典型的熱軋帶鋼表面缺陷,分別為開裂(Crazing,Cr)、夾雜(Inclusion,In)、斑塊(Patches,Pa)、點蝕(Pitted Surface,PS)、氧化鐵皮壓入(Rolled-in Scale,RS)和劃痕(Scratches,Sc)。 每種缺陷圖像各有 300 張,將數(shù)據(jù)集按照8:1劃分,則訓(xùn)練集1 600張,驗證集200張。NEU-DET數(shù)據(jù)集部分圖片如圖5所示。
圖5 NEU-DET數(shù)據(jù)集部分圖片F(xiàn)ig.5 Some Pictures of Neu-det Data Set
在PaddlePaddle深度學(xué)習(xí)框架上進(jìn)行實驗,并在 Win10系統(tǒng) NVIDIA GTX 3080 GPU,11th Gen Intel(R)Core (TM)i9-11950H@2.60 GHz處理器的筆記本電腦中完成訓(xùn)練和測試。
3.3.1 輕量化改進(jìn)相關(guān)實驗及結(jié)果分析
對于輕量化改進(jìn),輕量化網(wǎng)絡(luò)應(yīng)在保證檢測精度的前提下,具有參數(shù)量少,計算量小,推理時間短的特點。其中參數(shù)量為模型所需要學(xué)習(xí)的參數(shù)總數(shù),計算量用浮點運算數(shù)(floating point operations,F(xiàn)LOPs)來衡量,表征算法的復(fù)雜度。推理時間是指模型處理一張圖片所需時間,根據(jù)推理時間也可得到模型的推理速度,即每秒內(nèi)可以處理的圖片數(shù)量。檢測精度用平均精確度均值 (mean Average Precision,mAP)來衡量,其計算公式如下:
式中,TP為被正確預(yù)測的正樣本;FP為被錯誤預(yù)測為正樣本的負(fù)樣本;FN為被錯誤預(yù)測為負(fù)樣本的正樣本;n為檢測類別數(shù);AP為各類的檢測精度。
輕量化改進(jìn)涉及到原始YOLOv3算法(YOLOv3-Darknet53),骨干網(wǎng)絡(luò)更換后的YOLOv3算法(YOLOv3-Mobilenetv3)以及更改檢測尺度的YOLOv3算法。
實驗表明,將骨干網(wǎng)絡(luò)從Darknet53更換為輕量級網(wǎng)絡(luò)Mobilenet,模型的檢測精度在千分位量級的誤差上沒有差異,但是后者的參數(shù)量、計算量以及推理時間均有所減小。輕量化改進(jìn)模型結(jié)果對比如表2所示,可以看出改進(jìn)算法對生產(chǎn)環(huán)境中的輕量化部署和實時檢測需求更為適用。
表2 輕量化改進(jìn)模型結(jié)果對比(圖片大小為416×416×3)Table 2 Comparison of Results of Lightweight Improved Model(Picture Size 416×416×3)
對檢測尺寸的更改是基于對數(shù)據(jù)集的分析,將原始的Pascal VOC數(shù)據(jù)集[7]和本實驗所用的NEUDET數(shù)據(jù)集分別采用K-Means算法聚類出9個錨框并進(jìn)行可視化,如圖6所示。
圖6 VOC數(shù)據(jù)集和NEU-DET數(shù)據(jù)集分布情況對比Fig.6 Comparison of Distribution between VOC Data Set and NEU-DET Data Set
Pascal VOC數(shù)據(jù)集聚類得到的錨框按照面積排列有大、中、小三個尺度,適合原始YOLOv3輸出三種分辨率下特征圖的多尺度檢測策略。而NEUDET數(shù)據(jù)集按照面積難以區(qū)分為三個尺度,且沒有過于狹小的缺陷。因此,相對于原始YOLOv3中的多尺度檢測檢測策略,將改進(jìn)后的YOLOv3算法檢測尺度調(diào)整為2。其和檢測尺度為3的YOLOv3算法對比見表2。改進(jìn)后的網(wǎng)絡(luò)模型更為輕量,且減少了由于數(shù)據(jù)集中部分目標(biāo)大小相近而導(dǎo)致的標(biāo)簽重寫現(xiàn)象[8],檢測精度有所提升。
3.3.2 檢測精度提升相關(guān)實驗及結(jié)果分析
統(tǒng)計各類別的檢測精度,類別權(quán)重對模型檢測精度的影響如表3所示。
表3 類別權(quán)重對模型檢測精度的影響(圖片大小為 416×416×3)Table 3 Comparison of Results of Lightweight Improved Model(Picture Size 416×416×3) %
由表3可以看出,開裂(Cr)類別的檢測精度是最低的。因此,將YOLOv3損失函數(shù)中的原始類別權(quán)重數(shù)組 [1.0,1.0,1.0,1.0,1.0,1.0]調(diào)整為[10.0,1.0,1.0,1.0,1.0,1.0],其中數(shù)組的第一個位置為開裂類別。實驗表明,由于該類別的分類權(quán)重遠(yuǎn)高于其他類別,所以在訓(xùn)練過程中加大了對該類別出錯的懲罰,對該類別的檢測精度有所提高。
3.3.3 部分檢測結(jié)果展示
使用改進(jìn)的YOLOv3算法得到的部分檢測結(jié)果圖如圖7所示。訓(xùn)練好的模型不僅能夠檢測到各類別缺陷,而且對于包含混合缺陷的圖像也能得到較好的檢測效果。
圖7 部分檢測結(jié)果圖片F(xiàn)ig.7 Pictures of Some Test Results
由圖7(c)可以看出,斑塊類別樣例包含斑塊和夾雜缺陷,可見本文模型能很好地檢測到混合缺陷,也進(jìn)一步驗證了相較于將缺陷檢測視為圖片分類而言,將其視為目標(biāo)檢測更能夠正確檢測圖片中存在混合缺陷的情形。
鋼鐵領(lǐng)域缺陷檢測是保證鋼鐵生產(chǎn)質(zhì)量的重要環(huán)節(jié),通過目標(biāo)檢測算法來得到缺陷的類別和信息具有重要意義。以東北大學(xué)帶鋼表面缺陷數(shù)據(jù)集(NEU-DET)為實驗對象,開展YOLOv3算法在實際生產(chǎn)環(huán)境中的自適應(yīng)改進(jìn),進(jìn)一步降低了模型的參數(shù)量和計算量,從提高單一類別的性能著手,提升了檢測精度。通過實驗驗證了改進(jìn)后的YOLOv3算法更能滿足實際工業(yè)場景中輕量化部署以及快速推理的需求。