自動駕駛--Deep3DBox

聲明:

1)本文爲論文閱讀記錄,主要用於分享和學術交流
2)若有錯誤,歡迎各位大牛吐槽,如有版權問題請聯繫:[email protected]


近年來,自動駕駛已經成爲了熱點,大大小小的公司都在嘗試踏足這個領域。
本文的第二、三作者就是Zoox 自動駕駛公司。
原文鏈接:https://arxiv.org/pdf/1612.00496.pdf

一、感悟:

剛看到這篇文章和另外一篇文章deepManta,簡直驚爲天人。首先對於長期從事SLAM研究的非計算機科班機械狗,認爲SLAM的稠密三維重建纔是自動駕駛的明天,這篇文章嘲笑了我的幼稚。深度學習與SLAM的應用結合或許真的能解決了只建立稀疏點雲方案的SLAM不能導航的缺點。

二、核心思想:

文章通過一張圖片獲取圖像中的3D物體以及位姿,相對於目前只能迴歸物體3D方向的技術,我們的方法利用深度學習網絡和2D物體Bounding box的幾何約束生成一個完整的3D Bounding Box 和 6個自由度的位姿(位置和角度),
注意:先回歸方向和尺寸,在結合幾何約束產生3D位姿。
第一層網絡輸出一個混合離散-連續損失(MultiBin)來表示3D物體的方向,這個損失優於L2.
第二層網絡迴歸3D物體的尺寸(可以從很多物體類別中得到先驗)

三、創新點:

1. 一種通過2D bounding box (方向和大小由CNN產生) 和幾何約束(幾何投影)估計物體3D位姿和尺寸。
2. 一個叫MultiBin迴歸的離散-連續 CNN 結構用來估計物體的方向。
3. 相對原來的KITTI數據庫,只有3D box 方向的估計,文章提出了三個另外的判斷3D box精度效果指標:box 中心離相機的距離,最近的bounding box 離相機的距離,所有的bounding box 跟ground truth 的 overlap(通過 3D intersection over Union (3DIoU))。
4. 方法在KITTI 車輛數據庫中的良好表現
5. 在Pascal 3D+ 數據庫的視角估計。

四、實現方法:

4.1 3D Bounding Box Estimation (下面簡化爲3Dbb)

爲了在3Dbb中利用已有的成熟的2D object detection 的工作,這裏我們構建兩者的關係, 3Dbb 投影到2Dbb (是不是跟SLAM的裏面的3D-to-2D很像,沒錯,後面就是用PnP 算的)。3Dbb 的中心爲 T=[tx,ty,tz]T , 尺寸D=[dx,dy,dz] 以及方向角R(θ,ϕ,α) , 這裏用方位角,海撥,(roll)轉動角來表示(正常開車沒有pitch 和 yaw)。物體相對相機座標的位姿(R,T)SE(3) ,相機的內參 矩陣K,投影的3D點爲 X0=[X,Y,Z,1]T 在物體圖像座標爲x=[x,y,1]T :


x=K[R|T]X0 (1)

假設原始圖像中物體的座標中心就是3Dbb 的中心,(這個假設是個比較強的假設)同時尺寸D 也已知,候選的3Dbb 座標可以表示成 X1=[dx/2,dy/2,dz/2]T , X2=[dx/2,dy/2,dz/2]T ,….., X8=[dx/2,dy/2,dz/2]T . 3Dbb 和 2Dbb 能夠匹配形成約束,需要3Dbb的每一角能投映射到2Dbb至少一個邊上。
例如X0=[dx/2,dy/2,dz/2]T 和2Dbb左邊的最小的xmin 鏈接,點到帶你的對應約束可以如下方程:

xmin=(K[R T][dx/2,dy/2,dz/2,1]T)x (2)

其中(.)x 表示相對於 x 座標系,剩餘 2Dbb 得的 xmax,ymin,ymax 也可以得到相似的方程,也就是可以得到四個與3Dbb的約束。但是這個用來獲取degrees of freedom(DoF) (three for translation, three fro rotation, and three for box dimensions) 是不夠的,另外還有一些幾何約束可以通過box 的visual appearance 獲取,這個主要的標準就是這些約束和visual appearance 緊密相關,同時可以用來加強3Dbb的約束。

4.2 Choice of Regression Parameters

