殷宇翔 徐順清 何堅強 蔣成晨 陸 群 唐乾榕
(鹽城工學院電氣工程學院 鹽城 224000)
機械制造業是我國經濟發展的支柱性產業,其整體生產規模也在不斷提升。近年來,柔性生產技術迅速發展,它是以數控機床為主的設備來生產多種類小批量的機械零部件[1],比傳統的批量生產更具靈活性,是促進先進制造業高新技術發展的重要途徑。在柔性生產過程中會產生多種零部件的混合,往往需要人工進行歸類分揀,生產效率不高。隨著智能機器人的發展,自動抓取已經廣泛運用于零件分揀領域,代替了傳統的人工分揀,極大提高了工作效率[2]。但在抓取過程中,首先要對零件進行分類、定位[3]。國內對零件定位的研究大多停留于傳統的模板匹配算法[4],在識別的速度與精度方面還比較差,可移植性不強。且在實際的環境中,零件大多是散亂放置,無法進行較為準確的實時抓取。
隨著神經網絡的快速發展,更為高效精準的深度學習算法相繼提出,已逐步代替傳統算法。在發展過程中分成兩種類別[5]。一類是以Faster RCNN[6]為代表的雙階段檢測算法,該算法首先生成候選區域,再經過網絡提取特征,最后對候選區域進行回歸和分類,雖然有較高的準確率但速度較慢。在零件檢測研究領域中,唐茂俊[7]等提出一種改進的Faster-RCNN算法,改善零件焊縫缺陷目標框定位問題,精確度提高了2.4%,但每副圖像檢測時間為0.245s。仝京等[8]通過調整現有的Mask-RCNN網絡結構,提出使用mask分支的輸出信息進行提取與加工,并結合多種邊緣檢測算法來提高目標識別的準確率。另一類是以YOLO[9]為代表的單階段檢測算法,該方法直接由網絡預測出類別與候選區域,此類方法優點是識別精度較高且快速。楊琳[10]等通過利用Canny邊緣檢測和Sklansky算法與YOLOv4算法相結合,使零件形狀的最小外接矩形框更為精準,準確率達到93.37%。張浩[11]等通過改進YOLOv3算法,采用Inception網絡結構,使用不同尺寸的濾波器對目標進行多尺度特征提取,檢測的速度提高了9%。可見單階段算法在復雜環境仍有較高的識別能力。雖然文獻[7~11]已提出一系列高精度零件檢測算法,但是這些算法的參數量大,移植性不強,難以運用于工業機器人。而YOLO系列的簡化版本檢測速度快并對硬件配置要求較低,在嵌入式設備上使用更為普遍,因此為了滿足工業機器人對多角度無序零件識別以及精準定位的需求,我們對YOLOv4-tiny算法進行改進。通過引入注意力機制和K-means算法來提高算法的檢測精度。在自制零件數據集上,我們對比改進算法與YOLOv4-tiny算法,實驗結果證明了改進算法的優越性。
Alexey等提出了YOLOv4[12]的精簡版模型YOLOv4-tiny[13]。YOLOv4-tiny的網絡結構更為簡單,對硬件的要求相對低,并且大大減少了參數的計算量,檢測的速度更快,但其檢測的精度會小幅度下降。YOLOv4-tiny網絡主要包括以下幾個部分:主干特征提取網絡、特征金字塔(FPN)和網絡預測頭(YOLO Head)。與YOLOv4不同,YOLOv4-tiny的主干特征提取網絡為CSPdarknet53-tiny,主要由卷積塊和Resblock-body構成,卷積塊采用CBL模塊,由卷積層(Convolutional)、激活函數(Leaky Relu)和批量標準化(BN)構成。Resblock-body用來加強特征金字塔的構建,解決增加網絡深度而導致模型退化的問題。
特征金字塔FPN的思想是通過多尺度特征融合。在預測過程中,低層的特征語義信息相對較少,但是位置準確,高層的特征語義信息比較豐富,但是目標位置比較粗略。FPN通過對高層特征進行上采樣和對底層特征進行自頂向下的連接,能有效表達出特征圖上各種維度特征。在基本不增加原網絡模型計算量的基礎下,FPN有效地提高了物體檢測的綜合能力。
在網絡預測頭部分,YOLOv4會生成三個head,而YOLOv4-tiny會生成兩個尺寸分別為13×13和26×26的特征層傳遞到網絡預測頭,來預測大物體與小物體的檢測結果。YOLOv4-tiny網絡模型如圖1所示。

