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