萬 霞,趙為鑫,張文超,王晨曦,王明偉*,姜 瀚
(1.大連工業(yè)大學(xué) 機械工程與自動化學(xué)院,遼寧 大連 116034;2.科斯特數(shù)字化智能科技(深圳)有限公司,廣東 深圳 518101)
粉末冶金是將金屬粉末通過燒結(jié)后成型的工藝技術(shù)[1],廣泛應(yīng)用于地下管道運輸、石油化工、汽車醫(yī)療器械等領(lǐng)域的工件制造[2]。但粉末冶金制品在壓制成型的過程中,零件內(nèi)部壓應(yīng)力瞬間釋放可能造成表面出現(xiàn)裂紋、內(nèi)部發(fā)生孔隙等問題[3]。因此,零件缺陷檢測對于保證產(chǎn)品的質(zhì)量至關(guān)重要。傳統(tǒng)檢測主要以人工檢測為主,該方法檢測速度慢、準確性低,且容易受環(huán)境、人為因素干擾。
隨著計算機性能的提升和深度學(xué)習技術(shù)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)所帶來高效率和高精準度的優(yōu)勢,逐漸應(yīng)用于缺陷檢測中。目前目標檢測算法主要分為2 類,一類是根據(jù)候選區(qū)域提取目標類別和位置的二階段(two-stage)檢測算法,如R-CNN[4]、Faster R-CNN[5]、Mask R-CNN[6];第二類則是直接對目標物體進行回歸預(yù)測的單階段(onestage)檢測算法,解決了二階段檢測算法中先生成候選框后進行分類任務(wù)的繁瑣操作,其中主要包括SSD[7]、YOLO[8-10]等算法。翁玉尚等[11]等采用調(diào)整后的Mask R-CNN 檢測帶鋼表面缺陷,在去掉掩碼分支的同時,重新改進建議網(wǎng)絡(luò)錨框生成方法,盡管在mAP 上有所提升,但檢測速度僅為5.9 fps。王淑青等[12]對YOLOv5模型的輸入端采用多尺度訓(xùn)練,優(yōu)化邊界框的損失,并替換原有的激活函數(shù),有效提高太陽能電池片的表面缺陷檢測識別率。Teng 等[13]通過遷移學(xué)習和數(shù)據(jù)增強的方式,結(jié)合高分辨率和低分辨率圖像,提高YOLOv3檢測橋梁表面缺陷的效率。
本文以粉末冶金工件表面裂縫和孔洞作為檢測目標,針對缺陷檢測中表面裂縫復(fù)雜、缺陷大小位置多變、缺陷細小等問題,提出了一種基于注意力機制的輕量化金屬缺陷檢測YOLOv5 檢測算法,提高對復(fù)雜環(huán)境下的識別能力。本文算法實現(xiàn)了對表面缺陷的精確、高效檢測,滿足實際的生產(chǎn)要求,具體做法如下。
1)針對生產(chǎn)線要求更高的檢測速度以及便于部署在移動終端,采用輕量化卷積網(wǎng)絡(luò)替換原有的特征提取網(wǎng)絡(luò),在獲得更多特征信息的同時,減少參數(shù)量,大幅度提升檢測速度。
2)針對孔洞等細小特征丟失的問題,將坐標注意力機制(Coordinate Attention,CA)嵌入特征融合模塊中,引入通道信息和空間信息,提升算法對小目標的檢測能力,改善遠距離小尺度目標檢測的魯棒性。
3)為獲得更符合金屬缺陷的先驗框,提升網(wǎng)絡(luò)檢測能力,采用K-means++算法對數(shù)據(jù)集錨框重新聚類,生成符合數(shù)據(jù)集的anchor 值。
4)針對數(shù)據(jù)集正負樣本不均衡,損失函數(shù)發(fā)生劇烈震蕩的問題,重新定義分類懲罰指標,調(diào)整樣本損失權(quán)重,加快收斂速度與模型的識別精度。
YOLOv5[14]是在YOLO[8]系列算法新階段的目標檢測算法,其檢測速度和精度有很大提升,并在目標檢測任務(wù)上取得廣泛的應(yīng)用。盡管YOLOv5 在檢測上有很好的效果,但由于單階段檢測是將分類問題轉(zhuǎn)化為回歸問題,實現(xiàn)缺陷的定位和分類,在提高檢測速度的同時,對于細小、模糊的缺陷檢測精度仍有待提升。
其中,粉末冶金表面的缺陷形態(tài)多變,裂縫長度大小不同,在現(xiàn)場光照條件較差的情況下,特征提取時易受到周邊環(huán)境的影響。其中,孔洞缺陷小、目標位置較為隨機,導(dǎo)致原始的算法在對極小目標檢測時,容易出現(xiàn)漏檢、誤檢的現(xiàn)象。YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)引出3 個尺度的特征圖,通過深層的卷積網(wǎng)絡(luò)進行特征提取,期間會產(chǎn)生大量的特征圖和參數(shù),不利于網(wǎng)絡(luò)模型的部署和搭建。金屬缺陷數(shù)據(jù)集中的錨框尺寸差異較大,YOLOv5 原始的錨框不能很好匹配金屬缺陷,造成缺陷定位和分類的不準確。YOLOv5 的采用交叉熵損失函數(shù),預(yù)測框在水平或垂直方向優(yōu)化較為困難,影響模型的收斂速度和準確性。
針對上述問題,考慮到粉末冶金工件表面缺陷特點,本文從替換輕量級卷積、增加注意力機制、設(shè)計合適的先驗框及損失函數(shù)這4 個方面,對YOLOv5 算法進行改進,以實現(xiàn)該算法在實際生產(chǎn)中的應(yīng)用。
結(jié)合粉末冶金工件表面存在缺陷長度不一致、現(xiàn)場條件復(fù)雜、缺陷形態(tài)多變、要求更快的檢測速度等實際問題,在滿足表面缺陷檢測速度和精度的同時,便于部署的需求,本文在YOLOv5 的基礎(chǔ)上更換骨干網(wǎng)絡(luò),采用線性變換和普通卷積結(jié)合的方式生成更多的特征圖,并在特征提取后添加注意力機制,在特征融合時包含更多的細節(jié)信息,增強對小目標的檢測能力,使用K-means++算法聚類適合該數(shù)據(jù)集的先驗框,重新整合損失函數(shù)提高網(wǎng)絡(luò)的收斂速度和檢測的準確率,具體的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 改進的YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5 的Backbone 采用大量的卷積核組成卷積神經(jīng)網(wǎng)絡(luò),產(chǎn)生豐富甚至冗余的特征圖,保證對輸入數(shù)據(jù)有全面的理解。但同時也會產(chǎn)生大量的數(shù)據(jù),導(dǎo)致模型又大又慢,不利于模型的部署和應(yīng)用。GhostNet[15]通過普通卷積和線性變化生成更多的特征圖,使用GhostNet 網(wǎng)絡(luò)替換原有的骨干網(wǎng)絡(luò),在不改變特征圖尺寸大小的前提下,參數(shù)總量和計算復(fù)雜度均有很大程度地降低。
Ghost Bottleneck 如圖2 所示。首先,對于給定的圖像數(shù)據(jù)X∈Rc×h×w,通過卷積運算Y=X×f+b,得到Y(jié)′=X×f′,其中f′∈Rc×k×k×w為該層的卷積核。然后,對Y 采用Yij=Φi,j(Yi′),?i=1,…,m,j=1,…,s 的線性變化,得到更多的特征圖。式中,Yi是第i 個特征圖,Φi,j表示第i 個特征圖進行第j 個特征變換的線性變換函數(shù),Φi,s是用于保留原始特征圖的恒等映射。
圖2 Ghost Bottleneck 模塊
GhostNet 通過堆積Ghost bottleneck 模塊組成,利用全局平均池化和卷積層將特征圖轉(zhuǎn)化為特征向量進行最終分類,將原始模型轉(zhuǎn)化為更緊湊的模型,增強特征信息的同時降低參數(shù)量,提升了檢測效率和準確性。
YOLOv5 算法通過骨干網(wǎng)絡(luò)進行特征提取,并通過FPN 和PANet[16]進行特征融合完成對語義信息的提取,增加網(wǎng)絡(luò)的感受野,但通過多次深層次的卷積后,會導(dǎo)致小目標區(qū)域的特征信息丟失。通過引入注意力機制可以增強模型選擇特征,完成識別、分類任務(wù)。大部分注意力機制用于深度神經(jīng)網(wǎng)絡(luò)帶來很好的性能提升,但有些注意力機制會帶來額外的計算量。本文引入坐標注意力機制CA[17],將位置信息嵌入到通道信息中,獲得更大的區(qū)域信息同時避免引入額外的計算量。
CA 注意力機制的整體結(jié)構(gòu)如圖3 所示,將輸入的特征圖分為寬度和高度2 個方向分別進行全局平均池化,經(jīng)過卷積、標準化最后得到寬度和高度方向上帶有注意力權(quán)重的特征圖。其中,骨干網(wǎng)絡(luò)中的淺層網(wǎng)絡(luò)主要包含圖像的細節(jié)特征,這些細節(jié)特征經(jīng)過自底向上、自頂向下的方式進行特征融合,有利于小目標的檢測。同時,經(jīng)多層的卷積導(dǎo)致紋理信息和輪廓信息的丟失,不易提取有用的特征信息。因此,本文將CA 模塊嵌入骨干網(wǎng)絡(luò)特征提取后,通過注意力機制突出關(guān)鍵信息,屏蔽無用信息,再經(jīng)過特征融合模塊,完成對目標的檢測功能。
圖3 坐標注意力機制
先驗框的實際尺寸在很大程度上影響網(wǎng)絡(luò)模型的檢測精度。由于粉末冶金工件表面缺陷的尺寸、形狀存在很大差異,原始YOLOv5 基于VOC 數(shù)據(jù)集得到的先驗框尺寸并不能滿足該檢測的要求,且原始算法采用K-mean 算法生成anchor 值時,聚類中心易受初始值的影響。本文選擇K-means++[18]算法,對聚類中心重新計算,避免出現(xiàn)局部最優(yōu)解的問題,并生成9 組不同高寬比的anchor。該聚類結(jié)果見表1,算法生成的anchor尺寸更滿足數(shù)據(jù)集實際大小。
表1 anchor 聚類
YOLOv5s 將GIOU[19]作為損失函數(shù),在關(guān)注重疊區(qū)域的同時,也關(guān)注其他非重疊區(qū)域,但無法很好地衡量兩者之間的相對位置關(guān)系。預(yù)測框在水平或垂直方向優(yōu)化較為困難,導(dǎo)致其收斂速度較慢。本文考慮回歸之間的向量角度,在原有的分類損失Lc、置信度誤差Lcon和定位損失Lloc的基礎(chǔ)上,重新定義了懲罰指標,整合并得到新的損失函數(shù)SIOU[20],加快后期的收斂速度。SIOU 損失函數(shù)由4 個成本函數(shù)組成,分別是角度成本、距離成本、形狀成本和IOU 成本。最后,得到回歸損失函數(shù)的公式為
式中:LCLS是損失函數(shù)(focal loss),WCLS和WBOX分別為框和分類的損失權(quán)重。
實驗采用的硬件配置:CPU 為Intel(R)Xeon(R)W-2223,GPU 為NVIDIA RTX 4000,運行內(nèi)存16 G。網(wǎng)絡(luò)模型開發(fā)框架為Pytorch,Python 版本為3.8。為實現(xiàn)更好的訓(xùn)練效果,在訓(xùn)練過程中,batch_size 設(shè)置為16,采用Mosaic 數(shù)據(jù)增強方式,提高網(wǎng)絡(luò)泛化能力,初始學(xué)習率Ir0=0.01,權(quán)重衰減系數(shù)為0.000 5,學(xué)習動量設(shè)置為0.937,采用余弦退火策略更新學(xué)習率、SGD 函數(shù)優(yōu)化參數(shù),訓(xùn)練150 個epoch。
本文選用的是數(shù)據(jù)集為某公司生產(chǎn)的粉末冶金工件,該工件在燒結(jié)后出現(xiàn)裂縫、孔洞缺陷問題。通過對工件的缺陷采集,一共得到1 039 張缺陷圖像,其中孔洞(holes)共有213 張,裂縫(crack)共有826 張。按照訓(xùn)練集和測試集的比例為8∶2 劃分數(shù)據(jù)集,采用labelimg 軟件進行標記,格式為VOC 數(shù)據(jù)集,完成準備工作。圖4 為數(shù)據(jù)中部分樣本。
圖4 粉末冶金工件表面缺陷
本文采用精度(Precision,P)、召回率(Recall,R)和均值平均精度(mAP)評估算法的性能。其中,精確性用來描述檢測正樣本的比例,召回率描述檢測為正樣本占總正樣本的比例,mAP 為衡量多類別目標檢測中模型整體檢測精度的指標。計算公式為
式中:TP 表示將正類預(yù)測為正確,屬于正確檢測;FP表示將負類預(yù)測為正確,屬于誤檢;FN 表示為將正類檢測為錯誤,屬于漏檢。
為驗證GhostNet 網(wǎng)絡(luò)、坐標注意力機制、K-means++聚類改進方法對模型檢測效果的有效性,通過消融實驗對比,在相同的實驗設(shè)備和數(shù)據(jù)集下,運行5 組不同的網(wǎng)絡(luò)模型,選取mAP 作為實驗的評價指標,驗證各個改進點的實際優(yōu)化效果。實驗對比效果見表2。
表2 消融實驗
實驗以YOLOv5s 為基準,依次替換GhostNet 網(wǎng)絡(luò)、增加CA 注意力機制以及使用K-means++聚類后的檢測效果。其中通過序號1 和序號2 的對比,mAP從0.585 提上至0.594,提高了0.9 個百分點。結(jié)果表明,使用GhostNet 骨干網(wǎng)絡(luò)替換原有的Backbone 層后,對準確率的提升效果不大,但通過普通卷積和線性變化減少了參數(shù)量,使得骨干網(wǎng)絡(luò)輕量化,對一秒處理幀數(shù)(FPS)有明顯提升。序號3 和序號1 實驗對比顯示,增加CA 坐標注意力機制后,mAP 從0.585 提升至0.616,這表明使用注意力機制在充分利用通道信息和空間信息可以有效提高特征感知度,尤其是針對孔洞細小物體,檢測效果明顯提升。序號4 和序號1 實驗對比顯示,對錨框重新設(shè)計后使mAP 提升至0.602,表明重新計算數(shù)據(jù)集自身的anchor 值可以提升模型檢測精度。通過序號5 和序號1 的對比,mAP 由原來的0.585 提升至0.636,檢測速度為65 ms。兩者對比分析,優(yōu)化后的算法在原始算法的基礎(chǔ)上,減少了參數(shù)的計算量,對細小物體的檢測能力提升。雖然檢測速度和原來的算法相比,提升幅度較小,但檢測速度仍滿足生產(chǎn)線上的實時檢測,對金屬表面檢測實現(xiàn)較高的準確率,具有實際的應(yīng)用價值。
本文將改進后的YOLOv5 算法模型和現(xiàn)有的目標檢測模型,在相同環(huán)境和數(shù)據(jù)集下運行的對比分析,其中Faster R-CNN 二階段檢測算法;SSD、YOLOv3、v5 為一階段檢測算法。實驗結(jié)果采用各類缺陷的檢測精度、mAP和FPS 作為評價指標,具體實驗結(jié)果見表3。
表3 多種檢測算法結(jié)果對比
根據(jù)表3 可知,本文提出的算法在采集的數(shù)據(jù)集上的mAP 為0.636,比YOLOv5 提升了5.1 個百分點。相比于SSD、YOLO 系列算法,F(xiàn)aster R-CNN 作為雙階段檢測算法,通過特征提取生成預(yù)選框后再檢測目標物體,mAP 達到0.612。但這類算法計算量大,檢測速度僅為33 fps,檢測速度較慢。SSD 對于裂縫這種大物體的檢測效果較好,檢測速度上有優(yōu)勢,但孔洞這種細小物體檢測則表現(xiàn)不佳。YOLOv3 算法在該測試集上的mAP 為0.58,雖然較SSD 有提升,但效果不明顯,精度略有欠缺。綜上,本文提出的方法mAP 從0.585 上升至0.636,F(xiàn)PS 為65 ms,在保證速度的前提下檢測精度有明顯的提升,降低了漏檢率。
最后分別用原始的YOLOv5 算法和本文改進后的算法進行實時的粉末冶金工件表面缺陷檢測,如圖5所示,在正常光線下改進后的YOLOv5 算法的置信度為0.85,相較于改進前的0.72 提升了0.13,檢測精度明顯提升。由于工廠中光線較為復(fù)雜,且伴隨粉塵、灰塵、模糊的光照等問題,通過引入注意力機制可以對提取有用信息、壓制無效信息有很大幫助。對比發(fā)現(xiàn),光照模糊的條件下,原始算法出現(xiàn)漏檢,而改進后的算法表現(xiàn)效果良好,對光照不足環(huán)境下依舊有不錯的檢測能力。對于細小物體的檢測,在實時檢測時圖像容易模糊,原算法對這種情況漏檢情況較多,不能檢測出孔洞缺陷,但改進后的YOLOv5 算法在針對細小孔洞有明顯的提升。相比于改進前的YOLOv5 算法,在檢測精度、模型權(quán)重上都有明顯的提升,能夠?qū)崿F(xiàn)較高精度的同時不引入額外的計算量,便于部署和應(yīng)用。
圖5 不同場景的結(jié)果對比
為解決粉末冶金工件表面缺陷檢測問題,提高復(fù)雜工廠燈光環(huán)境下的表面瑕疵檢測的準確率和識別速度,本文提出一種基于改進YOLOv5s 的粉末冶金工件表面缺陷檢測算法。該模型采用線性變化的卷積網(wǎng)絡(luò)替換原有骨干網(wǎng)絡(luò),保證精度的同時減少數(shù)據(jù)量;在修改后的骨干網(wǎng)絡(luò)加入注意力模塊,加強網(wǎng)絡(luò)的特征提取能力;采用K-means++算法優(yōu)化先驗框,重新定義損失函數(shù)的懲罰機制,加快算法收斂速度、提高檢測精度。模型改進前后的實驗表明,在相同測試集下的mAP 由58.5%提升至63.6%,同時檢測速度達到65 ms,且在檢測精度和檢測速度取得了良好的平衡,在模糊、光照環(huán)境較差的情況下的檢測效果顯著提升。