王 楊,李東年,陳成軍,趙正旭
(青島理工大學機械與汽車工程學院,山東 青島 266520)
工業(yè)機器人應用于分揀、搬運和裝配等工業(yè)環(huán)境中,極大提升了生產(chǎn)的效率。其中分揀作業(yè)是一個十分重要的環(huán)節(jié),在分揀作業(yè)中,零件分割的結(jié)果直接影響著零件分揀能否順利地進行。
對于零件識別分割,目前研究已經(jīng)取得了一些進展。劉學平等[1]為了準確識別出圖像中的目標零件,提出一種自適應邊緣優(yōu)化的改進YOLOv3目標識別算法。李慶利等[2]通過計算顏色間的灰色關(guān)聯(lián)度來確定像素點間隸屬關(guān)系,求得特征顏色,完成零件圖像分割。這些方法依賴于零件的輪廓和紋理等特征,在工業(yè)環(huán)境下,存在油漬污染,導致零件的紋理信息缺失。
在深度學習方面,陳廷炯等[3]為完成機器人抓取零件的任務,利用語義分割模型對彩色圖進行分割。黃海松等[4]利用卷積神經(jīng)網(wǎng)絡對零件圖像提取特征,通過Mask RCNN對零件進行實例分割。卷積神經(jīng)網(wǎng)絡需要大量的圖片進行訓練,但這些方法采用的數(shù)據(jù)集大多是通過人工完成,人工采集、標注圖像浪費了大量的時間和精力,且人工標注存在主觀因素,使得標簽圖標注不準確,影響網(wǎng)絡的訓練結(jié)果。
本文利用三維仿真技術(shù),通過三維渲染引擎OSG和物理引擎Bullet建立了雜亂場景零件訓練集合成系統(tǒng),該系統(tǒng)可以自動完成圖像的采集、標注工作。本文首先利用雜亂場景零件訓練集合成系統(tǒng),構(gòu)建了三種合成訓練集,然后通過遷移學習中的微調(diào)(fine tune)方法,對Mask RCNN網(wǎng)絡模型進行訓練,最后通過Kinect視覺傳感器采集不同零件數(shù)目的真實圖像,對訓練好的模型進行測試,分析模型對零件的分割結(jié)果。
OpenSceneGraph(OSG)是一個開源的場景圖形開發(fā)庫,主要是為圖形應用程序提供場景管理和渲染優(yōu)化功能,OSG采用OpenGL作為底層渲染的API,廣泛應用于虛擬現(xiàn)實、視景仿真、科學計算可視化等領域[5]。Bullet是一個跨平臺的物理模擬計算引擎,通過Bullet可以賦予虛擬場景中的模型以物理屬性,如碰撞檢測、力學等屬性。OSG和Bullet間的數(shù)據(jù)類型有所區(qū)別,需要通過插件osgBullet(OSG的擴展模塊)解決兩個引擎之間數(shù)據(jù)傳遞的問題[6]。
圖1a所示為雜亂場景零件訓練集合成系統(tǒng)框架,本文基于Bullet和OSG,利用osgBullet建立了系統(tǒng)開發(fā)環(huán)境,通過C++編程建立了零件的雜亂堆疊場景,在場景中加載零件模型,并賦予模型碰撞檢測和重力屬性,通過OSG中自帶的觀察器去觀測虛擬場景。如圖1b所示,將零件模型的位置預設在距箱盒模型一定高度的位置,零件模型在重力的作用下落于箱盒當中,零件與箱盒之間的碰撞,使得零件雜亂地擺放于箱盒中,待零件碰撞一段時間靜止后,虛擬相機拍攝出雜亂擺放的零件圖像,不斷重復上述過程直至訓練集生成完畢。

(a) 系統(tǒng)框架

