包志強,邢 瑜,呂少卿,黃瓊丹
西安郵電大學 通信與信息工程學院,西安710121
6D目標姿態(tài)估計不僅需要對單幅RGB圖像中的目標進行定位,還需要檢測目標在三維空間中的旋轉自由度。這種技術目前主要的應用有無人駕駛、機器人自動抓取、增強現(xiàn)實和虛擬現(xiàn)實等[1]。但在實際應用中,姿態(tài)估計技術遇到了很多挑戰(zhàn),比如有復雜背景干擾、多個目標互相遮擋以及相機成像條件不一(低光照、曝光過度以及鏡面反射等)。
就目前大部分研究者的工作來看,姿態(tài)估計方法主要分為三個類別:基于關鍵點和模版匹配的方法、基于RGB-D的方法和基于CNN的方法?;陉P鍵點的方法主要在局部特征上建立2D-3D 對應關系[2],然后采用PnP 算法計算6D 姿態(tài)估計參數。盡管精度很高,但不足以解決無紋理的目標姿態(tài)估計問題[3]?;赗GB-D的姿態(tài)估計方法隨著商用深度相機的出現(xiàn)也有了很大的發(fā)展。Hinterstoisser 等人[4]提出了3D 點云的表面模版匹配,之后還提出了點對特征及其幾種變體[5],以提高對復雜背景和噪聲的魯棒性。然而,這些基于RGB-D的姿態(tài)估計方法在計算上是昂貴的。
近年來,基于CNN 的姿態(tài)估計方法能得到具有高度代表性的目標檢測模型?;贑NN姿態(tài)估計的方法一般有兩個策略,分別是回歸和映射。第一種策略利用CNN 直接產生連續(xù)的姿態(tài)參數或離散的視點。比如,deep-6Dpose[3]用來檢測和分割輸入圖像中的目標,同時用目標的卷積特征回歸6D姿態(tài)參數。SSD-6D[6]在單個階段利用SSD 結構預測目標的2D 邊界框和方向,然后根據2D 邊界框的大小估計目標的深度,將輸出信息從2D提升到6D。這些方法遵循基于外觀的方法規(guī)則,并且通常依靠后期優(yōu)化來提高姿態(tài)估計精度。第二種策略利用關鍵點學習和預測RGB 圖像與3D 模型之間的2D-3D 對應關系。比如,由一個卷積神經網絡組成的BB8[7]算法分割目標后預測目標的3D邊界框映射的2D位置,然后用PnP方法計算6D姿態(tài)。該算法效果顯著,但受限于方法本身多階段的特性,導致其速度很慢。另外,在文獻[8]中,CNN 會預測輸入圖像中3D 邊界框的2D 投影位置,以減少遮擋的影響。受此啟發(fā),基于YOLO V2[9]框架,設計了一種深度卷積神經網絡完成目標的6D姿態(tài)估計任務。
在這篇論文中,基于YOLO V2 框架,提出了一種單階段、端到端的深度卷積神經網絡結構,它以圖像作為輸入,直接檢測3D 邊界框頂點的2D 映射。同時,不需要細化等后處理步驟,只需訓練目標的3D 邊界框映射模型。在LineMod[4]和Occlusion LineMod[10]數據集上進行了測試,結果表明當處理單個目標時,本文方法的計算速度比其他方法快10 倍多,精度優(yōu)于經典的姿態(tài)估計算法。
YOLO V2[8]算法對目標進行檢測,用基于回歸的方法來提取特征,是一種端到端的訓練方法,它直接在特征層上回歸出類別和邊框,節(jié)省了大量提取邊框的時間。BB8 則在目標的周圍找到一個2D 分割掩模,然后將裁剪后的圖像送到下一個網絡,該網絡預測圖像中目標的8 個2D 角點。在這兩個網絡的基礎上,本文設計了基于YOLO V2的姿態(tài)估計深度網絡,用來預測目標3D邊界框頂點的2D投影,然后利用PnP算法計算目標的6D姿態(tài)。
在預測目標的6D 姿態(tài)之前,首先需要預測目標的3D 模型在二維圖像上的坐標映射[11]。9 個控制點可描述一個目標的3D 模型,包括3D 邊界框的8 個角點和1個中心點。這9 個控制點保證了3D 模型在2D 圖像上規(guī)則的可視化。
模型輸入為單幅RGB 圖像,用全卷積結構提取目標特征信息。首先把圖像分成包含S×S個單元的規(guī)則網格。每一個網格都與一個多維向量關聯(lián),包括9個控制點、目標的類別概率以及總的置信度。
另外,為了保證在有目標的區(qū)域預測的置信度高,在沒有目標的區(qū)域預測低的置信度,該算法還計算了預測的3D邊界框與真實框的交并比得分。
本文提出的算法調整了YOLOV2 的網絡結構,將原始的23 個卷積層和5 個最大池化層改成了6 個卷積塊,如圖1所示。第一塊和第二塊都是由一個卷積層和一個池化層組成,第三塊、第四塊和第五塊都是由三個卷積層和一個池化層組成,第六塊由三個卷積層組成,最后一層輸出線性卷積結果,每一個塊都表示一種級別的特征。該網絡將提取的目標特征分成了6個級別,低層輸出低級別特征,高層輸出高級別特征,如圖1(a)~(g)所示。所有的卷積層卷積核尺寸是3×3,步長為3;池化層采用最大池化,濾波器尺寸是2×2,步長設置為2。整個HCNN 特征提取網絡只有14 個卷積層,5 個最大池化層,激活函數全部是LeakyReLU,最后一個卷積層用的是線性激活函數。

