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

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

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

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

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

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

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

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

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

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

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

(a) 原圖

(b) 模型1預(yù)測(cè)結(jié)果

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

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

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

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