(b) 雜亂場景生成演示
圖2所示為雜亂場景零件訓練集合成系統(tǒng)生成的深度圖和標簽圖,但是這些圖片并不能直接輸入到網(wǎng)絡當中進行訓練,需要對圖片進一步處理。Mask RCNN圖像分割的掩碼是由全卷積層生成,對應的損失函數(shù)為二元交叉熵函數(shù),所需標簽是像素為0,1,…,n的灰度圖,其中n為零件的個數(shù),標簽圖為24位的圖像,因此需要對標簽圖重新編碼,利用公式:
Gray=0.299×R+0.587×G+0.114×B
(1)
將三通道圖像轉(zhuǎn)化為單通道灰度圖,最后將灰度圖中的灰度值修改為0,1,…,n的形式。

(a) 深度圖 (b)標簽圖圖2 合成訓練集
真實場景下采集的零件圖像與虛擬訓練集相比,包含大量的噪音,使得模型對真實圖像分割的效果較差。本文對合成訓練集進行數(shù)據(jù)增強,采用向合成訓練集中加入高斯噪音的方式,來模擬真實圖像中的噪音,提高模型的魯棒性。
依據(jù)Box-Muller算法[7],通過式(2)、式(3)產(chǎn)生服從高斯分布的隨機數(shù)Z0,Z1。
(2)
(3)
其中,U1,U2服從(0, 1)之間隨機分布,然后通過式(4)、式(5)生成噪音點。
(Z0×σ+μ)×k
(4)
(Z1×σ+μ)×k
(5)
其中,σ為高斯噪音的方差,μ為高斯噪音的均值,k為高斯噪音的系數(shù)。將生成的噪音點均勻加在虛擬圖像的像素上,如圖3所示。

(a) 原圖 (b)加噪后的圖像圖3 合成深度圖像高斯加噪
本文將少量的真實圖像添加到訓練集當中,利用其對網(wǎng)絡中的權(quán)重參數(shù)進行優(yōu)化,確保模型對真實圖像有更好的分割效果。本文采集10張真實圖像并利用labelme工具進行標注,通過圖像仿射變換的旋轉(zhuǎn)操作,將圖像擴充到100張,如圖4所示。

(a) 原圖 (b)旋轉(zhuǎn)30° (c)旋轉(zhuǎn)60°圖4 圖像旋轉(zhuǎn)
Mask RCNN是He K等[8]于2017年提出的一種對物體實例分割的方法,與傳統(tǒng)卷積神經(jīng)網(wǎng)絡相比,不僅可以對不同種類物體進行分割,還可以對同種類物體進行分割。本文構(gòu)建的Mask RCNN如圖5所示,其主要分為以下幾部分:主干網(wǎng)絡(Backbone)、區(qū)域候選網(wǎng)絡[9](Region Proposal Network, RPN)以及網(wǎng)絡輸出模塊(Output)。

圖5 Mask RCNN網(wǎng)絡結(jié)構(gòu)
本文采用殘差網(wǎng)絡[10](Residual Network, ResNet)和特征金字塔網(wǎng)絡[11](Feature Pyramid Networks, FPN)作為主干網(wǎng)絡用于圖像特征提取。ResNet是一種深度卷積網(wǎng)絡,該網(wǎng)絡很好的解決了網(wǎng)絡深度增加造成的性能退化的問題,具有很好的學習和表達能力。FPN是傳統(tǒng)CNN網(wǎng)絡(如:VGGNet、AlexNet、ResNet)對圖像信息特征提取的一種增強方法,基本流程包括:自下至上,自上至下,橫向連接,使圖像具有深層次和淺層次的信息。ResNet-FPN架構(gòu)與傳統(tǒng)CNN網(wǎng)絡相比,通過增加網(wǎng)絡深度和特征融合的方法,提高了網(wǎng)絡的性能。
RPN用來產(chǎn)生可能的目標候選區(qū)域,解決了傳統(tǒng)方法生成目標檢測框耗時較多的問題。ResNet-FPN結(jié)構(gòu)提取的每張?zhí)卣鲌D,通過滑動窗口生成產(chǎn)生候選框然后對生成的候選框進行分類和回歸,分類任務中篩選出包含目標物體的候選框,回歸任務中調(diào)整候選框的位置。
Output模塊是網(wǎng)絡的輸出部分,主要包括:邊框的生成、mask掩碼的生成,圖6所示為Mask RCNN的預測圖像,每個實例被邊框所包圍,且被附上了不同顏色的mask掩碼。邊框的生成首先通過RPN生成帶有多個候選框的特征圖,經(jīng)過ROIAlign池化層處理后轉(zhuǎn)化為統(tǒng)一大小,然后通過全連接層對候選框進行分類和回歸,生成邊框。mask掩碼的生成是通過ROIAlign池化層將ResNet-FPN架構(gòu)提取的特征圖轉(zhuǎn)化為統(tǒng)一大小,通過全卷積層生成mask掩碼。

