唐孝育,孫明革
(吉林化工學(xué)院 信息與控制工程學(xué)院,吉林 吉林 132022)
隨著工業(yè)化、智能化和5G時(shí)代的到來(lái),手機(jī)已經(jīng)成為必備的智能化產(chǎn)品,人們對(duì)于手機(jī)的性能和外觀也提出了更高要求。手機(jī)蓋板玻璃的品質(zhì)直接影響手機(jī)的外觀,但是手機(jī)蓋板玻璃在生產(chǎn)和裝配過(guò)程中不可避免地會(huì)產(chǎn)生各種缺陷,如臟污、劃痕、坑點(diǎn)等。所以,對(duì)于手機(jī)蓋板玻璃的缺陷檢測(cè)是十分重要的。
手機(jī)蓋板玻璃缺陷檢測(cè)方法包括人工檢測(cè)、傳統(tǒng)機(jī)器視覺(jué)檢測(cè)和深度學(xué)習(xí)模型檢測(cè)三大類。人工檢測(cè)方式受個(gè)人因素和經(jīng)驗(yàn)影響很大,同時(shí)也存在人工效率低、誤檢率高、人工成本高等問(wèn)題;傳統(tǒng)機(jī)器視覺(jué)檢測(cè)方法包括邊緣檢測(cè)[1]、閾值分割[2]、背景消除[3]等,相較于人工檢測(cè)傳統(tǒng)機(jī)器視覺(jué)已具備檢測(cè)效率高、成本較低和檢測(cè)過(guò)程更加客觀等優(yōu)點(diǎn)。傳統(tǒng)機(jī)器視覺(jué)的問(wèn)題是不能處理多目標(biāo)和背景復(fù)雜的圖像。目標(biāo)檢測(cè)深度學(xué)習(xí)模型一般包括兩大類:第一類是Two-stage(雙階段)目標(biāo)檢測(cè);第二類是One-stage(單階段)目標(biāo)檢測(cè)。SSD(Single Shot Multibox Detector)[4,5]是一種One-stage(單階段)目標(biāo)檢測(cè)模型,SSD廣泛用于目標(biāo)檢測(cè),吳水清[6]等人利用SSD模型對(duì)車輛目標(biāo)進(jìn)行檢測(cè),檢測(cè)效果比傳統(tǒng)算法更好,盡管SSD模型對(duì)較大尺寸物體檢測(cè)精度高,但當(dāng)被檢測(cè)目標(biāo)較小時(shí),容易導(dǎo)致目標(biāo)丟失,所以不利于小目標(biāo)檢測(cè)[7]。焦雙健[8]等人利用改進(jìn)的SSD模型實(shí)現(xiàn)對(duì)垃圾、動(dòng)物和車輛這三類鐵路障礙物的檢測(cè)。龍玥[9]等人利用改進(jìn)的SSD模型對(duì)紡織物表面的空織、雙緯、缺經(jīng)、折緯等缺陷進(jìn)行了檢測(cè)。在此基礎(chǔ)上,本文針對(duì)SSD模型存在小目標(biāo)檢測(cè)效果不好的問(wèn)題,通過(guò)替換SSD模型中原有骨干網(wǎng)絡(luò),在特征提取層融入通道注意力機(jī)制,進(jìn)而改善小目標(biāo)缺陷檢測(cè)效果,并將改進(jìn)的SSD模型應(yīng)用于手機(jī)蓋板玻璃缺陷檢測(cè)。
SSD目標(biāo)檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)由三部分組成,第一部分是以VGG-16[10]作為主干網(wǎng)絡(luò),并對(duì)VGG-16的FC6、FC7、FC8層進(jìn)行改動(dòng),將原網(wǎng)絡(luò)中FC6和FC7的全連接層轉(zhuǎn)化為卷積層,去掉FC8層和網(wǎng)絡(luò)中全部的Dropout層;第二部分是對(duì)VGG-16網(wǎng)絡(luò)進(jìn)行延伸,產(chǎn)生了四個(gè)特征提取卷積層(Conv8、Conv9、Conv10、Conv11),得到不同大小和感受野的特征圖;第三部分是兩個(gè)決策分支,將得到的每個(gè)特征圖進(jìn)行位置回歸和分類,每個(gè)特征圖獨(dú)立預(yù)測(cè),且參數(shù)互不共享。SSD模型框架如圖1所示。
圖1 SSD模型框架
SSD網(wǎng)絡(luò)將產(chǎn)生六張大小不同的特征圖,其尺寸分別為38px×38px、19px×19px、10px×10px、5px×5px、3px×3px、1px×1px,每張?zhí)卣鲌D的尺寸分別是原圖的1/8、1/16、1/32、1/64、1/100、1/300。SSD針對(duì)不同特征圖設(shè)定不同大小的先驗(yàn)框,先驗(yàn)框隨著特征圖的變小而增大,這種變換比例如公式(1)所示。
(1)
式中Smax表示最大比例值,即Conv11層對(duì)應(yīng)的先驗(yàn)框比例,設(shè)為0.9,該層先驗(yàn)框大小為300×0.9=270;Smin表示最小比例值,即改進(jìn)后FC7層對(duì)應(yīng)的先驗(yàn)框比例,設(shè)為0.2;m取值為5(不包括Conv4,它所對(duì)應(yīng)先驗(yàn)框縮放比例取Smin/2);Sk表示先驗(yàn)框大小與原圖大小的比例。通過(guò)Sk和原圖大小就可以得到先驗(yàn)框的大小。對(duì)于每個(gè)先驗(yàn)框中心點(diǎn)坐標(biāo),x0和y0的求解見(jiàn)公式(2)和(3)。
(2)
(3)
式(2)、(3)中|Fk|表示特征圖在不同縮放比例下的真實(shí)尺寸,(i,j)∈[0,|Fk|] 。
損失函數(shù)是神經(jīng)網(wǎng)絡(luò)模型可以識(shí)別不同類別物體的核心。而優(yōu)化器的作用就是在模型訓(xùn)練過(guò)程中找到使損失函數(shù)盡可能小時(shí)所對(duì)應(yīng)模型的權(quán)重參數(shù)。常用優(yōu)化器包括自適應(yīng)矩估計(jì)(Adaptive moment estimation,Adam)、隨機(jī)梯度下降算法(Stochastic gradient descent,SGD)和隨機(jī)梯度下降算法加動(dòng)量(Stochastic gradient descent with momentum,SGD-M)[11]。SSD模型中使用的是SGD優(yōu)化器,SGD優(yōu)化器參數(shù)更新流程如圖2所示。
圖2 SGD優(yōu)化器參數(shù)更新流程圖
手機(jī)蓋板玻璃缺陷具有特征小且不明顯的特點(diǎn)。傳統(tǒng)SSD模型提取手機(jī)蓋板玻璃特征時(shí),使用VGG16網(wǎng)絡(luò)作為模型的主干網(wǎng)絡(luò),由于深度較低不利于提取更深層次的抽象特征,從而使得網(wǎng)絡(luò)的表達(dá)能力和性能較差;其次,在缺陷特征的提取過(guò)程中,沒(méi)有考慮特征圖的每一個(gè)通道的重要程度,使得模型對(duì)于無(wú)關(guān)信息和重要信息以相同的權(quán)重進(jìn)行提取,這將導(dǎo)致對(duì)于小缺陷的檢測(cè)精度降低。因此,針對(duì)上述問(wèn)題結(jié)合ResNet50[12]以及SeNet[13]網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn),并融入膨脹卷積的思想對(duì)SSD模型進(jìn)行改進(jìn),改進(jìn)后的SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)后的SSD網(wǎng)絡(luò)結(jié)構(gòu)圖
ResNet50有四個(gè)卷積組包含殘差模塊,殘差模塊結(jié)構(gòu)如圖4所示。每個(gè)卷積組包含的殘差模塊個(gè)數(shù)分別是3、4、6、3。ResNet50模塊是去除了ResNet50中的最后一個(gè)卷積組、全局平均池化層和全連接層之后的部分,同時(shí)由于圖像輸入大小固定并且Conv4_x層的輸出特征圖的大小要求為38,所以要將該層第一個(gè)Block塊的所有步長(zhǎng)都設(shè)置為1。繼續(xù)沿用傳統(tǒng)SSD模型中的Conv7、Conv8、Conv9、Conv10、Conv11層,該網(wǎng)絡(luò)結(jié)構(gòu)依然形成8732個(gè)先驗(yàn)框。
圖4 殘差模塊結(jié)構(gòu)圖
感受野大小與卷積核大小密切相關(guān),為了獲取不同大小的感受野,就要使用不同大小的卷積核。由于不同大小的卷積核會(huì)造成內(nèi)部數(shù)據(jù)結(jié)構(gòu)損失和空間層級(jí)化信息丟失,因此,針對(duì)該現(xiàn)象可以引入膨脹卷積[14]來(lái)代替普通的卷積結(jié)構(gòu),膨脹卷積示意圖如圖5所示。將Conv4_1層、Conv8_1層、Conv9_1層、Conv10_1層中原來(lái)的普通卷積轉(zhuǎn)換為膨脹卷積,并保證輸出特征圖尺寸保持不變。膨脹卷積核大小計(jì)算公式如式(4)所示。
圖5 膨脹卷積示意圖
kernel′=rate×(kernel-1)+1 ,
(4)
公式(4)中kernel′表示膨脹卷積核大小;rate表示膨脹系數(shù);kernel表示原始卷積核大小。
基于ResNet50的SSD模型提取缺陷特征時(shí),沒(méi)有考慮不同信息對(duì)于模型的影響。因而,在模型學(xué)習(xí)過(guò)程中,特征提取網(wǎng)絡(luò)認(rèn)為噪聲信息和重要信息對(duì)于模型的影響權(quán)重相同,這將導(dǎo)致小缺陷和不明顯缺陷容易被噪聲信息所覆蓋,致使這兩種缺陷檢測(cè)效果不好。通道注意力機(jī)制SeNet可以解決這個(gè)問(wèn)題。SeNet目的是通過(guò)構(gòu)建特征通道相互關(guān)系,學(xué)習(xí)獲得每個(gè)特征通道對(duì)于模型的重要程度,然后按照這個(gè)重要程度反過(guò)來(lái)去影響相應(yīng)通道的特征,使當(dāng)前任務(wù)中的有用特征得到加強(qiáng),無(wú)用信息受到抑制。
SeNet結(jié)構(gòu)主要包括Squeeze(擠壓、壓縮)和Excitation(激勵(lì))兩個(gè)操作,該結(jié)構(gòu)如圖6所示。
圖6 SeNet結(jié)構(gòu)圖
在壓縮操作中,將每個(gè)通道單獨(dú)做全局平均池化,得到具有代表全局感受野的一個(gè)實(shí)數(shù)zc,這個(gè)實(shí)數(shù)就代表特征通道的原始權(quán)重值,利用公式(5)進(jìn)行計(jì)算。
(5)
公式(5)中uc表示每個(gè)通道上的特征圖。
激勵(lì)操作包括兩部分,一部分為兩個(gè)全連接FC層,另一部分為兩個(gè)激活函數(shù),通過(guò)這兩部分對(duì)特征通道原始權(quán)重進(jìn)行歸一化處理。其中兩個(gè)激活函數(shù)分別為ReLU激活函數(shù)和Sigmoid激活函數(shù)。第一個(gè)FC層將輸入的1×1×C的特征圖降低維度1×1×C/r(其中r默認(rèn)值為16);第二個(gè)FC層進(jìn)行升高維度操作,將特征圖轉(zhuǎn)化為1×1×C。激勵(lì)操作得到最終的權(quán)重Sc,利用公式(6)進(jìn)行計(jì)算。
Sc=Fex(z,w)=σ[g(z,w)]=σ[w2δ(w1z)] ,
(6)
(7)
公式(7)中“×”表示諸元素相乘。
實(shí)驗(yàn)平臺(tái)操作系統(tǒng):Windows 10 64位;CPU:Inter(R)Core(TM) i7-9700 CPU @ 3.00GHz;顯卡:NVIDIA GeForce GT 710;內(nèi)存:32G;深度學(xué)習(xí)框架:PyTorch;腳本語(yǔ)言:Python3.9.7;運(yùn)行環(huán)境:Pycharm。
表1 缺陷類別訓(xùn)練集、測(cè)試集數(shù)據(jù)統(tǒng)計(jì)表
根據(jù)手機(jī)蓋板玻璃缺陷較小的特點(diǎn),在產(chǎn)生先驗(yàn)框時(shí),針對(duì)文獻(xiàn)[15]中Smax和Smin值進(jìn)行調(diào)整,分別設(shè)為0.7和0.1,進(jìn)而會(huì)產(chǎn)生更多小感受野的先驗(yàn)框,有助于解決小目標(biāo)檢測(cè)性能不好的問(wèn)題。特征層先驗(yàn)框個(gè)數(shù)與尺寸統(tǒng)計(jì)表見(jiàn)表2。
表2 先驗(yàn)框個(gè)數(shù)與尺寸統(tǒng)計(jì)表
在實(shí)驗(yàn)過(guò)程中,對(duì)于改進(jìn)后的SSD模型,一共訓(xùn)練100個(gè)epoch;每個(gè)批次訓(xùn)練樣本batch設(shè)置為16;優(yōu)化器選擇SGD-M,其中momentum值設(shè)置為0.8。
目標(biāo)檢測(cè)模型效果的好壞可以通過(guò)平均精度均值(mean average precision,mAP)值來(lái)衡量,其值利用公式(8)進(jìn)行計(jì)算。
(8)
公式(8)中AP表示精度均值(average precision,AP);n表示缺陷的類別數(shù)(這里n=3)。
SSD模型和改進(jìn)SSD模型缺陷AP值與mAP值對(duì)比表見(jiàn)表3。其中,劃痕(scratching)類AP值從79.31%提升到80.74%;臟污(soiling)類AP值從77.97%提升到79.14%;坑點(diǎn)(pit point)類AP值從67.49%提升到70.48%。通過(guò)AP值可以得到改進(jìn)前模型的mAP值為74.29%,改進(jìn)后的mAP值為76.78%,改進(jìn)后mAP值提高了1.86%。
表3 SSD模型和改進(jìn)SSD模型缺陷AP值與mAP值對(duì)比表
經(jīng)過(guò)理論分析和實(shí)驗(yàn)驗(yàn)證,在手機(jī)蓋板玻璃的劃痕、臟污和坑點(diǎn)三類缺陷中,本文提出的改進(jìn)SSD模型有效地降低了漏檢和誤檢情況。在檢測(cè)精度上,對(duì)于中、大型缺陷劃痕和臟污的預(yù)測(cè)框定位更加精準(zhǔn),同時(shí)三類缺陷的mAP值為76.78%,較傳統(tǒng)SSD模型提高了1.86%。但是由于替換后的骨干網(wǎng)絡(luò)卷積層數(shù)增加,導(dǎo)致計(jì)算量變大,致使模型在推理預(yù)測(cè)時(shí)的實(shí)時(shí)性略有下降,可以適當(dāng)考慮使用輕量型骨干網(wǎng)絡(luò)加以改進(jìn)。