余 浪 苗鴻賓② 蘇赫朋 申光鵬
(①中北大學機械工程學院,山西 太原 030051;②山西省深孔加工工程技術研究中心,山西 太原 030051)
為實現智能化工業生產的發展,結合深度學習[1]以及機器學習[2]等技術到工業生產流程當中得到了越來越多的應用,如何實現工業的自動化生產也越來越成為智能制造領域的研究熱點。工業自動化生產中對目標工件進行智能化裝配、無序分揀和自動化維修等過程中需對目標工件進行準確的識別檢測,傳統的對工件的識別與檢測方法主要有基于圖像Hu 矩[3]、Blob 特征[4]、Sobel 算子[5]等模板匹配算法,但這些檢測算法受環境因素影響較大,魯棒性差,檢測精度不高,并不能夠滿足實時的高精度工件識別檢測要求。
近年來,隨著智能化技術的不斷發展,如何利用神經網絡模型對工件進行準確地識別越來越成為制造領域內的研究熱點。蘇維成等[6]提出基于改進Tiny-YOLOv3 算法的工件識別,通過在特征提取網絡中增加Ghost 模塊、SE 模塊和SPP 結構3 個網絡模塊,并用卷積層代替池化層來改進Timy-YOLOv3模型,改進后的模型對小目標工件檢測準確率達到84.8%,平均精度均值達到94.9%,同時減小了網絡模型的大小;張宇廷等[7]結合機器視覺與Faster-RCN 的識別檢測算法到Delta 機器人上,提高了對工件的識別平均精確度;崔新霞等[8]以YOLOv3 網絡作為基本框架開展機器人工件識別方法研究,通過對數據集進行增強處理,改進YOLOv3 的損失函數,并應用空間金字塔池化層進行YOLOv3 中特征金字塔網絡改進,改進后的網絡平均檢測準確率均值達到 98.05%,檢測每張圖片的時間為137 ms。以上基于深度學習的工件識別與檢測雖然均取得了較好的檢測效果,但大多只適用于工件無遮擋的情況,并且存在檢測模型普遍較大、檢測速度較慢等問題。
基于此,本文提出基于改進YOLOv5s 的工件識別檢測算法,在特征融合網絡中添加CBAM 注意力機制,利用加權雙向特征金字塔Bi-FPN 結構進行特征融合,并通過采用α-IoU 作為邊界框回歸損失函數,提高邊界框回歸精度以及模型的收斂效果,以解決工件遮擋識別檢測定位問題、網絡模型速度慢和網絡大小問題,為智能生產線上目標工件的識別檢測問題提供解決方案。
隨著深度學習神經網絡技術的發展,YOLOv5算法基于其對目標進行檢測定位的精度高以及速度快的優點,在工件識別檢測領域也得到了越來越多的應用。相比于傳統的目標檢測方法,深度學習技術具有更強的特征提取能力以及更快的特征檢測速度。目前對于目標的識別與檢測常用到的網絡模型主要包括基于兩階段檢測的Faster R-CNN 檢測算法[9]和基于一階段檢測的YOLO 系列算法[10]。相比于兩階段的檢測,一階段的檢測算法在進行檢測的過程中只需要將圖像輸入到網絡中,然后直接輸出對象的位置坐標值和類別概率,與兩階段的檢測算法相比,雖然其精度相對較低,但檢測速度有了顯著提高,更適用于實時性要求高的檢測系統。
YOLOv5 算法是YOLO 系列算法之一[11],YOLOv5 包 括YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x 四種結構,它們之間的主要區別在于特征提取深度和寬度的不同。YOLOv5 算法在檢測目標的過程中將整個圖像作為網絡的輸入,然后在輸出層中直接返回目標邊界框的類別及其位置信息。YOLOv5 算法以CSPDarknet53 作為主干網絡,在頸部網絡中采用路徑聚合PANET 網絡結構,以及以多尺度特征融合預測的方式提取圖像特征。YOLOv5是在YOLOv4 基礎上進行的改進,與YOLOv4 相比,YOLOv5 網絡不僅實現了更快以及更高精度的檢測,同時也顯著減小了網絡模型的尺寸大小。在YOLOv5的四種結構中,YOLOv5s 是模型參數最小、檢測速度最快、最簡單的版本,由于自動生產線上需對目標工件進行實時準確的識別檢測,對其檢測的實時性有著較高的要求,因此本文選用YOLOv5s 模型作為研究對象,通過對YOLOv5s 算法進行改進,以達到對目標工件的檢測要求。YOLOv5s 算法結構如圖1 所示。