圖6 Mask RCNN預測圖
本文將Mask RCNN劃分為三個模塊:Backbone、RPN、Output,由于三個模塊包含大量的參數(shù),并且ResNet-FPN結(jié)構(gòu)提取的特征圖質(zhì)量,直接影響著RPN和Output模塊的輸出結(jié)果。因此本文采用遷移學習的微調(diào)(fine tune)方法[12],利用ResNet-FPN結(jié)構(gòu)在COCO數(shù)據(jù)集進行特征提取。COCO數(shù)據(jù)集包含20萬張80多類標注好的圖片,是一個高質(zhì)量的數(shù)據(jù)集,提取到的特征圖也包含足夠的語義特征[13]。在COCO數(shù)據(jù)集訓練好的模型基礎上,利用合成數(shù)據(jù)集訓練RPN和Output模塊,在保證了分割精度的同時,減少了訓練時需要調(diào)整的參數(shù)個數(shù),降低訓練的時間成本。
本文為探究不同訓練集對模型檢測和分割效果的影響,將訓練集分為三種進行對比實驗。訓練集1:虛擬零件圖像訓練集,即只包含未經(jīng)處理的虛擬圖像。訓練集2:虛擬圖像和加噪圖像構(gòu)成的訓練集,即包含未經(jīng)處理的虛擬圖像和對其加噪后的圖像。訓練集3:虛擬圖像、加噪圖像以及少量真實圖像構(gòu)成的訓練集,即包含未處理的虛擬圖像、加噪后的圖像以及少量的真實圖像。利用三種不同的訓練集分別對模型訓練,搭建真實的實驗臺采集深度圖像,利用雙邊濾波對圖像進行處理,使用labelme軟件對圖像進行標注,并測試模型在不同零件數(shù)目下的結(jié)果。
在win10操作系統(tǒng)下,通過visual studio2013編譯器開發(fā)了雜亂場景零件訓練集合成系統(tǒng),系統(tǒng)運行在一臺CPU為i7-8750H,GPU為NVIDIA GTX1050Ti,內(nèi)存為8G的PC機上。通過零件訓練集合成系統(tǒng)和數(shù)據(jù)增強的方法構(gòu)建了三種訓練集,構(gòu)成如表1所示。

表1 訓練集的構(gòu)成
通過Kinect視覺傳感器分別采集了零件數(shù)量為5個和10個的深度圖像各50張,由于深度圖中含有較多的噪音,因此需要對深度圖進行降噪處理。本文采用了雙邊濾波器降低深度圖像中的噪音,降噪前后的圖像如圖7所示,將采集到的100張深度圖進行降噪后,利用labelme軟件進行標注,完成測試集的制備。

(a) 原圖 (b)降噪后的圖像圖7 深度圖像雙邊濾波效果
機械零件的表面大都呈現(xiàn)銀白色,具有較強的反光性,在工業(yè)環(huán)境下,存在油漬污染,使得機械零件表面紋理不清晰,導致RGB圖像訓練的模型在實際環(huán)境下的效果較差。采用深度圖對Mask RCNN進行訓練,可以降低反光性和紋理不清對模型的干擾。
本文在一臺CPU為Xeon E5-2650V4,GPU為NVIDIA GTX TITAN xp,內(nèi)存為128G的PC機上對Mask RCNN模型進行訓練。分別采用三種不同訓練集進行訓練,訓練過程中的總損失曲線如圖8所示。Mask RCNN的損失函數(shù)由分類誤差、檢測誤差和分割誤差組成:
L=Lmask+Lclass+Lbbox
(6)
訓練過程分為三個階段:預訓練階段,利用ResNet-FPN結(jié)構(gòu)在COCO數(shù)據(jù)集上進行特征提??;第二階段在預訓練權(quán)重的基礎上,利用三種不同的訓練集進行訓練,學習率為0.01;第三階段為了使模型充分擬合,將學習率調(diào)整為0.001。其中第二階段進行了50輪(epoch)訓練,第三階段進行了30輪訓練,模型經(jīng)過80輪20 000次迭代(每輪迭代250次)訓練后損失趨于穩(wěn)定。