圖1 YOLOv4-tiny網絡模型
YOLOv4-tiny在進行特征傳遞的時候,不會自動篩選重要信息,可能會忽略小目標以及部分遮擋信息。為了解決這個問題,我們在YOLOv4-tiny的網絡結構中嵌入注意力機制,注意力機制是將感興趣區域的特征數據進行權重系數加權,把更多的注意力集中到這個區域。
SGE(Spatial Group-wise Enhance)為空間注意力機制[14],其網絡結構如圖2所示。它主要關注目標的一些位置信息。該機制首先對大小為W×H×C的特征圖I的通道維度進行最大池化()和平均池化(),之后將這兩個結果進行一個合并,通過卷積操作調整通道數,使用Sigmoid激活函數后,將得到輸入特征層每一個特征點的權值,再乘上原模塊的輸入層得到最終特征圖Fs(I),以此來關注零件的位置特征。公式表示為

圖2 空間注意力模型

SE(Squeeze-and-Excitation)為通道注意力機制[15],網絡結構如圖3所示。它主要關注目標的一些特征信息。通道注意力機制會對輸入進來的特征圖I分別進行全局平均池化()和全局最大池化(),然后送入共享的全連接層進行處理,將處理后的兩個結果相加,通過Sigmoid函數獲得輸入特征層每一個通道的權值,每個通道的權值與原特征層做內積運算,得到最終輸出特征圖I′,這樣使得輸出層通道中含有零件的更多關鍵信息。該模塊計算公式如下:


圖3 通道注意力模型
CBAM[16]注意力機制它是一個輕量級即插即用的模塊,其網絡模型如圖4所示。它是由空間注意力機制和通道注意力機制結合組成。該模塊計算公式如下:


圖4 CBAM注意力機制模型
當把CBAM注意力機制融入到YOLOv4-tiny的CSP結構時,為了不破壞主干提取網絡的初步特征,把CBAM注意力機制添加到加強特征提取網絡,在FPN層中進行上采樣后,將輸出的特征層經過通道注意力機制得到權值,將所得的權值乘以原輸出的特征層,讓所得的結果再經過CBAM中的空間注意力機制獲得權值,將權值與原輸出的特征層相乘即為最后的輸出,并作為下一層的輸入。在這個過程中,CBAM模塊前后的特征圖尺寸以及通道都不會發生變化。在主干提取網絡與FPN連接的分支進行相同的操作。改進后的網絡將會自動對特征圖上重要的目標信息重新進行權重分配,使網絡聚焦于特征圖中零件的關鍵信息,還能夠抑制無關及次要信息的干擾,從而提高網絡模型的檢測精度,其改進后的網絡模型如圖5所示。并在同樣位置替換成SE注意力機制作對比實驗。

圖5 改進YOLOv4-tiny網絡結構
檢測算法中的錨框尺寸的設計影響檢測精度,它與具體應用場景有關。YOLOv4-tiny中的錨框尺寸是在Coco數據集上聚類得出的,且檢測目標種類多尺寸差異較大,使錨框尺寸有所差異。而在自建的零件數據集中,各類零件在不同圖像中形狀比例大致相同,因此對所有零件的錨框進行重新聚類,使算法在訓練時得到更好的訓練效果。首先選擇N個點做為初始聚集的簇心,分別算得每個樣本點到N個簇核心的距離,獲得離該點最近的簇核心,把它歸屬到對應的簇,所有的點都歸屬到簇,重新計算每個簇的中心,再次分配數據集樣本,當準則函數達到收斂為止。我們采用的距離公式如下:

其中,IOU為預測框與實際標注框的交并比,anchor為真實先驗框,center為聚類中心。通過反復迭代,最終得到預設錨框尺寸為(75,174)、(210,214)、(259,130)、(302,132)、(348,68)、(365,84)。
在訓練樣本標注的過程中,針對非標零件檢測,目前國內外沒有相關的公共數據集,且自建的零件數據集采集的數據量較少,采用數據增強的方法來進行擴充。主要方法有:對圖片進行增加噪點、隨機尺寸縮放以及變換圖像的明暗程度。這樣同一張圖就有了不同形式的變化,以此擴充數據集的數量,提高訓練效果。數據增強如圖6。

