丁龍飛,曾水玲
(吉首大學(xué) 信息科學(xué)與工程學(xué)院,湖南 吉首 416000)
電機磁瓦又稱為永磁鐵氧體磁瓦(簡稱磁瓦),是汽車、家電行業(yè)廣泛應(yīng)用的電動機的重要組成部分。電機磁瓦生產(chǎn)過程中因工藝制作技術(shù)和碰撞的影響不可避免會產(chǎn)生磁瓦缺陷,因此對磁瓦質(zhì)量的檢測成為工業(yè)檢測中的必需流程。近年來基于數(shù)字圖像處理的視覺檢測方法因其速度快、準(zhǔn)度高、成本低等優(yōu)勢,逐漸成為缺陷檢測的主要檢測方法,并廣泛應(yīng)用于工業(yè)生產(chǎn)的各個領(lǐng)域[1-5]。從深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNS)提出后,積極促進(jìn)了計算機視覺方向的發(fā)展,讓缺陷檢測的方式有了新的可能。國內(nèi)外對基于深度學(xué)習(xí)[6]的缺陷提取技術(shù)進(jìn)行了不同程度的研究。ImageNet競賽中,許多優(yōu)秀的網(wǎng)絡(luò)模型已經(jīng)被發(fā)現(xiàn)和突破,自AlexNet[7]的提出,網(wǎng)絡(luò)不斷加深,為獲得更多的特征表現(xiàn),VGGNet[8]表明了在堆疊形狀相同的卷積塊,通過增加網(wǎng)絡(luò)深度來獲得更多的特征細(xì)節(jié),對目標(biāo)檢測識別和實例分割會產(chǎn)生相對較好的效果。ResNet[9]將相同的殘差塊疊加起來,以構(gòu)建極深的網(wǎng)絡(luò)體系結(jié)構(gòu),極大提高了CNNs性能。GoogLeNet[10]的提出表明除了深度外,影響網(wǎng)絡(luò)模型性能的另一個關(guān)鍵因素是寬度,在CIFAR數(shù)據(jù)集測試中,寬度甚至可以擁有超過1001層的極深的ResNet網(wǎng)絡(luò),在網(wǎng)絡(luò)寬度上進(jìn)行改變使網(wǎng)絡(luò)性能確實得到一定的提升。其中較為典型的網(wǎng)絡(luò)為VGG19[8]、ResNet34、ResNet50、ResNet101等不同寬度的網(wǎng)絡(luò)。而VGG、Inception[11]系列和ResNet系列這三個網(wǎng)絡(luò)模型在眾多神經(jīng)網(wǎng)絡(luò)中脫穎而出,并在不同的任務(wù)領(lǐng)域都有著優(yōu)異的表現(xiàn)。對這三個神經(jīng)網(wǎng)絡(luò)模型進(jìn)行篩選時,可以看出VGG模型網(wǎng)絡(luò)結(jié)構(gòu)簡單,因此層次較淺,同樣對于Inception系列模型網(wǎng)絡(luò)來說,又顯得相對復(fù)雜,而ResNet系列模型相對于Inception網(wǎng)絡(luò)來說結(jié)構(gòu)簡單,且當(dāng)殘差結(jié)構(gòu)的引入,能夠使得在網(wǎng)絡(luò)深度較大時不容易產(chǎn)生梯度爆炸和梯度消失等現(xiàn)象,ResNet網(wǎng)絡(luò)模型性能強大,在許多圖像特征提取過程中有著出色的表現(xiàn),因此也被多次作為眾多神經(jīng)網(wǎng)絡(luò)模型的骨干網(wǎng)絡(luò),更有研究意義。由于在對缺陷檢測中對缺陷圖像進(jìn)行圖像分類時也要考慮到模型的速度以及精度,該文研究使用ResNe系列網(wǎng)絡(luò)模型中的最流行的ResNet50網(wǎng)絡(luò)模型。
磁瓦缺陷目前的一些算法[12]都是基于Mask-RCNN[13]的2-step模型,通過選取檢測候選框后再識別,這樣兩階段訓(xùn)練時間長,識別時間慢,不適合在實際生產(chǎn)中應(yīng)用。從實際看電機磁瓦缺陷檢測最主要是為了篩選殘次品,以及區(qū)分殘次品的類型,因此端到端模型更適合磁瓦缺陷檢測任務(wù)。
為防止ResNet50網(wǎng)絡(luò)模型在訓(xùn)練時產(chǎn)生過擬合現(xiàn)象,在網(wǎng)絡(luò)模型的最后一個卷積層加入Dropout[14]層,通過網(wǎng)格搜索方法尋找最優(yōu)的超參數(shù)組合確定失活率(Dropout Rate)以及隱藏層新增的神經(jīng)元個數(shù)。為了使網(wǎng)絡(luò)能夠自動學(xué)習(xí)需要注意的每個特征通道和空間的重要程度,引入注意力模塊(Convolution Block Attention Module,CBAM)[15],將CBAM模塊加進(jìn)ResNet50網(wǎng)絡(luò)中,對每個塊中的卷積輸出引入CBAM模塊。實現(xiàn)了對無關(guān)特征的弱化,強調(diào)重要特征,提高了對磁瓦缺陷分類的準(zhǔn)確率,減少了缺陷檢測分類的漏檢率和誤檢率。
主要貢獻(xiàn)如下:
(1)提出一個端到端的目標(biāo)檢測模型來代替目前常見的兩階段目標(biāo)檢測網(wǎng)絡(luò),簡化檢測流程。
(2)在ResNet50網(wǎng)絡(luò)結(jié)構(gòu)中引入CBAM模塊,突出重要特征提高對磁瓦檢測的準(zhǔn)確性。
(3)引入網(wǎng)格搜索方法來尋找最合適網(wǎng)絡(luò)模型的超參數(shù),提升系統(tǒng)的性能。
殘差網(wǎng)絡(luò)ResNet系列結(jié)構(gòu)是目前深度學(xué)習(xí)中最為典型的網(wǎng)絡(luò)結(jié)構(gòu)。所有的殘差網(wǎng)絡(luò)都由殘差塊組成,殘差塊有兩條路徑分支,一種是連接常規(guī)卷積塊路徑,另一種為skip connection捷徑連接路徑,根據(jù)網(wǎng)絡(luò)的捷徑連接路線是否進(jìn)行卷積運算分為兩種不同的殘差塊結(jié)構(gòu),如圖1所示。
圖1 殘差塊網(wǎng)絡(luò)結(jié)構(gòu)
通過圖1的恒等殘差塊(Identity Block)以及卷積殘差塊(Conv Block),堆疊組成了ResNet50的網(wǎng)絡(luò)結(jié)構(gòu)中第二階段到第五階段的卷積層。ResNet50等殘差網(wǎng)絡(luò)模型的第一個階段都是首先將112×112的圖像進(jìn)行一次7×7的卷積以及一次步長為2的3×3的最大池化下采樣操作,使圖像從112×112變?yōu)?6×56,第二個階段到第五個階段,每個卷積階段分別對應(yīng)L=[3,4,6,3]個“1×Conv Block+(L-1)×Identity Block ”的殘差塊組合[16]。除此之外整體網(wǎng)絡(luò)的最后一層為一個全連接層,因此得到整體網(wǎng)絡(luò)的層數(shù)為:
1+(3+4+6+3)×3+1=50,因此得名ResNet50。ResNet50網(wǎng)絡(luò)模型如圖2所示。
圖2 ResNet50的網(wǎng)絡(luò)結(jié)構(gòu)
在ResNet50模型結(jié)構(gòu)中,參數(shù)的微調(diào)對訓(xùn)練結(jié)果影響較大。電機磁瓦缺陷檢測分類任務(wù)不同于一般的圖像處理分類任務(wù),在磁瓦缺陷檢測分類中,檢測場景較為單一,雖然缺陷類型多但是各類別的缺陷易被識別,在分類任務(wù)訓(xùn)練中容易對局部特征產(chǎn)生依賴,導(dǎo)致過擬合現(xiàn)象發(fā)生。為防止此現(xiàn)象發(fā)生,引入隨機失活(Dropout)網(wǎng)絡(luò)層來加強局部神經(jīng)元的表達(dá)能力,有效解決過擬合問題,提高網(wǎng)絡(luò)的分類精度以及泛化能力。Dropout層的原理是在訓(xùn)練中將一部分隱藏層中的神經(jīng)元按照設(shè)定的丟棄概率(Rate)暫時失活,以此來降低全連接層中神經(jīng)元之間的密切依賴,減少過擬合現(xiàn)象的發(fā)生。
通過Bernoulli函數(shù)來設(shè)置神經(jīng)元i的隨機失活向量rj,其中Bernoulli函數(shù)是為了隨機生成一個0-1向量,當(dāng)向量為0時,神經(jīng)元失活;當(dāng)向量為1時,不對神經(jīng)元進(jìn)行操作。以此來表示Dropout層中神經(jīng)元i的失活情況,p為存活概率。由r(s)來表示所有神經(jīng)元的失活向量矩陣:
(1)
(2)
(3)
(4)
式(1)和式(2)為神經(jīng)元的隨機失活處理,式(3)和式(4)為未經(jīng)失活處理的神經(jīng)元的前向傳播計算公式。
在ResNet50隱藏層中引入Dropout層,隱藏層的神經(jīng)元個數(shù)和設(shè)定的失活概率會影響網(wǎng)絡(luò)模型性能,采用網(wǎng)格搜索方法來最終確定對于Dropout網(wǎng)絡(luò)層最合適的參數(shù)組合。網(wǎng)格搜索法是通過不同的參數(shù)搭配,統(tǒng)計出每個參數(shù)組合后的網(wǎng)絡(luò)模型的精準(zhǔn)率和召回率,取訓(xùn)練效果最好的一個參數(shù)組合作為網(wǎng)絡(luò)的參數(shù)組合,得到最終改進(jìn)的網(wǎng)絡(luò)模型。在網(wǎng)格搜索中,首先根據(jù)訓(xùn)練經(jīng)驗來設(shè)置參數(shù),該文根據(jù)一般網(wǎng)絡(luò)設(shè)置了新增卷積層神經(jīng)元設(shè)置為可供選擇的[0,64,128,256,512,1 024]以及設(shè)置可選擇的失活的概率[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]。當(dāng)失活概率為0時,即不進(jìn)行失活處理,當(dāng)選擇的新增神經(jīng)元為0時,即不添加任何新增神經(jīng)元。當(dāng)不為0時即為簡單的遷移學(xué)習(xí)網(wǎng)絡(luò)模型。對于電機磁瓦缺陷圖像設(shè)置為正樣本,無缺陷圖像設(shè)置為負(fù)樣本。F1-score為分類問題的一個重要衡量指標(biāo),它是精確率(precision)和召回率(recall)的調(diào)和平均數(shù),數(shù)值集中在區(qū)間[0,1]之間,即:
(5)
選用F1-score來評價各組合的模型。選取前五個最優(yōu)的模型輸出組合,如表1所示。
表1 前五個最優(yōu)組合的模型輸出結(jié)果
由表1可知,對于該文使用的磁瓦缺陷圖像數(shù)據(jù),最佳的網(wǎng)絡(luò)組合為Dropout Rate為0.3,隱藏層Dense神經(jīng)元的數(shù)目為256。改進(jìn)后的ResNet50網(wǎng)絡(luò)在最后一層全連接層中加入Dropout層,將最后一層分類變成5類,分別對應(yīng)電機磁瓦的五種缺陷類型。改進(jìn)后的ResNet50的網(wǎng)絡(luò)結(jié)構(gòu)見圖3。
圖3 改進(jìn)后的ResNet50網(wǎng)絡(luò)結(jié)構(gòu)
增強卷積神經(jīng)網(wǎng)絡(luò)性能的方式有許多,前些年,許多神經(jīng)網(wǎng)絡(luò)通過增加神經(jīng)網(wǎng)絡(luò)的層數(shù)來強化性能,也有使用更大的卷積核來增加感受野獲得更多的圖像細(xì)節(jié),以此來提高網(wǎng)絡(luò)性能。目前最為普遍和實用的提高網(wǎng)絡(luò)性能的方式為注意力機制。SE-Net[16]首次提出了通道注意力,其有效機制可以建立不同特征之間的空間相關(guān)性,提高了神經(jīng)網(wǎng)絡(luò)模型性能。隨后,基于SE-Net模型,注意力機制CBAM被提出,CBAM與SE-Net的區(qū)別在于CBAM增加了空間注意力模塊,用包含通道注意力和空間注意力兩個模塊的網(wǎng)絡(luò)來提高網(wǎng)絡(luò)的性能。CBAM的結(jié)構(gòu)如圖4所示。
CBAM模塊首先將輸入的特征圖通過一個通道注意力模塊,得到加權(quán)結(jié)果之后,再經(jīng)過空間注意力模塊,通過加權(quán)得到最終的特征圖。在磁瓦缺陷檢測中無關(guān)重要的背景不是需要關(guān)注的目標(biāo),只需要把更大的權(quán)重分配給缺陷特征,將注意力集中在缺陷特征,因此通過CBAM模塊來提升提取缺陷特征的能力。而對于CBAM模型中的通道注意力模塊,需要經(jīng)過兩個全連接層來構(gòu)成通道間的相關(guān)性,再經(jīng)過Sigmoid非線性激活函數(shù)產(chǎn)生每個通道的權(quán)重,雖然這個做法會有效降低維度但卻會導(dǎo)致局部信息丟失,使精度下降。分析后決定將兩個全連接層用1×1的卷積層代替,增強通道間的相關(guān)性,減少局部信息丟失現(xiàn)象。改進(jìn)后的注意力機制網(wǎng)絡(luò)[17]如圖5所示。
圖4 CBAM結(jié)構(gòu)
圖5 改進(jìn)后的注意力機制結(jié)構(gòu)
改進(jìn)的注意力機制具體表示為:
M1=Mc(F)?F
(6)
M2=Ms(Mc(F)?F)
(7)
F′=M1?M2
(8)
式中,F(xiàn)∈C×H×W為輸入特征圖,C、H、W分別表示特征圖的通道數(shù)、高和寬;Mc∈C×1×1和Ms∈1×H×W分別表示通道注意力模塊和空間注意力模塊;?σ表示逐元素乘法;M1表示特征圖F與MC進(jìn)行矩陣乘法運算,M2表示特征圖F與Ms進(jìn)行矩陣乘法運算。F′∈C×H×W為最終輸出。
對于通道注意力Mc∈C×1×1,經(jīng)過全局最大池化和平均池化,分別記為和隨后經(jīng)過卷積計算得到權(quán)重C1Dk,并對C1Dk的兩個輸出進(jìn)行權(quán)重計算,最后經(jīng)過一層Sigmoid激活函數(shù)得到最終的通道注意力特征圖,用數(shù)學(xué)方式表示為:
(9)
對于空間注意力Ms∈1×H×W,第一步本模塊的輸入特征圖使用的是經(jīng)過通道注意力模塊后得到的特征圖,再經(jīng)過兩個池化操作得到的結(jié)果分別記為1×H×W和第二步將和合并,變成一個含有雙通道的特征;第三步使用了7×7的卷積核將含有兩個通道的特征圖降維,變成了單通道。這樣做的目的是為了使得維度前后一樣,方便特征的融合;最后經(jīng)過Sigmoid激活后輸出最終的空間注意力特征權(quán)值[18]。可簡單描述為:
通過改進(jìn)的ResNet50和增加的CBAM模塊得到整個融合注意力機制的殘差網(wǎng)絡(luò)結(jié)構(gòu),整體的電機磁瓦缺陷檢測網(wǎng)絡(luò)模型如圖6所示。
圖6 融合注意力機制的殘差網(wǎng)絡(luò)結(jié)構(gòu)
實驗環(huán)境:Win10系統(tǒng),Inter i5-9300H處理器,NVIDIA GeForce RTX 2060顯卡兩張, Python 3.6,Pytorch環(huán)境,CUDA10.1。在訓(xùn)練過程中,選擇能夠高效計算的Adam優(yōu)化器,學(xué)習(xí)率設(shè)置為1e-4,選擇交叉熵?fù)p失函數(shù)(Cross-entropy)作為損失定義函數(shù),批大小為16,迭代次數(shù)為100次。
采用的開源數(shù)據(jù)集來自文獻(xiàn)[19],在整個數(shù)據(jù)集中,共有五種磁瓦缺陷圖像以及無缺陷的樣本1 335張,其中有氣孔缺陷115張,破損缺陷85張,裂紋57張,磨損32張,無缺陷952張,起層94張。在數(shù)據(jù)集中的正負(fù)樣本比例為2∶5。訓(xùn)練集與測試集比為7∶3。
常見的評價指標(biāo)主要有精準(zhǔn)率(precision)、召回率(recall)、平均精確率(average precision,AP) 以及平均精確率均值(mean average precision,mAP)。
在缺陷檢測中進(jìn)行分類任務(wù)時,需要對圖像進(jìn)行不同的分類,因此使用mAP更符合需要。mAP的值越大,表示該模型的定位與識別的準(zhǔn)確率越高。其定義如公式(11)所示:
(11)
使用全類平均準(zhǔn)確率(mAP)作為評價指標(biāo),對所有種類求其平均精準(zhǔn)度能夠合理地反映網(wǎng)絡(luò)的性能。
為選取最優(yōu)的ResNet結(jié)構(gòu),將不同層數(shù)的ResNet網(wǎng)絡(luò)在磁瓦缺陷檢測數(shù)據(jù)集上進(jìn)行訓(xùn)練,選取其中訓(xùn)練表現(xiàn)最好的ResNet系列網(wǎng)絡(luò)。使用ResNet18、ResNet34、ResNet50在磁瓦缺陷數(shù)據(jù)集中進(jìn)行訓(xùn)練,實驗對比如表2所示。
表2 前五個最優(yōu)組合的模型輸出結(jié)果
由表2可知,ResNet50在磁瓦缺陷檢測分類任務(wù)中的表現(xiàn)最好,在沒有改進(jìn)的情況下缺陷類別檢測準(zhǔn)確度達(dá)到了96.92%,高于其他層數(shù)的ResNet模型,決定選取ResNet50模型作為整個網(wǎng)絡(luò)模型的骨干網(wǎng)絡(luò),并在其基礎(chǔ)上進(jìn)行改進(jìn)和實驗。首先在ResNet50模型中加入CBAM模塊,通過增加通道注意力模塊和空間注意力模塊,增強了缺陷特征提取能力, 提高原網(wǎng)絡(luò)模型的性能,將此ResNet50-CBAM模型訓(xùn)練后觀察訓(xùn)練效果,ResNet50-CBAM模型的訓(xùn)練收斂效果如圖7所示,經(jīng)過100個epoch,網(wǎng)絡(luò)模型收斂程度明顯好于原ResNet50網(wǎng)絡(luò)。
圖7 改進(jìn)的ResNet50與原網(wǎng)絡(luò)損失下降曲線
在ResNet50-CBAM模型的基礎(chǔ)上,將Dropout層加入ResNet50-CBAM的最后一層中的全連接層,防止訓(xùn)練過程中過擬合現(xiàn)象的發(fā)生,在訓(xùn)練中各類缺陷檢測的精準(zhǔn)度如表3所示。
表3 同網(wǎng)絡(luò)模型在各類缺陷的精準(zhǔn)度對比
由表3可知,在訓(xùn)練過程中,模型在氣孔(Blowhole)和破損(Break)兩類缺陷分類中的識別準(zhǔn)確度達(dá)到了非常高的水平,而在磨損(Fray)中的檢測精準(zhǔn)度較低。結(jié)合圖7和表4,對實驗進(jìn)行對比分析。實驗中對ResNet50模型,分別引入了CBAM模塊和Dropout層,改進(jìn)后的ResNet50模型相比較原網(wǎng)絡(luò)mAP值提升了1.3%,在一定程度上提升了識別精準(zhǔn)度。
實驗證明,在加入CBAM模塊后,網(wǎng)絡(luò)模型收斂能力得到了明顯提升。CBAM模塊主要作用是增強網(wǎng)絡(luò)對缺陷類型的特征提取能力,降低漏檢率和誤檢率,提升網(wǎng)絡(luò)的性能。最后增加Dropout層,在ResNet50-CBAM模塊中增加了Dropout層。由表3可知,在網(wǎng)絡(luò)中加入Dropout層后,整體網(wǎng)絡(luò)對各個類別的精準(zhǔn)度有不同程度的提升。通過pytorch內(nèi)置的計時工具和同步工具profile的percall函數(shù),測試了在每個epoch中,改進(jìn)的ResNet50-CBAM所使用時間比原模型平均多了78 ms,相較于性能的提升可以忽略不計。
原ResNet50-CBAM網(wǎng)絡(luò)在各類缺陷檢測中的mAP為0.955 6,改進(jìn)的ResNet50-CBAM的mAP達(dá)到0.969 2,比原網(wǎng)絡(luò)提高了1.3%。
在訓(xùn)練過程中的精準(zhǔn)度對比見圖8??梢暂^為清楚地看到,改進(jìn)的網(wǎng)絡(luò)有效提高了網(wǎng)絡(luò)性能,但還是存在一定的誤檢。綜合看來,改進(jìn)的網(wǎng)絡(luò)相對于原網(wǎng)絡(luò)在性能上取得了一定的提升。
圖8 ResNet50-CBAM改進(jìn)前后準(zhǔn)確度對比
提出一個端到端的目標(biāo)檢測模型來代替目前常見的兩階段目標(biāo)檢測網(wǎng)絡(luò),簡化檢測流程。采用ResNet50網(wǎng)絡(luò)模型作為backbone,針對訓(xùn)練中耗時長且較為依賴局部特征容易發(fā)生網(wǎng)絡(luò)模型過擬合導(dǎo)致分類精度下降的問題,提出在全連接層中加入Dropout層防止過擬合現(xiàn)象的發(fā)生,并通過網(wǎng)格搜索法來尋找最優(yōu)的超參數(shù)組合,確定增加的隱藏層神經(jīng)元個數(shù)和失活率(Dropout Rate)。為了讓網(wǎng)絡(luò)學(xué)習(xí)重點放在缺陷特征上,增加注意力模塊CBAM來加強網(wǎng)絡(luò)性能。CBAM模塊是一個輕量級的模塊,帶來的計算復(fù)雜度基本上可以忽略不計,通過空間注意力模塊和通道注意力模塊來強調(diào)重要特征,提高了對磁瓦缺陷分類的準(zhǔn)確率,減少了缺陷檢測分類的漏檢率和誤檢率,簡化了以往的二階段模型。實驗表明在磁瓦缺陷檢測中,改進(jìn)的ResNet50模型比原模型mAP值高了1.3% ,在實際應(yīng)用中也能夠在工業(yè)流程中有效去除有缺陷的電機磁瓦。后續(xù)可以將模型反應(yīng)速度做得更快,并且能精準(zhǔn)地對不同的缺陷進(jìn)行識別分類,之后也能在此基礎(chǔ)上對模型進(jìn)行更多的改善。