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