圖6 數據增強
數據集共有2076張圖片,分為四大類:螺絲(標簽為screw)500張,螺母(標簽為nut)480張,軸承(標簽為bearing)500張,軸承底座(標簽為pedestal)596張,標注的軟件為labelimg,且每張圖片對應產生目標物體的中心點坐標以及預測框的大小,分別存為xml文件。把所得數據分成9比1,分別作為訓練集與測試集。
深度學習對硬件環境有較高要求,通常需要使用GPU進行迭代訓練。實驗軟硬件配置如表1所示。配合python匯編語言,PyCharm編譯器進行訓練。

表1 實驗配置表
使用改進后的YOLOv4-tiny算法對數據集進行重訓練,首先采用遷移學習的方法對模型進行預訓練,先加載預訓練模型,初始學習率設置為0.001,權值衰減項設置為0.0005,遷移學習先凍結主干提取特征層50個epoch后,對應訓練批次為8,此時損失值從52下降到3.39。在經過解封50個epoch后,對應批次調整為4。最后損失值在1.64附近達到穩定。在訓練過程當中,當模型的迭代次數增加時損失值會開始下降,當損失值達到平穩狀態時,代表模型已經收斂。此時模型識別精度達到最佳。各算法損失函數如圖7所示。

圖7 網絡模型損失曲線圖
在目標檢測中常用的評價指標有準確率(Precision)、召回率(Recall)、平均精確度(AP)和各類別平均AP值mAP(Mean Average Precision)、評估速度的常用指標FPS。具體公式如下:

TP表示被正確地劃分為正例的個數,即樣本為正,預測結果為正。FP表示被錯誤地劃分為正例的個數,既樣本為負,預測結果為正。FN表示被錯誤地劃分為負例的個數,即樣本為正,預測結果為負。準確率代表評估捕獲的成果中目標成果所占得比例,召回率代表從預測正確目標中占所有正例的比例。根據precision與recall繪制P-R曲線,AP就是該曲線下的面積,mAP就是所有類AP的平均值。它能夠反映全局性能的指標。FPS是指畫面每秒傳輸幀數,常作為目標檢測評估速度的標準。
將訓練好的網絡與其他算法在同樣實驗環境下作對比實驗,分別測試出各算法在零件數據集上的mAP值、準確率、召回率與檢測速度。檢測結果如表2所示。

表2 算法檢測結果對比
在相同配置的環境下,共進行了3次對比實驗,在表2中可以看出把CBAM注意力機制嵌入到YOLOv4-tiny的FPN網絡結構,與YOLOv4-tiny相比較,召回率提高了2.38%,表明所提算法對目標漏檢有所提高,準確率從90.34%提高到93.38%,表明降低了目標錯檢,mAP值提高了1.82%,說明總體檢測性能得到提升。雖然檢測速度略微下降,但對實時檢測影響不大。可知所提算法可以更好地從空間和通道這兩個維度去加強對零件特征的提取,使目標特征更為豐富,提高了檢測的綜合能力。雖然使模型參數量有所增加,但檢測性能卻有明顯提高。
在YOLOv4-tiny中嵌入CBAM注意力機制與嵌入SE注意力機制相比,前者各項指標比后者均有提高,僅平均檢測時間增加0.16ms,是由于其網絡模型是在SE模塊上引入了空間注意力模塊。綜合結果表明,所提算法定位更為精準,達到了速度與精度的平衡,可以更好地移植到設備平臺。測試集中檢測結果如圖8所示。所提算法在散亂放置、光線較弱、疊加等復雜場景對零件的檢測均取得了較好效果。

圖8 檢測結果示例圖
針對零件目標檢測任務的檢測精度低的問題,我們使用K-means算法對錨框重新聚類,并通過在YOLOv4-tiny中嵌入CBAM注意力機制得到改進YOLOv4-tiny算法,該算法結合了YOLOv4與CBAM注意力機制的優勢,加強網絡的感受野,提高網絡的特征提取能力。根據多個檢測指標的實驗結果所得,改進后的YOLOv4-tiny算法精確率提高到89.84%,平均檢測速度達到28幀/秒,對零件的定位精準度和識別率均有所提升。算法所得的最小外接矩形框與中心坐標可為工業機器人在零件的智能分揀工作中提供參考,但在更具挑戰的零件疊加場景下的識別能力較弱,如何在該場景下進行零件檢測是后續重點研究內容。