李 闖,馬 行,b,穆春陽,劉永鹿,秦政碩,張 弘
(北方民族大學 a.電氣信息工程學院;b.寧夏智能信息與大數(shù)據(jù)處理重點實驗室;c.機電工程學院,銀川 750021)
隨著工業(yè)化進程的加快,鑄件在機械制造行業(yè)中的應用越來越廣泛[1]。然而,在鑄件的生產(chǎn)制造過程中,焊縫缺陷是一個常見的問題。焊縫表面缺陷在工程應用中大大降低了鑄件的使用壽命[2]。因此,對鑄件焊縫缺陷的檢測變得尤為重要。傳統(tǒng)檢測方法主要基于人工視覺和顯微鏡圖像分析,其繁瑣的操作和不可靠性限制了其在現(xiàn)代工業(yè)生產(chǎn)中的應用[3]。
近年來,深度學習技術的發(fā)展為焊縫缺陷檢測提供了新的思路和方法。其中,許多學者基于卷積神經(jīng)網(wǎng)絡的方法已經(jīng)取得了一定的成功。如王睿等[4]將YOLO-M網(wǎng)絡部署到邊緣計算設備上,使用邊緣計算設備檢測圖像缺陷。該方法的檢測速度受限于所使用的設備,對硬件要求高。劉金海等[5]采用小樣本的方法,在數(shù)據(jù)集較少的情況下,完成管道焊縫缺陷檢測任務。該方法需要使用外部設備采集圖像,增加成本的同時不能直接用于工業(yè)檢測焊縫表面缺陷。SUYAMA等[6]嘗試了多種基于深度學習的焊縫分類模型,并對其進行了測試和評估,以驗證其在焊縫缺陷檢測任務中的識別能力。該方法雖然進行了多種實驗,但是針對目標單一,背景簡單,無法檢測兩個及兩個以上的目標。
針對以上問題,提出了改進的YOLOv3[7]檢測模型YOLOv3-GN,使用Labelimg軟件標注焊縫缺陷類別,并且反復驗證,確保標注信息無誤性;引入輕量級網(wǎng)絡GhostNet[8]替換YOLOv3的主干網(wǎng)絡,減少參數(shù)量的同時有效的提取網(wǎng)絡特征信息;添加空間金字塔池化結構,利用池化結構提取上文特征信息并進行特征融合,能夠更好地捕捉物體多個尺度下的特征,提高模型的檢測能力;使用1×1卷積擴充通道數(shù),防止在提取特征過程中信息的丟失;采用通道注意力機制,提升對敏感區(qū)域的關注度,減少通道中的冗余計算量,提高模型的精度。
在YOLOv3算法的基礎上,優(yōu)化網(wǎng)絡結構,使其更加適用于復雜環(huán)境下缺陷小目標快速準確的識別和定位。具體做法是使用輕量化的GhostNet網(wǎng)絡替換原始主干網(wǎng)絡,加快模型的檢測速度和有效的提取特征圖信息;并且為了將多尺度特征信息進行融合,實現(xiàn)更加高效的特征提取能力,在主干網(wǎng)絡的最后一層輸出端引入了SPPF(spatial pyramid pooling-fast)[9]并替換激活函數(shù),將其命名為LeakSPPF;在FPN[10]中添加1×1卷積和注意力機制,增加對小目標和中目標的的關注度,提升檢測準確率。其改進模型結構如圖1所示。
圖1 YOLOv3-GN結構圖
圖1中,YOLOv3-GN主要包含3部分,主干特征提取網(wǎng)絡、特征融合FPN模塊和檢測頭Head模塊。首先輸入網(wǎng)絡的圖片為640×640×3,經(jīng)過主干特征提取網(wǎng)絡生成80×80×40、40×40×112、20×20×160三個初步特征信息提取層;然后第1、2層分別使用1×1卷積增加特征通道數(shù),第3層使用空間金字塔池化結構,對不同尺度的信息進行特征融合,在FPN和Head之間加入了注意力機制,增加對敏感信息的特征提取能力;最后送入檢測頭y1,y2,y3中,輸出所有的檢測框信息。
主干網(wǎng)絡用到GhostNet的主要部分,不包括平均池化、1×1的卷積和全連接層。并且輸入圖片大小為640×640,三通道彩色圖片。主干網(wǎng)絡參數(shù)信息如表1所示,GhostNet是一種高效的輕量級卷積神經(jīng)網(wǎng)絡。GhostNet基于模型復制的思想,利用低成本和高效率的特殊卷積操作來減少模型的參數(shù)數(shù)量和計算復雜度,從而在保持準確性的情況下提高了模型的速度和通用性。Ghost模塊是GhostNet模型中的一個重要組成部分,它是一種基于通道分組的卷積結構?;舅枷胧菍⑤斎胪ǖ婪殖啥鄠€組,在每個組內進行卷積操作,然后將不同組之間的特征進行交互和融合。主要目的是減少模型的參數(shù)量和計算量,從而提高模型的訓練速度和推理速度。
表1 主干網(wǎng)絡參數(shù)信息
表1中G-bneck有兩種不同的網(wǎng)絡結構,當步長為1時,由兩個Ghost模塊組成,當步長為2時,在兩個Ghost模塊中間加入DW(Depthwise)[11]卷積,并且采用了殘差連接和批規(guī)范化等方法。
原始的SPPF所采用的激活函數(shù)是SiLU[12],SiLU的計算復雜度較高,需要進行指數(shù)運算和除法運算,計算量比Leaky ReLU[13]激活函數(shù)要大。這可能會導致在深度神經(jīng)網(wǎng)絡中運行速度變慢,從而影響模型的訓練和推理效率。綜合上述因素采用Leaky ReLU替換SiLU激活函數(shù)。LeakSPPF主要用于提取不同尺度的特征,以適應不同大小的目標物體。具體來說,在主干網(wǎng)絡之后的卷積層,會接入一個LeakSPPF模塊,這個模塊將輸入特征圖分割成不同大小的多個子區(qū)域,并對每個子區(qū)域進行最大池化操作。不同大小的池化結果會被拼接到一起,形成一個固定長度的特征向量。這個特征向量能夠有效地捕捉不同尺度的目標物體的特征。LeakSPPF的網(wǎng)絡結構如圖2所示。
圖2 改進的LeakSPPF結構
圖2中輸入特征圖經(jīng)過不同最大池化結構和卷積操作,將輸出特征圖在通道維度上進行拼接,輸出特征圖的通道數(shù)是輸入特征圖的4倍。最后經(jīng)過卷積操作,通道數(shù)減半。
Focal Loss[14]是一種用于處理類別不平衡問題的損失函數(shù)。在傳統(tǒng)的交叉熵損失函數(shù)中,每個樣本的損失都被平等地對待,而在類別不平衡問題中,一些類別的樣本數(shù)量很少,而另一些類別的樣本數(shù)量非常多,這會導致模型對于少數(shù)類別的預測效果很差[15]。Focal Loss通過引入一個可調參數(shù)γ來緩解這個問題,使得模型更加關注難以分類的樣本。具體來說,對于易分類的樣本,損失函數(shù)的權重被降低,而對于難以分類的樣本,損失函數(shù)的權重被增加。這種方法可以有效地提高模型對于少數(shù)類別的預測準確率。Focal Loss的計算公式如式(1)所示。
FL(pt)=-αt(1-pt)γlog(pt)
(1)
式中:αt是一個權重因子,用于平衡分類問題中不同類別的樣本數(shù)量;γ為可調參數(shù),當γ=0時,Focal Loss退化為標準的交叉熵損失函數(shù);pt表示模型預測為正樣本的概率。
本文采用的注意力機制為SE(squeeze excitation)[16],SE屬于通道注意力機制,可以自適應學習不同通道之間的依賴關系[17]。它可以使卷積神經(jīng)網(wǎng)絡模型增強對特征圖中關鍵信息的學習和理解,被廣泛嵌入卷積神經(jīng)網(wǎng)絡模型中,在訓練和測試過程中,添加SE模塊有利于模型關注更多有用的信息,而忽略不重要的信息,對改進模型網(wǎng)絡有很大的幫助[18]。注意力機制結構圖如圖3所示。
圖3 注意力機制結構圖
圖3由全局平均池化層、全連接層1和全連接層2組成。不同連接層后所使用的激活函數(shù)不同。
本文采用的數(shù)據(jù)集是實驗室自建的,原始數(shù)據(jù)集861張,包含5種缺陷類別,分別是焊瘤、夾渣、裂紋、氣孔和未熔合。由于原始圖片尺寸太大,消耗計算機內存,不適合傳入模型并進行訓練,所以減少原始圖片大小,調整為800×800大小。然后將調整好的圖片經(jīng)過隨機旋轉、水平平移、改變亮度和添加噪聲等圖像增強方法,使圖片數(shù)量達到4305張。增強后的結果如圖4所示。擴充數(shù)據(jù)集,增加數(shù)據(jù)集的多樣性,有效彌補數(shù)據(jù)集樣本過少的缺點,防止過擬合情況的發(fā)生,從而提升網(wǎng)絡模型的泛化能力[19]。本文將數(shù)據(jù)集分為訓練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集,三者的比例為8∶1∶1。
圖4 增強的數(shù)據(jù)集
實驗環(huán)境基于Linux操作系統(tǒng),服務器的GPU型號為NVIDIA Tesla P40,顯存為24 GB,4塊顯卡并行訓練,具體的環(huán)境配置信息如表2所示。
表2 環(huán)境配置信息
本文采用的評價指標為平均精度(average precision,AP),平均精度均值(mean average precision,mAP),模型參數(shù)量(model parameters,MP)和檢測速度(frames per second,FPS)。AP和mAP的計算公式如式(2)和式(3)所示。
(2)
(3)
式中:AP是P-R曲線圍成的面積,P(precision)是精確率,即模型預測為目標的樣本中實際為目標的比例,R(recall)是召回率,即實際為目標的樣本中被模型正確預測為目標的比例,其中P為曲線的縱軸,R為曲線的橫軸,m是類別數(shù)。
每個模型都是從0開始訓練的,迭代次數(shù)為300次,初始學習率為0.01,動量為0.937,并采用余弦退火學習策略動態(tài)調整學習率,喂入模型中的圖片批量設置為32,優(yōu)化器選擇隨機梯度下降法(stochastic gradient descent,SGD),每訓練30次保存一次權值文件。
為了驗證本文算法提出的有效性,將本文算法與YOLOv3、SSD[20]和Faster R-CNN[21]做對比。對比實驗如表3所示。
表3 對比實驗
表3中AP是小目標氣孔的平均精度值,YOLOv3-GN是本文改進的模型。改進模型的平均精度均值為90.97%,分別高于YOLOv3、SSD和Faster R-CNN模型1.55%、26.43%、10.44%。YOLOv3-GN氣孔的平均精度值為75%,高于YOLOv3模型4%;參數(shù)量為31.28 M,少于YOLOv3模型28.16 M;檢測速度為17.46 f/s,高于YOLOv3模型4.78 f/s。通過對比實驗分析得到,本文提出的算法具有低參數(shù)量和高檢測速度,更適合于復雜環(huán)境下實時檢測焊縫缺陷的需求。
為了進一步驗證不同的改進策略對本文算法的影響,本文在YOLOv3的基礎上進行消融實驗分析。不同改進策略如表4所示。
表4 消融實驗
表4中實驗1為基礎模型,主干網(wǎng)絡為GhostNet,實驗2~7都是在實驗1基礎上進行改進的,可以看出不同改進策略對實驗精度的提高。對比實驗1,實驗2~7的mAP分別提高1.30%、0.71%、1.54%、1.16%、1.52%、3.33%。實驗7在檢測速度方面雖然低于實驗1,但是在準確率方面有所提升,提升3.33%。
為了驗證改進模型的實際檢測效果,從其他網(wǎng)絡途徑網(wǎng)上下載圖片并進行預測,并與原始YOLOv3模型預測結果進行對比,對比結果如圖5所示。
(a) 改進YOLOv3檢測結果1 (b) YOLOv3檢測結果1
圖5a檢測缺陷的置信度普遍高于圖5b的置信度,并且圖5b的焊瘤缺陷重復預測,檢測效果不理想。雖然圖5c預測未熔合的置信度低于圖5d,但是圖5c沒有漏檢焊瘤缺陷,圖5d存在漏檢的情況。圖5f也存在漏檢裂紋缺陷的情況。
本文在YOLOv3的基礎上提出了一種YOLOv3-GN的目標檢測算法,該算法的模型參數(shù)量約為原始YOLOv3模型參數(shù)量的一半,檢測速度提高4.78 f/s,同時mAP也有所提升,極大的滿足實時應用場合的需求。其主要改進為:
(1)在替換輕量級主干網(wǎng)絡的基礎上,加入了空間金字塔池化結構,使得模型關注更多的細節(jié)特征信息,有效提高卷積神經(jīng)網(wǎng)絡的特征表達能力,從而提升模型的性能指標。
(2)使用1×1卷積和注意力機制,提升輸入特征圖的維度,提取對模型更有用的信息,讓模型識別關鍵信息并將重點放在有用的輸入上,以便更好的檢測缺陷目標,達到有效的識別和定位。