圖1 特征提取網絡結構
卷積層通過卷積核和非線性激活函數計算多個特征圖,每個特征圖表示目標可能出現(xiàn)的位置視覺特征。圖2 中第一行至第五行表示第一個至第五個卷積塊的特征圖的部分輸出表示,淺層卷積塊提取圖像的紋理和局部細節(jié)特征,深層卷積塊提取圖像的輪廓和抽象的全局特征。最大池化層在一個小的特征圖上計算最大特征表示,最后一個卷積層的卷積核個數為19+C:9 對角點坐標,1 個置信度值,再加上C個類別。該網絡的特征提取過程可以學習包含復雜背景的目標特征(高級特征表示)。
另外,在訓練期間用批量歸一化調整了輸入圖像的大小。當網絡的圖像下采樣因子是32 時,將輸入分辨率的大小改為32 的倍數{320,352,…,608},以提高對不同尺寸目標檢測的魯棒性。

圖2 卷積特征圖示例(從上到下依次為卷積塊1~5的特征圖輸出結果)
姿態(tài)估計網絡的最后一層使用的是softmax 函數,輸出目標類別概率,以及角點在平面上的坐標,還有整個置信度得分。訓練期間,通過1.3 節(jié)構造的置信度函數計算置信度分數。最小化下面的損失函數訓練網絡:

其中,損失函數分別包含坐標損失lco、置信度損失lconf、分類損失lcl,用均方誤差函數MSE表示坐標和置信度損失,用交叉熵表示分類損失。損失函數求和權重設計中,設置不包含目標的網格單元置信度函數的權重為0.1,包含目標的權重為5,坐標損失和分類損失函數的權重均設置為1。訓練過程中,置信度損失一般從10開始下降,隨著迭代次數的增加最終會下降到0.5以內。
通過調用一次網絡進行6D 姿態(tài)估計,保證了網絡的快速運行。得益于YOLOV2[8]的框架,每個網格單元可以預測該單元格內的目標姿態(tài),如圖3所示。用一個置信度閾值過濾掉低置信度的預測,對于大目標或者兩個單元交叉點的目標來說,多個單元很可能都會預測高置信度的檢測。因此,為了得到更穩(wěn)定的姿態(tài)估計,檢測有最大置信度得分的3×3鄰域的單元,通過計算各個檢測的加權平均來合并這些相鄰單元的各個角點預測,其中加權的權重是相鄰單元格的置信度分數。
圖3描述了目標從平面到空間的映射關系(空間坐標軸起點為(0,0,0))。圖3(1)中紅色的點表示提出的方法預測的目標可能出現(xiàn)的質心,該點坐標所在的單元格負責預測該目標的類別概率。圖3(1)是目標在三維空間的真實姿態(tài)(綠色框表示),圖3(3)、(4)是網絡預測結果。為了保證預測的準確度,本文基于歐氏距離設計了置信度函數c(x) ,該函數用來評估預測姿態(tài)與真實姿態(tài)之間的偏差程度。c(x) 定義如下:


