













摘要:為了簡化查閱焊縫DCM(DICOM)圖像時調整窗位窗寬的步驟,提出了Adaptive-MINMAX(Adaptive Min-Max)算法。該算法處理的焊縫圖像有較高的可讀性,并基于該方法建立了一個焊縫缺陷數據集。隨后,對YOLOv8s(You Only" Look Once Version8-small)進行改進,提出了GU-YOLO(Global Upper Yolo)模型。通過更換主干網絡的卷積模塊為Upper Conv,在其輸出中增加了二次卷積結果,增強了網絡提取小目標特征的能力;設計了GAMDetect(Global Attention" Mechanism Detect)檢測頭部,在Detect模塊中添加GAM注意力機制,以突出目標并抑制背景信息。實驗結果顯示,GU-YOLO在自建的缺陷數據集上獲得的AP、AR、F1_score、mAP50指標分別提升了1.3百分點、13.9百分點、7.9百分點、15.3百分點,與其他相關模型相比,表現出較強的競爭力。
關鍵詞:機器視覺;DICOM;YOLOv8s;Adaptive-MINMAX;焊縫缺陷檢測
中圖分類號:TP391.41 文獻標志碼:A
0 引言(Introduction)
焊縫缺陷若不及時排查出來,將對鋼鐵產品的質量造成不良的影響。為有效檢測這些缺陷,研究者們探索了數學方法的應用。MA等[1]使用Gabor濾波器和提取焊縫特征點的方法定位缺陷位置。GOLODOV等[2]使用機器學習方法,對數字探測器陣列方法實時放射成像產生的射線照片進行精細調整,提高了圖像的可讀性。MELAKHSOU 等[3]基于概率密度的分析方法,準確提取缺陷的位置信息。
近幾年來,深度學習技術的迅猛發展也為焊縫缺陷的檢測提供了新的思路。LIU等[4]結合了ResNet(Residual" Network)和FPN(Feature Pyramid Network),引入了注意力機制和CIou 損失函數,有效提升了焊縫缺陷的檢測精度。ZHANG等[5]訓練了兩個CNN (Convolutional Neural Network)網絡,分別進行缺陷分類和檢測。NOWROTH等[6]使用DeepLabv3+對焊縫金屬顯微圖像進行語義分割,成功檢測出焊縫的輪廓。
查閱焊縫圖像時,需要調整窗位窗寬的值,在某些情況下,為了全面展示焊縫中的各種缺陷,往往需要調整多個窗位窗寬的值,并且同一種缺陷在不同的窗位窗寬下,可能有不同的表現形式,導致圖像難以用于缺陷檢測。為此,本文提出了Adaptive-MINMAX(Adaptive Min-Max)標準化算法處理DCM (DICOM: DigitalImaging and Communications in Medicine)圖像,獲得了穩定的圖像源。在此基礎上,進一步提出了GU-YOLO,它以YOLOv8s[7]為基準模型,通過卷積模塊以及添加注意力機制,使改進后的模型適用于焊縫缺陷的檢測,并在構建的焊縫缺陷數據集上驗證了改進的有效性。
1 圖像預處理(Imagepreprocessing)
X光可以拍攝到物體內部的缺陷,焊縫圖像通常使用X光拍攝,并以DCM文件格式進行存儲[8]。DCM文件必須使用專用的軟件解析后才能查看,并且在查閱圖像時,必須調整窗位窗寬的值,才能看清楚焊縫的所有部位。為了簡化這一步驟,本文提出了Adaptive-MINMAX算法,將整張大圖切分成多個小片后再進行處理。
1.1 Adaptive-MINMAX算法
本研究要處理的焊縫為小焊管焊縫,解析之后的小焊管焊縫圖像如圖1所示。焊縫的寬度隨著鋼材厚度的增加而逐漸變寬,本研究共設置了4種不同的鋼材厚度。圖像的寬度為1500像素,長度為3000像素。
Adaptive-MINMAX標準化算法能夠將焊縫圖像處理成能夠用于缺陷檢測的形式,用于處理從DCM 文件中提取出的16位焊縫圖像,具體算法如公式(1)至公式(4)所示:
在處理焊縫圖像時,圖像的長寬在240 像素左右,Adaptive-MINMAX算法處理后的圖像如圖2所示,圖2展示了不同類型焊縫經處理后的結果,包括母板和焊縫上的圖像。從圖2中可以看出,經Adaptive-MINMAX算法處理后的圖像具有良好的可讀性,風格一致,因此該算法適用于多種焊縫圖像的處理。
1.2 參數的設置
從DCM 圖像中提取出的16位焊縫圖像的像素值大小在3000~5000,轉換為8位數組后的像素值為11~20,該圖像無法清晰地供人查看。因此,在Adaptive-MINMAX算法中,將α和β 分別設置為65535和0,將圖像的像素值映射到0~65535的區間,讓圖像變得清晰可讀。
比于MINMAX標準化算法,Adaptive-MINMAX標準化算法的改進是動態調整所選范圍的最大值和最小值。Adaptive-MINMAX算法中R 為不同值時的處理結果如圖3 所示,圖3中從左至右分別是將R 設置為0、0.1、0.2、0.3的處理結果。將R 設置為0時,相當于直接使用MINMAX標準化算法,得到的圖像亮度較弱,母板圖像經過處理后,出現了無法看清缺陷的情況。隨著持續增大R 的值,所得到的圖像的細節丟失也越來越嚴重;當R 為0.3時,圖像的一部分已經全部變為白色,該處圖像已經丟失了全部的信息。從實驗結果來看,將R 設置為0.1時,得到的圖像質量較高,既能夠防止圖像細節的丟失,也能統一處理圖像的風格,便于后續的缺陷標注。
不同面積的圖像使用Adaptive-MINMAX算法處理后的圖像如圖4所示。Adaptive-MINMAX算法處理的結果的像素值受所選擇矩陣中最大值和最小值的影響,不同區域圖片像素值的分布不同,如果將所框選的區域擴大,將會造成目標圖像出現一定程度的失真。當圖像的寬度調整為720像素時,圖4(b)中白色的區域增多,周圍出現了黑色區域,焊縫以及周圍母板的細節被弱化。因此,在裁剪圖像時會將圖像的長寬設置為240像素左右,處理后的圖像如圖4(a)所示。
1.3 不同圖像處理方法的對比
不同處理方法處理后的圖像如圖5所示。圖5(a)是解析出來的8位圖像;圖5(b)至圖5(d)分別是對該8位圖做直方圖均衡化、伽馬變換、拉普拉斯銳化的結果,其中伽馬變換的縮放系數為1,伽馬因子為2.2;圖5(e)是Adaptive-MINMAX算法處理后的結果。圖5(a)、圖5(c)、圖5(d)的對比度較低,無法用于缺陷檢測;圖5(b)經過直方圖標準化后,雖然可以看得見缺陷,但是相較于圖5(e),顯示出的缺陷特征較弱。從以上結果可以得出,Adaptive-MINMAX算法優于其他的圖像預處理算法。
2 GU-YOLO介紹(Introduction to GU-YOLO)
在缺陷檢測任務中,使用YOLOv8s作為基準模型。為了進一步提升模型的性能,對模型進行了改進,得到了GUYOLO架構(圖6)。相比于基準模型,GU-YOLO主要做了兩項改進:一是將Conv卷積替換為UpperConv卷積,二是將Detect模塊替換為GAMDetect(Global Attention Mechanism Detect)。
2.1 UpperConv模塊
UpperConv模塊如圖7所示,其最終的結果由兩個部分組成:一部分是經過了一層卷積的結果,占據總輸出的3/4;另一部分是經過了兩層卷積的結果,占據總輸出的1/4。這兩部分的大小是根據輸出特征的形狀來確定的。幽靈卷積[9]的輸出中一次和二次卷積的結果各占1/2,相比于幽靈卷積,UpperConv更關注原始信息的保留,但在其中也通過攜帶一部分兩層卷積的結果來強化最終結果的表示,攜帶的二次卷積的信息也能夠幫助增強模型的特征提取能力。UpperConv的基礎卷積層由二維卷積層、歸一化層、SiLU激活函數組成。
2.2 GAMDetect模塊
GAM注意力機制[10]借鑒了編碼器和解碼器的思想,通過提取特征中的信息,動態調整特征中所需要部分的權重,降低無關特征的權重。在進行目標檢測時,GAM 通過通道注意力計算出顏色通道的權重,通過空間注意力計算像素點的權重,兩者結合就能將目標物體的特征凸顯出來,而減弱背景的影響。
YOLOv8會抽取不同大小的特征輸入檢測頭,用于目標的檢測,這些特征分別用于檢測大中小3類物體。GAMDetect 會在Detect模塊之前添加GAM 注意力模塊,而將YOLOv8 的3個檢測頭替換為GAMDetect之后,就能分別強化最終用于檢測大中小3類物體的特征。GAMDetect模塊如圖8所示。
3 實驗結果與分析(Experimental results and analysis)
3.1 實驗環境
實驗所使用的GPU 為NVIDIA GeforceRTX2060,6144MiB,CPU為Intel(R)Core(TM)i7-9700CPU@3.00GHz。軟件環境為Python3.9.10,torch 2.0.0,CUDA11.7。YOLOv8訓練時輸入的參數圖像大小為640,優化器為SGD,學習率為0.01,動量為0.9,優化器的權重衰減為0.005,訓練輪次為400,批量為16。
3.2 構建數據集
在搜集數據時,首先使用圖1所示的圖像訓練了一個YOLOv5網絡,該網絡能夠準確檢測焊縫的位置。將圖片輸入該網絡后,可以得到焊縫在整張圖上的坐標,之后將整張圖片分為焊縫區域和母板區域進行裁剪,使用Adaptive-MINMAX算法進行處理,以得到適合后續分析的圖像數據。整個數據的搜集流程如圖9所示。
經過翻轉數據增強操作后,共獲得5209張圖片的數據集。將這些圖片按照8∶1∶1的比例分為訓練集、驗證集和測試集,分別包含4167、521、521張圖片。缺陷種類分為8種類型,分別是ironBar、pit、boardInjury、pinhole、undercut、dislocation、tungsten、fovea,實例數量分別為520、869、1603、1186、1571、671、614、330個,共有7364個實例。圖像長寬為240像素或小于240像素,以png格式存儲。標注缺陷使用的是labelImg圖像標注工具,標簽以txt文件格式存儲。
3.3 評價指標
實驗結果的評價指標采用精確率(Average Precision,AP)、召回率(Average Recall,AR)、和mAP50、幀率(Frames" Per Second,FPS)、參數量(Parameter,Para)、每秒運算次數(FloatingPoint Operations Per Second,FLOPS)。對于某個類別,定義TP為模型正確檢測到的屬于該類別的樣本數,FP為模型將不屬于該類別的目標預測為該類別的樣本數,FN為模型將屬于該類別的目標預測為其他類別的樣本數,則該類別的精確率和召回率公式分別為
mAP50是一個綜合的評價指標,計算的是P-R曲線與坐標軸圍成區域的面積。FPS評估的是目標檢測模型每秒能夠推理圖片的數量,FLOPS評估的是模型的計算復雜度和效率。
3.4 對比實驗
本小節選擇YOLOv8s(YouOnlyLookOnceVersion8-small)、YOLOv3-tiny(You Only Look Once Version 3-tiny)[11]、YOLOv5s (You Only Look Once Version 5-small)[12]、YOLOv6s(You Only Look Once Version 6-small)[13]、RT-DETR-l(Real-time Detection Transformers Large)[14]、Faster-RCNN(Faster Region-based Convolutional Neural Network)[15]作為對比模型,以全面評估GU-YOLO在焊縫缺陷檢測任務中的性能。目前,鑒于當前焊縫缺陷檢測工作普遍將缺陷檢測視為目標檢測任務來處理[16-18],因此選擇將GU-YOLO與RT-DETR-l、Faster-RCNN 進行對比。實驗結果如表1所示,由表1中的數據可知:GU-YOLO的AP和AR 分別達到了82.2%、83.9%,相較于對比模型分別提升了1.3百分點、13.9百分點;F1_score為83.0%,mAP50達到了85.0%,相較于對比模型分別提升了7.9百分點、15.3百分點;FPS相比于YOLOv8s下降了21幀。
在YOLOv8s的測試結果中,AP和AR的差值達到了10.9 百分點,這一顯著差異主要是由于ironBar類別的AP和AR 分別為1和0。具體而言,YOLOv8s對ironBar目標的預測框沒有完全收斂,YOLOv8s的預測結果如圖10 所示,GUYOLO的預測結果如圖11所示。如果去掉ironBar類別的結果,GU-YOLO的AP從78.1%提升到80.7%,提升了2.6百分點,AR從80%提升到82.1%,提升了2.1百分點,mAP50從79.5%提升到83.2%,提升了3.7百分點。GU-YOLO對該類別的AP為92.7%,AR為96.4%,使模型對這種類型缺陷的識別恢復了正常,彌補了YOLOv8模型本身的缺陷。
實驗結果顯示,GU-YOLO在AP、AR、F1_score、mAP50 四個指標上的表現均優于其他4個YOLO版本的相關指標表現。盡管GU-YOLO的幀數為104幀,比YOLOv8s模型低21 幀,但是在精度方面有較大的提升。相較于其他YOLO模型,GU-YOLO的參數量和FLOPS較高。
RT-DETR-1的性能優于YOLOv8s的性能,且不存在YOLOv8s模型無法在目標上完全收斂的缺點。與RT-DETR-1 相比,GU-YOLO在AP、mAP50兩項指標上分別低0.7百分點、0.4百分點,在AR、F1_score兩項指標上分別高5百分點、2.1百分點。雖然GU-YOLO在AP和mAP50兩項指標上弱于RT-DETR-1,但是5百分點的AR差異說明,在同等精度下,GU-YOLO 能找到比RT-DETR-1更多的正樣本。GUYOLO的幀數比RT-DETR-1的幀數高65幀,參數量少13M,FLOPS少67G。
Faster-RCNN的AR比GU-YOLO的AR低0.3百分點,但是在AP、F1_score、mAP503項指標上與GU-YOLO有較大的差距。Faster-RCNN 的FPS為10幀,比GU-YOLO 的FPS少94幀,其參數量比GU-YOLO 的參數量多22 M,FLOPS多167G。
3.5 消融實驗
本小節對UpperConv和GAMDetect模塊進行消融實驗,探討不同模塊在模型中起到的作用。消融實驗結果如表2所示,由表2中的數據可知,當僅增加UpperConv模塊時,模型的AP下降了4.1百分點,AR提升了10.3百分點,F1_score提升了3.4百分點,mAP50提升了12.8百分點;僅增加GAMDetect 模塊時,模型的AP提升了0.6百分點,AR提升了9.6百分點,F1_score提升了5.4百分點,mAP50提升了15.2百分點。增加UpperConv和GAMDetect模塊都會造成模型幀數的下降,其中GAMDetect模塊對幀數的影響較大,導致幀數下降了30 幀,而UpperConv模塊則使幀數下降了16幀。GU-YOLO模型在同時增加這兩個模塊后,幀數下降了21 幀。使用UpperConv模塊能減少1M 大小的參數量和1G的FLOPS,而造成GU-YOLO 參數量和FLOPS 增加的主要原因是GAMDetect模塊,它會增加9M的參數量和16G的FLOPS。
增加UpperConv或者GAMDetect模塊都可以在一定程度上緩解模型在細長狀物體上無法完全收斂的問題。UpperConv模塊通過在輸出中攜帶一部分二次卷積的結果,有效提升了模型的召回率,在mAP50指標上也有較好的表現,但是影響了模型對特征的整體識別,導致AP下降了4.1百分點。GU-YOLO 通過GAMDetect 模塊彌補了這一缺點。GAMDetect模塊在推理過程中,可以在頸部強化目標的特征,弱化不重要的背景特征,并強化模型的識別精度;該模塊在反向傳播時,也可以增加損失函數的梯度,使得模型在細長狀物體上的收斂能夠恢復正常狀態。
4 結論(Conclusion)
本文創新性地提出了Adaptive-MINMAX算法,該算法通過調整像素值的分布,能夠動態壓縮原始圖像的最大值和最小值,直接處理從焊縫DCM文件中提取出的16位圖像,使得圖像能夠供人清晰地查看,省去了調整窗位窗寬的過程。通過實驗證明,該方法具有良好的通用性和穩定性,能夠適用于多個種類的焊縫圖像,并且得到的圖像風格一致,與其他預處理方法相比有明顯的優勢。基于此算法,本研究建立了一個焊縫缺陷檢測的數據集,該數據集共有8個種類、5209張圖像。
通過改進YOLOv8,將主干網絡的卷積層替換為UpperConv模塊,將Detect模塊替換為GAMDetect模塊,得到了GU-YOLO模型。實驗結果顯示,與其他模型相比,GUYOLO有較高的精度,并且綜合性能也好于其他模型。GUYOLO有效解決了YOLOv8在檢測細長狀物體時錨框無法完全收斂的問題,提高了模型在該類別缺陷上的識別精度,使得對這類缺陷的收斂恢復正常。消融實驗進一步表明,GAMDetect模塊主要強化了模型的平均精確度,UpperConv 模塊主要強化了模型的平均召回率,而兩者結合能夠提升模型的整體精度。
作者簡介:
郝洪坤(2000-),男(漢族),棗莊,碩士生。研究領域:缺陷檢測。
胡海洋(1977-),男(漢族),寶應,教授,博士。研究領域:機器視覺,智能制造。
彭博(2001-),男(漢族),貴溪,碩士生。研究領域:機器視覺。
趙民生(1999-),男(漢族),臨沂,碩士生。研究領域:缺陷檢測。