楊 琳,陳賽旋,崔國華,朱新龍
(上海工程技術大學機械與汽車工程學院,上海 201620)
深度學習憑借著計算機硬件技術的不斷革新已成為機器視覺中熱門的研究方向,其中基于深度學習的零件識別與定位是備受關注的研究內容之一。傳統(tǒng)零件識別與定位主要是基于模板匹配(Template Matching)算法[1],待識別零件必須以固定大小和角度等要求擺放在相對簡單的環(huán)境之中,無法滿足在相對復雜環(huán)境中對零件進行實時且精準的識別與定位要求。而深度學習相比傳統(tǒng)算法有更優(yōu)的識別能力、計算速度和檢測精度[2]。
近年來,各國研究者致力于降低目標檢測算法的訓練成本,提高算法精度并縮減推理時間,如2015年,Girshick等人受何愷明提出的空間金字塔池化網絡(Spatial Pyramid Pooling Networks:SPPnet)[3]啟發(fā),將計算速度慢且內存占用大的R-CNN(Region-based Convolutional Neural Networks)[4]改進為結構更精巧的Fast R-CNN[5],大幅提高了計算速度;2016年,Redmon J等提出了YOLO目標檢測算法[6],將檢測問題視為回歸問題,網絡框架簡單,識別速度快;同年, Liu W等提出了比YOLO精度更高的SSD(Single shot detection)[7],但這個精度優(yōu)勢很快就被YOLOv2[8]打破。
為了提高工業(yè)生產中多角度無序零件識別準確率和定位精準性,在原有YOLOv4[9]基礎上設計了一種針對性的零件識別與定位高效網絡,首先,在優(yōu)化算法上使用AdaBelief[10]代替原有SGDM[11];其次,在預測邊界框計算方法中加入Canny邊緣檢測[12]和Sklansky算法[13],使用凸包和最小外接矩形框代替原有預測邊界框;最后,在制作的零件數(shù)據(jù)集上進行基于改進YOLOv4的零件識別與定位實驗。實驗結果表明,該基于改進YOLOv4算法的零件識別與定位方法提高了收斂速度和識別精度,可提供精準的零件凸包和最小外接矩形框,以及最小外接矩形框四個角點的坐標,可為工業(yè)智能制造中諸如分揀機器人的抓取檢測等工序提供更精準的定位依據(jù)。
2020年4月, Redmon J等接棒YOLOv3[14],在原有基礎上,通過排列組合各種先進卷積神經網絡優(yōu)化技巧的方式進行優(yōu)化驗證實驗,總結出了在帕累托曲線上達到速度與精度最優(yōu)平衡的YOLOv4,相比YOLOv3,在MS COCO數(shù)據(jù)集上平均精度(Average Precision:AP)提高了10%,檢測幀率(Frames Per Second:FPS)提高了12%,是目前最強大的目標檢測算法之一。
其中,YOLOv4的骨干網絡采用CSP Dark-net53,顯著地增強了感受域的大小,使用PANet(Path Aggregation Network)特征融合網絡,且連接方式修改為更優(yōu)的相乘,頭部則仍延續(xù)了YOLOv3的一步法(One-Stage),無需生成候選區(qū)域。另外,YOLOv4還使用了許多優(yōu)化技巧,如馬賽克(Mosaic)數(shù)據(jù)增強,自對抗訓練數(shù)據(jù)增強(SAT),隨機丟棄特征圖特征塊(DropBlock)正則化法,跨階段局部網絡(CSPNet)等。
YOLOv4使用的優(yōu)化算法為較為傳統(tǒng)的帶動量梯度下降法(SGDM),改進自1951年Herbert Robbins提出的隨機梯度下降法(SGD)[15],收斂速度較慢,容易陷入局部最小點,但近年發(fā)展迅速的自適應學習率法如Adam[16]等相比梯度下降法仍存在泛化能力較差,檢測精度不穩(wěn)定等問題。
針對以上問題,對YOLOv4進行優(yōu)化算法改進對比實驗,實驗中,分別使用AdaBelief、Adam和前期Adam[16]后期SGDM三種方法,并與原始SGDM進行對比。其中,AdaBelief為可根據(jù)當前梯度與其指數(shù)移動平均值(EMA)的差值來調整步長的高效自適應學習率法。
優(yōu)化算法對比實驗中,統(tǒng)一在VOC2007標準數(shù)據(jù)集上進行訓練和檢測,并根據(jù)訓練時的收斂速度和檢測時的識別精度對實驗進行評價。VOC2007是衡量目標檢測算法識別能力的小規(guī)模標準數(shù)據(jù)集,共包含20個種類,共計9963張圖像,訓練集5011張圖像,測試集4952張圖像,其中訓練集在訓練時會按9:1的比例分為訓練數(shù)據(jù)和驗證數(shù)據(jù),在訓練數(shù)據(jù)上可得到訓練損失(tain loss),體現(xiàn)訓練的擬合能力,loss值越低表示訓練擬合能力越好,反之越差,在驗證數(shù)據(jù)上可得到驗證損失(val loss),體現(xiàn)未知數(shù)據(jù)的擬合能力,即算法的泛化能力,loss值越低表示泛化能力越好,反之越差。
實驗參數(shù)設置為:學習率(Learning_rate)為0.001,每批次送入網絡的圖像數(shù)量(Batch_size)為64,訓練期數(shù)(epoch)為100,輸入圖片分辨率(Input_shape)為416×416,不同優(yōu)化算法的參數(shù)為:SGDM的動量(Momentum)為0.9,Adam的權重衰減 (Weight_decay)為0.000 5,AdaBelief的指數(shù)衰減率(Betas1,2)分別為0.9和0.999。
具體實驗過程為:首先在VOC2007訓練集上分4次訓練使用原始SGDM、Adam、SGDM切換Adam和AdaBelief優(yōu)化算法的YOLOv4,其中Adam切換SGDM為前期使用Adam迭代至50epoch,加快loss下降速度,然后切換為SGDM對網絡參數(shù)進行數(shù)值調優(yōu);其次在每次訓練結束后,保存訓練過程的數(shù)據(jù),并從數(shù)據(jù)中分別提取出tain loss和val loss在訓練時每個epoch的數(shù)值;最后,將提出來的數(shù)據(jù)進行整合,分別繪制成tain loss和val loss隨epoch下降的曲線圖。
如圖1所示,使用AdaBelief的YOLOv4在訓練時loss下降速度和最終收斂效果均有所提升,表明選擇AdaBelief作為優(yōu)化算法可以提升網絡的擬合能力和泛化能力。
(a) tain loss
(b) val loss圖1 loss下降圖
將訓練好的權重載入網絡,在VOC2007測試集上使用訓練好的網絡進行測試,并采用通用的目標檢測評價指標平均精確度均值(mAP:Mean Average Precision)評價4種不同優(yōu)化算法對YOLOv4識別精度的影響。mAP為各類別AP(Average Precision)的平均值,表示網絡在測試集上的綜合識別能力,AP為以準確率(Precision)為縱軸,召回率(Recall)為橫軸的“P-R圖”中“P-R曲線”下的面積,表示網絡在測試集中某一種類別的識別精度。
優(yōu)化算法對比實驗的具體測試結果如表1所示。
表1 優(yōu)化算法識別精度表
如表1所示,在VOC2007測試集上使用SGDM的測試mAP為80.06%,而使用AdaBelief的測試mAP達84.23%,相比SGDM提高了4.17%,且比使用Adam和Adam切換SGDM的mAP均更高。實驗結果表明,使用AdaBelief的YOLOv4在VOC2007標準數(shù)據(jù)集上收斂速度更快,收斂效果更好,mAP更高。
YOLOv4的預測邊界框計算方法為:先通過交并比(Intersection-over-Union: IoU)閾值,一般設置為0.5,篩選掉置信度低的邊界框,得到置信度最高的預測邊界框中心坐標(bx,by)和邊界框的寬bw和長bh,然后根據(jù)中心坐標和邊界框長寬計算出預測邊界框左上和右下兩個點的坐標,具體公式如下:
(1)
當要定位的零件形狀較長,如不同角度的軸類零件,YOLOv4所得的預測邊界框無法很好的表示部分零件實際形狀,僅僅使用預測邊界框左上和右下兩個點的坐標作為零件定位,可能會導致后續(xù)要求定位精準性的工序出現(xiàn)較大的誤差。
針對以上問題,在不影響零件檢測速度的前提下,選擇使用Canny邊緣檢測和Sklansky算法對YOLOv4預測邊界框計算方法進行改進。
圖2為齒輪軸檢測示例圖,圖2a為YOLOv4檢測原始檢測結果圖,圖中有與齒輪軸實際形狀重合率較低且無法精準表示齒輪軸實際形狀的正矩形預測邊界框,齒輪軸的分類標簽gear-shaft和相應的置信度0.99,輸出的定位坐標為預測邊界框左上點A(87,108)和右下點B(451,380),圖2b為改進YOLOv4檢測結果圖,圖中有齒輪軸的凸包、最小外接矩形框以及齒輪軸的分類標簽gear-shaft,凸包為可以表示齒輪軸真實形狀的凸多邊形,同時可以得到凸包上每個角點的坐標,但通常凸包的角點有幾十個,最小外接矩形框為更加通用的定位結果,且與齒輪軸的重合率遠高于原始預測邊界框,同時可以得到最小外接矩形框4個角點的坐標,輸出的坐標分別為A′(119,382),B′(60,281),C′(393,85),和D′(453,186)。
(a) 改進前 (b) 改進后圖2 齒輪軸檢測示例圖
圖3為具體改進過程示例圖。①根據(jù)原始預測邊界框將圖像裁剪為單獨的零件圖,如圖3a所示,簡化后續(xù)圖像分割的計算量,以保持YOLOv4實時檢測速度的優(yōu)勢;②使用高斯模糊對零件圖進行圖像預處理,通過計算每個像素點與鄰近像素點的加權和,并使用加權和作為新的像素點來降低零件圖中的噪聲,取點范圍為高斯核尺寸,尺寸越大,高斯模糊的效果越強,但會因此增加計算量,經過實驗對比,如圖3b所示,選擇9×9大小的高斯核函數(shù)零件預處理效果最佳;③使用Canny邊緣檢測對預處理后的零件圖進行輪廓提取,該方法是基于邊緣梯度方向的非極大值抑制對零件圖進行分割,其中雙閾值的選取系數(shù)Th和Tl分別選取90和30,并將低于Tl的點置零,高于Th的點標記為邊緣點,處于中間的點根據(jù)鄰近的像素點狀態(tài)估計該點是否屬于邊緣,最終得到的輪廓如圖3c所示;④由于Canny邊緣檢測所得輪廓的輪廓點不連續(xù),存在大量短輪廓,為解決上述問題需對輪廓圖進行圖像膨脹與腐蝕處理,其中圖像膨脹是對每個像素點鄰近范圍內的像素點置為該范圍內的像素最大值,以此填補輪廓中的間斷部分,并將短輪廓與大輪廓相連,圖像腐蝕的原理則與膨脹相反,是將每個像素點鄰近范圍內的像素點置為該范圍內的像素最小值,以此去除因圖像膨脹產生的多余部分,經過試驗對比,如圖3d所示,選擇17×17的卷積核對零件輪廓圖進行膨脹與腐蝕效果最佳;⑤計算經過圖像處理后的輪廓所包含的坐標數(shù)量,取坐標數(shù)量最多的輪廓為主輪廓,根據(jù)主輪廓點集,使用Sklansky算法計算凸包,如圖3e所示,得到包含零件幾何形狀的凸多邊形;⑥根據(jù)多邊形與其最小外接矩形必有一條共線邊的幾何原理和旋轉卡尺算法(Rotating Calipers),枚舉凸多邊形(即凸包)每一條邊組成的外接矩形框,計算外接矩形框的面積,其中面積最小的外接矩形框,如圖3f所示,為零件的最小外接矩形框;最終,使用凸包和最小外接矩形框代替原始預測邊界框,作為改進的零件定位結果。
(a)裁剪(b)預處理 (c)分割
(d)膨脹腐蝕 (e)凸包 (f)最小外接矩形框圖3 預測邊界框改進過程示例圖
設計的實驗步驟流程如圖4所示。
圖4 實驗流程圖
所有實驗在同一工作站中進行,具體配置如表2所示。
表2 實驗環(huán)境
為充分利用工作站硬件,加快訓練速度,根據(jù)數(shù)據(jù)集和實驗環(huán)境的情況,實驗參數(shù)設置為:每批次送入網絡的圖像數(shù)量(Batch_size)為64,輸入圖片分辨率(Input_shape)為416×416,訓練期數(shù)(epoch)為100,學習率(Learning_rate)為0.001,AdaBelief的指數(shù)衰減率(Betas1,2)分別為0.9和0.999。
零件數(shù)據(jù)集制作過程為:①使用相機采集螺母、螺絲、齒輪、齒輪軸等共6種常見零件,共計1224張,采集過程中各種零件通過不同角度且雜亂無序的方式擺放;②使用OpenCV對采集的1224張零件圖像進行圖像壓縮,并使用旋轉、平移、縮放、翻轉等方式對進行圖像增強,擴充數(shù)據(jù),再將處理后的圖像根據(jù)質量進行篩選,得到共計2448張圖像的零件圖像集;③使用“l(fā)abelImg”圖像標注工具對零件圖像集進行人工標注,根據(jù)自定義的零件標簽,對圖像集中所有零件手動標注矩形標注框;最終,制作成包含6種類別,共計2448張圖像的零件數(shù)據(jù)集,并根據(jù)8:2的比例將零件數(shù)據(jù)集分為零件訓練集1958張和零件測試集490張,表3為數(shù)據(jù)集中零件種類與數(shù)量的詳細情況。
表3 零件數(shù)據(jù)集種類與數(shù)量表
使用常用的目標檢測評價指標對改進YOLOv4的零件識別與定位方法進行評價:準確率(Precision)、召回率(Recall)以及準確率與召回率綜合指標(Precision和Recall 的加權調和平均F-Measure,α=1時:F1-Measure),具體公式如下:
(2)
(3)
(4)
樣例總數(shù)TP+FP+TN+FN
(5)
其中,TP表示真正例(True Positive),F(xiàn)P表示假正例(False Positive),TN表示真負例(True Negative),F(xiàn)N表示假負例(False Negative),Precision是真正例(TP)在所有預測正例(TP+FP)中的比例,Recall是真正例(TP)在所有真實正例(TP+FN)中的比例,F(xiàn)1-Measure是Precision和Recall權重參數(shù)α=1時的綜合評價指標,F(xiàn)1越大,所評價的網絡分類能力越強,反之,F(xiàn)1越小,分類能力越弱。
零件識別與定位實驗中,首先在零件訓練集上訓練優(yōu)化算法改進為AdaBelief,定位結果改進為凸包和最小外接矩形框的YOLOv4,然后使用訓練得到的權重文件配置網絡,并在零件測試集上使用訓練好的網絡進行零件識別與定位實驗。
圖5為檢測過程示例圖。
(a)零件測試圖 (b)YOLOv4原始檢測圖
(c)Canny邊緣檢測 (d)圖像膨脹與腐蝕
(e)凸包 (f)最小外接矩形框圖5 檢測過程示例圖
將基于改進YOLOv4的零件識別與定位實驗結果與未改進的實驗結果進行對比,圖6為改進前后零件檢測示例圖,相比圖6a中未改進的YOLOv4檢測所得的預測邊界框,圖6b中改進YOLOv4檢測所得的零件凸包和最小外接矩形框與零件實際形狀重合度更高,更能表示零件實際形狀,同時可以輸出相應零件最小外接矩形框的4個角點坐標,其中圖6c和圖6d是側視角度的零件識別與定位對比示例圖,改進的網絡仍能有效的對零件進行識別與定位。
(a)改進前 (b)改進后
(c)改進前 (d)改進后圖6 檢測結果示例圖
圖7為改進前后6種類別零件,共計490張測試圖像的具體檢測結果,經過計算,改進前真正例(TP)為1353個,改進后為1352個,數(shù)量幾乎不變,但齒輪軸(gear-shaft)、齒輪(gear1和gear2)、螺母(Nut)和螺絲(Screw)這4類零件的假正例(FP)數(shù)量均有不同程度的降低,且假正例(FP)的總數(shù)也由152個降至96個。
(a) 改進前
(b) 改進后圖7 檢測結果數(shù)據(jù)圖
如表4所示,訓練好的改進網絡在零件測試集上的測試Precision達93.37%,相比改進前Precision 為89.90%,提高了3.47%,改進前后Recall變化不大,Precision和Recall的綜合指標F1由94.32%提升至96.16%。
表4 檢測數(shù)據(jù)表
最終,通過在零件數(shù)據(jù)集上的零件識別與定位實驗表明,改進后的YOLOv4在零件識別準確率和零件定位精準性上相比于原始YOLOv4有較大的提高,針對常見種類的多角度無序零件具有較強的綜合識別能力。
針對多角度無序零件識別與定位這一任務,提出了基于改進YOLOv4的零件識別與定位方法。改進內容包括優(yōu)化算法和預測邊界框兩方面,首先使用AdaBelief優(yōu)化算法代替原有的SGDM優(yōu)化算法,提高網絡收斂速度和識別精度;其次在預測邊界框計算方法中加入Canny邊緣檢測和Sklansky算法,使用Canny邊緣檢測進行圖像分割得到零件輪廓點,根據(jù)輪廓點使用Sklansky算法計算凸包,再根據(jù)凸包計算最小外接矩形框,將正矩形定位框改進為更能表示零件實際形狀的凸包和最小外接矩形框,提高網絡定位精確性。
根據(jù)多種聯(lián)合評價指標對實驗結果進行分析,改進YOLOv4在零件數(shù)據(jù)集上零件識別準確率與定位精準性均有所提升,最小外接矩形框的角點坐標可為工業(yè)制造領域中零件自動化分揀、上下料等后續(xù)工序提供依據(jù),但設計的網絡存在對密集堆疊的小零件識別能力較弱的缺點,后續(xù)研究可針對這一問題進一步改進。