圖1 YOLOv5s 算法結構
為了使得模型在運算的過程中能夠快速地收斂、加快計算的速度以及提高檢測精度,在目標識別檢測的過程中提出Anchor Boxes 的設計。在Faseter RCNN 和SSD 中對于Anchor Boxes 的聚類分析設計主要通過人工進行設計,針對性差,受人的主觀性影響較大。原YOLOv5s 算法中對于Anchor Boxes的計算是通過k-means 算法[12]由COCO 數據集聚類得到的,避免了模型訓練時進行過多的盲目尋找,加快了模型訓練的收斂速度,最后得出9 種不同大小的Anchor Boxes,分別用于3 種不同尺度上的特征檢測,每個尺度特征圖上分別有3 個Anchor Boxes。
k-means 聚類算法在聚類計算Anchor Boxes 的過程之中主要依據曼哈頓距離、歐氏距離等作為距離度量,但這些度量方法并不適用于本文對工件的識別檢測,因此本文對k-means 聚類算法進行改進,采用如下的距離公式來度量邊框之間的相似度。
式中:X為真實框;Y為聚類框;Iarea為X與Y之間的交集;Uarea為X與Y之間的并集。
同時由于在采集圖像的過程中不可避免地會存在干擾的異常點而造成最終聚類出來的結果出現較大偏差,因此本文首先引入DBSCAN 算法對異常點進行處理。DBSCAN 算法能夠有效地檢測出數據集中的異常點,提高Anchor Boxes 的聚類效果。
本文通過改進k-means 聚類算法得到不同的聚類簇數k值,對于k的取值再結合平均交并比Avg IoU 作為目標函數做進一步分析。取值k=1~15,分別得到對應的Avg IoU 值,如圖2 所示。

圖2 改進k-means 聚類分析結果
由圖2 可知:隨著k值的不斷增大,Avg IoU值也在不斷增大,但增長的趨勢隨著k值的不斷增大在不斷地減緩。隨著k值的不斷增加,預測出來的結果會更好,但同時也會增加模型的計算量以及產生過多的冗余Anchor Boxes 導致模型的收斂速度降低。觀察圖2 中的曲線走勢可知,在k值等于9之后的曲線增長速度大幅降緩,k值在等于9 與k值等于15 之間的Avg IoU 差值并不是很大,所以本文選擇k=9 作為k的最終取值。由此根據本文的數據集進行重新聚類得出最終的9 個聚類中心的維度分別為(18,15)(38,42)(84,66)(88,163)(142,128)(186,244)(226,212)(246,412)(322,346)。
針對在工件在堆疊以及遮擋的復雜環境下能夠準確地識別目標工件、提高工件的檢測效果,本文給系統的主干網絡卷積層間引入注意力機制CBAM模塊[13]。
注意力機制是一種模仿人類注意力的深度學習優化策略,目的是將計算資源分配給更重要的任務,并解決信息超載的問題。CBAM 注意力機制具有尺度小、不會占用太多內存的特征,同時CBAM 注意力機制通過在通道和空間2 個維度上進行獨立的運算,大大提高了對圖片注意力信息的提取效果。選擇在網絡結構中添加CBAM 注意力機制,相比于添加其他注意力機制能夠達到更好的特征提取效果,同時也不會明顯地增加網絡模型的大小。CBAM結構如圖3 所示。

圖3 CBAM 結構
在原YOLOv5s 算法中的特征提取網絡采用的是PAN 網絡,相比于FPN 網絡多了一條自下向上的特征融合路徑。本文的研究對象的是工件圖像,若直接采用PAN 網絡作為特征提取網絡,最終達到的檢測效果并不佳。因此,本文選擇采用Bi-FPN[14]網絡作為特征提取網絡。Bi-FPN 網絡是一種雙向跨尺度連接和加權特征融合結構,一種加權雙向特征金字塔提取網絡,可以進行多尺度的特征融合。Bi-FPN 原理圖如圖4 所示。

圖4 特征提取模塊Bi-FPN 原理圖
Bi-FPN 減少了一些不必要層的結點連接,同時給各個層賦予了不同權重去進行特征融合,加速了網絡模型訓練中的收斂速度,相較于PAN 網絡具有更好的特征提取能力。
為了獲得精準的工件位置信息,需引入定位損失函數IoU。IoU 表示的是檢測框與真實框之間的位置關系,其損失函數的計算方式如下:
式(2)表示的是真實框Bgt與預測框B之間的交并比關系,IoU 的值越大表示預測結果更好。
在IoU 損失的計算中,當預測框與真實框不相交時IoU 始終等于0,以及當預測框與真實框的交并比相同時,預測框與真實框的相對位置存在不同的情況,這時將不能準確的反向傳播反映預測區域框與真實區域框的相對位置關系,所以需對IoU 損失進行優化。G-IoU、D-IoU、C-IoU 是對IoU 損失的不同改進,G-IoU 解決了預測框與真實框不相交時的問題,但當預測框處于真實框內部時也存在損失值不變、不能反向傳播位置損失的問題,D-IoU通過計算預測框與真實框的中心距離解決了G-IoU存在的問題,同時提高了網絡模型的回歸速度。YOLOv5s 采用C-IoU 作為位置損失函數,C-loU 在D-IoU 的基礎上增加了對長寬比的考慮,使得預測框與真實框的長寬比更接近,預測框更加接近真實框。所以本文選擇采用在C-loU 的基礎上進行改進的α-IoU[15]作為預測框的位置損失函數,其計算如下:
式中:w和h表示預測檢測框的寬和高,α的不同取值大小可實現不同的預測框的回歸效果。多次測試表明,當α等于3 時,α-IoU 損失相比于C-IoU有著更佳的檢測效果,且不會增加過多的訓練時間,所以本文選擇將α設置為3。
基于深度學習來實現對目標的識別與檢測中,數據集起著重要的作用,它在很大程度上影響著檢測模型的檢測效果。本文采集包含6 種不同的類型工件圖像共1 200 張,同時為增強模型的魯棒性以及避免訓練的模型出現過擬合現象,本文對采集到的目標圖像進行旋轉、鏡像、增加噪聲、改變亮度和對比度等方式進行數據增強處理,最后將圖像數據集從1 200 張圖像增加到3 000 張圖像,并按照9∶1 的比例將圖像數據集分成2 700 張訓練集和300 張測試集。
本文選擇基于Windows 10 系統,使用Pytorch的深度學習架構進行實驗,具體的配置見表1,訓練參數見表2。