圖3 目標姿態(tài)映射圖
其中,α表示c(x)函數的銳利程度,DT(x)表示歐氏距離,dth表示置信度函數的像素閾值。
為了預測目標3D 邊界框角點的投影位置,本文提出的方法首先檢測目標在圖像中可能出現(xiàn)的位置坐標。該坐標在整幅圖像的一個單元格中,負責預測目標的類別概率,緊接著根據目標的3D 模型(目標已知參數)預測對應的投影點。
網絡模型輸出目標的質心、3D 邊界框角點的投影以及目標類別。為了進一步確定目標的6D 姿態(tài),利用RANSAC 非確定性迭代的特性,根據網絡輸出結果估計6D 姿態(tài)數學模型的參數,隨著迭代次數的增加產生近似真實姿態(tài)的結果。此過程不需要隨機地初始化參數,只需從對應的3D 坐標集合中隨機選取小的子集生成假設,對于每個假設,利用PnP算法恢復相機位姿,并將其用于計算投影誤差,根據誤差參數判斷哪些點是內點(預測的角點中與真實姿態(tài)足夠接近的點)。本文投影誤差閾值為22個像素。迭代次數k計算如下:

其中,w是內點與所有點數量之間的比率,k是迭代次數,它隨著子集的增加而增大,p表示要確保隨機選擇中至少有一個是n個無差錯集合數據點的概率。本文取p=0.95。
為了得到最佳迭代次數,比較了迭代次數的期望和標準差:

在實驗中,為了保證所有預測的投影點中至少有一半的內點,設定w=9/18(18表示18個頂點),同時希望無差錯的n個數據點越多越好。根據計算可得,當n=4,w=0.5 時,E(k)=16,SD(k)=15.5,它們近似相等。
為了避免過擬合,在LineMod數據集中加入了其他訓練圖像,同時還使用了一些抖動操作,比如用1.5倍的因子隨機改變圖像的亮度、飽和度,用0.2的因子隨機改變圖像旋轉角度、尺寸。用隨機梯度下降方法進行優(yōu)化,同時置信度函數的距離閾值dth設置為30 個像素,歐式距離指數形式中指數常數α設置為2。初始學習率為0.001,學習率分別在迭代40 000、60 000 次時分別衰減0.1 倍。為了使模型在訓練過程中更快收斂,還在LineMod數據集上進行一次預訓練,該預訓練過程中將置信度估計設置為0。
LineMod:這是6D 目標姿態(tài)估計的標準數據集,這個數據集包含多個姿態(tài)估計場景,比如復雜背景、無紋理目標、光照條件變化的場景。每一幅圖像的中心都有一個標記了平移、旋轉和類別的不同旋轉角度的的目標。同時該數據集還提供了每個目標的3D 模型表示。在LineMod 數據集中一共有15 783 張圖像,13 類目標,每個目標特征大約有1 200個實例。
Occlusion LineMod:這個數據集是對LineMod數據集的一個擴展,每一幅圖像包含多個被標記的目標,大部分目標被部分遮擋。在實驗中,Occlusion LineMod數據集僅用來測試,只用LineMod數據集進行訓練。
2D 投影指標[12]:這個指標計算的是預測的角點與真實標注角點之間的投影的平均距離。實驗中,如果該距離小于5個像素,預測就是正確的。2D重投影指標定義如下:

其中,C是相機矩陣,H是需要估計的目標姿態(tài),pi是像素i的位置,μ是像素分布的混合權重最大的平均值。
ADD 指標[4]:ADD 指標計算的是模型頂點之間3D平均距離。如果3D模型頂點的坐標與估計的坐標之間的平均距離小于目標直徑的10%,預測就是正確的。該指標計算公式如下:

