聶湘寧,劉天湖,李桂棋,王紅軍,曾文
(華南農業(yè)大學工程學院,廣州 510642)
竹制坐墊是我國深受大眾喜愛的家居日常用品,但其組裝過程仍以手工為主,非常耗時且煩瑣;在組裝不同圖案的竹墊時尤其耗時耗力。目前國內尚未見機械化、自動化的竹墊生產設備,筆者提出一種基于機器視覺與深度學習的裝配式竹墊生產模式。近年來,智能圖像識別與目標檢測因其識別精度高、檢測速度快等優(yōu)點被大量用于生產制造領域。馮毅雄等[1]提出一種集成遷移學習的軸件表面缺陷實時檢測方法。楊洋等[2]使用一種基于卷積神經網絡方法精確識別與定位玉米根莖,實現(xiàn)了玉米作物田間路徑的準確規(guī)劃。李宜汀等[3]采用一種基于Faster R-CNN的方法檢測生產線中產品的表面缺陷。王占云等[4]結合Faster R-CNN和改進的深度卷積網絡對工業(yè)生產中多類混線產品在線自動分類進行統(tǒng)計。曹大理等[5]研究了一種基于CNN的刀具磨損量在線監(jiān)測模型來提高刀具磨損在線監(jiān)測性能。Liu等[6]利用 Cr-Cb 顏色空間中的橢圓模型,提出了區(qū)分樹上未成熟和成熟柚子果實的方法,此外,他們還使用多橢圓邊界模型檢測自然環(huán)境中的柑橘果實和樹干[7]。熊俊濤等[8]使用改進YOLOv3網絡識別夜間環(huán)境中的柑橘。朱建楠等[9]設計了一種基于深度學習的機械智能制造知識問答系統(tǒng)。Tian等[10]使用改進的YOLOv3模型檢測果園中不同生長階段的蘋果。
本研究基于改進YOLOv3深度卷積網絡對竹墊零件進行智能化識別定位,通過網絡訓練建立竹墊零件的識別模型,識別定位出目標竹墊零件的顏色和坐標,進而開發(fā)智能竹墊裝配試驗機進行試驗,以期實現(xiàn)竹墊智能化組裝,進而降低竹墊組裝過程的勞動強度,減少生產成本。
竹墊零件識別的準確率和定位精度決定了竹墊裝配結果精度。為了達到快速精準的識別效果,本研究提出一種基于改進YOLOv3深度卷積網絡的竹墊零件識別方法識別定位圖像中的竹墊零件并返回其坐標。
樣本圖像采集于華南農業(yè)大學工程學院南樓104。為滿足樣本的多樣性,樣本圖像中包含黃色和棕色竹墊零件。共采集了620幅竹墊圖像樣本,包含約11 000個零件,分別作為訓練集448張,驗證集52張,測試集100張。其中訓練集用于訓練出合適的模型,驗證集用于評估訓練時模型的表現(xiàn),測試集用于確定模型的性能。采用LabelImg插件進行圖像標記并保存為PASCAL VOC格式,在標記過程中同時生成與該圖像對應的標簽,其中包含目標竹墊零件的類別數(shù)量(C)和人工標記竹墊零件邊界框的左上角坐標信息(x,y)以及框的寬與高(w,h)。
YOLOv3[11]深度卷積網絡是一種一階段目標檢測算法,與兩階段檢測算法相比,一階段檢測算法具有更快的檢測速度。YOLOv3網絡采用Darknet-53作為主干特征提取網絡的模型結構,并結合了很多優(yōu)秀的方法,如多尺度檢測、殘差網絡(ResNet)[12]等,從而提升了模型性能。因此YOLOv3網絡具備良好的檢測速度和精度。YOLOv3網絡首先將輸入圖像統(tǒng)一調整為416×416的大小,再將其分割成S×S的非重疊網格,然后每個單元格負責檢測目標中心點落在其單元格中的目標。每個單元格會檢測B個邊界框以及邊界框的置信度(confidence),具體包含5個預測量:x、y、w、h和置信度,其中(x,y)表示邊界框的中心坐標(相對偏移量);w、h表示邊界框的寬、高;置信度表示通過閾值(threshold)對預測結果進行取舍,反映了邊界框內包含目標的可能性以及預測目標類別的準確性。
1.3.1 DenseNet網絡
Huang等[13]在2017年提出了DenseNet網絡,此網絡借鑒了ResNet網絡思想,并從圖像特征角度來提升網絡性能。通過對特征的極致利用不僅在一定程度上減輕了梯度消失(vanishing-gradient)問題,而且加強了特征的傳遞并減少了參數(shù)數(shù)量。傳統(tǒng)的網絡在m層輸出為(m-1)層輸出的非線性變換:
xm=Hm(xm-1)
(1)
ResNet網絡在m層的輸出增加了一個跨層連接,為(m-1)層的輸出加上(m-1)層輸出的非線性變換:
xResNet,m=Hm(xm-1)+xm-1
(2)
而DenseNet網絡是把從0層到(m-1)層輸出的非線性變換結果進行拼接來作為m層的輸出:
xDenseNet,m=Hm([x0,x1,…,xm-1])
(3)
式中:Hl(·)為非線性變換函數(shù);[x0,x1,…,xm-1]表示將0,…,m-1層輸出的特征進行拼接。通過使用這種密集型的連接方式,DenseNet網絡可以更好地利用每一層的特征以實現(xiàn)特征復用,并提高計算效率。因此,本研究的優(yōu)化方案引用DenseNet網絡來加強圖像特征提取。
1.3.2 主干特征提取網絡改進
為增強特征復用,主干特征提取網絡借鑒DenseNet網絡的思想,在Darknet-53網絡中加入DenseNet模塊,如圖1所示。將YOLOv3網絡中對尺度26×26和52×52進行預測輸入的兩組殘差模塊替換為自定義的密集連接模塊。構建出一個帶有密集型連接模塊的特征提取網絡,使尺度26×26和52×52在進行預測之前能夠接收密集連接塊輸出的多層卷積特征,增強特征的傳遞并促進特征復用和融合,進一步提升檢測效果。
圖1 主干網絡改進Fig. 1 Backbone feature extraction network improvement
1.3.3 多尺度檢測結構改進
在竹墊零件的檢測中,單個竹墊零件是一個中小型目標。因此,為了得到精準的竹墊零件位置和類別信息,本研究將原始YOLOv3網絡中輸出張量的尺寸由13×13,26×26,52×52縮減為26×26,52×52。由于只需檢測黃色和棕色的竹墊零件,所以修改YOLOv3的輸出類別數(shù)目為2。最終網絡的輸出張量結構如圖2所示。輸入416×416圖像,經由本研究主干網絡進行特征提取時,經過5次步長為2的卷積,稱為2m(m=1,2,…,5)倍下采樣,最后在32倍下采樣后生成13×13的特征圖。再進行一次2倍上采樣和經過4次步長為2的卷積后的特征圖進行融合,生成26×26的特征圖并進行檢測,同時再進行一次2倍上采樣和經過3次步長為2的卷積后的特征圖進行融合,生成52×52的特征圖并進行檢測。采用多尺度檢測結構,能夠更好地提取竹墊零件的特征信息,從而極大地提升檢測精度。
圖2 竹墊零件多尺度檢測結構Fig. 2 Multiscale detection structure of bamboo cushion parts
1.3.4 錨點框的優(yōu)化
YOLOv3網絡中引用了K-means聚類的方法來確定錨點框的初始尺寸,用來預測邊界框的坐標。引用該方法可以減少錨點框的數(shù)量,提升網絡的檢測速度。原網絡中利用COCO和VOC這種尺寸過大的數(shù)據(jù)集訓練得到的錨點值偏大,所以在訓練前還需要通過用K-means聚類算法算出當前數(shù)據(jù)集錨點的初始值。根據(jù)K-means聚類算法中關于距離的定義,聚類是為了使錨點框與人工標注的真實框之間的比IOU值最大化,所以使用了IOU距離,其公式如下:
(4)
式中:box為目標的真實框信息;centroid為聚類中心。真實框到聚類中心點的距離越小,IOU值越大。
根據(jù)上式重新聚類分析本研究數(shù)據(jù)集標簽信息得到了6個錨點,分別應用于26×26、52×52的特征圖,6個錨點的尺寸分別為87×56、79×52、72×47、70×44、66×42、59×37。每個特征圖分配3種不同尺寸的錨點進行邊界框預測,每個邊界框的預測信息為邊界框的坐標、寬度和高度。邊界框坐標參數(shù)的計算公式如下:
bx=σ(tx)+cx
(5)
by=σ(ty)+cy
(6)
bw=pwetw
(7)
bh=pheth
(8)
式中:(bx,by)為預測的邊界框的中心坐標;bw、bh為預測框的寬、高;tx、ty、tw和th為網絡所需學習的目標;(cx,cy)為網格坐標偏移量;(pw,ph)為預設錨點框的尺寸。σ為Sigmoid函數(shù),將坐標(tx,ty)進行歸一化,使大小在0~1變化,保證預測框的中心點固定在一個網格內。
1.3.5 整體網絡結構設計
改進后的整體網絡結構如圖3所示。其中DBL為YOLOv3的一個基本組件,該組件由卷積層(conv)、批量歸一化(batch normalization)和帶泄露修正線性單元函數(shù)(Leaky Relu)組成;Res為殘差結構;Dense為自定義的密集連接模塊。
圖3 改進后的模型結構Fig. 3 Improved model structure
竹墊零件檢測步驟如下:
1)對竹墊圖像進行標記,標記出目標位置信息,制作成數(shù)據(jù)集;
2)將輸入圖片重置為416×416的大??;
3)進入本研究主干特征提取網絡進行特征提?。?/p>
4)在特征金字塔結構[14]中進行多尺度預測,進行5次步長為2的卷積下采樣,每次卷積后都要進入殘差模塊中進行竹墊零件特征提取,生成13×13的特征圖;
5)13×13的特征圖經過1次2倍上采樣擴大為26×26,然后和前面經過4次步長為2卷積的特征圖進行特征融合,得到26×26的特征圖;
6)在26×26的特征圖中每個網格使用3種尺寸87×56、79×52、72×47的錨點框進行檢測,共26×26×3=2 028個邊界框;
7)26×26的特征圖經過1次2倍上采樣擴大為26×26,然后和前面經過3次步長為2卷積的特征圖進行特征融合,得到52×52的特征圖;
8)在52×52的特征圖中每個網格使用3種尺寸70×44、66×42、59×37的錨點框進行檢測,共52×52×3=8 112個邊界框;
9)使用非極大值抑制(NMS)算法[15]移除冗余的邊界框,并計算類別得分,得到竹墊零件的預測結果,生成竹墊零件邊框信息(框的位置、置信度和顏色類別),完成竹墊零件的檢測。
本研究選用的性能評價指標主要包括準確率P(precision)、召回率R(recall)和均值平均精度(mean average precision,MAP),并將MAP作為主要評價指標以反映檢測精度。AP值為準確率P以及召回率R構成的P-R曲線的面積。具體計算公式為:
P=TP/(TP+FP)
(9)
R=TP/(TP+FN)
(10)
(11)
(12)
式中:TP為模型正確檢測到的正樣本數(shù)量;FP為模型錯誤檢測到的正樣本數(shù)量;FN為模型錯誤檢測到的負樣本數(shù)量;N為所有目標類別的數(shù)量。通過這些指標可以準確表示網絡模型的性能。
本研究設計的試驗機由視覺系統(tǒng)、擺放系統(tǒng)、傳送機構和組裝系統(tǒng)組成。首先使用CCD相機采集不同圖案和尺寸的竹墊樣品圖像,對竹墊樣品圖像進行識別定位處理,獲得目標竹墊零件的顏色和坐標信息;然后控制擺放系統(tǒng)對目標竹墊零件進行吸取擺放;接下來,傳送機構將擺放好的竹墊零件傳送到組裝系統(tǒng),進行組裝。該試驗機的控制系統(tǒng)如圖4所示。
圖4 控制系統(tǒng)Fig. 4 Control system
試驗機的外型結構,主要包括試驗機的框架、視覺系統(tǒng)、擺放系統(tǒng)、傳送機構和組裝系統(tǒng),整體尺寸為長1 600 mm、寬600 mm、高1 780 mm,如圖5所示。視覺系統(tǒng)負責樣品竹墊圖像的采集、識別和定位;擺放系統(tǒng)將竹墊零件擺放在預定位置;傳送機構負責竹墊零件的傳送;組裝系統(tǒng)將竹墊零件組裝成竹墊。
圖5 試驗機結構Fig. 5 Structure diagram of testing machine
本研究試驗機的系統(tǒng)工作流程如圖6所示。具體流程為:首先拍攝樣品竹墊圖像,當獲得所有竹墊零件的顏色和坐標信息后,直角坐標機械臂根據(jù)目標零件顏色信息帶動末端執(zhí)行器移動到對應顏色物料盒上方,并對準目標竹墊零件;末端執(zhí)行器吸取竹墊零件,移動到竹墊零件目標擺放位置上方2 mm時釋放竹墊零件,完成1次擺放操作。當擺放完樣品竹墊的1行竹墊零件時,直角坐標機械臂復位暫停移動。傳送機構啟動并將零件傳送到組裝系統(tǒng)內指定位置時,第Z軸運動機構帶動推入機構移動,并推動目標竹墊零件將其從傳送機構推入到竹墊框內,完成1行零件的組裝。如此反復,直到整張竹墊零件組裝完成,再進行下一張竹墊的組裝。
圖6 系統(tǒng)工作流程Fig. 6 System work flow chart
本研究模型訓練編程語言為Python 3.6,深度學習框架為 PyTorch,使用Intel(R) Xeon(R)W-2102 CPU @2.90GHz和GeForce GTX 1060 GPU加速模型構建硬件環(huán)境進行訓練。在訓練時權重衰減(weight decay)設置為0.000 5,初始學習率(learning rate)設置為0.001,動量(momentum)設置為0.9。最終網絡共訓練了50個Epoch(輪次),其損失值隨訓練輪次變化曲線如圖7所示。訓練過程中網絡保留最優(yōu)權重等參數(shù),每1個輪次輸出1個模型,所以共得到了50個模型,并從這50個模型中找出MAP值最高的模型作為最優(yōu)模型。
圖7 竹墊零件識別損失函數(shù)曲線Fig. 7 Identify loss function curve
根據(jù)實際裝配生產需要,為了能夠獲得每個竹墊零件的像素坐標,需對竹墊零件完成定位。而樣品竹墊中竹墊零件的分布比較密集,所以設預測框與真實框的交并比IOU大于閾值0.7時,則視為檢測正確,否則視為檢測錯誤。本研究選用的100張測試圖片共有竹墊零件1 721個。模型識別出竹墊零件目標1 721個。其中黃色竹墊零件有871個,863個目標為TP,8個目標為FP;棕色竹墊零件有850個,846個目標為TP,4個目標為FP。圖8所示為其中一張識別結果,圖8a為模型測試結果,其中藍色框為人工標記的竹墊零件位置,綠色框為模型標記的竹墊零件位置;圖8b為試驗檢測效果。模型性能試驗結果顯示黃色竹墊AP值為99.88%,棕色竹墊AP值為99.84%。
圖8 識別結果分析Fig. 8 Analysis of identification results
經過測試試驗,MAP值為99.86%。共測試1 721 個目標,共1 721個竹墊零件目標被識別出來。從測試結果可以看出,此網絡可以很好地滿足本研究所需精度的需求。
本研究根據(jù)檢測出來的目標邊框坐標位置信息求解竹墊零件的中心坐標x(目標中心的x坐標),y(目標中心的y坐標)。計算公式為:
(15)
式中:(Left,Top)表示邊框左上角坐標;(Right,Bottom)表示邊框右下角坐標。
除了評估網絡的準確率,還需要測試網絡在實際檢測目標時所用時間??紤]到竹墊零件識別網絡是搭載在試驗機的工控機之中的,為了減少硬件成本,要求網絡能夠在單CPU的情況下運行,所以本研究分別在GPU和CPU下進行了測試。相比GPU,在CPU下檢測的精度沒有變化,檢測時間上變長。網絡在GPU下檢測100幅圖像消耗1.67 s,在CPU下檢測100幅圖像消耗10.53 s,平均每幅圖像檢測時間為16.7和105.3 ms。由于在裝配生產流程里只需要在識別階段進行目標檢測定位,以上識別速度性能能夠滿足本研究要求。
陳鳳明[16]提出了一種智能識別竹墊零件的算法。首先對攝像頭采集竹墊圖像應用中值濾波器去除圖像噪聲,然后提取圖像背景和不同類型竹墊零件的顏色特征構造支持向量機,提出一種基于支持向量機和余弦相似度的算法識別竹墊零件顏色和位置。實驗結果表明,該算法在光照條件穩(wěn)定、排放位置固定的條件下對竹墊零件的識別成功率能達98.7%,但光照條件不穩(wěn)定,擺放位置偏離設定位置時識別率將會明顯下降,在偏離設定擺放位置100 mm以后,識別率將降到不足60%。所以本研究采用的改進YOLOv3網絡作為竹墊智能裝配的識別定位方法對整體系統(tǒng)有極大的優(yōu)化作用。
試驗主要目的有2個:測定試驗機的擺放系統(tǒng)、傳送機構、組裝系統(tǒng)是否能夠完成智能協(xié)調控制;測定組裝時間參數(shù)。本研究的訓練網絡已經集成在試驗機的視覺系統(tǒng)中等待進行組裝試驗。試驗地點位于實驗室內,試驗機由一臺單CPU的工控機控制。該工控機的配置為3.2GHz Intel Core i5 CPU 處理器和16 GB 內存。組裝時間為組裝1行竹墊零件需要的平均時間,包括各個工作環(huán)節(jié)的時間。
進行組裝實驗之前,首先把不同顏色的竹墊零件分別放入安裝在擺放系統(tǒng)進料端的物料盒中,物料盒的寬為38 mm(1個竹墊零件寬為37 mm),長為170 mm。在上料口的一端送入竹墊零件來進行上料。傳送機構的運行速度設為0.15 m/s,以防止竹墊在傳送機構停止時因慣性發(fā)生位移變化。組裝前先將竹墊框放到竹墊墊體上并啟動定位模塊令其壓緊竹墊框,再把樣品竹墊放入視覺系統(tǒng)中等待檢測;然后讓試驗機進入自動組裝模式;組裝試驗統(tǒng)計結果如表1所示。
表1 組裝試驗統(tǒng)計結果Table 1 Statistical results of assembly test s
試驗過程結果表明裝置能夠完成自主擺放、自主傳送及自主組裝等作業(yè)。擺放系統(tǒng)、傳送機構、組裝系統(tǒng)能夠實現(xiàn)智能協(xié)調控制。平均組裝1行竹墊零件時間為24.63 s。
本研究提出了一種基于改進YOLOv3深度神經網絡的竹墊零件識別定位方法,用于識別定位竹墊圖像中的竹墊零件并返回其坐標。設計了智能竹墊裝配試驗機,主要包括視覺系統(tǒng)、擺放系統(tǒng)、傳送機構和組裝系統(tǒng);實現(xiàn)了竹墊檢測、擺放、傳送、組裝的全流程自動化,并針對視覺系統(tǒng)的識別能力和試驗機的組裝效率進行了試驗。
視覺試驗結果表明,識別定位網絡MAP值達到99.86%,平均每幅圖像在GPU和CPU下的檢測時間為16.7和105.3 ms。表明該網絡的檢測精度高、速度快。組裝試驗表明,組裝1行竹墊零件平均需要24.63 s。