實戰(zhàn):基于深度學(xué)習(xí)和幾何的3D邊界框估計
點擊上方“小白學(xué)視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
3D 對象檢測問題在需要決策或與現(xiàn)實世界中的對象交互的機器人應(yīng)用中尤為重要,3D 對象檢測從圖像中恢復(fù)對象的 6 DoF 姿態(tài)和尺寸。雖然最近開發(fā)的 2D 檢測算法能夠處理視點和雜波的較大變化,但準確的 3D 對象檢測在很大程度上仍然是一個懸而未決的問題。
文章[1] 提出了一種從單個圖像進行 3D 對象檢測和姿態(tài)估計的方法,他們首先使用深度卷積神經(jīng)網(wǎng)絡(luò)回歸相對穩(wěn)定的 3D 對象屬性,然后將這些估計與 2D 對象邊界框提供的幾何約束相結(jié)合,以生成完整的 3D 邊界框。

給定估計的方向和尺寸以及 3D 邊界框的投影,與 2D 檢測窗口緊密匹配的約束,它們恢復(fù)平移和對象的 3D 邊界框。
為了從數(shù)學(xué)上研究這篇文章,我們需要一個坐標系。坐標系主要有兩種,一種是相機坐標系,一種是世界坐標系。

在相機坐標系取攝像機的光學(xué)中心作為原點,X軸是水平方向,y軸是垂直方向,以及Z軸指向由照相機觀察到的方向。世界坐標系的原點可以任意選擇,與相機的具體位置無關(guān)。
相機模型中經(jīng)常涉及到四個坐標系:
圖像像素坐標系
成像平面坐標系
相機坐標系
世界坐標系
在環(huán)境中選擇一個參考坐標系來描述相機和物體的位置,該坐標系稱為世界坐標系。相機坐標系和世界坐標系之間的關(guān)系可以用旋轉(zhuǎn)矩陣R和平移向量t來描述。假設(shè)世界坐標系中P的坐標為(X,Y,Z)_w,則相機坐標系與世界坐標系之間存在如下轉(zhuǎn)換關(guān)系:

這里使用齊次坐標,R和t代表這兩個坐標系之間的變換。
相機坐標系如下圖所示:

相機坐標系的原點是光心,Xc和Yc軸平行于像素坐標系的u軸和v軸,Zc軸是相機的光軸。從光學(xué)中心到像素平面的距離是焦距f。
從圖中可以看出,相機坐標系上的點與成像平面坐標系上的點之間存在透視投影關(guān)系。假設(shè)p對應(yīng)的相機坐標系中P點的坐標為(Xc,Yc,Zc),則成像平面坐標系與相機坐標系之間存在如下轉(zhuǎn)換關(guān)系:

圖像像素坐標系通常簡稱為圖像坐標系或像素坐標系,如下所示。

像素坐標系的平面就是相機的成像平面,原點在圖像的左上角,u軸在右,v軸在下。像素坐標系的單位是像素,也就是我們常說的分辨率。
成像平面坐標系與像素坐標系在同一平面上,原點為相機光軸與成像平面的交點,通常為成像平面的中點或主點。單位是物理單位,例如毫米。因此,成像平面坐標系和像素坐標系只是原點和測量單位不同,兩個坐標系的區(qū)別在于縮放比例和原點平移。
假設(shè)p對應(yīng)的成像平面的坐標為(x,y),dx和dy代表成像平面中圖像中每個像素的物理尺寸,即上面提到的縮放比例。成像平面原點在像素坐標系中的坐標為(u_0, v_0),那么像素坐標系與成像平面坐標系之間的轉(zhuǎn)換公式如下:

世界坐標系和像素坐標系的轉(zhuǎn)換可以通過以上四個坐標系來實現(xiàn),如下圖:

可以寫成:

相機的內(nèi)參矩陣K通常是已知的和固定的,而外參矩陣[R T]往往需要求解。
我們假設(shè) 2D 對象檢測器已經(jīng)過訓(xùn)練,可以生成與投影 3D 框的邊界框相對應(yīng)的框。3D 邊界框由其中心 T = [t_x, t_y, t_z] 、尺寸 D = [d_x, d_y, d_z] 和方向 R(θ, φ, α) 描述,此處由方位角、仰角和滾轉(zhuǎn)參數(shù)化角度。

左:汽車尺寸,汽車的高度等于 dy。右圖:局部方向 θl 和汽車 θ 的全局方向的圖示。局部方向是相對于穿過作物中心的光線計算的。
假設(shè)物體坐標系的原點在 3D 邊界框的中心,并且物體尺寸 D 已知,那么 3D 邊界框頂點的坐標可以簡單地描述為

3D 邊界框與 2D 檢測窗口緊密配合的約束要求 2D 邊界框的每一側(cè)都被至少一個 3D 框角的投影所觸及。

例如,考慮一個 3D 角的投影

它接觸坐標 x_{min} 的 2D 邊界框的左側(cè),這個點對邊對應(yīng)約束導(dǎo)致等式:

其中 (.)_x 指的是透視投影的 x 坐標,可以為剩余的 2D 盒邊參數(shù) x_{max} , y_{min} , y_{max} 推導(dǎo)出類似的方程。
2D 邊界框的邊總共為 3D 邊界框提供了四個約束。第一步,得到一個二維矩形后,利用回歸學(xué)習(xí)估計方位角θ和物體尺寸D=[d_x,d_y,d_z],這里忽略仰角和翻轉(zhuǎn)角(φ=α=0)。直接估計全局方位角θ非常困難,通常選擇的是估計物體相對于相機的旋轉(zhuǎn)角的局部角θ_l。

用于方向和維度估計的 MultiBin 估計的建議架構(gòu)。它由三個分支組成,左分支用于估計感興趣對象的尺寸,其他分支用于計算每個 bin 的置信度,并計算每個 bin 的 cos(Δθ) 和 sin(Δθ)。
與Faster-RCNN為目標位置設(shè)置anchor位置類似,局部角度θ_l的估計也采用離散劃分。該方法首先分為n個不同的區(qū)間,將預(yù)測目標轉(zhuǎn)化為第i個角度區(qū)間的概率c_i以及角度偏差cos(Δθ_i)和sin(Δθ_i)的余弦值和正弦值。
在 KITTI 數(shù)據(jù)集中,車輛大致分為 4 個類別,類別實例的對象維度分布是低方差和單峰的。因此,他們沒有使用像上面的 MultiBin 損失那樣的離散連續(xù)損失,而是直接使用 L2 損失。按照標準,對于每個維度,他們估計相對于在訓(xùn)練數(shù)據(jù)集上計算的平均參數(shù)值的殘差。維度估計的損失 L_{dims} 計算如下:

其中 D* 是基準大小,Dˉ 是某個類別對象的平均維度,δ 是相對于網(wǎng)絡(luò)預(yù)測的均值的估計殘差。
使用 CNN 和 2D 檢測框的 3D 框的回歸尺寸和方向,我們可以求解平移 T,從而最小化相對于初始 2D 檢測框約束的重投影誤差。2D 檢測框的每一邊可以對應(yīng)于 3D 框的八個角中的任何一個,這導(dǎo)致 8^4 = 4096 個配置,每種不同的配置都涉及求解一個過約束的線性方程組,該系統(tǒng)計算速度快,可以并行完成。
他們在具有挑戰(zhàn)性的 KITTI 對象檢測基準上評估了他們的方法,包括 3D 方向估計的官方度量以及獲得的 3D 邊界框的準確性。盡管概念上很簡單,但所提出的方法優(yōu)于利用語義分割、實例級分割和平坦先驗和子類別檢測的更復(fù)雜且計算成本高的方法。
1.Arsalan Mousavian,Dragomir Anguelov,John Flynn.3D Bounding Box Estimation Using Deep Learning and Geometry
2.Peiliang Li, Tong Qin, Shaojie Shen .Stereo Vision-based Semantic 3D Object and Ego-motion Tracking for Autonomous Driving
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