圖8 訓練過程中的損失變化
當圖像中零件只有少量零件時,遮擋現(xiàn)象并不明顯,且零件的輪廓清晰,便于識別;當圖像中零件數(shù)目較多時,遮擋現(xiàn)象嚴重,不利于模型在邊緣處的分割。為探究不同數(shù)量的零件對模型效果的影響,本文采集了不同數(shù)量零件的圖像,進行模型測試。
對三種不同訓練集訓練出的模型進行測試,其中訓練集1對應的模型為模型1,訓練集2對應的模型為模型2,訓練集3對應的模型為模型3,隨機挑選2張真實采集的圖像進行預測,可視化結(jié)果如圖9所示。由于真實的深度圖存在著噪音的干擾,只用虛擬圖像訓練的模型1存在框位置和掩碼分割不精準等問題;虛擬圖像加入高斯噪聲后,模型2相比模型1有所改善;模型3在模型1和模型2的基礎上添加了由旋轉(zhuǎn)變換擴展的100張真實圖像進行訓練,可以看到模型3的效果有了明顯的提升,框的位置和掩碼分割相對精準,并且在邊緣分割效果較好。

(a) 原圖

(b) 模型1預測結(jié)果

(c) 模型2預測結(jié)果

(d)模型3預測結(jié)果圖9 模型預測效果
對模型檢測分割進行評價,需要同時考慮準確率(Precision)和召回率(Recall),準確率和召回率的計算如下:
P=TP/(TP+FP)R=TP/(TP+FN)
(7)
其中,TP是正樣本被檢測為正樣本的個數(shù),F(xiàn)P是負樣本被檢測為正樣本的個數(shù),F(xiàn)N是正樣本未被檢測出的個數(shù)。選取AP50(IoU=0.50)作為評價實驗結(jié)果的指標,選取0.5作為閾值,圖10所示為Precision-Recall曲線,AP值為Precision-Recall曲線與坐標軸所圍成的面積。

圖10 Precision-Recall曲線
為了防止測試結(jié)果的偶然性,采集不同數(shù)量零件的圖片各50張,分別對AP50指標進行3次測試,測試結(jié)果如表2所示。可以看出,當場景內(nèi)包含少量零件時,零件與零件之間遮擋情況較少,紋理和輪廓清晰,與場景中包含較多零件時相比,三種模型的AP值較高;模型2的訓練集中包含了加噪的圖像,測試結(jié)果表明,加噪后訓練集訓練的模型2與模型1相比檢測和分割的精度有了明顯的提升;模型3在三種模型中效果最好,訓練集中既包含了虛擬圖像及其加噪后圖像,又包含了由10張真實圖像旋轉(zhuǎn)擴展后的100張圖像,能夠很好的檢測和分割雜亂場景下的零件。

表2 三種模型在不同數(shù)量零件下的測試結(jié)果
本文提出一種基于零件合成訓練集對Mask RCNN進行訓練的方法。通過雜亂場景零件訓練集合成系統(tǒng)生成了合成訓練集,建立了三種不同的訓練集分別進行訓練,采集了不同零件數(shù)目的深度圖像對三種訓練集訓練出的三個模型分別進行測試。對于零件數(shù)目為10個的真實圖像,虛擬圖像訓練的模型準確率達到了73.74%,虛擬圖像和加噪圖像訓練的模型準確率達到了91.92%,虛擬圖像、加噪圖像以及少量真實圖像訓練的模型準確率達到了97.07%。測試結(jié)果表明,利用合成數(shù)據(jù)集訓練的模型,可以有效地對雜亂場景下的零件進行檢測和分割。