表1 訓練平臺配置參數

表2 訓練參數設置表
本文將改進的YOLOv5s 算法與原YOLOv5s 算法分別進行訓練實驗,并記錄每一次訓練過程中的Loss值。Loss值的收斂速度以及最終的收斂狀態是否穩定是評判模型性能的關鍵指標之一,本文訓練得出的損失曲線如圖5 所示。

圖5 損失曲線
由圖5 可知,改進后的網絡模型有更快的收斂速度和更好的訓練效果。
為了對本文改進前后的算法性能進行對比評估,在進行工件識別檢測的過程中記錄正確檢測出的工件數量TP,被錯誤檢測的工件數量FP以及沒有被檢測出的工件數量FN,然后通過計算目標的平均準確率AP對算法進行評價。AP計算公式如下:
式中:P(r)表示一條P-R曲線,AP是對P和R的綜合考慮,適用于對單個工件進行檢測評價,也可以用來衡量模型的檢測性能。AP的值越高,則該模型的檢測效果越好。同時計算平均準確率均值mAP,即AP值在所有工件類型上的均值,用于評價模型對檢測所有工件種類的綜合性能。計算結果見表3。

表3 YOLOv5s 改進前后算法的檢測結果對比
由表3 的計算結果可知,改進后的YOLOv5s算法mAP值相較于原YOLOv5s 算法從90.90%提升到96.93%,提升了6.03%;速度從15.6 fps 提升到29.3 fps,提升了13.7 fps,也說明了改進的YOLOv5s算法有著更好的檢測性能。
實驗檢測效果如圖6 所示,分別是利用改進前后的YOLOv5s 算法進行檢測的結果對比。從檢測效果對比可知,改進后的YOLOv5s 算法檢測結果更接近目標工件,未出現較大的圖像邊緣偏差,同時對于堆疊的工件圖像能夠更加準確地檢測出受遮擋的工件,具有更高的檢測準確度和檢測精度。

圖6 檢測效果圖
要實現對目標的準確識別檢測,現如今也有著很多優秀的檢測算法,例如Faster R-CNN 算法和SSD 算法。所以為了對本文改進的YOLOv5s 算法進行更加全面的評測,本文再利用Faster R-CNN 算法和SSD 算法對工件進行檢測作為對比,并以mAP值和檢測速度作為評價指標,得到的實驗結果見表4。

表4 不同算法的檢測結果對比表
從表4 可以得出,無論是檢測的mAP值還是檢測的速度值,相比于其他檢測算法,本文改進的YOLOv5s 算法都有著更好的檢測效果,這是因為本文通過改進k-means 聚類算法對Anchor boxes 進行重新聚類,避免了產生過多的冗余Anchor boxes,同時對原YOLOv5s 網絡結構進行了改進,提升了網絡對工件特征的提取能力,提升了工件的識別檢測效果以及檢測速度。由此可見,本文改進的YOLOv5s 算法在保證了檢測準確性的同時也提高了檢測速度,能夠較好地完成工件的識別檢測任務。
為實現在智能化生產的過程中對目標工件進行準確的識別檢測,本文提出一種基于改進YOLOv5s 的工件識別檢測算法以提高對工件的識別檢測效果。首先,通過改進k-means 聚類算法對Anchor Boxes 進行重新聚類,以減少冗余候選框的數量,加快模型計算速度,以及通過引入CBAM注意力機制在通道與空間兩個維度上提取特征圖的注意力信息,有效抑制背景信息干擾,提升對圖像特征的提取效率以及檢測的準確率。其次,使用多尺度特征融合網絡 Bi-FPN,實現高效的加權特征融合和雙向跨尺度連接,加快檢測速度,同時使用a-IoU 損失作為位置的損失函數來提升模型的收斂速度和邊界框的定位精度。最后,通過對SSD算法、Faster R-CNN 算法、原YOLOv5s 算法以及改進的YOLOv5s 算法進行對比實驗,實驗結果表明,改進后的YOLOv5s 算法對工件的檢測準確性和檢測速度都有了明顯的提升,具有較好的工件識別檢測效果,可用于工業自動化生產線上智能化裝配以及工件無序分揀中對工件的識別檢測。