程國建,卞晨亮
(西安石油大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710065)
隨著工業(yè)智能化時(shí)代到來,市場(chǎng)需求不斷進(jìn)化,傳統(tǒng)的鋼鐵制造業(yè)也難以幸免于難,受到強(qiáng)烈的沖擊。為適應(yīng)這種變化,國內(nèi)企業(yè)開始研究布局鋼材生產(chǎn)線的表面質(zhì)量檢測(cè)與自動(dòng)處理。將深度學(xué)習(xí)技術(shù)應(yīng)用到機(jī)器視覺領(lǐng)域如安全監(jiān)控、自動(dòng)駕駛[1]已經(jīng)成為生產(chǎn)企業(yè)及科研人員重點(diǎn)關(guān)注的方向。東北大學(xué)宋老師團(tuán)隊(duì)提出融合多層級(jí)特征的弱監(jiān)督鋼板表面缺陷檢測(cè)算法[2],其中引入殘差網(wǎng)絡(luò)提高了檢測(cè)的效果。文獻(xiàn)[3,4]使用Faster R-CNN檢測(cè)鋼材缺陷,對(duì)比傳統(tǒng)的方法有一定的提升。文獻(xiàn)[5]基于SVM算法實(shí)現(xiàn)缺陷識(shí)別系統(tǒng),具有一定的局限性。文獻(xiàn)[6]提出基于機(jī)器視覺的產(chǎn)品表面檢測(cè)算法,結(jié)合傳統(tǒng)算法和深度學(xué)習(xí)進(jìn)行了描述。文獻(xiàn)[7]利用深度學(xué)習(xí)實(shí)現(xiàn)鋼板表面檢測(cè)與字符識(shí)別。文獻(xiàn)[8]使用YOLOv3算法,并優(yōu)化了損失函數(shù),提升了檢測(cè)的速度。本文中采用深度學(xué)習(xí)方法對(duì)鋼材缺陷檢測(cè)[9]采用YOLOv5作為基礎(chǔ)骨架,改進(jìn)其網(wǎng)絡(luò)架構(gòu),并引入注意力機(jī)制降低了算法的誤差,進(jìn)而提高算法的精度。
YOLO的含義是“你只需看一次(you only look once)”,其版本已從V1到目前的V5版。YOLO模型為單階段的網(wǎng)絡(luò)結(jié)構(gòu),計(jì)算出候選區(qū)域的同時(shí)進(jìn)行分類任務(wù)和位置的優(yōu)化,提高了檢測(cè)速度和資源利用率。YOLOv5模型的第一特點(diǎn)是提供了4種不同深度的網(wǎng)絡(luò)結(jié)構(gòu),可以根據(jù)任務(wù)的需求不同進(jìn)行選擇。使用了CSPDarknet53作為基本網(wǎng)絡(luò),主要由Focus模塊、CSP模塊、CBL模塊構(gòu)成,F(xiàn)ocus模塊構(gòu)成,主要包括切片操作和卷積層(Conv),其中CBL模塊由卷積層(Conv)、批歸一化層(BN)和Leaky Relu激活函數(shù)組成。YOLOv5中設(shè)計(jì)了兩種CSP模塊,一種CSP1_X結(jié)構(gòu)使用于Backbone主干網(wǎng)絡(luò),另一種CSP2_X結(jié)構(gòu)嵌入到Neck模塊中,通過跨級(jí)拼接與通道整合增強(qiáng)CNN的學(xué)習(xí)能力。在邊界框的預(yù)測(cè)方式進(jìn)行學(xué)習(xí)自動(dòng)錨定框,在不斷訓(xùn)練過程中優(yōu)化邊界框,并在不同層次的特征圖上進(jìn)行預(yù)測(cè),采用PANet的思想對(duì)不同層次的特征進(jìn)行融合。
YOLO系列模型檢測(cè)的基礎(chǔ)是在輸入圖像上獲取一系列w和h固定的初始候選框,候選框選用對(duì)模型的性能至關(guān)重要。YOLOv5模型每次訓(xùn)練時(shí)自適應(yīng)的計(jì)算不同訓(xùn)練集中的最佳錨框值,一定程度上增加訓(xùn)練的時(shí)間,增加了網(wǎng)絡(luò)中的參數(shù)。本文使用K-means++聚類方法對(duì)鋼材缺陷數(shù)據(jù)集進(jìn)行聚類得到合適的候選框大小,K-means++優(yōu)化了初始聚類中心的選取,其具體流程為,開始隨機(jī)選取一個(gè)中心點(diǎn),其次選取離中心點(diǎn)最遠(yuǎn)的點(diǎn)作為第二個(gè)中心點(diǎn),第三個(gè)中心點(diǎn)是離其前兩個(gè)類中心點(diǎn)間距最大的一個(gè)點(diǎn),根據(jù)這個(gè)選取方式,直到選取k個(gè)原始類簇中心點(diǎn)。選擇好初始的中心點(diǎn)之后,再采用原K-means算法進(jìn)行聚類。
聚類效果用輪廓系數(shù)來評(píng)估,計(jì)算公式如式(1)所示
(1)
式中:bi為樣本i到其它各個(gè)族群的所有樣本距離的平均值中的最小值,ai為樣本i到本身簇的距離平均值。
經(jīng)過優(yōu)化和計(jì)算,最終獲得候選區(qū)域參數(shù)分別為(61,122),(75,238),(155,156),(194,273),(99,543),(419,131),(431,239),(226,509),(541,569)。
EfficientNet[10]是谷歌2019最新的神經(jīng)網(wǎng)絡(luò),介紹了如何利用復(fù)合系數(shù)統(tǒng)一縮放模型的所有維度,達(dá)到精度最高效率最高,符合系數(shù)包括w,d,r,其中,w表示卷積核大小,決定了感受野大?。籨表示神經(jīng)網(wǎng)絡(luò)的深度;r表示分辨率大小。
本實(shí)驗(yàn)中采用遷移學(xué)習(xí),使用EfficientNet-B7在鋼材數(shù)據(jù)集上訓(xùn)練一個(gè)二分類網(wǎng)絡(luò),雖然目標(biāo)檢測(cè)模型在7個(gè)不同的類(6個(gè)不同類型的鋼材缺陷和一個(gè)無缺陷的類)上訓(xùn)練,但我們只在兩個(gè)類(有缺陷的鋼材和無缺陷的鋼材)上訓(xùn)練分類網(wǎng)絡(luò)。類似于一種建模方法,簡(jiǎn)化了分類問題,因?yàn)?分類網(wǎng)絡(luò)比7分類網(wǎng)絡(luò)容易得多。雖然YOLOv5的分類預(yù)測(cè)非常好,如果將它與另一個(gè)更強(qiáng)大的網(wǎng)絡(luò)的分類混合在一起,即我們?nèi)诤蟉OLOv5和EfficientNet-B7這兩個(gè)網(wǎng)絡(luò)時(shí),性能可以進(jìn)一步提高。設(shè)置一個(gè)高閾值和一個(gè)低閾值。然后我們要檢查每個(gè)分類預(yù)測(cè)。如果概率小于低閾值,我們將預(yù)測(cè)設(shè)置為“無缺陷”。如果分類預(yù)測(cè)在低閾值和高閾值之間,我們得到一個(gè)“Better Confidence”的預(yù)測(cè),該預(yù)測(cè)具有EfficientNet-B7的置信度。如果分類預(yù)測(cè)高于高閾值,意味著網(wǎng)絡(luò)是高度自信的,不需要做什么操作,具體算法如算法1所示。
算法1:輔助分類算法偽代碼
輸入: low_thr,high_thr,Result
輸出: Result
(1) If result[target] Result[‘prediction’]=‘7 1 0 0 1 1’ (2) Else if low_thr Result[‘prediction’]+=‘7 {result[target]} 0 0 1 1’ (3) Else if result[target]>high_thr: Result[‘prediction’]=Result[‘prediction’] (4) Else: ValueError (‘Prediction must be from[0-1]’) 大多數(shù)輕量級(jí)的神經(jīng)網(wǎng)絡(luò)模型[12]一般都采用組卷積或深度可分離卷積來減少卷積過程中產(chǎn)生的計(jì)算量,但是1×1卷積的應(yīng)用也會(huì)在卷積過程中占用較多的計(jì)算資源,Shuffle Net提出了通道混洗方法用于緩解這一問題。經(jīng)過組卷積之后,采用通道混洗能實(shí)現(xiàn)組間信息的流動(dòng),有助于提高模型特征的表達(dá)能力。通道混洗的本質(zhì)在于不增加計(jì)算復(fù)雜度的情況下,可以使組卷積通道之間信息流通?;谶@些方面考慮,對(duì)普通卷積為3×3和1×1的模塊做出調(diào)整,更換為組卷積和通道混洗模塊,進(jìn)而對(duì)模型壓縮。 針對(duì)YOLOv5中的跳層連接加入自注意力機(jī)制(self-attention,SA),可以保持信息的有效性,在一定程度上減少梯度消失的問題。SA機(jī)制是獲得長(zhǎng)距離依賴的一種方式,可以動(dòng)態(tài)地生成不同連接的權(quán)重。將前一層的輸出稱為g,以及來自于擴(kuò)展路徑連接稱為x。x和g經(jīng)過1×1的卷積,將兩者都變成相同數(shù)量的通道數(shù),并不改變其特征圖的大小,經(jīng)過逐像素相加并通過激活函數(shù)(ReLU),之后通過另一1×1的卷積和激活函數(shù)(Sigmoid),得到一個(gè)0到1的重要度分?jǐn)?shù),分配給特征圖的每個(gè)部分,最后用這個(gè)注意力圖乘以x,產(chǎn)生注意力塊的最終結(jié)果。 將池化注意力模塊(PBAM)[13]添加到Y(jié)OLOv5 網(wǎng)絡(luò)的主干網(wǎng)絡(luò)中,用來提取到更多的特征信息。PBAM 模塊先采用兩個(gè)并列的池化操作進(jìn)行特征圖的壓縮獲取到特征圖的關(guān)鍵點(diǎn),然后對(duì)其進(jìn)行擴(kuò)張操作,PBAM引入了殘差結(jié)構(gòu)用來融合前后的特征信息,并可以有效保證網(wǎng)絡(luò)較深情況下梯度不會(huì)消失或者過大,最后將兩個(gè)分支的結(jié)果進(jìn)行逐像素相加并與輸入特征圖融合傳入下一層。該模塊輸入特征圖和輸出特征圖大小一致,PBAM模塊可以嵌入到任意網(wǎng)絡(luò)結(jié)構(gòu)中,圖1為YOLOv5-MD的算法框架。 圖像檢測(cè)任務(wù)中模型的預(yù)測(cè)包括邊界框矩形的坐標(biāo),對(duì)象的類別標(biāo)簽以及反映模型在此預(yù)測(cè)中的信心程度的置信度得分(概率從0到1)。其中有一個(gè)非常重要的階段,需要生成區(qū)域建議(可能的邊界框),以及過濾一些建議區(qū)域。經(jīng)常使用的算法有非極大值抑制(NMS),Soft-NMS。NMS指如果框與框的交并比(intersection over union,IoU)高于指定的閾值參數(shù),則這些框會(huì)被過濾為一個(gè)框。Soft-NMS不會(huì)完全移除IoU高于閾值的框,而是根據(jù)IoU的值降低它們的置信度分?jǐn)?shù),相比于NMS,可以過濾掉較少的邊界框。 NMS和soft-NMS都排除某些框,而WBF[14]使用所有的框,可以有效解決模型無法正確預(yù)測(cè)所有框的情況。如圖2所示,細(xì)黑色線條表示不同的預(yù)測(cè)框,粗黑色線條表示真實(shí)的標(biāo)注位置。NMS/soft-NMS保留一個(gè)不準(zhǔn)確的框,而WBF使用所有的預(yù)測(cè)框進(jìn)行融合。 輸入圖像經(jīng)過YOLOv5網(wǎng)絡(luò)中的骨干網(wǎng)絡(luò)提取特征信息后預(yù)測(cè)輸出結(jié)果。為了提高模型性能,YOLOv5采用PANet[15]結(jié)構(gòu)進(jìn)行路徑增強(qiáng)和聚合,增加了自底向上的路徑,從而縮短了低層與頂層特征之間的信息路徑,使低層信息更容易傳播。 針對(duì)高層特征語義豐富但是空間信息較弱,低層特征語義較弱但空間信息豐富的特點(diǎn),引入改進(jìn)的PANet結(jié)構(gòu),如圖3所示,這種結(jié)構(gòu)能夠在較少計(jì)算量的前提下融合高層和低層的特征信息。該模塊去除掉 PANet結(jié)構(gòu)中一些邊,并使用殘差的方式添加一條額外的邊,對(duì)粗分辨率的特征圖,對(duì)特征層的較高層特征執(zhí)行2倍上采樣操作,使特征圖的大小增加一倍;較低層特征采用橫向連接,通過1×1卷積改變通道數(shù),最后將上采樣和卷積后的特征圖的對(duì)應(yīng)元素相加,重復(fù)該過程,直到生成最精細(xì)的分辨率特征圖。輸入圖像經(jīng)過骨干網(wǎng)絡(luò)得到各層級(jí)的特征圖后,采用多尺度特征融合獲得特征圖大小分別為152、76、38和19的特征圖,并根據(jù)得到的4個(gè)特征圖繼續(xù)進(jìn)行預(yù)測(cè)。 YOLOv5-MD模型訓(xùn)練包括訓(xùn)練6類的目標(biāo)檢測(cè)模型和2分類的EfficientNet-B7網(wǎng)絡(luò)模型,具體實(shí)驗(yàn)流程如圖4所示。首先是對(duì)鋼材缺陷圖像進(jìn)行篩選和標(biāo)注,制作數(shù)據(jù)集并隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,其次對(duì)數(shù)據(jù)訓(xùn)練樣本進(jìn)行預(yù)處理(其中包括處理圖像為模型輸入圖像的尺寸,以及封裝樣本和標(biāo)簽等);然后利用設(shè)計(jì)的算法提取圖像的特征、計(jì)算損失函數(shù)以及反向傳播優(yōu)化,隨后在驗(yàn)證集上測(cè)試本次迭代結(jié)果的平均準(zhǔn)確率,如果準(zhǔn)確率大于之前保存模型的準(zhǔn)確率,使用本次迭代結(jié)果保存的參數(shù)信息替換之前保存的模型參數(shù)信息;之后判斷迭代次數(shù)是否大于實(shí)驗(yàn)設(shè)置的最大迭代次數(shù),如果小于最大迭代次數(shù),模型則繼續(xù)訓(xùn)練,反之,模型訓(xùn)練完成;最后,模型訓(xùn)練完成后使用測(cè)試集對(duì)模型效果進(jìn)行測(cè)試,以及在測(cè)試圖像上畫出最終的識(shí)別結(jié)果,即鋼材缺陷的位置和所屬的類別。 本次實(shí)驗(yàn)所使用的數(shù)據(jù)集是東北大學(xué)宋克臣老師團(tuán)隊(duì)制作的鋼材表面缺陷數(shù)據(jù)集和經(jīng)過網(wǎng)絡(luò)爬蟲得到的數(shù)據(jù),共有5800張多類的鋼材圖像。模型訓(xùn)練過程中將數(shù)據(jù)集分為3個(gè)部分:訓(xùn)練集(4200個(gè)采樣)、驗(yàn)證集(1000個(gè)采樣)和測(cè)試集(600個(gè)采樣)。經(jīng)過labelme標(biāo)注工具對(duì)未標(biāo)注的數(shù)據(jù)注釋完成后,數(shù)據(jù)集共有crazing(裂紋)、inclusion(夾雜)、patches(斑塊)、scratches(劃痕)、pitted_surface(麻點(diǎn))、rolled-in_scale(氧化鐵皮壓入)6類缺陷類型。為了使每類樣本數(shù)量均衡,采用數(shù)據(jù)增強(qiáng)[16]方式將較少類別的目標(biāo)區(qū)域精準(zhǔn)增強(qiáng)。以“patches”為例數(shù)據(jù)增強(qiáng)前后對(duì)比如圖5所示。 對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理后。每類樣本數(shù)目見表1。 表1 數(shù)據(jù)增強(qiáng)后每類樣本的數(shù)量 采用處理后的數(shù)據(jù)集分別對(duì)YOLOv5算法和YOLOv5-MD算法進(jìn)行訓(xùn)練,本次采用Pytorch框架和OpenCV庫函數(shù),CPU為Inteli7-9750H,GPU為NVIDIA GTX 1080,顯存16 G,采用CUDA 10.0與CUDNN V7.5并結(jié)合Python語言實(shí)現(xiàn)了算法內(nèi)容。訓(xùn)練參數(shù)設(shè)置迭代次數(shù)為300,批處量大小為8,基礎(chǔ)學(xué)習(xí)率初始為0.001,其中動(dòng)量和權(quán)重衰減分別配置0.9和0.0005,訓(xùn)練過程中優(yōu)化器為Adam,YOLOv5算法和YOLOv5-MD算法的損失函數(shù)值的變化曲線如圖6所示。 從圖6可以觀察到訓(xùn)練迭代到280次左右損失曲線逐漸處于平穩(wěn)且無明顯震蕩,YOLOv5-MD模型最終損失值明顯低于YOLOv5,基本穩(wěn)定在0.03左右,模型收斂。 對(duì)比消融實(shí)驗(yàn)分為6個(gè)組別,分別為融合EfficientNet網(wǎng)絡(luò)、Shuffle Conv、PBAM(pooling block attention module)、改進(jìn)的PANet結(jié)構(gòu)以及K-means++這5個(gè)方向進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果見表2。Lab1、Lab2、Lab3表明,通過采用融合Efficient網(wǎng)絡(luò)、改進(jìn)PAnet方法以及增加池化注意力機(jī)制在不同程度上提高了鋼材缺陷分類的準(zhǔn)確率,其中加入注意力機(jī)制的實(shí)驗(yàn)準(zhǔn)確率明顯提高了7%左右。Lab1、Lab5表明,通過使用Shuffle Conv卷積方法減少了模型的復(fù)雜度,縮短了單幀圖像的處理時(shí)間,進(jìn)而提高了檢測(cè)的實(shí)時(shí)性;Lab2、Lab3、Lab4、Lab5、Lab6表明將4處方向融合,可以在保證召回率的前提下,提高檢測(cè)的準(zhǔn)確率。 表2 不同改進(jìn)模塊的對(duì)比實(shí)驗(yàn) 模型訓(xùn)練結(jié)束后,將Faster RCNN、SSD、YOLOv4、YOLOv5作為對(duì)比模型,在測(cè)試集上采用精確率(Precision)和召回率(Recall)分別對(duì)4個(gè)模型進(jìn)行測(cè)試,表3為4種算法分別對(duì)鋼材缺陷數(shù)據(jù)進(jìn)行檢測(cè)的結(jié)果。 表3 5種模型進(jìn)行鋼材缺陷檢測(cè)的綜合性能對(duì)比 分析表3可知,改進(jìn)的YOLOv5-MD算法復(fù)雜度沒有明顯提高,模型的單幀檢測(cè)速度與YOLOv5,YOLOv4基本一致,但比SSD和Faster RCNN分別快了1.7倍和7.1倍,其精確率比其它4個(gè)算法都高,比Faster RCNN提高了10%左右。 依據(jù)Precision和Recall可以對(duì)每類目標(biāo)的平均精準(zhǔn)度(AP)和整體的平均檢測(cè)精度(mAP)進(jìn)行計(jì)算。如表4所示,優(yōu)化后的模型YOLOv5-MD整體的mAP比YOLOv5提升了3.3%,模型的魯棒性有了一定的提升。分析表4中每種類別的AP值,經(jīng)過數(shù)據(jù)增強(qiáng)和改進(jìn)模型每種類別的AP值都有一定的提升。 表4 YOLOv5與YOLOv5-MD的mAP對(duì)比 YOLOv5-MD置信度分?jǐn)?shù)和F1分?jǐn)?shù)、精確率、召回率的關(guān)系如圖7所示,從圖中可以看出,當(dāng)置信度分?jǐn)?shù)為0.4左右時(shí),所有類的平均F1分?jǐn)?shù)、精確率和召回率都可以達(dá)到85%以上,可以達(dá)到比較好的效果。 鋼材缺陷圖像的實(shí)際檢測(cè)結(jié)果如圖8所示,鋼材缺陷檢測(cè)位置信息和類別信息在圖中都有標(biāo)示。 本文對(duì)于目標(biāo)檢測(cè)算法YOLOv5進(jìn)行改進(jìn),提出了一種鋼材表面缺陷檢測(cè)的算法YOLOv5-MD。 (1)針對(duì)YOLOv5自適應(yīng)的計(jì)算不同訓(xùn)練集中的最佳錨框值,在一定程度上增加訓(xùn)練的時(shí)間,增加了網(wǎng)絡(luò)中的參數(shù),本文利用Kmeans++聚類算法得到相應(yīng)的錨框值。 (2)YOLOv5-MD通過替換大小為3×3和1×1的卷積模塊為組卷積和通道混洗模塊以及融合EfficientNet-B7輔助網(wǎng)絡(luò),并對(duì)YOLOv5的PANet結(jié)構(gòu)進(jìn)行修改,利用跨級(jí)連接和同級(jí)跳躍連接這樣高效的多尺度特征融合方式,可以在降低圖像的特征損失,增加了檢測(cè)的準(zhǔn)確性。 (3)引入自注意機(jī)制SA和PBAM使算法收斂速度加快,并使用加權(quán)邊界框融合可以過濾掉較少的邊界框,使用一個(gè)公式來調(diào)整坐標(biāo)和置信度分?jǐn)?shù),在一定程度上增加了鋼材缺陷檢測(cè)的準(zhǔn)確性。 運(yùn)用本文提出的YOLOv5-MD檢測(cè)方法,能夠有效地檢測(cè)和正確識(shí)別鋼材缺陷類型,該模型的mAP(平均檢測(cè)精度)可以達(dá)到97.2%。后續(xù)將進(jìn)一步研究超輕快的模型,使算法需要更小的內(nèi)存。2.3 Shuffle卷積與注意力模塊
2.4 加權(quán)邊界框融合(WBF)
2.5 改進(jìn)的PANet結(jié)構(gòu)
3 實(shí)驗(yàn)流程與數(shù)據(jù)分析
3.1 實(shí)驗(yàn)流程
3.2 實(shí)驗(yàn)數(shù)據(jù)集及其預(yù)處理
3.3 模型結(jié)果對(duì)比分析
4 結(jié)束語