蘇維成 梁宏斌 馮 廣
(遼寧科技大學(xué),遼寧 鞍山 114000)
工件識別技術(shù)在工業(yè)制造領(lǐng)域中有著重要的作用,尤其是將工件識別技術(shù)應(yīng)用于工業(yè)機(jī)器人中??梢宰尮I(yè)機(jī)器人進(jìn)行更加快速準(zhǔn)確地分揀目標(biāo)工件[1]。就現(xiàn)階段而言,基于深度學(xué)習(xí)的工件檢測識別算法有兩大類。即單階段算法和二階段算法。其中二階段算法表示為檢測算法分兩步完成,第一步需要獲取候選區(qū)域,第二步才進(jìn)行分類,例如R-CNN[2]、Faster R-CNN[3];其優(yōu)點(diǎn)在于檢測更加準(zhǔn)確。另一類算法是單階段算法,這類方法采用了端到端的檢測。顧名思義,不再需要單獨(dú)尋找候選區(qū)域,將分類和預(yù)測合并為一步,典型的算法有YOLO(you only look once)[4-6]系列算法和SSD(single shot multibox detector)[7]系列算法等,可以有效地提升檢測速度和泛化能力。
Tiny-YOLOv3是在YOLO系列算法中YOLOv3的基礎(chǔ)上去掉一些特征層,這樣模型的網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,但輸入圖像由于無法充分提取,這將導(dǎo)致?lián)p失信息過多,尤其是對小工件的檢測中存在著漏檢率過高的問題[8]。為了改善上述問題,文中對Tiny-YOLOv3模型算法進(jìn)行了一系列的改進(jìn),從而提升了模型對工件識別檢測方面的性能。
Tiny-YOLOv3算法網(wǎng)絡(luò)結(jié)構(gòu)的卷積層數(shù)大幅減少,并且沒有使用全連接層和殘差層[9]結(jié)構(gòu),主干網(wǎng)絡(luò)上只有卷積層和最大池化層,因此模型的結(jié)構(gòu)和參數(shù)量就相對較少。
Tiny-YOLOv3算法網(wǎng)絡(luò)主要由13個CBL層和6個池化層構(gòu)成,其中CBL層主要由卷積層、批量標(biāo)準(zhǔn)化操作(batch normalization,BN)和激活層(LeakyReLU)3部分構(gòu)成[10],而池化層采用最大池化的方式,用卷積核為2×2,步長也為2的卷積層,其中需要注意的是在512層與1 024層之間的最大池化的步長為1.而不是2。文中采用416×416×3的圖片進(jìn)行圖像處理,檢測流程示意圖如圖1所示。
將輸入圖像劃為s×s的網(wǎng)格單元(Tiny-YOLOv3為多尺度預(yù)測輸出,有2層特征圖,每層特征圖有s×s個網(wǎng)格,分別為13×13、26×26),假設(shè)被測物體的中心落在網(wǎng)格之中,那么這個網(wǎng)格就負(fù)責(zé)預(yù)測這個被測的物體[11]。每個網(wǎng)格對B個邊界框進(jìn)行預(yù)測,每個邊界框不僅要預(yù)測被檢測物體的位置,還要預(yù)測置信度的值,同時每個網(wǎng)格還要預(yù)測C個類別的分?jǐn)?shù)。因此每個網(wǎng)格單元需要產(chǎn)生3×(4+1+C)個值[12]。
置信度損失、分類損失和定位損失這3部分是Tiny-YOLOv3損失函數(shù)的主要組成部分,其公式為:
(1)
Tiny-YOLOv3雖然在模型大小上相比YOLOv3小很多,但對于能在低端機(jī)器上運(yùn)行還是顯得不夠成熟,同時準(zhǔn)確率也大幅下降,并且平均精度均值(mean average precision,mAP)也有所降低。下降的主要原因是Tiny-YOLOv3的主干網(wǎng)絡(luò)較淺,抽象程度較低,從而導(dǎo)致更高層次的圖像語義特征難以被提取。因此,在Tiny-YOLOv3中加入Ghost模塊、SE模塊和SPP結(jié)構(gòu)可以更好的改善模型大小、準(zhǔn)確率以及mAP值。此外,由于最大池化操作僅僅是在相鄰的4個像素點(diǎn)中選取其中的一個,這將導(dǎo)致剩余的3個像素點(diǎn)的浪費(fèi),從而造成網(wǎng)絡(luò)傳遞過程中的特征丟失,因此本模型采用卷積層代替池化層,采用的是卷積核為3×3,步長為2卷積層進(jìn)行卷積操作,這樣在進(jìn)行卷積后能達(dá)到和池化相同的效果,即圖像的尺寸大小會減小為原來的二分之一,但相比池化層將保留更多的特征信息。其改進(jìn)后的Tiny-YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。
由于嵌入式設(shè)備中計算資源少以及有限的內(nèi)存,因此在Tiny-YOLOv3中加入Ghost模塊可以減少神經(jīng)網(wǎng)絡(luò)的計算消耗。
GhostNet[14]網(wǎng)絡(luò)又叫輕量化深度卷積模型架構(gòu),在特征層中冗余和重要的信息都是可以保證對輸入數(shù)據(jù)的全面理解,而且特征層之間有許多相似的地方,這些相似的地方就像彼此的幻象,考慮到特征層中冗余的信息可能也是一個成功模型的重要組成部分,一些輕量化網(wǎng)絡(luò)模型會把冗余的部分去除,但GhostNet并沒有去除冗余的信息,而是用低成本的計算量來獲得冗余部分。
Ghost模塊是GhostNet的重要組成部分。文中在Tiny-YOLOv3中引入Ghost模塊,當(dāng)對于某個特征層只用卷積操作生成部分真實(shí)的特征層,剩余的特征層(幻象特征層)通過對真實(shí)的特征層進(jìn)行線性變換獲得,然后將真實(shí)特征層拼接在一起組成完整的特征層。此處的線性變換是指在3×3的卷積中卷積核的厚度為1,而普通卷積的卷積核厚度是和輸入特征圖通道數(shù)量保持一致。這樣不僅避免大量的運(yùn)算而且同時可以減少很多的參數(shù)。Ghost原理示意圖如圖3所示。
輸入:h(高)×w(寬)×c(通道數(shù)),輸出:h′×w′×n(卷積核個數(shù)),卷積核尺寸k。
普通卷積的計算成本:
cost=h′×w′×n×k×k×c
(2)
Ghost模塊的計算成本:
(3)
s表示輸出層共有幾個部分組成。
壓縮率:
(4)
由于s< 壓縮和獎懲網(wǎng)絡(luò)模塊(squeeze-and-excitation blocks,SE)[15]的主要作用是為了讓模型在特征圖傳遞的過程中關(guān)注更有價值信息的通道特征。解決由于特征圖的不同通道所占權(quán)重不同帶來的損失問題。在特征圖進(jìn)行卷積操作過程中一般認(rèn)為每個通道都起著相同重要的作用,但在解決實(shí)際問題中發(fā)現(xiàn)通道與通道之間也有很大的差異性,因此加入SE模塊可以讓模型自主學(xué)習(xí)通道之間的不同作用。同時對更有用的通道進(jìn)行加強(qiáng)操作并壓縮無用信息的通道。此外SE模塊很容易加載到已有的網(wǎng)絡(luò)模型框架中而不打擾網(wǎng)絡(luò)原有的主體結(jié)構(gòu)。SE原理示意圖如圖4所示。 SE模塊主要進(jìn)行壓縮(squeeze)和激勵(excitation)2個重要操作。 壓縮:為了能更好的建立通道間依賴關(guān)系,采用全局平均池化方法把每個通道上H×W維度的信息壓縮成1個數(shù)。這樣就可以把H×W×C的矩陣壓縮到了1×1×C,每個通道的信息都用該通道的全局平均池化值來表示。 激勵:通過激勵的方法能夠使用這些壓縮過的信息對通道關(guān)系進(jìn)行建模,捕捉空間的相關(guān)性,從而提高網(wǎng)絡(luò)的表達(dá)能力。對于輸出的向量可以理解為通道分析出一個權(quán)重關(guān)系,對于比較重要的通道賦予更大的權(quán)重。當(dāng)經(jīng)過激勵到第2個全連接層后得到的輸出是經(jīng)過 Sigmoid激活的權(quán)重值.然后把不同通道計算出來的權(quán)重系數(shù)分別與進(jìn)行了卷積操作的特征圖對應(yīng)通道的矩陣相乘,從而實(shí)現(xiàn)了對特征通道的重新更改,以此更新特征圖。 由于SE模塊使用了全連接層雖然計算量有所增加,但相比整個網(wǎng)絡(luò)變化并不大,因此對算法的實(shí)時性影響較小同時準(zhǔn)確率有著顯著的提升。 空間金字塔池化(spatial pyramid pooling,SPP)[16]是一種將特征圖分別映射到多種維度空間并將這些多重感受野融合的池化方法,可以讓網(wǎng)絡(luò)結(jié)構(gòu)適應(yīng)不同尺寸的圖像輸入然后得到大小固定的特征圖,還可以有效地提取到目標(biāo)工件的多尺度特征信息??臻g金字塔池化的原理示意圖如圖5所示。 SPP結(jié)構(gòu)在Tiny-YOLOv3中主要實(shí)現(xiàn)局部特征和全局特征的特征圖之間的融合。該方法通過將局部特征進(jìn)行了3種不同的最大池化操作,得到的特征圖然后進(jìn)行拼接處理,使卷積核感受的視野范圍更加廣闊,同時使特征圖的表達(dá)能力更加充分,從而提高mAP值。 實(shí)驗(yàn)操作系統(tǒng)為Ubuntu 18.04,硬件配置為Intel Xeon E5-2678v3處理器,NVIDIA GeForce RTX 2080 Ti顯卡,CUDA版本為10.2。模型采用pytorch框架編寫。 整個訓(xùn)練過程中共迭代300次。本文在訓(xùn)練時批次大小設(shè)置為8,因?yàn)楫?dāng)批次過小時,模型收斂困難,批次過大,則會導(dǎo)致準(zhǔn)確率下降,初始學(xué)習(xí)率設(shè)置為0.001,由于學(xué)習(xí)率決定權(quán)值更新的速度,設(shè)置太大會越過最優(yōu)值,設(shè)置太小會導(dǎo)致權(quán)值更新速度過慢;動量一般默認(rèn)設(shè)為0.9,因?yàn)榇酥涤绊懱荻认陆底顑?yōu)值的速度;衰減系數(shù)默認(rèn)設(shè)為0.000 5,主要是為了防止模型過擬合,同時降低其泛化性能。 文中制作的螺栓螺母數(shù)據(jù)集格式遵循Pascal VOC的數(shù)據(jù)集格式,該數(shù)據(jù)集主要的來源方式是通過相機(jī)拍攝和圖片庫下載。文中采用圖像標(biāo)注工具labelImg對數(shù)據(jù)集中901張圖片進(jìn)行標(biāo)注處理,通過在圖像中框選出螺栓螺母且進(jìn)行分類處理,由于原始圖像只有901張,導(dǎo)致模型從原始數(shù)據(jù)獲取的信息相對較少,因此需要對圖片進(jìn)行翻轉(zhuǎn)、鏡像和亮度變換處理用于數(shù)據(jù)增強(qiáng),由此得到2 703張增強(qiáng)圖片。本實(shí)驗(yàn)隨機(jī)選取圖片2 433張作為訓(xùn)練集使用,驗(yàn)證集圖片270張,按照9∶1的比例進(jìn)行劃分。 3.2.1訓(xùn)練結(jié)果 由圖6可知,當(dāng)在不斷迭代的過程中,發(fā)現(xiàn)損失值趨于平緩無明顯的震蕩,保持穩(wěn)定的狀態(tài)。表明改進(jìn)后的算法具有一定的收斂性且模型訓(xùn)練比較理想。 圖7為在Pascal VOC數(shù)據(jù)集上對螺栓螺母進(jìn)行檢測的結(jié)果,從中看出文中改進(jìn)的算法在實(shí)際的應(yīng)用場景中具有良好的魯棒性,可以準(zhǔn)確地檢測出工件物體并進(jìn)行分類。 3.2.2測試不同模塊對模型的影響 為了更好地了解改進(jìn)后的Tiny-YOLOv3性能,對其中應(yīng)用的模塊進(jìn)行逐個測試來檢測模塊對最終檢測性能的影響。基于Tiny-YOLOv3分別構(gòu)建了Tiny-YOLOv3-SE、Tiny-YOLOv3-SPP、Tiny-YOLOv3-SE-SPP以及改進(jìn)的Tiny-YOLOv3網(wǎng)絡(luò)(將SE模塊、SPP模塊和Ghost模塊都應(yīng)用到Tiny-YOLOv3中),并且將基于Tiny-YOLOv3中模型的最大池化操作用卷積操作代替。 由圖8中的數(shù)據(jù)可知,雖然相比Tiny-YOLOv3-SE-SPP在準(zhǔn)確率與mAP值上有著小幅度的降低,但在模型大小上有著很大的改善。從圖9中得出,改進(jìn)的Tiny-YOLOv3的模型大小遠(yuǎn)遠(yuǎn)小于其他模型,大小僅為22.7 MB,相比Tiny-YOLOv3-SE、Tiny-YOLOv3-SPP和Tiny-YOLOv3-SE-SPP的模型大小減少了14 MB、16.5 MB和17 MB,有著大幅的減少,可以滿足在嵌入式設(shè)備中實(shí)時性的要求。 3.2.3不同模型性能檢測對比 由表1可知,改進(jìn)的Tiny-YOLOv3的算法準(zhǔn)確率相比Tiny-YOLOv3提高了8個百分點(diǎn),同時mAP值也提升了1.5個百分點(diǎn),說明改進(jìn)的Tiny-YOLOv3的漏檢率明顯下降,可以更好地應(yīng)用在在工業(yè)機(jī)器人進(jìn)行快速準(zhǔn)確地進(jìn)行分揀。 檢測模型的性能不僅有模型的準(zhǔn)確率、mAP值和模型的大小,還有模型檢測速度、浮點(diǎn)運(yùn)算數(shù)。文中在同一測試環(huán)境下,改進(jìn)的模型與Tiny-YOLOv3相比,雖然檢測速度下降了16.78 fps,檢測速度稍慢,但仍然滿足實(shí)時性的要求。改進(jìn)的Tiny-YOLOv3浮點(diǎn)運(yùn)算數(shù)僅有9.3 GFLOPs,說明模型相對比較簡單,有利于減少設(shè)備資源的消耗。 表1 不同算法的檢測結(jié)果 文中在Tiny-YOLOv3的基礎(chǔ)上,提出了對該網(wǎng)絡(luò)的改進(jìn),增加了3個子模塊,并且使用卷積層代替池化層,從而減少網(wǎng)絡(luò)傳遞過程中的特征丟失。改進(jìn)的網(wǎng)絡(luò)不僅保證了準(zhǔn)確率和mAP值,而且模型大小、檢測速度也有很大的改善。該模型對小目標(biāo)工件檢測準(zhǔn)確率為84.8%,平均精度均值為94.9%且模型大小為22.7 MB。對比其他網(wǎng)絡(luò)模型,改進(jìn)的Tiny-YOLOv3網(wǎng)絡(luò)模型綜合性能最佳。能夠解決模型難以移植且檢測精度較低的問題,為工業(yè)機(jī)器人能夠更加快速準(zhǔn)確的進(jìn)行無序分揀奠定了基礎(chǔ)。2.3 引入SE模塊
2.4 引入SPP結(jié)構(gòu)
3 實(shí)驗(yàn)驗(yàn)證
3.1 數(shù)據(jù)集制作
3.2 實(shí)驗(yàn)結(jié)果與分析
4 結(jié)語