(θ,ϕ,α) 對3Dbb 具有很大的影響,其次文章選擇迴歸box 的尺寸,而不是平移矩陣T ,因爲尺寸估計的方差比較小(先驗所有的車具有相同的大小) 也不會因爲物體的方向角變化而變化。具體的實現細節在後面的章節中。

4.3 Correspondence Constraints

根據方程2, 通過CNN獲取的 3Dbb 的方向角和尺寸以及 2Dbb 的約束,最小重投影誤差就可以得到平移矩陣 T 詳細的處理過程可以參考 補充材料
2D detection box 可以對應到 3Dbb 8個角點 中的任意一個,這樣可能性就有 84=4096 種, 很多情況下我們假設物體是朝上的。2Dbb 上面和下面的只對應3D box 的上部和下部,可能性就降爲 1024 種, 另外當物體的roll 爲0 的時候,2D box 的邊座標 xmin,xmax 就是可以對應3Dbb 的邊。相似的,ymin,ymax 只對應水平3D box 的點。因此, 每個2D detection box的垂直邊 對應[±dx/2,..,±dz/2] ,
每個2D detection box的水平邊 對應[±dy/2,..,±dz/2] 因此得到的 44=256 種。 在KITTI 數據庫中,物體 pitch 和 roll 的角度都是零,所以隨後得到 64 種的映射關係。參考下圖:


3d-to-2d

五、3D Box 參數的 CNN 迴歸

文章這個章節主要講了或如迴歸3D bounding box 的方向角和尺寸

5.1 multiBin Orientation Estimation

估計全局物體方向角 RSO(3) 需要相機的參考幀中檢測窗口的crop和 crop 的位置。考慮都R(θ) 參數只由 θ (yaw) 決定。圖4 是一輛車沿直線行駛的例子。儘管全局的方向R(θ) 沒有變,但是它的局部角 θl ( 全局方向和相機中心穿過 crop 中心的射線形成的角度) 一直在改變。


crop

因此我們需要回歸局部角 θl ,圖3 展示了局部角 θl 和射線角度變化的關係由全局角約束。給定相機的內參,射線的具體像素可以不用計算。我們通過結合射線的防線和局部角來計算物體的全局角。


這裏寫圖片描述

文章提出L2 loss 不太適合用於複雜的多模型的迴歸問題。L2 loss 促使網絡最小所有模式的平均損失,可能導致單個模式非常差的效果。這個已經在圖像着色問題中得到驗證,L2 範數給物體(衣服)產生不切實際的平均顏色。相似的, 物體檢測如 Faster R-CNN 和 SSD 不能直接回歸boxes: 取而代之的是將bounding boxes 空間分爲多個離散的模式叫: anchor boxes,然後每個anchor box 的估計連續偏移。(這裏還不是很懂,貌似是將這類檢測問題轉化爲分類問題,生成多個bounding box, 然後不同的物體,對應不同的bb).


L2

文章使用了類似的想法並提出了MultiBin 結構用來方向估計。首先離散方向角並分爲n 個overlapping bins。對於每一個bin,CNN網絡估計輸出的角度在第ith 個bin 的置信度 ci 和 每個bin 爲了獲得輸出角所需要的(residual rotation correction ) 旋轉殘差修正。
旋轉殘差用兩個數字表示,用角度的sine 和 cosine值,所有每個bin i 的3個輸出是:(ci,cos(Δθi),sin(Δθi)) . 有效的cosine 和 sine 值利用一個L2 歸一化層在二維輸入的頂部獲得。MultiBin 方向的全部損失用一下公式表示:


Lθ=Lconf+ω+Lloc (3)

Lconf 置信損失等於每個bin 的softmax loss 的置信。Lloc 是用於最小化估計的角度和真實的角度,所有和真實角度有重疊的bins 會用來估計正確的角度。定位損失嘗試最小化真實數據和所有餘弦值最大的bins的誤差(如補充材料) 定位誤差 Lloc 一下方式計算:


Lloc=1nθΣcos(θciΔθi) (4)

