殷宇翔 徐順清 何堅強 蔣成晨 陸 群 唐乾榕
(鹽城工學(xué)院電氣工程學(xué)院 鹽城 224000)
機械制造業(yè)是我國經(jīng)濟發(fā)展的支柱性產(chǎn)業(yè),其整體生產(chǎn)規(guī)模也在不斷提升。近年來,柔性生產(chǎn)技術(shù)迅速發(fā)展,它是以數(shù)控機床為主的設(shè)備來生產(chǎn)多種類小批量的機械零部件[1],比傳統(tǒng)的批量生產(chǎn)更具靈活性,是促進先進制造業(yè)高新技術(shù)發(fā)展的重要途徑。在柔性生產(chǎn)過程中會產(chǎn)生多種零部件的混合,往往需要人工進行歸類分揀,生產(chǎn)效率不高。隨著智能機器人的發(fā)展,自動抓取已經(jīng)廣泛運用于零件分揀領(lǐng)域,代替了傳統(tǒng)的人工分揀,極大提高了工作效率[2]。但在抓取過程中,首先要對零件進行分類、定位[3]。國內(nèi)對零件定位的研究大多停留于傳統(tǒng)的模板匹配算法[4],在識別的速度與精度方面還比較差,可移植性不強。且在實際的環(huán)境中,零件大多是散亂放置,無法進行較為準確的實時抓取。
隨著神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,更為高效精準的深度學(xué)習算法相繼提出,已逐步代替?zhèn)鹘y(tǒng)算法。在發(fā)展過程中分成兩種類別[5]。一類是以Faster RCNN[6]為代表的雙階段檢測算法,該算法首先生成候選區(qū)域,再經(jīng)過網(wǎng)絡(luò)提取特征,最后對候選區(qū)域進行回歸和分類,雖然有較高的準確率但速度較慢。在零件檢測研究領(lǐng)域中,唐茂?。?]等提出一種改進的Faster-RCNN算法,改善零件焊縫缺陷目標框定位問題,精確度提高了2.4%,但每副圖像檢測時間為0.245s。仝京等[8]通過調(diào)整現(xiàn)有的Mask-RCNN網(wǎng)絡(luò)結(jié)構(gòu),提出使用mask分支的輸出信息進行提取與加工,并結(jié)合多種邊緣檢測算法來提高目標識別的準確率。另一類是以YOLO[9]為代表的單階段檢測算法,該方法直接由網(wǎng)絡(luò)預(yù)測出類別與候選區(qū)域,此類方法優(yōu)點是識別精度較高且快速。楊琳[10]等通過利用Canny邊緣檢測和Sklansky算法與YOLOv4算法相結(jié)合,使零件形狀的最小外接矩形框更為精準,準確率達到93.37%。張浩[11]等通過改進YOLOv3算法,采用Inception網(wǎng)絡(luò)結(jié)構(gòu),使用不同尺寸的濾波器對目標進行多尺度特征提取,檢測的速度提高了9%??梢妴坞A段算法在復(fù)雜環(huán)境仍有較高的識別能力。雖然文獻[7~11]已提出一系列高精度零件檢測算法,但是這些算法的參數(shù)量大,移植性不強,難以運用于工業(yè)機器人。而YOLO系列的簡化版本檢測速度快并對硬件配置要求較低,在嵌入式設(shè)備上使用更為普遍,因此為了滿足工業(yè)機器人對多角度無序零件識別以及精準定位的需求,我們對YOLOv4-tiny算法進行改進。通過引入注意力機制和K-means算法來提高算法的檢測精度。在自制零件數(shù)據(jù)集上,我們對比改進算法與YOLOv4-tiny算法,實驗結(jié)果證明了改進算法的優(yōu)越性。
Alexey等提出了YOLOv4[12]的精簡版模型YOLOv4-tiny[13]。YOLOv4-tiny的網(wǎng)絡(luò)結(jié)構(gòu)更為簡單,對硬件的要求相對低,并且大大減少了參數(shù)的計算量,檢測的速度更快,但其檢測的精度會小幅度下降。YOLOv4-tiny網(wǎng)絡(luò)主要包括以下幾個部分:主干特征提取網(wǎng)絡(luò)、特征金字塔(FPN)和網(wǎng)絡(luò)預(yù)測頭(YOLO Head)。與YOLOv4不同,YOLOv4-tiny的主干特征提取網(wǎng)絡(luò)為CSPdarknet53-tiny,主要由卷積塊和Resblock-body構(gòu)成,卷積塊采用CBL模塊,由卷積層(Convolutional)、激活函數(shù)(Leaky Relu)和批量標準化(BN)構(gòu)成。Resblock-body用來加強特征金字塔的構(gòu)建,解決增加網(wǎng)絡(luò)深度而導(dǎo)致模型退化的問題。
特征金字塔FPN的思想是通過多尺度特征融合。在預(yù)測過程中,低層的特征語義信息相對較少,但是位置準確,高層的特征語義信息比較豐富,但是目標位置比較粗略。FPN通過對高層特征進行上采樣和對底層特征進行自頂向下的連接,能有效表達出特征圖上各種維度特征。在基本不增加原網(wǎng)絡(luò)模型計算量的基礎(chǔ)下,F(xiàn)PN有效地提高了物體檢測的綜合能力。
在網(wǎng)絡(luò)預(yù)測頭部分,YOLOv4會生成三個head,而YOLOv4-tiny會生成兩個尺寸分別為13×13和26×26的特征層傳遞到網(wǎng)絡(luò)預(yù)測頭,來預(yù)測大物體與小物體的檢測結(jié)果。YOLOv4-tiny網(wǎng)絡(luò)模型如圖1所示。
圖1 YOLOv4-tiny網(wǎng)絡(luò)模型
YOLOv4-tiny在進行特征傳遞的時候,不會自動篩選重要信息,可能會忽略小目標以及部分遮擋信息。為了解決這個問題,我們在YOLOv4-tiny的網(wǎng)絡(luò)結(jié)構(gòu)中嵌入注意力機制,注意力機制是將感興趣區(qū)域的特征數(shù)據(jù)進行權(quán)重系數(shù)加權(quán),把更多的注意力集中到這個區(qū)域。
SGE(Spatial Group-wise Enhance)為空間注意力機制[14],其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。它主要關(guān)注目標的一些位置信息。該機制首先對大小為W×H×C的特征圖I的通道維度進行最大池化()和平均池化(),之后將這兩個結(jié)果進行一個合并,通過卷積操作調(diào)整通道數(shù),使用Sigmoid激活函數(shù)后,將得到輸入特征層每一個特征點的權(quán)值,再乘上原模塊的輸入層得到最終特征圖Fs(I),以此來關(guān)注零件的位置特征。公式表示為
圖2 空間注意力模型
SE(Squeeze-and-Excitation)為通道注意力機制[15],網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。它主要關(guān)注目標的一些特征信息。通道注意力機制會對輸入進來的特征圖I分別進行全局平均池化()和全局最大池化(),然后送入共享的全連接層進行處理,將處理后的兩個結(jié)果相加,通過Sigmoid函數(shù)獲得輸入特征層每一個通道的權(quán)值,每個通道的權(quán)值與原特征層做內(nèi)積運算,得到最終輸出特征圖I′,這樣使得輸出層通道中含有零件的更多關(guān)鍵信息。該模塊計算公式如下:
圖3 通道注意力模型
CBAM[16]注意力機制它是一個輕量級即插即用的模塊,其網(wǎng)絡(luò)模型如圖4所示。它是由空間注意力機制和通道注意力機制結(jié)合組成。該模塊計算公式如下:
圖4 CBAM注意力機制模型
當把CBAM注意力機制融入到Y(jié)OLOv4-tiny的CSP結(jié)構(gòu)時,為了不破壞主干提取網(wǎng)絡(luò)的初步特征,把CBAM注意力機制添加到加強特征提取網(wǎng)絡(luò),在FPN層中進行上采樣后,將輸出的特征層經(jīng)過通道注意力機制得到權(quán)值,將所得的權(quán)值乘以原輸出的特征層,讓所得的結(jié)果再經(jīng)過CBAM中的空間注意力機制獲得權(quán)值,將權(quán)值與原輸出的特征層相乘即為最后的輸出,并作為下一層的輸入。在這個過程中,CBAM模塊前后的特征圖尺寸以及通道都不會發(fā)生變化。在主干提取網(wǎng)絡(luò)與FPN連接的分支進行相同的操作。改進后的網(wǎng)絡(luò)將會自動對特征圖上重要的目標信息重新進行權(quán)重分配,使網(wǎng)絡(luò)聚焦于特征圖中零件的關(guān)鍵信息,還能夠抑制無關(guān)及次要信息的干擾,從而提高網(wǎng)絡(luò)模型的檢測精度,其改進后的網(wǎng)絡(luò)模型如圖5所示。并在同樣位置替換成SE注意力機制作對比實驗。
圖5 改進YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
檢測算法中的錨框尺寸的設(shè)計影響檢測精度,它與具體應(yīng)用場景有關(guān)。YOLOv4-tiny中的錨框尺寸是在Coco數(shù)據(jù)集上聚類得出的,且檢測目標種類多尺寸差異較大,使錨框尺寸有所差異。而在自建的零件數(shù)據(jù)集中,各類零件在不同圖像中形狀比例大致相同,因此對所有零件的錨框進行重新聚類,使算法在訓(xùn)練時得到更好的訓(xùn)練效果。首先選擇N個點做為初始聚集的簇心,分別算得每個樣本點到N個簇核心的距離,獲得離該點最近的簇核心,把它歸屬到對應(yīng)的簇,所有的點都歸屬到簇,重新計算每個簇的中心,再次分配數(shù)據(jù)集樣本,當準則函數(shù)達到收斂為止。我們采用的距離公式如下:
其中,IOU為預(yù)測框與實際標注框的交并比,anchor為真實先驗框,center為聚類中心。通過反復(fù)迭代,最終得到預(yù)設(shè)錨框尺寸為(75,174)、(210,214)、(259,130)、(302,132)、(348,68)、(365,84)。
在訓(xùn)練樣本標注的過程中,針對非標零件檢測,目前國內(nèi)外沒有相關(guān)的公共數(shù)據(jù)集,且自建的零件數(shù)據(jù)集采集的數(shù)據(jù)量較少,采用數(shù)據(jù)增強的方法來進行擴充。主要方法有:對圖片進行增加噪點、隨機尺寸縮放以及變換圖像的明暗程度。這樣同一張圖就有了不同形式的變化,以此擴充數(shù)據(jù)集的數(shù)量,提高訓(xùn)練效果。數(shù)據(jù)增強如圖6。
圖6 數(shù)據(jù)增強
數(shù)據(jù)集共有2076張圖片,分為四大類:螺絲(標簽為screw)500張,螺母(標簽為nut)480張,軸承(標簽為bearing)500張,軸承底座(標簽為pedestal)596張,標注的軟件為labelimg,且每張圖片對應(yīng)產(chǎn)生目標物體的中心點坐標以及預(yù)測框的大小,分別存為xml文件。把所得數(shù)據(jù)分成9比1,分別作為訓(xùn)練集與測試集。
深度學(xué)習對硬件環(huán)境有較高要求,通常需要使用GPU進行迭代訓(xùn)練。實驗軟硬件配置如表1所示。配合python匯編語言,PyCharm編譯器進行訓(xùn)練。
表1 實驗配置表
使用改進后的YOLOv4-tiny算法對數(shù)據(jù)集進行重訓(xùn)練,首先采用遷移學(xué)習的方法對模型進行預(yù)訓(xùn)練,先加載預(yù)訓(xùn)練模型,初始學(xué)習率設(shè)置為0.001,權(quán)值衰減項設(shè)置為0.0005,遷移學(xué)習先凍結(jié)主干提取特征層50個epoch后,對應(yīng)訓(xùn)練批次為8,此時損失值從52下降到3.39。在經(jīng)過解封50個epoch后,對應(yīng)批次調(diào)整為4。最后損失值在1.64附近達到穩(wěn)定。在訓(xùn)練過程當中,當模型的迭代次數(shù)增加時損失值會開始下降,當損失值達到平穩(wěn)狀態(tài)時,代表模型已經(jīng)收斂。此時模型識別精度達到最佳。各算法損失函數(shù)如圖7所示。
圖7 網(wǎng)絡(luò)模型損失曲線圖
在目標檢測中常用的評價指標有準確率(Precision)、召回率(Recall)、平均精確度(AP)和各類別平均AP值mAP(Mean Average Precision)、評估速度的常用指標FPS。具體公式如下:
TP表示被正確地劃分為正例的個數(shù),即樣本為正,預(yù)測結(jié)果為正。FP表示被錯誤地劃分為正例的個數(shù),既樣本為負,預(yù)測結(jié)果為正。FN表示被錯誤地劃分為負例的個數(shù),即樣本為正,預(yù)測結(jié)果為負。準確率代表評估捕獲的成果中目標成果所占得比例,召回率代表從預(yù)測正確目標中占所有正例的比例。根據(jù)precision與recall繪制P-R曲線,AP就是該曲線下的面積,mAP就是所有類AP的平均值。它能夠反映全局性能的指標。FPS是指畫面每秒傳輸幀數(shù),常作為目標檢測評估速度的標準。
將訓(xùn)練好的網(wǎng)絡(luò)與其他算法在同樣實驗環(huán)境下作對比實驗,分別測試出各算法在零件數(shù)據(jù)集上的mAP值、準確率、召回率與檢測速度。檢測結(jié)果如表2所示。
表2 算法檢測結(jié)果對比
在相同配置的環(huán)境下,共進行了3次對比實驗,在表2中可以看出把CBAM注意力機制嵌入到Y(jié)OLOv4-tiny的FPN網(wǎng)絡(luò)結(jié)構(gòu),與YOLOv4-tiny相比較,召回率提高了2.38%,表明所提算法對目標漏檢有所提高,準確率從90.34%提高到93.38%,表明降低了目標錯檢,mAP值提高了1.82%,說明總體檢測性能得到提升。雖然檢測速度略微下降,但對實時檢測影響不大??芍崴惴梢愿玫貜目臻g和通道這兩個維度去加強對零件特征的提取,使目標特征更為豐富,提高了檢測的綜合能力。雖然使模型參數(shù)量有所增加,但檢測性能卻有明顯提高。
在YOLOv4-tiny中嵌入CBAM注意力機制與嵌入SE注意力機制相比,前者各項指標比后者均有提高,僅平均檢測時間增加0.16ms,是由于其網(wǎng)絡(luò)模型是在SE模塊上引入了空間注意力模塊。綜合結(jié)果表明,所提算法定位更為精準,達到了速度與精度的平衡,可以更好地移植到設(shè)備平臺。測試集中檢測結(jié)果如圖8所示。所提算法在散亂放置、光線較弱、疊加等復(fù)雜場景對零件的檢測均取得了較好效果。
圖8 檢測結(jié)果示例圖
針對零件目標檢測任務(wù)的檢測精度低的問題,我們使用K-means算法對錨框重新聚類,并通過在YOLOv4-tiny中嵌入CBAM注意力機制得到改進YOLOv4-tiny算法,該算法結(jié)合了YOLOv4與CBAM注意力機制的優(yōu)勢,加強網(wǎng)絡(luò)的感受野,提高網(wǎng)絡(luò)的特征提取能力。根據(jù)多個檢測指標的實驗結(jié)果所得,改進后的YOLOv4-tiny算法精確率提高到89.84%,平均檢測速度達到28幀/秒,對零件的定位精準度和識別率均有所提升。算法所得的最小外接矩形框與中心坐標可為工業(yè)機器人在零件的智能分揀工作中提供參考,但在更具挑戰(zhàn)的零件疊加場景下的識別能力較弱,如何在該場景下進行零件檢測是后續(xù)重點研究內(nèi)容。