曹楨淼,吉衛(wèi)喜,2+,蘇 璇,張 贇,王 凱
(1.江南大學(xué) 機(jī)械工程學(xué)院,江蘇 無(wú)錫 214122;2.江蘇省食品制造裝備重點(diǎn)實(shí)驗(yàn)室,江蘇 無(wú)錫 214122)
近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)與圖像分割技術(shù)在大量研究的推動(dòng)下迅速發(fā)展[1],表面缺陷檢測(cè)作為其典型的工業(yè)應(yīng)用場(chǎng)景也隨之快速實(shí)用化[2]。提高檢測(cè)精度的主流方法之一是對(duì)神經(jīng)網(wǎng)絡(luò)的寬度和深度進(jìn)行擴(kuò)展,但這往往會(huì)帶來(lái)繁重的計(jì)算量,需要昂貴的計(jì)算資源才能實(shí)現(xiàn),如云計(jì)算、通用GPU(graphics processing unit)和物聯(lián)網(wǎng)集群等。在這種背景下,輕量級(jí)計(jì)算越來(lái)越受到重視。目前的工業(yè)生產(chǎn)線對(duì)邊緣檢測(cè)設(shè)備的推理時(shí)間和檢測(cè)精度提出了更高要求,對(duì)表面缺陷檢測(cè)算法提出了嚴(yán)峻挑戰(zhàn)[3]。
借助模型縮放技術(shù),通過(guò)調(diào)整主干網(wǎng)絡(luò)的深度和寬度來(lái)控制模型規(guī)模,表面缺陷檢測(cè)模型可以適配不同算力的設(shè)備實(shí)現(xiàn)高精度實(shí)時(shí)推理。近年來(lái),針對(duì)模型壓縮問(wèn)題的解決方法主要分為兩類(lèi)[4]:第一類(lèi)方法致力于壓縮已有網(wǎng)絡(luò),包括張量分解、模型剪枝、模型量化等;另一類(lèi)致力于構(gòu)建新的小型網(wǎng)絡(luò),包括知識(shí)蒸餾、緊湊網(wǎng)絡(luò)設(shè)計(jì)等[5]。目前已有許多文獻(xiàn)提出了模型縮放的方法。HOWARD等[6]提出大和小兩個(gè)MobileNet模型,結(jié)合硬件感知的網(wǎng)絡(luò)架構(gòu)搜索(Neural Architecture Search,NAS)和NetAdapt算法,將網(wǎng)絡(luò)調(diào)整部署到手機(jī)CPU;WANG等[7]提出跨階段局部網(wǎng)絡(luò)(Cross Stage Partial Network, CSPNet)模型,利用跨階段特征融合和截?cái)嗵荻攘?,將梯度的變化整體集成到特征圖中,解決了大型網(wǎng)絡(luò)主干中梯度信息冗余問(wèn)題;TAN等[8]提出EfficientDet檢測(cè)系列,通過(guò)加權(quán)雙向特征金字塔網(wǎng)絡(luò)加快多尺度特征融合,并對(duì)主干網(wǎng)絡(luò)、特征網(wǎng)絡(luò)和box/class預(yù)測(cè)網(wǎng)絡(luò)的分辨率、深度和寬度同時(shí)進(jìn)行統(tǒng)一縮放;XIANG等[9]提出兩級(jí)檢測(cè)器ThunderNet,設(shè)計(jì)了上下文增強(qiáng)模塊和空間注意模塊來(lái)改進(jìn)特征表示;HAN等[10]提出一種即插即用的模塊Ghost,用來(lái)降低網(wǎng)絡(luò)計(jì)算成本,并建立了Ghost-Net輕量級(jí)網(wǎng)絡(luò)。
輕量化模型設(shè)計(jì)作為提高網(wǎng)絡(luò)計(jì)算效率的方式,在缺陷檢測(cè)領(lǐng)域已有了初步探索。李春霖等[11]在YOLOv3-Tiny的基礎(chǔ)上,引入Dense Block模塊與SPP-Net模塊對(duì)特征提取網(wǎng)絡(luò)進(jìn)行復(fù)合優(yōu)化;王璇等[12]構(gòu)建輕量級(jí)anchor-free檢測(cè)模型AFP-CenterNet,減少模型參數(shù)量的同時(shí)降低了計(jì)算機(jī)存儲(chǔ)資源占用率;廉家偉等[13]提出基于多尺度壓縮的卷積神經(jīng)網(wǎng)絡(luò)模型(Multi-scale Compression—Convolutional Neural Network,MC-CNN),提高模型識(shí)別效率的同時(shí)縮小了模型體積,實(shí)現(xiàn)了表面缺陷的快速檢測(cè);孫美君等[14]提出弱監(jiān)督學(xué)習(xí)下融合注意力機(jī)制的算法,僅使用圖像級(jí)別標(biāo)簽便可預(yù)測(cè)缺陷的位置和概率,達(dá)到高效的表面缺陷檢測(cè)自動(dòng)化;金閎奇等[15]結(jié)合隨機(jī)子空間和級(jí)聯(lián)殘差網(wǎng)絡(luò),提出一種結(jié)合隨機(jī)子空間和級(jí)聯(lián)殘差網(wǎng)絡(luò)缺陷檢測(cè)方法(RSM-MTResNet),增加單樣本數(shù)量的同時(shí)改善了網(wǎng)絡(luò)的特征提取能力;何國(guó)忠等[16]提出基于YOLOv4的電路板缺陷檢測(cè)網(wǎng)絡(luò),通過(guò)長(zhǎng)距離注意力機(jī)制和特征圖重組等方式改進(jìn)網(wǎng)絡(luò)模型。
通過(guò)分析文獻(xiàn)[17]可以得出YOLOv5的主干符合NAS最優(yōu)架構(gòu)特征,因此本文關(guān)注基于YOLOv5網(wǎng)絡(luò)的縮放方法。該模型控制結(jié)構(gòu)的參數(shù)只有深度倍數(shù)和通道層倍數(shù),分別控制瓶頸層深度和卷積核個(gè)數(shù)。因此進(jìn)行縮放時(shí),性能隨參數(shù)量變化而顯著波動(dòng),導(dǎo)致模型的檢測(cè)效果較差。為解決上述問(wèn)題,實(shí)現(xiàn)模型靈活縮放的同時(shí)保持良好的缺陷檢測(cè)性能,本文提出一種基于擴(kuò)展跨階段局部網(wǎng)絡(luò)的表面缺陷實(shí)時(shí)檢測(cè)方法。該方法是針對(duì)YOLOv5s算法的模型縮放技術(shù),可以應(yīng)用到不同規(guī)模目標(biāo)探測(cè)器擴(kuò)展策略中。其中,在空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊中引入SoftPool池化方法[18],由此更好地權(quán)衡激活效果并保留更多缺陷特征信息。然后利用深度可分離卷積[6]輕量化模型,最終建立了YOLOv5s-csp和YOLOv5s-P系列模型,實(shí)現(xiàn)在30幀/s和50幀/s的視頻以及邊緣設(shè)備上的目標(biāo)檢測(cè)。
YOLOv5是在YOLOv4[19]的基礎(chǔ)上使用一系列優(yōu)化方法得到的,其N(xiāo)eck網(wǎng)絡(luò)主要用于生成特征金字塔,可增強(qiáng)模型對(duì)不同縮放尺度對(duì)象的檢測(cè)能力,從而識(shí)別出不同尺度的同一物體。YOLOv4和v5均使用PANet和SPP作為Neck來(lái)聚合特征:PANet框架基于Mask R-CNN(region-CNN)和FPN(federated portal network),其特征提取器是一種新型FPN結(jié)構(gòu),能增強(qiáng)自下向上的路徑,可有效改善低層特征的傳播效果;SPP模塊的主要作用是融合局部與全局特征。YOLOv4和v5的Neck結(jié)構(gòu)區(qū)別在于,YOLOv4中的卷積操作均為普通卷積,而YOLOv5則借鑒CSPNet網(wǎng)絡(luò)重新設(shè)計(jì)了CSP2結(jié)構(gòu),使其特征融合能力得到增強(qiáng)。
改進(jìn)的Neck網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,SPP模塊由4個(gè)并行的分支構(gòu)成,對(duì)不同卷積核尺寸的最大池化進(jìn)行融合操作。SoftSPP模塊是在SPP模塊的基礎(chǔ)上采用軟池化操作,經(jīng)過(guò)Concat連接后由一個(gè)CBL卷積輸出。YOLOv5的設(shè)計(jì)中有兩種CSP結(jié)構(gòu),一種帶殘差單元(CBL卷積+殘差)應(yīng)用于主干網(wǎng)絡(luò),另一種用普通的CBL替換殘差單元應(yīng)用于Neck中,圖1中CSP2_X是不帶殘差的結(jié)構(gòu)圖,該模塊由普通卷積和CBL模塊Concat組合而成。CSP結(jié)構(gòu)相比于普通的CBL優(yōu)勢(shì)顯著,它將特征分成兩個(gè)支路后再通過(guò)Concat操作能更好地保留不同支路的特征信息,且有利于特征融合,因此將YOLOv5的Neck網(wǎng)絡(luò)結(jié)構(gòu)CSP化進(jìn)一步提高網(wǎng)絡(luò)的特征提取能力。
設(shè)計(jì)高效的模型尺度方法的主要原則是:當(dāng)模型尺度上升或下降時(shí),縮放的大小、深度和寬度等因素將導(dǎo)致計(jì)算成本的增加,因此應(yīng)將增加的量化成本盡可能地減少。CSPNet可以應(yīng)用于各種CNN架構(gòu),使整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)實(shí)現(xiàn)更豐富的梯度組合,同時(shí)減少參數(shù)量和計(jì)算量,將上述特點(diǎn)融合到現(xiàn)有網(wǎng)絡(luò)中,使用CSP化的模型執(zhí)行模型縮放,可以有效提高硬件的利用率。該組件易于實(shí)現(xiàn)且通用性高,可應(yīng)用到ResNet[20]、ResNeXt[21]和DenseNet[22]等最新的架構(gòu)中,并部署在移動(dòng)CPU和GPU上,以降低邊緣計(jì)算系統(tǒng)的計(jì)算負(fù)擔(dān)。
對(duì)于低端邊緣設(shè)備,模型的推理速度不僅受計(jì)算量和模型大小的影響,更主要的是還受外圍硬件資源的限制。輕量級(jí)模型較之大型模型不同的是,其對(duì)參數(shù)利用效率要求更高。在設(shè)計(jì)輕量級(jí)網(wǎng)絡(luò)時(shí),F(xiàn)LOPs和模型參數(shù)是主要考慮因素,但削減模型規(guī)模和降低FLOPs不等于減少推理時(shí)間和降低能耗。因此,在執(zhí)行微小模型擴(kuò)展時(shí),還須考慮內(nèi)存帶寬、內(nèi)存訪問(wèn)成本MAC和GPU計(jì)算效率等因素。
以Darknet[23]為例,對(duì)于具有b基層通道的第k層卷積層,Darknet層的計(jì)算量為:
(1)
在YOLOv5模型中,sizeα、widthβ、depthγ三個(gè)參數(shù)分別用來(lái)控制圖像大小、模型層數(shù)和通道數(shù)。令可用于調(diào)整圖像大小、層數(shù)和通道數(shù)的比例因子分別為α、β和γ,通過(guò)調(diào)整比例因子就可以實(shí)現(xiàn)不同大小和復(fù)雜度的模型設(shè)計(jì)。當(dāng)這些比例因子變化時(shí),d(即FLOPs)的相應(yīng)變化為:
d=5whkb2,
(2)
sizeα=α2d,
(3)
widthβ=βd,
(4)
depthγ=γ2d。
(5)
由式(3)~式(5)可以看出,縮放的大小、深度和寬度導(dǎo)致了計(jì)算成本的增加,它們分別顯示平方、線性和平方的增長(zhǎng)。當(dāng)輸入圖像尺寸增加時(shí),如果針對(duì)大尺寸對(duì)象進(jìn)行預(yù)測(cè),則必須增加網(wǎng)絡(luò)的深度或級(jí)數(shù)。因此,網(wǎng)絡(luò)模型進(jìn)行擴(kuò)展時(shí),首先對(duì)輸入尺寸、模型計(jì)算塊數(shù)量進(jìn)行復(fù)合縮放,然后根據(jù)實(shí)時(shí)要求,分別對(duì)深度和寬度進(jìn)行設(shè)計(jì)。
將CSPNet應(yīng)用于Darknet可得到改變后計(jì)算量dcsp:
(6)
(7)
由式(7)可以看出,當(dāng)層數(shù)k≥1時(shí),總有計(jì)算量差值Δd>0,因此CSP化Darknet層的計(jì)算量總小于原始卷積層,通過(guò)引入CSPNet可以有效減少Darknet上的計(jì)算量FLOPs(floating-point operations per second)。
本章首先介紹經(jīng)典池化方法SoftPool及其主要特性,然后闡述基于SPP提出的新方法——SoftSPP結(jié)構(gòu);其次借助CSP化結(jié)構(gòu)可改善模型性能的特點(diǎn),基于YOLOv5s模型提出了改進(jìn)模型YOLOv5s-csp;最后詳細(xì)闡述YOLOv5s-csp的結(jié)構(gòu)設(shè)計(jì)與模型細(xì)節(jié)。
目前廣泛使用的池化技術(shù)在某些情況下可能無(wú)法達(dá)到預(yù)期效果。例如平均池化操作僅能平均降低該區(qū)域內(nèi)所有激活,最大池化只選擇該區(qū)域內(nèi)最高的單個(gè)激活,而SoftPool[18]的作用則介于這兩者之間,能使較高的激活相比于較低的激活更占主導(dǎo)地位。
圖2列舉了多種池化方式,其中R為內(nèi)核鄰域中的像素值集合。(a)和(b)為平均池和最大池基于內(nèi)核的平均和最大激活選擇;(c)為隨機(jī)池化從內(nèi)核鄰域中隨機(jī)選擇的激活;(d)為SoftPool使用softmax算子以指數(shù)方式權(quán)衡激活的效果。
為保證激活值大小與對(duì)應(yīng)的輸出影響成正比,選擇以自然指數(shù)e為底數(shù)。該操作是可微的,即在反向傳播期間,局部?jī)?nèi)核鄰域內(nèi)所有激活將至少被分配一個(gè)最小梯度值。SoftPool使用內(nèi)核領(lǐng)域R內(nèi)激活的平滑最大近似值,每個(gè)激活ai都被賦予權(quán)重wi,權(quán)重wi為該激活的自然指數(shù)除以鄰域R中的所有激活的自然指數(shù)之和:
(8)
SoftPool方法的輸出值是通過(guò)對(duì)內(nèi)核鄰域R內(nèi)所有激活的加權(quán)求和得到的:
(9)
與最大和平均池化方法相比,SoftPool使用區(qū)域的softmax算子產(chǎn)生歸一化結(jié)果,能夠使概率分布與每個(gè)激活值相對(duì)于核區(qū)域的鄰近激活值成比例。
SPP模塊主要用來(lái)解決輸入圖像尺寸不統(tǒng)一的問(wèn)題,大部分目標(biāo)檢測(cè)網(wǎng)絡(luò)的輸出層一般都使用全連接層,因此需要固定尺寸的輸入圖像。而SPP模塊的池化操作是固定分塊的,對(duì)于不同尺寸的輸入能夠有相同大小的輸出,能有效避免失真。此外,SPP中融合不同尺寸的特征有利于應(yīng)對(duì)待檢測(cè)區(qū)域中目標(biāo)大小差異較大的情況,尤其對(duì)于復(fù)雜多目標(biāo)圖像。這里采用SoftPool替換網(wǎng)絡(luò)的單個(gè)池層,可以在不影響參數(shù)量和GFLOPs數(shù)量的情況下,實(shí)現(xiàn)精度的提升。
如圖3所示為改進(jìn)后的SoftSPP結(jié)構(gòu)圖。本文將YOLOv5中SPP內(nèi)部的3個(gè)MaxPool替換為SoftPool,將模塊中的池化窗口尺寸由[5,9,13]調(diào)整為[3,5,7]以保留更多特征信息,同時(shí)將其中的SoftPool2d()方法改進(jìn)為SoftPool2d_pad()。改進(jìn)后的方法在原來(lái)基礎(chǔ)上增加了padding功能,能夠?qū)崿F(xiàn)在不同池化窗口大小下輸出相同尺寸特征圖的效果,使SoftPool能夠在SPP中靈活應(yīng)用,進(jìn)而提高檢測(cè)精度。
YOLOv5s專(zhuān)為在通用GPU上進(jìn)行實(shí)時(shí)對(duì)象檢測(cè)而設(shè)計(jì)。本節(jié)將YOLOv5s改進(jìn)為YOLOv5s-csp,以獲得最佳的速度與精度平衡,其中將經(jīng)CSP化改進(jìn)后的SoftSPP作為模型內(nèi)部結(jié)構(gòu)。
在網(wǎng)絡(luò)架構(gòu)主干(CSPDarknet)的設(shè)計(jì)中,跨階段過(guò)程下采樣卷積的計(jì)算不包含在殘差塊內(nèi)。因此CSPDarknet每個(gè)階段的計(jì)算量
(10)
由式(1)和式(6)可得k>6/5,即只有k>1時(shí),CSPDarknet階段才會(huì)比Darknet階段更有計(jì)算優(yōu)勢(shì)。其中CSPDarknet每個(gè)階段擁有的殘差層數(shù)分別為1—3—3,為削減計(jì)算量,將第一個(gè)CSP階段轉(zhuǎn)換為原始的Darknet殘余層。借鑒原始YOLOv5算法中卷積層的設(shè)計(jì)思想,將CSPDarknet輸出的特征層P5后的每個(gè)卷積層增加為3個(gè)卷積層,卷積核分別為1×1、3×3、1×1;同時(shí)將SPP結(jié)構(gòu)后的單個(gè)卷積層增加為兩個(gè)卷積層,卷積核分別為3×3、1×1,改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)如圖4b所示。通過(guò)1×1卷積降低通道數(shù),再經(jīng)3×3卷積改變特征圖大小,可有效減少計(jì)算量。經(jīng)過(guò)改進(jìn)的多次小卷積處理后,一方面可加深網(wǎng)絡(luò)深度,從而增加網(wǎng)絡(luò)容量和復(fù)雜度,另一方面能獲得更大的感受野,獲取更為全局化、語(yǔ)義層次更高的特征信息,從而有效提取缺陷目標(biāo)的特征。
網(wǎng)絡(luò)架構(gòu)頸部采用PAN體系,主要整合來(lái)自不同特征金字塔的特征,然后通過(guò)兩組無(wú)捷徑連接的反向Darknet殘差層。其中進(jìn)行多尺度特征融合的SPP模塊由采用1×1、3×3、5×5和7×7軟池化方式的SoftSPP模塊構(gòu)成。
YOLOv5s是為低端GPU或CPU設(shè)備所設(shè)計(jì)的,模型尺寸非常小,能夠降低部署成本,其設(shè)計(jì)遵循1.2節(jié)提到的原則。在YOLOv5s基礎(chǔ)上設(shè)計(jì)了一個(gè)CSP化的模型YOLOv5s-P5,并將其擴(kuò)展到Y(jié)OLOv5s-P6和YOLOv5s-P7,擴(kuò)展的主要目的是為了實(shí)現(xiàn)高精度的實(shí)時(shí)物體檢測(cè)。
YOLOv5s-P5與YOLOv5s-csp結(jié)構(gòu)最為相近,但兩者的深度倍數(shù)和通道層倍數(shù)不同。對(duì)輸入大小和擴(kuò)展階段數(shù)執(zhí)行復(fù)合縮放,將每個(gè)階段的深度尺度設(shè)置為2dsi,其中ds為[1、3、9、9、3]。YOLOv5s-P6和YOLOv5s-P7分別將階段數(shù)擴(kuò)展到[1、3、9、9、3、3]和[1、3、9、9、3、3、3]。最后,進(jìn)一步使用推理時(shí)間作為約束條件來(lái)執(zhí)行額外的寬度縮放。
改進(jìn)后的模型雖然檢測(cè)精度提升,但同時(shí)增加了參數(shù)量及推理時(shí)間。為能在邊緣設(shè)備上獲得更好的效果,需要在精度和效率之間進(jìn)行權(quán)衡。實(shí)驗(yàn)曾嘗試引入通道注意力機(jī)制對(duì)特征進(jìn)行校正,但未獲得明顯增益。經(jīng)過(guò)權(quán)衡分析,進(jìn)一步采用深度可分離卷積(Depthwise Convolution,DWConv)替換SoftSPP中原有的普通卷積,達(dá)到同時(shí)減少參數(shù)量和GFLOPs的效果。雖然能夠?qū)崿F(xiàn)一定程度上的輕量化,但是可能影響網(wǎng)絡(luò)正常的訓(xùn)練與學(xué)習(xí)。因此,下文針對(duì)模型精度、參數(shù)量和迭代次數(shù)等因素進(jìn)行實(shí)驗(yàn)分析。
實(shí)驗(yàn)數(shù)據(jù)選擇DAGM 2007表面缺陷檢測(cè)公開(kāi)數(shù)據(jù)集,用來(lái)驗(yàn)證提出的YOLOv5s-csp模型。將數(shù)據(jù)集分為訓(xùn)練集、驗(yàn)證集和測(cè)試集3部分,比例為7∶2∶1,即訓(xùn)練集1 046張,驗(yàn)證集300張,測(cè)試集150張。
采用Windows10操作系統(tǒng),計(jì)算機(jī)內(nèi)存為64 G,處理器型號(hào)為Intel(R) Xeon(R) CPU E5-2 620 v4,顯卡型號(hào)為 GPU NVIDIA Quadro P4 000,深度學(xué)習(xí)框架使用Pytorch 1.7.1,CUDA 10.1,CUDNN7.6.5。邊緣設(shè)備選取Raspberry Pi4B搭載英特爾NCS2計(jì)算棒,OpenVINO版本為2020R4。采用Adam 算法優(yōu)化損失函數(shù),使用小批量隨機(jī)梯度下降法來(lái)訓(xùn)練模型,批大小設(shè)置為16,初始學(xué)習(xí)率為0.000 1,動(dòng)量設(shè)置為0.9,訓(xùn)練周期為300個(gè)epoch,并使用Mosaic數(shù)據(jù)增強(qiáng)加快收斂。
利用構(gòu)建的基于擴(kuò)展跨階段局部網(wǎng)絡(luò)YOLOv5s-csp模型對(duì)表面缺陷進(jìn)行實(shí)驗(yàn)驗(yàn)證,主要檢測(cè)流程如圖5所示,步驟如下:
步驟1選取Pytorch深度學(xué)習(xí)框架作為實(shí)驗(yàn)環(huán)境構(gòu)建YOLOv5s-csp算法模型;
步驟2構(gòu)建模型的同時(shí),利用CCD相機(jī)采集表面缺陷圖像數(shù)據(jù),直接選取DRAM 2007表面缺陷數(shù)據(jù)集,并將其劃分后轉(zhuǎn)換為VOC格式;
步驟3利用訓(xùn)練集對(duì)YOLOv5s-csp模型進(jìn)行訓(xùn)練,選取測(cè)試集驗(yàn)證模型檢測(cè)性能,將達(dá)到各項(xiàng)性能指標(biāo)的檢測(cè)模型進(jìn)行邊緣端部署和實(shí)驗(yàn)結(jié)果分析;
步驟4將訓(xùn)練得到的YOLOv5-csp模型與替換不同Neck結(jié)構(gòu)的YOLOv5s模型進(jìn)行對(duì)比實(shí)驗(yàn),對(duì)準(zhǔn)確率等指標(biāo)進(jìn)行分析比較;
步驟5進(jìn)行對(duì)比實(shí)驗(yàn)的同時(shí),將Torch模型轉(zhuǎn)換為OpenVINO模型,并部署到邊緣設(shè)備上,使用OpenMP實(shí)現(xiàn)圖像處理的加速;
步驟6將邊緣設(shè)備Raspberry Pi4B安裝于生產(chǎn)流水線上,進(jìn)行實(shí)時(shí)表面缺陷檢測(cè)。
本節(jié)將對(duì)不同的模型進(jìn)行CSP化,并分析CSP化對(duì)模型參數(shù)量(Param)、計(jì)算量(GFLOPs)、F1值和平均正確率(APval)的影響。使用Darknet作為主干,選擇帶有SPP的FPN(FPNSPP)和帶有SPP的PAN(PANSPP)作為頸部設(shè)計(jì)消融研究實(shí)驗(yàn),其中SoftSPP為結(jié)合2.5節(jié)引入DWConv后的結(jié)構(gòu)。表1中列出了不同DNN模型CSP化后的APval結(jié)果(閾值iou默認(rèn)為60%),激活函數(shù)(Act)分別選取LeakyReLU(Leaky)和Mish兩種,并對(duì)模型各項(xiàng)指標(biāo)進(jìn)行比較。消融實(shí)驗(yàn)在COCO128數(shù)據(jù)集上進(jìn)行,得到的平均正確率顯示在表1的最后一列。
表1 CSP化模型@640×640消融研究
從表1中數(shù)據(jù)可得,PANSPP經(jīng)過(guò)CSP化后參數(shù)量較原模型減少了1.7%且GFLOPs降低了0.1 B。在APval和F1值上盡管帶來(lái)了少量提高,但想要獲得更高的APval,還需在CSP化后為模型添加更多層或更多高級(jí)激活功能。同一模型中Mish相較于LeakyReLU作為激活函數(shù),能夠使模型在分類(lèi)任務(wù)中獲得更高的平均正確率APval和F1值,說(shuō)明在相同條件下采用Mish可達(dá)到更理想的分類(lèi)效果。通過(guò)將CPANSPP-Mish和CPANSPP-Leaky與PANSPP-Leaky對(duì)比,可以發(fā)現(xiàn)三者具有相近的參數(shù)量,但在計(jì)算資源較少的情況下,前兩者分別有0.6%和0.7%的APval提升,并在F1上增加了0.9%和0.3%,故CPANSPP使用Mish激活函數(shù)時(shí)性能最優(yōu)。綜上所述,模型CSP化帶來(lái)的優(yōu)勢(shì)顯著,因此選取CPANSPP-Mish結(jié)構(gòu)作為主干。
表2展示了YOLOv5s-P系列模型的訓(xùn)練結(jié)果,以Mish為激活函數(shù)選取不同閾值(iou為50%、60%和75%)與迭代次數(shù)(Epoch)所獲得的AP值。
表2 YOLOv5s-P系列模型的消融研究
通過(guò)將YOLOv5s-csp與其他微小物體檢測(cè)器在DAGM 2007數(shù)據(jù)集上進(jìn)行性能比較,結(jié)果如表3所示??梢钥闯?,YOLOv5s-csp與其他微型模型相比,性能最佳。
表3 先進(jìn)的微型模型比較
最后,將YOLOv5s-csp部署在GPU和嵌入式CPU上進(jìn)行測(cè)試,包括NVIDIA Quadro P4 000和搭載NCS2計(jì)算棒的Raspberry Pi4B。結(jié)果十分明顯,YOLOv5s-csp在GPU上推理耗時(shí)較短且平均檢測(cè)精度更高,可以實(shí)現(xiàn)實(shí)時(shí)檢測(cè)的功能。在樹(shù)莓派上單張圖片的推理時(shí)間平均為0.25 s,可以滿足大部分生產(chǎn)流水線的檢測(cè)速度要求。此外,在通用GPU NVIDIA Quadro P4 000上運(yùn)行YOLOv5s-csp,批處理大小分別為1和2時(shí),幀率分別可達(dá)50 fps和119 fps。
如圖5所示為YOLOv5s-csp對(duì)DAGM 2007缺陷檢測(cè)數(shù)據(jù)的檢測(cè)結(jié)果。該數(shù)據(jù)集總共包含10類(lèi)缺陷,圖中每列對(duì)應(yīng)一類(lèi)缺陷。采用Grad-CAM方法[24]對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型中的決策進(jìn)行可視化解釋?zhuān)玫交叶葓D、熱力圖以及融合圖。實(shí)驗(yàn)結(jié)果表明,檢測(cè)結(jié)果圖中缺陷位置與熱力圖中定位相吻合,故熱力圖中的缺陷位置能夠精確表述原圖缺陷。經(jīng)在數(shù)據(jù)集上測(cè)試,單張圖片的檢測(cè)速度為21 ms/張,10種類(lèi)型缺陷的平均正確率達(dá)96.1%,較原算法提高了5%。
本節(jié)對(duì)替換不同層數(shù)DWConv的YOLOv5s-csp模型訓(xùn)練并測(cè)試,對(duì)比不同參數(shù)量(Param)和迭代次數(shù)(epoch)的模型,以F1作為指標(biāo)觀察模型性能變化,結(jié)果如圖6所示。圖6a采用LeakyRelu激活函數(shù),當(dāng)參數(shù)量下降到7.47e6之后F1呈顯著下降趨勢(shì),在參數(shù)量6.75e6~7.47e6區(qū)間內(nèi)F1最大降幅為0.021,而圖6b采用Mish激活函數(shù)時(shí)最大降幅僅0.004;在迭代次數(shù)400次參數(shù)量8.32e6時(shí)Mish超過(guò)LeakyRelu 0.21%,當(dāng)參數(shù)量降至6.75e6時(shí),這種優(yōu)勢(shì)達(dá)到最大,百分比為0.58%??傮w來(lái)看,采用Mish作為激活函數(shù)時(shí)F1更平穩(wěn)且數(shù)值更高,因此選擇Mish作為激活函數(shù)。將SoftSPP中兩個(gè)1×1的普通卷積替換成DWConv(1×1),此外SoftSPP前后的兩個(gè)3×3普通卷積也用DWConv(3×3)進(jìn)行替換,改進(jìn)得到的YOLOv5s-csp能夠達(dá)到參數(shù)量與檢測(cè)精度間的最佳平衡,適宜部署在資源受限的邊緣設(shè)備上。
表面缺陷檢測(cè)是現(xiàn)代工業(yè)生產(chǎn)中與品控、安全等相關(guān)的重要問(wèn)題。針對(duì)有限計(jì)算資源下檢測(cè)性能不足的問(wèn)題,本文提出一種基于擴(kuò)展跨階段局部網(wǎng)絡(luò)的表面缺陷檢測(cè)方法。結(jié)合YOLOv5s輕量級(jí)模型和CSP方法將網(wǎng)絡(luò)Neck結(jié)構(gòu)CSP化,提出了可向上、向下擴(kuò)展且適配不同規(guī)模計(jì)算資源的YOLOv5s-P系列模型。為提升檢測(cè)精度,將SPP模塊池化方式改進(jìn)為軟池化,并優(yōu)化池化窗口參數(shù)。然后利用深度可分離卷積保持模型輕量化,減少參數(shù)量和所需算力的同時(shí)獲得更高的正確率。實(shí)驗(yàn)結(jié)果表明,YOLOv5s-csp模型在表面缺陷檢測(cè)方面精度較高,在DAGM 2007缺陷檢測(cè)數(shù)據(jù)集上的精度mAP達(dá)96.1%,比傳統(tǒng)模型高出5%;在搭載NCS2計(jì)算棒的Raspberry Pi4B上,YOLOv5s-csp模型的檢測(cè)速度為4 fps,大小僅7.1 MB,適宜部署在邊緣設(shè)備上。此外,還測(cè)試了YOLOv5s-P系列模型并得到了較高的精度。在未來(lái)的工作中,一方面在實(shí)時(shí)性等方面開(kāi)展持續(xù)研究,另一方面將收集表面缺陷數(shù)據(jù)反饋生產(chǎn)部門(mén)以獲得更好的應(yīng)用價(jià)值。
計(jì)算機(jī)集成制造系統(tǒng)2022年8期