其中nθ 是和真實角度有覆蓋的 θ 的bins 的個數。ci 是bin i 的中心角度, Δθi 是bin i 的中心需要的變化量。
根據推論,會選擇具有最大置信度的bin,最後的結果會利用bin Δθ 的中心來估計。 MultiBin 模塊有兩個分支。一個是計算置信度 ci 另外一個是計算 Δθ 的 sine 和 cosine 值。 最後3n 個參數用來估計 n 個 bin。
在 KITTI 數據庫中,車,貨車,卡車 和 公交車都是不同的類並且不同類的區分方差很小且單峯。例如,車和自行車的尺寸方差在釐米的數量級上。因此,我們直接使用 L2損失,而不是上面的MultiBin, 作爲一個標準,在訓練的數據集上對於每一個尺寸我們計算相對於平均值的殘差,尺寸的估計損失Ldims 通過以下的公式計算:


Ldims=1nΣ(DD¯¯¯δ) (5)

其中D 是 box 的真實尺寸,D¯¯¯ 是一個特定類的物體平均尺寸,δ 是網絡預測相對於平均值估計的殘差。
CNN參數估計模型的結構在圖5 中展示,有三個分支: 兩個分支用於方向的估計,一個分支用於尺寸的估計,所有的分支得到相同的卷積特徵,並且所有的損害權重結合爲L=α×Ldims+Lθ
六、實現細節
文章在 KITTI 和 Pascal 3D + 兩個數據集中展示效果。
**KITTI 數據庫:**KITTI 數據庫一共有7481 張訓練的圖片。文章用MS-CNN 方法訓練得到2D的 boxes 然後高於一定閾值的估計出3D的boxes。爲了迴歸3D的參數,我們利用預訓練 VGG 網絡去掉 FC 層並加上3D box 層,如果圖5所示。在模型中,每一個方向分支都有256維度的FC層,第一個FC層中尺寸迴歸的維度爲512。在訓練中,每一個真實的crop 被 resize 成 224x244。 爲了
使網絡對視角變化和阻塞更加魯棒,真實的boxes抖動並且真實的θl 會隨着crop 的中心光束移動而變化。另外,增加顏色的畸變和隨機的給圖像加鏡像。網絡通過 SGD 保持學習率爲0.0001的訓練。網絡經歷20K 的迭代維持batch的大小爲 8, 然後最好的模型用於交叉驗證。圖 6 顯示了我們的3D boxes 估計方法在KITTI 驗證集上的定性的視覺結果。文章實驗兩個不同的訓練/測試數據劃分。第一個劃分的利用主要的可行的訓練圖片展示在官方KITTI 測試集上的結果。第二種劃分爲了和SubCNN統一以實現公平的比較。後者用了一半來做爲驗證集。


圖6

Pascal3D+ dataset: 這個數據集由Pascal VOC 的圖片 和 Imagenet 的具有12類標註和6個自由度的位姿的圖片。Pascal 訓練集和Imagenet 用於訓練,並在Pascal 驗證集上評估。不像KITTI,固有的參數都是估計的,所以不能恢復真實的物理物體的尺寸。因此只評估 3個自由度來展示Multi loss方法的有效性。文章用 C×3 MultiBin 模型來預測每個C 類的3 角度。爲了一個和Viewpoints and Keypoints這篇文章有一個公平的對比,文章保持 VGGfc6fc7 兩層並
去除MultiBin 模塊卷積核。所有必要的輸入是通過一個全鏈接層把fc7 做爲輸入。文章也使用在文章Viewpoints and Keypoints中使用的超參數來訓練模型。
詳細的實驗設置可以參考文章。
以下是跟3DOPMono3DSubCNN 的定量分析:


定量分析

以上的結果確實有一定的性能提升。特別是在考慮方向的時候。
七、總結
文章提出MultiBin 損失僅使用一張圖片的2D boxes 恢復出 3D boxes. 未來會考慮在RGB通道上結合深度的通道(立體匹配),另外一個探索方向是結合時間信息在視頻中完成物體的位姿和速度的預測。
總體來說文章的方向是這兩年剛剛熱門的問題。在KITTI的官網上還沒有很多的工作,會有比較大的可研究性;同時由於目前無人車的熱度上升,這方面的工作會更有實際的價值;但是由於該方面需要深度學習和多視幾何方面的知識的結合,每一個方面都是一個大方向,有一定的難度。

後續還會有更多該方面的文章閱讀筆記,本人是深度學習小白,如有錯誤,望大神不吝賜教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章