聲明:
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 的中心爲
假設原始圖像中物體的座標中心就是3Dbb 的中心,(這個假設是個比較強的假設)同時尺寸
例如
其中
4.2 Choice of Regression Parameters
4.3 Correspondence Constraints
根據方程2, 通過CNN獲取的 3Dbb 的方向角和尺寸以及 2Dbb 的約束,最小重投影誤差就可以得到平移矩陣
2D detection box 可以對應到 3Dbb 8個角點 中的任意一個,這樣可能性就有
每個2D detection box的水平邊 對應
五、3D Box 參數的 CNN 迴歸
文章這個章節主要講了或如迴歸3D bounding box 的方向角和尺寸
5.1 multiBin Orientation Estimation
估計全局物體方向角
因此我們需要回歸局部角
文章提出L2 loss 不太適合用於複雜的多模型的迴歸問題。L2 loss 促使網絡最小所有模式的平均損失,可能導致單個模式非常差的效果。這個已經在圖像着色問題中得到驗證,L2 範數給物體(衣服)產生不切實際的平均顏色。相似的, 物體檢測如 Faster R-CNN 和 SSD 不能直接回歸boxes: 取而代之的是將bounding boxes 空間分爲多個離散的模式叫: anchor boxes,然後每個anchor box 的估計連續偏移。(這裏還不是很懂,貌似是將這類檢測問題轉化爲分類問題,生成多個bounding box, 然後不同的物體,對應不同的bb).
文章使用了類似的想法並提出了MultiBin 結構用來方向估計。首先離散方向角並分爲
旋轉殘差用兩個數字表示,用角度的sine 和 cosine值,所有每個bin
其中
根據推論,會選擇具有最大置信度的bin,最後的結果會利用bin
在 KITTI 數據庫中,車,貨車,卡車 和 公交車都是不同的類並且不同類的區分方差很小且單峯。例如,車和自行車的尺寸方差在釐米的數量級上。因此,我們直接使用 L2損失,而不是上面的MultiBin, 作爲一個標準,在訓練的數據集上對於每一個尺寸我們計算相對於平均值的殘差,尺寸的估計損失
其中
CNN參數估計模型的結構在圖5 中展示,有三個分支: 兩個分支用於方向的估計,一個分支用於尺寸的估計,所有的分支得到相同的卷積特徵,並且所有的損害權重結合爲
六、實現細節
文章在 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抖動並且真實的
Pascal3D+ dataset: 這個數據集由Pascal VOC 的圖片 和 Imagenet 的具有12類標註和6個自由度的位姿的圖片。Pascal 訓練集和Imagenet 用於訓練,並在Pascal 驗證集上評估。不像KITTI,固有的參數都是估計的,所以不能恢復真實的物理物體的尺寸。因此只評估 3個自由度來展示Multi loss方法的有效性。文章用
去除MultiBin 模塊卷積核。所有必要的輸入是通過一個全鏈接層把
詳細的實驗設置可以參考文章。
以下是跟3DOP 、Mono3D、SubCNN 的定量分析:
以上的結果確實有一定的性能提升。特別是在考慮方向的時候。
七、總結
文章提出MultiBin 損失僅使用一張圖片的2D boxes 恢復出 3D boxes. 未來會考慮在RGB通道上結合深度的通道(立體匹配),另外一個探索方向是結合時間信息在視頻中完成物體的位姿和速度的預測。
總體來說文章的方向是這兩年剛剛熱門的問題。在KITTI的官網上還沒有很多的工作,會有比較大的可研究性;同時由於目前無人車的熱度上升,這方面的工作會更有實際的價值;但是由於該方面需要深度學習和多視幾何方面的知識的結合,每一個方面都是一個大方向,有一定的難度。
後續還會有更多該方面的文章閱讀筆記,本人是深度學習小白,如有錯誤,望大神不吝賜教。