謝 昆 方 凱 陳 娟 楊召嶺
(①湖北汽車工業(yè)學(xué)院電氣與信息工程學(xué)院,湖北 十堰 442000;②東風(fēng)(十堰)有色鑄件有限公司,湖北 十堰 442000)
在制造過程中難免出現(xiàn)工件損傷,能夠快速精確地檢測出零件缺陷是智能制造的關(guān)鍵[1],早期表面缺陷的檢測主要依賴于人工目視檢查,盡管該方法可以有效地發(fā)現(xiàn)較為明顯的缺陷,但對于微小且不明顯的缺陷,漏檢概率很高;后來又出現(xiàn)了基于紅外線的機器檢測手段,通過光線掃描,有缺陷的地方會出現(xiàn)信號變化,但檢測速度存在很大局限性[2-3]。之后傳統(tǒng)的機器視覺方法被應(yīng)用在缺陷檢測中,對采集的工件圖片進行處理,效率較高,實現(xiàn)了不接觸式檢測,但極易受到現(xiàn)場環(huán)境和人為操作等干擾,特征提取的識別分類能力有待提高,難以大規(guī)模應(yīng)用到實際生產(chǎn)中[4]。
隨著AI 領(lǐng)域的快速發(fā)展,傳統(tǒng)的缺陷檢測方法逐漸被基于深度學(xué)習(xí)的目標(biāo)檢測方法所代替,主要算法可分為One-Stage 和Two-Stage。兩種算法各有優(yōu)缺點,Two-Stage 代表算法有RCNN[5]、Mask-RCNN[6]和Faster-RCNN[7],將檢測對象先生成候選框,再進行分類,檢測的精度高,但實時性不如One-Stage 算法;One-Stage 代表算法有YOLO[8-9]和SSD[10]算法,使用了回歸機制將檢測對象的整個圖形直接檢測,把目標(biāo)檢測當(dāng)作回歸問題進行分析,完成直接從原始圖像的輸入到物體位置和類別的輸出,實現(xiàn)了端到端的訓(xùn)練,能達到較高的實時性,但精度不如Two-Stage 算法。
李超賢等[11]針對鋁型材瑕疵的特點,對傳統(tǒng)圖像處理結(jié)合SVM 機器學(xué)習(xí)的算法與改進的Gaussian-YOLOv3 算法進行了試驗對比,證明了該算法的檢測效果更好;張建國等[12]采用anchor-free方法簡化人工設(shè)計YOLOv5s 參數(shù)的步驟,利用解耦檢測器解決YOLOv5s 檢測中分類與回歸任務(wù)沖突的問題,加快損失函數(shù)的收斂速度,同時引入γ參數(shù),解決弱缺陷樣本不平衡的問題;李澄非等[13]在 CSPResblock 模塊中引入注意力機制 SE 模塊,賦予各個通道相應(yīng)的權(quán)重,加強網(wǎng)絡(luò)對于重要信息的訓(xùn)練,提升網(wǎng)絡(luò)的特征提取能力。
YOLOv5 算法是在YOLOv4 基礎(chǔ)上的一項改進算法,擁有更好的性能。本文以 YOLOv5 算法為基礎(chǔ),針對目前鋁材表面缺陷檢測算法在實際工程應(yīng)用中檢測精度低以及不夠輕量化難以部署等問題進行改進。結(jié)果表明,與原 YOLOv5 算法相比,改進后算法的檢測精度和輕量化程度有顯著的提升。
YOLOv5 是一種單階段目標(biāo)檢測算法,通過單個前向傳播過程同時完成目標(biāo)檢測和邊界框回歸。它引入了多尺度檢測機制,在不同特征圖上檢測目標(biāo),提高準(zhǔn)確性。為了提高模型在不同數(shù)據(jù)集和任務(wù)上的性能,算法采用的自適應(yīng)訓(xùn)練策略可自動調(diào)整超參數(shù)。最后通過后處理技術(shù)包括NMS 和對象性置信度閾值,來減少冗余邊界框,提高檢測穩(wěn)定性。YOLOv5 的網(wǎng)絡(luò)架構(gòu)主要由骨干網(wǎng)絡(luò)(Backbone)、頸部網(wǎng)絡(luò)(Neck)和頭部網(wǎng)絡(luò)(Head)組成。Backbone 采用CSPDarknet53(cross-stage partial network)結(jié)構(gòu),由多個卷積層和池化層組成,通過交叉階段連接來提高信息流的效率和性能,用于從輸入圖像中提取特征。 Neck 采用PANet(path aggregation network)結(jié)構(gòu),用于進一步增強特征的語義信息和上下文信息。Head 包括多個卷積層,用于生成目標(biāo)檢測的預(yù)測。這些預(yù)測包括目標(biāo)的位置(邊界框的坐標(biāo))和類別置信度分?jǐn)?shù)。
文中算法針對上述問題主要做了三處改進,將ShufflenNetV2-Block 網(wǎng)絡(luò)單元融合在Backbone 當(dāng)中,降低模型復(fù)雜度;添加SE 注意力機制,能夠更好地區(qū)分類別之間的差異;優(yōu)化損失函數(shù),采用SIoU替代CIoU,提升網(wǎng)絡(luò)定位精度。改進后的YOLOv5s算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 改進后的YOLOv5 算法網(wǎng)絡(luò)結(jié)構(gòu)
在實際生產(chǎn)線工件檢測中,對于實時性有較高的要求,需要對模型進行輕量化處理以便提升檢測速度,但不能過多影響檢測精度。綜合以上考慮本文選擇引入ShufflenNetV2_Block[14],將其融合在YOLOv5s 的Backbone 當(dāng)中。它是一種輕量化模型,綜合考量了檢測精度和速度,網(wǎng)絡(luò)架構(gòu)如圖2 所示,包括基本單元和下采樣單元。
圖2 ShuffleNetV2 網(wǎng)絡(luò)單元結(jié)構(gòu)
ShuffleNetV2_Block 的基本單元引入了通道拆分操作,每個基本單元將輸入的特征圖通道分成兩個分支。其中,左分支進行等映射操作,而右分支進行深度可分離卷積,包括一個深度卷積(depthwise convolution,DW Conv)和兩個逐點卷積(pointwise convolution,PW Conv)用于融合通道之間的特征信息。在ShuffleNetV2_Block 的下采樣單元中,左分支不再進行等映射操作,左右兩個分支都進行stride 為2 的深度卷積。
這樣操作的優(yōu)點在于可以減小特征圖的空間分辨率,同時增加通道深度,使網(wǎng)絡(luò)能夠在不同尺度上學(xué)習(xí)特征,降低模型的計算復(fù)雜性并減少內(nèi)存消耗,有助于加速訓(xùn)練和推理過程??偟膩碚f,融合ShufflenNetV2_Block 網(wǎng)絡(luò)是對主干網(wǎng)絡(luò)的一種優(yōu)化,使模型更加輕量化,可以提升模型的檢測速率和移動端部署能力。
SENet(squeeze-excitation network)[15]是一種利用注意力機制來增強深度卷積神經(jīng)網(wǎng)絡(luò)性能的架構(gòu),其核心思想是通過引入注意力模塊來動態(tài)地調(diào)整特征圖中每個通道的權(quán)重,以突出對于特定特征的關(guān)注,從而提高網(wǎng)絡(luò)的表征能力。這對于缺陷檢測任務(wù)有很大的幫助,可以提升模型對缺陷特征的提取能力,忽略一些次要信息,以此來提高分類性能。本文將SE 注意力機制融合在主干網(wǎng)絡(luò)的第7 層,它的實現(xiàn)可分為Squeeze、Excitation 和Scale 三個階段,如圖3 所示。
圖3 SE 注意力機制結(jié)構(gòu)圖
首先進行 Squeeze 操作,對整個特征圖進行全局平均池化,捕獲每個通道在全局上的重要性,再將每個通道的特征聚合成一個單一的值,形成一個通道重要性的向量。緊接著是 Excitation 操作,利用先前獲取的通道重要性向量來學(xué)習(xí)一個權(quán)重向量,該權(quán)重向量用于重新加權(quán)每個通道的特征響應(yīng)。通過學(xué)習(xí)這個權(quán)重向量,SENet 可以決定哪些通道應(yīng)該被加強,哪些通道應(yīng)該被減弱。最后是Scale 操作,通過將Excitation 階段的權(quán)重向量應(yīng)用于原始特征圖,將其重新加權(quán)。這意味著對于具有高權(quán)重的通道,其特征響應(yīng)將被增強,而對于低權(quán)重通道,其特征響應(yīng)將被減弱。這就使得在缺陷檢測任務(wù)中,模型能夠更好地區(qū)分類別之間的差異,提高分類性能和檢測效率。
YOLOv5 的損失函數(shù)采用CIoU(complete-intersection over union)[16]即完全交并比,CIoU 是對IoU 的改進版本,它考慮了檢測框的中心點距離和寬高的差異。CIoU 首先計算了中心點距離的歸一化項,然后將其添加到IoU 的計算中,以更準(zhǔn)確地衡量兩個框之間的重疊程度。
在此基礎(chǔ)上SIoU[17]還考慮了期望與回歸之間的向量角度,如圖4 所示。重新定義角度懲罰度量并加入損失函數(shù),使得預(yù)測框快速移動到最近的軸,有效減少了自由度的總數(shù),對模型訓(xùn)練效果和網(wǎng)絡(luò)收斂速度有進一步提升。并且SIoU 通過引入結(jié)構(gòu)信息,可以更公平地進行競爭,避免一些檢測框過度競爭而導(dǎo)致性能下降,綜合以上分析本文損失函數(shù)采用SIoU。
圖4 角度成本計算過程
角度成本函數(shù)如下:
式中:x=ch/σ=sinα,為真實框和預(yù)測框中心點之間的距離。
根據(jù)式(1),SIoU 定義的距離成本函數(shù)如下:
由以上分析可知, ? 在α=π/4時取得極大值,SIoU 定義的形狀損失函數(shù)如下:
其中:
Ω的值受θ控制,θ的取值通常取2~6 的整數(shù),本文取θ=4。
最終SIoU 的計算公式定義為
實驗所用操作系統(tǒng)為Windows11;硬件環(huán)境中,CPU 為Inter Core i5-10500,GPU 為NVIDIA GeForce RTX 3060;軟件環(huán)境為CUDA11.7,Cudnn8.4,采用Pytorch2.0.1 深度學(xué)習(xí)框架。
數(shù)據(jù)集圖像由工業(yè)相機采集,包括pinhole(針孔)、scratches(劃痕)、spot(斑點)、wrinkle(褶皺)等類型缺陷,共 1 412 張,按照9∶1 的比例分為訓(xùn)練集和驗證集。部分?jǐn)?shù)據(jù)集如圖5 所示。
圖5 不同缺陷類型數(shù)據(jù)集
在模型訓(xùn)練過程中,設(shè)置輸入圖像大小為640×640,初始學(xué)習(xí)率為0.01, batch_size 為 64,epochs為100。引用R(recall)、P(precision)、AP(average precision)和mAP作為模型性能評價指標(biāo),各指標(biāo)計算公式如下:
式中:P表示正樣本中被正確預(yù)測為缺陷的樣本比例,用于衡量檢測結(jié)果的準(zhǔn)確性;R表示被正確預(yù)測為缺陷的正樣本占總正樣本數(shù)的比例,用于衡量模型的召回率;mAP表示在不同目標(biāo)類別下的平均精準(zhǔn)度,用于綜合評估目標(biāo)檢測性能的指標(biāo);TP表示被正確預(yù)測為缺陷的正樣本數(shù)量,即模型成功檢測到的缺陷;FP表示被錯誤預(yù)測為缺陷的負(fù)樣本數(shù)量,即模型誤報的缺陷。FN表示被錯誤預(yù)測為正常的正樣本數(shù)量,即模型漏報的缺陷;n表示目標(biāo)檢測任務(wù)中涉及的不同缺陷目標(biāo)類別的數(shù)量。同時,選取mAP用來綜合評估目標(biāo)檢測性能,一般情況下值越高,模型性能越好,見式(7)。
Loss曲線如圖6 所示,其中Box Loss為邊界框損失,用于度量模型預(yù)測的邊界框坐標(biāo)與真實邊界框坐標(biāo)之間的差異,值越小表示定位準(zhǔn)確性越高;Cls Loss為分類損失,用于度量模型預(yù)測的類別概率分布與真實類別標(biāo)簽之間的差異,值越小表示分類準(zhǔn)確性越高??梢钥闯鯨oss值在訓(xùn)練過程的前1/4 部分下降得較快,之后趨于穩(wěn)定,訓(xùn)練效果較好。
圖6 本文算法Loss 曲線圖
3.3.1 不同算法實驗對比分析
為了驗證本文改進算法的綜合檢測能力,采用文中算法與經(jīng)典的目標(biāo)檢測算法及文獻中的算法進行對比試驗。采用本文所述數(shù)據(jù)集,在相同實驗條件下,設(shè)置初始學(xué)習(xí)率為 0.01,利用不同缺陷的AP、mAP、FPS 以及模型大小,對本文改進算法進行評估。訓(xùn)練結(jié)束時模型損失均已收斂,結(jié)果見表1。
表1 不同算法的實驗結(jié)果對比結(jié)果
由表1 可知,兩階段算法FasterRCNN 的檢測精度略高于YOLOv3,但因為是兩步法,F(xiàn)PS僅有19.3,檢測實時性跟不上;而SSD 算法檢測速度雖有小幅提升,但mAP太低,檢測精度跟不上;YOLOv5s和YOLOv3 的mAP接近,但都明顯低于本文算法。特別是本文算法對于針孔和斑點這類小目標(biāo)的檢測精度有了很大的提升,針孔類和斑點類缺陷檢測精度比原版YOLOv5s 分別提升了8.3%和9.3%,mAP提高了6.4%。雖然本文算法的FPS要略低于YOLOv5s,但訓(xùn)練出來的模型大小僅為原版YOLOv5s 算法的25%,更加適合移動端的部署。
劃痕類缺陷的特點是有較細(xì)微的紋理或邊緣特征,較簡單的模型結(jié)構(gòu)一般無法捕捉到劃痕類缺陷的復(fù)雜特征,對于這類缺陷檢測精度較高的是YOLOv3 和FasterRCNN,但它們的檢測實時性遠(yuǎn)不如本文算法。這是因為它們的模型較大,特征提取器的網(wǎng)絡(luò)結(jié)構(gòu)較深且具有較多的層級,可以更好地捕捉較為復(fù)雜的特征;而本文算法和YOLOv5s 考慮了輕量化,降低了模型復(fù)雜度,在復(fù)雜特征提取方面并沒有優(yōu)勢。
上述對比結(jié)果說明,本文算法實現(xiàn)了一定程度的性能優(yōu)化,綜合性能最佳,極大地提高了鋁材表面缺陷檢測效率以及減小了模型體積,有效改善了制造過程中對存在缺陷的工件漏檢問題。
3.3.2 消融實驗
為了證明算法的各項改進點對模型性能提升的貢獻,本文進行了消融實驗,設(shè)立了4 組不同條件的實驗,先后對原始的YOLOv5s 網(wǎng)絡(luò)進行融合ShufflenNetV2-Block 網(wǎng)絡(luò)單元(SN),添加SE 注意力機制(SE),用SIoU 替代原有的損失函數(shù)。消融結(jié)果實驗見表2。
表2 消融實驗
由表2 可知,方法2 僅融合ShufflenNetV2-Block 網(wǎng)絡(luò)單元,使得模型mAP有些許下降,F(xiàn)PS變化不大,但模型大小減少了75%,僅為原來的25%;方法3 在融合ShufflenNetV2-Block 網(wǎng)絡(luò)單元的基礎(chǔ)上添加SE 注意力機制,模型的mAP有所提升,但FPS降低了,意味著檢測實時性下降;方法4(本文方法)在方法3 的基礎(chǔ)上優(yōu)化了損失函數(shù),mAP值提升明顯,達到了92.5,模型大小也僅為1.91 MB,雖然FPS與原始YOLOv5s 相比降低了1.1 個單位,但綜合來看,方法4 在滿足實時檢測的條件下,精確率和輕量化程度更高。
3.3.3 缺陷檢測實際效果
利用文中改進的算法進行模型訓(xùn)練后,4 種不同類型的工件缺陷均得到了有效識別,不同顏色的矩形框用來標(biāo)識檢測結(jié)果,并且給出缺陷的類別和概率,如圖7 所示。
圖7 缺陷檢測實際效果
針對目前鋁材表面缺陷檢測算法在實際工程應(yīng)用中檢測精度低以及不夠輕量化難以部署等問題,設(shè)計了基于YOLOv5s 的改進算法。將ShufflenNetV2-Block 網(wǎng)絡(luò)單元融合在Backbone 中,重構(gòu)主干網(wǎng)絡(luò),減少模型計算量,提高缺陷特征的提取速度,有助于加速訓(xùn)練和推理過程;添加SE 注意力機制,使注意力更集中于缺陷相關(guān)區(qū)域,能夠更好地區(qū)分類別之間的差異,提高分類性能和檢測效率;優(yōu)化損失函數(shù),采用SIoU 替代CIoU,使得網(wǎng)絡(luò)收斂更快、定位精度更高。實驗結(jié)果表明,本文算法相較于YOLOv5s 算法在識別精度和模型輕量化方面有所提升,特別是對于針孔類的小目標(biāo)缺陷識別精度提升明顯,且降低了模型的大小和所占內(nèi)存,更加便于移動端部署,滿足加工生產(chǎn)現(xiàn)場對工件的檢測需求。后續(xù)將以本文為基礎(chǔ),在滿足檢測實時性的前提下,對模型進一步優(yōu)化,提升對劃痕類復(fù)雜缺陷特征的檢測精度。