其中,M表示3D模型的頂點集合,p和p′分別表示估計和真實的目標姿態(tài)。
5cm5°[13]:這個指標用來估計6D 姿態(tài)估計的精度。如果平移和旋轉誤差分別低于5 cm 和5°,則估計是正確的。平移誤差和旋轉誤差表示如下:

其中,t和t′分別是估計和真實的平移矩陣,R和R′分別是估計和真實的旋轉矩陣。誤差eRE由旋轉的軸角表示的角度給出。
本文在LineMod 數據集上進行了單目標姿態(tài)估計測試,部分結果如圖4 中的第1 列和第2 列所示。最終的姿態(tài)估計結果和真實標注姿態(tài)非常接近,尤其是當數據集中包含復雜的背景和不同程度的光照時,檢測性能仍然很出色。

圖4 姿態(tài)估計結果圖
就2D 重投影誤差而言,將實驗結果與當前常見的幾種姿態(tài)估計方法進行了比較,如表1 所示,本文的算法表現(xiàn)最好,2D重投影精度達到89.27%,并且在端到端訓練過程中本文算法沒有細化操作,表中方法標記(R)的表示有細化過程。
就ADD指標而言,本文提出的算法仍然與BB8[7]和Brachmann 等[10]提出的方法比較,如表2 所示。即使提出的方法沒有細化和預處理分割過程,但算法結果仍優(yōu)于Brachmann等提出的包含后處操作的方法,其結果提高了1.32個百分點。
就5cm5°指標而言,提出的方法與Brachmann 等提出的方法相比有較大的優(yōu)勢,其結果提高了23.44 個百分點,精度超過64%,如表3。對于目前姿態(tài)估計的研究任務來說,這是相當不錯的一個進步。
表4給出了本文方法和其他方法[1,6-8,10,14-16]的運行時間。本文提出的網絡結構簡單,在訓練和推理的過程中大大減少了運算量。本文算法運行速度可達37 frame/s,完全可以實時運行,超過BB8算法速度10倍多,較之目前姿態(tài)估計任務有明顯的速度優(yōu)勢。

表1 2D重投影誤差%

表2 ADD測試結果%

表3 5cm5°測試結果%

表4 算法運行速度

圖5 Occlusion LineMod數據集上2D投影誤差隨閾值變化的準確率
在圖5中,本文提出的方法與其他常用的姿態(tài)估計方法[7-8,17]相比,在6個目標類別(總類別個數為13)的檢測上整體性能優(yōu)于Tekin 等人的方法,在10%閾值下單個類別最大的準確率高出其他算法9.14%,充分驗證了本文算法在LineMod和Occlusion LineMod兩個數據集上檢測的穩(wěn)定性。
本文還在Occlusion LineMod數據集上進行了遮擋目標的姿態(tài)估計測試,測試結果如圖4第3、4列所示,其結果驗證了本文算法的有效性,能夠較好地估計目標的姿態(tài)。圖6 給出了Occlusion LineMod 數據集中6 個類別的2D 重投影誤差隨著距離閾值的增加的變化趨勢。從圖中各類的變化曲線得出結論:大多數類別在閾值為50 個像素時,其檢測精度在80%左右。值得一提的是,雖然本文的方法沒有細化過程,但可以在有遮擋的數據集中取得較好的檢測結果。另外,訓練集中并沒有包含遮擋目標的圖像,說明提出的方法有較強的環(huán)境適應性。

圖6 在Occlusion LineMod數據集上檢測精度隨閾值變化結果
本文針對三維空間中的目標6D 姿態(tài)估計問題,基于YOLO V2 深度學習框架提出了一種簡單快速的姿態(tài)估計算法。該算法首先依靠卷積神經網絡提取目標高維空間特征信息,然后利用目標的3D 空間模型頂點坐標得到二維平面的映射坐標,獲得目標在平面上的立體表示,最后經過PnP 算法計算目標的空間姿態(tài),確定目標姿態(tài)的粗略估計。相較于經典的姿態(tài)估計算法,本文提出的方法在精度和速度上都有較大優(yōu)勢,未來的研究將主要針對多目標姿態(tài)估計遮擋問題繼續(xù)完善網絡結構和計算過程。