方鵬飛,劉復(fù)昌,姚爭為
(杭州師范大學(xué)國際服務(wù)工程學(xué)院,浙江 杭州 311121)
場景重建一直是計(jì)算機(jī)視覺領(lǐng)域中非常重要的研究內(nèi)容,在機(jī)器人開發(fā)、無人駕駛、智能家居以及虛擬現(xiàn)實(shí)等領(lǐng)域有著廣泛的應(yīng)用,姿態(tài)估計(jì)是場景重建中的重要部分.姿態(tài)估計(jì)研究內(nèi)容主要包括場景中物體的旋轉(zhuǎn)角度以及相對于相機(jī)的平移估計(jì).目前一些多目標(biāo)姿態(tài)估計(jì)算法需要先利用目標(biāo)檢測神經(jīng)網(wǎng)絡(luò)得到目標(biāo)區(qū)域,然后對目標(biāo)區(qū)域通過姿態(tài)估計(jì)網(wǎng)絡(luò)進(jìn)行物體姿態(tài)估計(jì),算法不能實(shí)現(xiàn)端到端.本文改進(jìn)目標(biāo)檢測算法Faster-RCNN網(wǎng)絡(luò)模型,結(jié)合姿態(tài)估計(jì)網(wǎng)絡(luò)模塊,實(shí)現(xiàn)端到端室內(nèi)物體的目標(biāo)檢測和姿態(tài)估計(jì),算法實(shí)現(xiàn)了多目標(biāo)分析預(yù)測,并且采用分類預(yù)測的方法進(jìn)行姿態(tài)估計(jì),相比很多回歸方法,分類方法準(zhǔn)確度更高.
深度學(xué)習(xí)方法已成為現(xiàn)在目標(biāo)檢測的主流方法,主要通過卷積神經(jīng)網(wǎng)絡(luò)將圖片特征提取、特征選擇和特征分類融合在一起,實(shí)現(xiàn)端到端訓(xùn)練.常用的卷積神經(jīng)網(wǎng)絡(luò)主要有LeCun等提出的LeNet-5[1]、Krizhevsky 等提出的AlexNet[2]、Simonyan等在AlexNet的基礎(chǔ)上提出的VGG網(wǎng)絡(luò)[3]、Szegedy 等提出的GoogleNet[4]以及He等提出的ResNet殘差網(wǎng)絡(luò)[5].目標(biāo)檢測網(wǎng)絡(luò)以這些卷積網(wǎng)絡(luò)作為圖片特征的提取,以完成圖片中目標(biāo)的檢測,算法主要有基于目標(biāo)候選框的目標(biāo)檢測算法和基于一體化卷積網(wǎng)絡(luò)的檢測算法.基于目標(biāo)候選框的目標(biāo)檢測算法主要有Girshick等提出的R-CNN[6]、Fast-RCNN[7],Ren S等在Fast-RCNN基礎(chǔ)上設(shè)計(jì)了候選區(qū)域生成網(wǎng)絡(luò)(region proposal network,RPN)并提出的Faster-RCNN網(wǎng)絡(luò)[8],以及Lin等提出的FPN網(wǎng)絡(luò)[9].而基于一體化卷積網(wǎng)絡(luò)的檢測算法主要有YOLO網(wǎng)絡(luò)[10]和SSD(single shot multibox detector)網(wǎng)絡(luò)[11].
傳統(tǒng)的姿態(tài)估計(jì)算法是基于模型的多視角圖和深度圖,通過多視角圖片中紋理特征和特征的深度信息來估計(jì)物體的姿態(tài),雖然準(zhǔn)確度較高,但是需要物體具有明顯紋理特征和功耗較大的專業(yè)設(shè)備(例如深度相機(jī)、Kinect等)的支持.
基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)算法是目前單目圖像物體姿態(tài)估計(jì)的主流方法.Izadinia等[12]利用類似圖片匹配的方法來預(yù)測物體的三維姿態(tài),該方法準(zhǔn)確度低、速度慢,需要大量匹配檢索.Su等[13]使用ShapeNet模型[14]和PASCAL VOC數(shù)據(jù)集[15]的圖片合成圖片數(shù)據(jù),使用卷積神經(jīng)網(wǎng)絡(luò)預(yù)測物體繞3個(gè)坐標(biāo)軸的旋轉(zhuǎn)角度,但是其預(yù)測準(zhǔn)確度較低,魯棒性較差.Tulsiani等[16]提出了Pool5-TNet網(wǎng)絡(luò),實(shí)現(xiàn)對物體進(jìn)行旋轉(zhuǎn)角度估計(jì).上述兩種算法都是用分類預(yù)測的方法預(yù)測物體旋轉(zhuǎn)角度,其對于室內(nèi)物體的預(yù)測準(zhǔn)確度只有15%,而且算法無法實(shí)現(xiàn)多目標(biāo)姿態(tài)估計(jì).Poirson等[17]使用SSD神經(jīng)網(wǎng)絡(luò)進(jìn)行物體旋轉(zhuǎn)角度預(yù)測,也是采用分類的方法,網(wǎng)絡(luò)預(yù)測速度較快,但是準(zhǔn)確度不高.Xiang等[18]結(jié)合Fast-RCNN網(wǎng)絡(luò),用回歸預(yù)測的方法直接預(yù)測物體繞3個(gè)坐標(biāo)軸的旋轉(zhuǎn)角度,相比前面方法,該算法同時(shí)實(shí)現(xiàn)了多目標(biāo)物體的目標(biāo)檢測和旋轉(zhuǎn)角度預(yù)測.以上算法均未能實(shí)現(xiàn)平移分析預(yù)測.Hueting等[19]利用CNN的分類方法預(yù)測物體相對相機(jī)的位置,但是其渲染合成的圖片數(shù)據(jù)少,場景單一,結(jié)果準(zhǔn)確度低,魯棒性差.Xiang等[20]提出了PoseCNN神經(jīng)網(wǎng)絡(luò),通過回歸預(yù)測的方法實(shí)現(xiàn)了物體六維姿態(tài)估計(jì),但是算法需要事先已知相機(jī)參數(shù)信息.
以上算法都是通過神經(jīng)網(wǎng)絡(luò)直接預(yù)測物體的姿態(tài),而文獻(xiàn)[21-23]則使用間接預(yù)測方法,通過神經(jīng)網(wǎng)絡(luò)回歸預(yù)測物體三維包圍盒頂點(diǎn)的二維像素坐標(biāo),再利用PnP(Perspective-n-Point)算法[24]估算出物體的六維姿態(tài).Xiang等[20]通過卷積神經(jīng)和PnP算法實(shí)現(xiàn)了物體姿態(tài)估計(jì),但是算法無法進(jìn)行多目標(biāo)分析.Tekin等[21]對Yolo目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行了改進(jìn),實(shí)現(xiàn)物體六維姿態(tài)估計(jì),算法在LINEMOD數(shù)據(jù)集準(zhǔn)確度高,且速度快.但是對于多目標(biāo)物體(少量遮擋)的姿態(tài)估計(jì),其準(zhǔn)確度不高.本文參考以上方法,設(shè)計(jì)了基于卷積神經(jīng)網(wǎng)絡(luò)室內(nèi)物體姿態(tài)估計(jì)神經(jīng)網(wǎng)絡(luò),在SUNRGB-D[25]數(shù)據(jù)集上訓(xùn)練網(wǎng)絡(luò),實(shí)現(xiàn)室內(nèi)物體的多目標(biāo)檢測和姿態(tài)估計(jì).
本文采用two-stage目標(biāo)檢測網(wǎng)絡(luò)Faster-RCNN[8]作為姿態(tài)估計(jì)網(wǎng)絡(luò)框架,并對其結(jié)構(gòu)進(jìn)行了改進(jìn),修改了loss函數(shù),增加了姿態(tài)估計(jì)項(xiàng).Faster-RCNN通過RPN做了一次篩選,使得正負(fù)樣本比例平衡,相比one-stage目標(biāo)檢測網(wǎng)絡(luò)(Yolo[10]、SSD[11]等)準(zhǔn)確度更高.
算法網(wǎng)絡(luò)結(jié)構(gòu)是基于目標(biāo)檢測網(wǎng)絡(luò)Faster-RCNN的網(wǎng)絡(luò)框架,對其進(jìn)行改進(jìn),增加了物體姿態(tài)估計(jì)模塊.網(wǎng)絡(luò)采用多任務(wù)訓(xùn)練方式,候選區(qū)域生成網(wǎng)絡(luò)(RPN)和預(yù)測網(wǎng)絡(luò)采用聯(lián)合訓(xùn)練模式,實(shí)現(xiàn)室內(nèi)物體目標(biāo)檢測和姿態(tài)估計(jì)端到端訓(xùn)練,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.首先,使用普通RGB圖作為網(wǎng)絡(luò)輸入,經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取一系列特征圖,特征圖通過RPN網(wǎng)絡(luò)訓(xùn)練產(chǎn)生大量感興趣區(qū)域(rois);再根據(jù)感興趣區(qū)域進(jìn)行下采樣池化操作(RoIAlign層),池化成7×7固定大小特征圖,采用Mask-RCNN[26]中RoIAlign方法(替換傳統(tǒng)下采樣RoIPooling方法),該方法解決了池化操作中兩次量化造成的區(qū)域匹配不準(zhǔn)確,提升了預(yù)測模型準(zhǔn)確度.特征圖經(jīng)過兩層全連接層,每個(gè)全連接層后面都使用ReLu激活函數(shù)以及Dropout,以防止網(wǎng)絡(luò)過擬合.預(yù)測網(wǎng)絡(luò)最后有4個(gè)預(yù)測分支,分別對應(yīng)目標(biāo)物體類別、邊界框、平移以及旋轉(zhuǎn)角度預(yù)測.本文采用直接分類預(yù)測方法[13,15-16],相比間接預(yù)測方法[19-22],可以不需要事先知道相機(jī)參數(shù)和目標(biāo)三維包圍盒信息,實(shí)現(xiàn)室內(nèi)物體目標(biāo)檢測和姿態(tài)估計(jì).
圖1 姿態(tài)估計(jì)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Pose estimation network structure
訓(xùn)練網(wǎng)絡(luò)損失函數(shù)如下:
Loss=Lcls+Lbox+Lrot+Ltrans,
(1)
其中,Lcls、Lbox、Lrot和Ltrans分別為目標(biāo)物體類別損失函數(shù)、邊界框損失函數(shù)、平移損失函數(shù)和旋轉(zhuǎn)角度損失函數(shù).Lbox采用Faster-RCNN中的smooth L1損失函數(shù):
Lbox=smoothL1(y-y*),
(2)
(3)
其中,y*為期望值,y為網(wǎng)絡(luò)預(yù)測值.目標(biāo)物體類別和姿態(tài)估計(jì)損失函數(shù)(Lrot和Ltrans)采用交叉熵(cross-entropy)損失函數(shù)
(4)
其中:yi*為期望值,yi為網(wǎng)絡(luò)預(yù)測值,n為預(yù)測數(shù)量.
本文訓(xùn)練數(shù)據(jù)集采用室內(nèi)場景數(shù)據(jù)集SUNRGB-D,相比文獻(xiàn)[19]使用OpenGL渲染的三維室內(nèi)場景圖片,SUNRGB-D數(shù)據(jù)集均為真實(shí)的室內(nèi)場景,場景復(fù)雜,包括臥室、客廳、辦公室、廚房、教室等,并且其中大部分圖片均有遮擋情況,單張圖片中目標(biāo)物體數(shù)量多,如圖2所示.相比人工合成的圖片數(shù)據(jù),使用真實(shí)場景的數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)可以使網(wǎng)絡(luò)魯棒性更好.本文實(shí)驗(yàn)RGB圖共8 333張,選取室內(nèi)主要家具(椅子、桌子、沙發(fā)、床以及架子)作為我們的姿態(tài)估計(jì)研究對象,數(shù)據(jù)集中這些對象主要分布在距離相機(jī)[-2.5 m, 2.5 m]×[0.5 m, 5.5 m]范圍內(nèi).采用水平翻轉(zhuǎn)的方法對數(shù)據(jù)集進(jìn)行了數(shù)據(jù)增強(qiáng).
圖2 SUNRGB-D數(shù)據(jù)集室內(nèi)場景圖片F(xiàn)ig.2 SUNRGB-D dataset indoor scene
本文實(shí)驗(yàn)采用端到端訓(xùn)練,網(wǎng)絡(luò)對于輸入的圖片尺寸大小沒有要求,有較好的適應(yīng)性.網(wǎng)絡(luò)反向傳播時(shí)采用隨機(jī)剃度下降法(stochastic gradient descent)進(jìn)行權(quán)值更新,權(quán)值衰減(weight decay)大小為0.000 1,momentum系數(shù)為0.9,初始學(xué)習(xí)率lr(learning rate)為0.001,訓(xùn)練總迭代次數(shù)為15萬次,在訓(xùn)練迭代8萬和12萬次時(shí),分別將學(xué)習(xí)率減小1/2.實(shí)驗(yàn)采用GTX1080Ti顯卡,顯存共11 G,訓(xùn)練時(shí)間12 h左右.
對于物體旋轉(zhuǎn)角度預(yù)測[13,15-16],假設(shè)物體沿重力方向?yàn)?°,將逆時(shí)針一周360°等分成36等份,如圖3所示.相比4、8、16和24等分[13,15-16],本文算法所劃分的類別更多,預(yù)測難度更大.而對于平移估計(jì),參考文獻(xiàn)[19]思想,將場景相對于相機(jī)位置[-2.5 m,2.5 m]×[0.5 m,5.5 m]的范圍劃分為10×10的網(wǎng)格,如圖3所示,將平移估計(jì)轉(zhuǎn)化成0~99的類別估計(jì).
目標(biāo)檢測準(zhǔn)確度計(jì)算參考文獻(xiàn)[6-9].先對所預(yù)測的結(jié)果進(jìn)行非極大值抑制(non-maximum suppression),保留概率大于0.7的預(yù)測結(jié)果,如果預(yù)測結(jié)果與標(biāo)簽的IOU(intersection over union)大于0.5,且類別與標(biāo)簽一致,則判定為預(yù)測正確,否則為預(yù)測錯(cuò)誤,準(zhǔn)確度計(jì)算公式如下:
(5)
其中,tp為預(yù)測正確樣本,fp為預(yù)測錯(cuò)誤樣本.
CNN卷積模塊分別采用VGG16和ResNet101進(jìn)行實(shí)驗(yàn),并且與SSD300[17]和Yolov3[27]方法進(jìn)行了對比,結(jié)果如表1所示.
表1 目標(biāo)檢測平均準(zhǔn)確度mAP@0.5Tab.1 Object detection average accuracy mAP@0.5
從表1可見,相比Yolov3和SSD300方法,本算法預(yù)測大部分類別準(zhǔn)確度較高,并且CNN網(wǎng)絡(luò)使用ResNet101比VGG16效果好,因?yàn)镽esNet101網(wǎng)絡(luò)比VGG16網(wǎng)絡(luò)更深、容量更大,部分效果圖如圖4所示.
圖4 目標(biāo)檢測實(shí)驗(yàn)效果(不同類別使用不同顏色框體)Fig.4 Object detection result(different objects use different color)
3.2.1 旋轉(zhuǎn)角度預(yù)測結(jié)果分析
對于旋轉(zhuǎn)角度預(yù)測準(zhǔn)確度我們采用AVP評價(jià)方法[13](角度預(yù)測正確并且類別也預(yù)測正確),并對角度誤差在20°范圍內(nèi)的準(zhǔn)確度進(jìn)行了對比分析,結(jié)果詳見表2和表3.
表2 旋轉(zhuǎn)角度預(yù)測準(zhǔn)確度(AVP)Tab.2 Rotation prediction accuracy(AVP)
表3 旋轉(zhuǎn)角度誤差小于20°的預(yù)測準(zhǔn)確度(AVP)Tab.3 Prediction accuracy of rotation angle error less than 20°(AVP)
從表2可見,本文算法對于大部分物體類別的預(yù)測準(zhǔn)確度都比文獻(xiàn)[17]方法高很多,只有架子類別低了0.01,平均準(zhǔn)確度最高比文獻(xiàn)[17]方法高0.13.從表3可見,旋轉(zhuǎn)角度誤差小于20°的預(yù)測準(zhǔn)確度依然要比文獻(xiàn)[17]方法高很多,總體平均準(zhǔn)確度最高比文獻(xiàn)[17]方法高0.24.以上結(jié)果表明,本算法比現(xiàn)如今直接分類預(yù)測室內(nèi)物體旋轉(zhuǎn)角度方法準(zhǔn)確度高,算法準(zhǔn)確度得到了很大提升.使用ResNet101作為CNN網(wǎng)絡(luò)預(yù)測結(jié)果總體比使用VGG16準(zhǔn)確度要高,與目標(biāo)檢測結(jié)果一致.
3.2.2 平移預(yù)測結(jié)果分析
以無偏差的預(yù)測準(zhǔn)確度以及一格偏差的預(yù)測準(zhǔn)確度作為實(shí)驗(yàn)評價(jià)標(biāo)準(zhǔn)[19],實(shí)驗(yàn)結(jié)果詳見表4和表5,其中文獻(xiàn)[19]只給出了所有類別準(zhǔn)確度的平均值,而我們給出了每一類物體預(yù)測準(zhǔn)確度,表中Baseline是利用語義分割圖和深度圖方法預(yù)測的結(jié)果[19].部分效果圖如圖5所示.
表4 平移預(yù)測無偏差準(zhǔn)確度Tab.4 Translation prediction accuracy
表5 平移預(yù)測一格誤差準(zhǔn)確度Tab.5 Translation prediction accuracy with one-offset
白色表示真實(shí)值,綠色表示預(yù)測正確,黃色表示一格偏差預(yù)測結(jié)果.
圖5 平移預(yù)測部分實(shí)驗(yàn)結(jié)果
Fig.5 Partial experimental results of translation prediction
實(shí)驗(yàn)表明,本文算法的無偏差準(zhǔn)確度和一格偏差準(zhǔn)確度均高于文獻(xiàn)[19]方法,該算法不僅實(shí)現(xiàn)了物體的姿態(tài)估計(jì),還可以進(jìn)行物體目標(biāo)檢測,實(shí)現(xiàn)多目標(biāo)分析檢測,在性能和功能上均優(yōu)于文獻(xiàn)[19].
我們對時(shí)間消耗進(jìn)行了分析,本文算法總體運(yùn)行速(約為15 FPS)相比SSD300算法(大約為46 FPS)略低,但是準(zhǔn)確度卻提高了很多.
本文提出并實(shí)現(xiàn)了使用卷積神經(jīng)網(wǎng)絡(luò)對室內(nèi)物體進(jìn)行姿態(tài)估計(jì).算法對目標(biāo)檢測網(wǎng)絡(luò)Faster-RCNN進(jìn)行改進(jìn),通過直接分類預(yù)測的方法實(shí)現(xiàn)了室內(nèi)物體目標(biāo)檢測和姿態(tài)估計(jì).相比現(xiàn)有很多只能進(jìn)行姿態(tài)估計(jì)的算法,本文算法還實(shí)現(xiàn)了室內(nèi)場景圖片中的目標(biāo)檢測,可以進(jìn)行多目標(biāo)分析預(yù)測.在室內(nèi)場景數(shù)據(jù)集SUNRGB-D上,本文算法的目標(biāo)檢測準(zhǔn)確度以及姿態(tài)估計(jì)要比現(xiàn)有一些算法高很多.實(shí)驗(yàn)使用真實(shí)室內(nèi)場景圖片作為實(shí)驗(yàn)數(shù)據(jù),相比使用人工合成的圖片,算法魯棒性更高.本文算法是在目標(biāo)檢測出的區(qū)域下進(jìn)行目標(biāo)的姿態(tài)估計(jì),所以姿態(tài)估計(jì)比較依賴于目標(biāo)檢測的準(zhǔn)確度,如果目標(biāo)準(zhǔn)確度能夠提升,那么物體的姿態(tài)估計(jì)準(zhǔn)確度也能進(jìn)一步提升.相比借助于相機(jī)參數(shù)或者物體三維包圍盒信息的間接預(yù)測方法,本文算法在準(zhǔn)確度上還有待提高.