【论文解读】MV3D-Net、AVOD-Net用于自动驾驶的多视图3D目标检测网络
作者‖ 黎國溥,3D視覺開發者社區簽約作者,CSDN博客專家,華為云-云享專家
 編輯‖ 3D視覺開發者社區
文章目錄
- 前言
- 一、MV3D-Net篇
- 1.1、框架了解
- 1.1.1 網絡的主體部分
- 1.1.2 網絡的融合部分
 
- 1.2、MV3D的點云處理
- 1.2.1 提取點云俯視圖
- 1.2.2 提取點云前視圖
 
- 1.3、MV3D的圖像處理
- 1.4、俯視圖計算候選區域
- 1.4.1 RPN的由來
- 1.4.2 RPN思路流程
- 1.4.3 feature maps與錨框 anchor boxes
- 1.4.4 判斷anchor boxes是否包含物體
- 1.4.5 修正邊界框
- 1.4.6 Proposal(最有可能包含物體的區域)
 
- 1.5、特征整合
- 1.6、特征融合
- 1.7、模型效果
- 1.8、模型代碼
 
- 二、AVOD-Net篇
- 2.1、框架了解
- 2.2、提取特征
- 2.2.1 FPN特征金字塔
- 2.2.2 FPN網絡結構
 
- 2.3、數據整合
- 2.4、邊界框的幾何約束
- 2.5、模型效果
- 2.6、模型代碼
 
前言
MV3D-Net 融合了視覺圖像和激光雷達點云信息;輸入數據有三種,分別是點云俯視圖、點云前視圖和RGB圖像。通過特征提取、特征整合和特征融合,最終得到類別標簽、3D邊界框。這樣的設計既能減少計算量,又保留了主要的特征信息。
MV3D-Net 開源代碼:https://github.com/bostondiditeam/MV3D
 MV3D-Net 論文地址:Multi-View 3D Object Detection Network for Autonomous Driving
AVOD-Net算是MV3D-Net的加強版,它也融合了視覺圖像和激光雷達點云信息。但它去掉了激光點云的前視圖輸入、去掉了俯視圖中的強度信息;輸入數據有二種,分別是點云俯視圖和RGB圖像。AVOD-Net使用FPN來提取特征,同時添加邊界框的幾何約束,整體模型效果有提升。
AVOD-Net 開源代碼:https://github.com/kujason/avod
 AVOD-Net 論文地址:Joint 3D Proposal Generation and Object Detection from View Aggregation
本文思路是先介紹MV3D-Net,再介紹AVOD-Net;在理解MV3D-Net的基礎上,去看AVOD-Net做出了哪些改變和對應效果如何。
一、MV3D-Net篇
1.1、框架了解
先看下總體網絡結構:下圖中的紫色圓圈中M是表示:基于元素的均值。
 
輸入的數據:有三種,分別是點云俯視圖、點云前視圖和二維RGB圖像。“點云投影”,其實并非簡單地把三維壓成二維,而是提取了高程、密度、光強等特征,分別作為像素值,得到的二維投影圖片。
 輸出數據:類別標簽、3D邊界框。
1.1.1 網絡的主體部分
網絡的主體結構的思路流程:
 1)提取特征。
 提取點云俯視圖特征;
 提取點云前視圖特征;
 提取圖像特征。
 2)從點云俯視圖特征中計算ROI候選區域。
 3)把候選區域分別與提取到的點云俯視圖特征、點云前視圖特征和圖像特征進行整合。
 先把俯視圖候選區域投影到前視圖和圖像中;
 再經過ROI pooling整合成同一維度。
1.1.2 網絡的融合部分
融合部分部是把整合后的數據進行融合,最終得到類別標簽、3D邊界框。
 
上圖中的紫色圓圈中M是表示:基于元素的均值。
1.2、MV3D的點云處理
MV3D將點云和圖片數據映射到三個維度進行融合,從而獲得更準確的定位和檢測的結果。這三個維度分別為點云的俯視圖、點云的前視圖以及圖片。
 
1.2.1 提取點云俯視圖
點云俯視圖由高度、強度、密度組成;作者將點云數據投影到分辨率為0.1的二維網格中。
 高度圖的獲取方式為:將每個網格中所有點高度的最大值記做高度特征。為了編碼更多的高度特征,將點云被分為M塊,每一個塊都計算相應的高度圖,從而獲得了M個高度圖。
 強度圖的獲取方式為:每個單元格中有最大高度的點的映射值。
 密度圖的獲取方式為:統計每個單元中點云的個數,并且按照公式:
 
其中N為單元格中的點的數目。強度和密度特征計算的是整個點云,而高度特征是計算M切片,所以,總的俯視圖被編碼為(M + 2)個通道的特征。
1.2.2 提取點云前視圖
由于激光點云非常稀疏的時候,投影到2D圖上也會非常稀疏。相反,作者將它投影到一個圓柱面生成一個稠密的前視圖。 假設3D坐標為:
 
那么前視圖坐標:
 
 可以通過如下式子計算
 
1.3、MV3D的圖像處理
采用經典的VGG-16來提取圖像特征,下圖是VGG-16的網絡結構。
 
VGG-16結構中有13個卷積層和3個全鏈接層,它的結構簡潔,整個網絡都使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)。它驗證了通過不斷加深網絡結構可以提升性能。但VGG-16耗費更多計算資源,并且使用了更多的參數,導致更多的內存占用(140M)。
1.4、俯視圖計算候選區域
物體投射到俯視圖時,保持了物體的物理尺寸,從而具有較小的尺寸方差,這在前視圖/圖像平面的情況下不具備的。在俯視圖中,物體占據不同的空間,從而避免遮擋問題。
 在道路場景中,由于目標通常位于地面平面上,并在垂直位置的方差較小,可以為獲得準確的3Dbounding box提供良好基礎。候選區域網絡是RPN,下面介紹一下它的原理。
 RPN全稱是Region Proposal Network,也可理解為區域生成網絡,或區域候選網絡;它是用來提取候選框的。
1.4.1 RPN的由來
在RCNN和Fast RCNN等物體檢測架構中,提取候選框的方法通常是傳統的Selective Search,比較耗時。
 在Faster RCNN中,RPN專門用來提取候選框,這也是RPN第一次被使用;RPN耗時少。Faster RCNN = RPN + Fast RCNN。
1.4.2 RPN思路流程
RPN網絡的任務是找到proposals。輸入:feature map。輸出:proposal。
 
RPN總體流程:
1.4.3 feature maps與錨框 anchor boxes
feature maps 的每一個點都配9個錨框,作為初始的檢測框。重要的事說三遍:**錨框作為初始的檢測框!、錨框作為初始的檢測框!、錨框作為初始的檢測框!**雖然這樣得到的檢測框很不準確,但后面可通過 bounding box regression 來修正檢測框的位置。
下面介紹那9個anchor boxes 錨框,先看看它的形狀:
 
這里一共有9個框框,綠色3個,紅色3個,藍色3個。有3種形狀,長寬比分別是1:1, 1:2, 2:1
1.4.4 判斷anchor boxes是否包含物體
在feature map上,設置了密密麻麻的候選anchor boxes 錨框。為什么會有這么多?因為 feature maps 的每一個點都配9個錨框,如果一共有1900個點,那一共有1900*9=17100個錨框了。
 
設 feature maps 的尺寸為 WH,那么總共有 WH*9個錨框。(W:feature maps的寬;H:feature maps 的高。)
 然后用cnn去判斷哪些anchor box是里面有目標的positive anchor,哪些是沒目標的negative anchor。所以,RPN做的只是個二分類。
 關于cnn的模型結構,可以參考下圖:
 
1.4.5 修正邊界框
已知anchor box 包含物體稱為positive anchors,那怎么調整,才能使得 anchor box 與 ground truth 更接近?
 
圖中紅框為positive anchors,綠框為真實框(Ground Truth Box,簡稱GT)
 positive anchors 和GT的梯度可以有dx, dy, dw, dh四個變換表示,bounding box regression通過線性回歸學習到這個四個梯度,使positive anchors 不斷逼近GT,從而獲得更精確的proposal。
 bounding box regression 思路,簡單一點的,可以先做平移,再做縮放,最終包含物體anchor box和真實框很接近。
1.4.6 Proposal(最有可能包含物體的區域)
通過上面的判斷anchor boxes是否包含物體,對有物體的anchor boxes通過回歸進行修正它的尺子,最終包含物體anchor box和真實框很接近。RPN會輸出一些框框,和這些框框包含物體的概率。
 總結一下,Proposal 的輸入有三個:
 softmax 分類矩陣
 Bounding Box Regression 坐標矩陣
 im_info 保存了縮放的信息
 輸出為:
 rpn_rois: RPN 產生的 ROIs(Region of Interests,感興趣的區域)
 rpn_roi_probs: 表示ROI包含物體的概率。
 RPN 只挑選出了可能包含物體的區域(rpn_rois)以及其包含物體的概率(rpn_roi_probs)。在后續處理中,設定一個閾值 threshold,如果某個ROI包含物體的概率的概率大于閾值,再判斷其類別;否則直接忽略。
1.5、特征整合
把候選區域分別與提取的特征進行整合。
 特征整合流程:
 ? a. 把俯視圖候選區域投影到前視圖和圖像中
 ? b. 經過ROI pooling整合成同一維度
 
1.6、特征融合
有了整合后的數據,需要對特征進行融合,最終得到類別標簽、3D邊界框。
 作者介紹了三種不同的融合方式,分別為
 ? a、Early Fusion 早期融合
 ? b、Late Fusion 后期融合
 ? c、Deep Fusion 深度融合。
 各自的結構如下圖所示。
 
上圖中的紫色圓圈中M是表示:基于元素的均值。C是表示:串接。
 最終選擇了Deep Fusion 深度融合。融合的特征用作:分類任務(人/車/…)、更精細化的3D Box回歸(包含對物體朝向的估計)。
1.7、模型效果
和其他模型對比的數據:
 
 
檢測效果:
 
1.8、模型代碼
代碼地址:https://github.com/bostondiditeam/MV3D
 作者使用KITTI提供的原始數據,點擊鏈接
 
上圖是用于原型制作的數據集 。
 我們使用了[同步+校正數據] + [校準](校準矩陣)+ [軌跡]()
 所以輸入數據結構是這樣的:
 
運行 src/data.py 后,我們獲得MV3D網絡所需的輸入。它保存在kitti中。
 
上圖是激光雷達俯視圖(data.py后)
 
上圖是將 3D 邊界框投影回相機圖像中。
二、AVOD-Net篇
2.1、框架了解
先看下總體網絡結構:(可以點擊圖片放大查看)
 
輸入的數據:有二種,分別是點云俯視圖和二維RGB圖像。輸出數據:類別標簽、3D邊界框。
 **相對于MV3D-Net的改進措施:**去掉了激光點云的前視圖輸入。在俯視圖中去掉了強度信息。去掉這兩個信息仍然能取得號的效果,就說明俯視圖和圖像信息已經能夠完整詮釋三維環境了。
2.2、提取特征
AVOD-Net如何提取特征的?它主要提取出二部分數據,分別是圖像特征、點云俯視圖特征。其中圖像+點云俯視圖融合特征,在數據整合起到作用。后面將這二種特征進行融合。
 
它使用了全分辨率特征,所以為了在整合時降低維度,先進性了1X1的卷積。
 AVOD使用的是FPN,MV3D-Net 是使用的VGG16做特征提取。下面介紹一下FPN網絡的原理。
 FPN,全名是Feature Pyramid Networks,中文稱為特征金字塔網絡;它是目前用于目標檢測、語義分割、行為識別等方面比較重要的一個部分,對于提高模型性能具有較好的表現。
 在特征提取中,低層的特征語義信息比較少,但目標位置準確,分辨率高。高層的特征語義信息比較豐富,但是目標位置比較粗略,分辨率低和比較抽象。于是有些算法采用多尺度特征融合的方式,在融合后的特征做預測。
 FPN的預測是在不同特征層獨立進行的,即:同時利用低層特征高分辨率和高層特征的高語義信息,通過融合這些不同層的特征達到預測的效果。FPN作者認為足夠低層高分辨的特征對于檢測小物體是很有幫助的。
2.2.1 FPN特征金字塔
FPN的頂層特征通過上采樣和低層特征做融合,并且每層都是獨立預測的;它使每一層不同尺度的特征圖都具有較強的語義信息。
 
 對比:FPN特征金字塔與多尺度特征融合
 多尺度特征融合的方式,在融合后的特征做預測。經過多次上采樣并融合特征到最后一步,拿最后一步生成的特征做預。
 FPN是在不同特征層獨立進行預測。
2.2.2 FPN網絡結構
FPN的主網絡采用ResNet,網絡結構思路是一個自底向上的線路,一個自頂向下的線路,橫向連接(lateral connection)。
 
11的卷積核減少卷積核的個數,也就是減少feature map的個數,并不改變feature map的尺寸大小。
 自底向上的過程也稱為下采樣,feature map尺寸在逐漸減小,同時提取到的特征語義信息逐漸豐富。在下采樣過程中,feature map的大小在經過某些層后會改變,而在經過其他一些層的時候不會改變,作者將不改變feature map大小的層歸為一個stage,因此每次抽取的特征都是每個stage的最后一個層輸出,這樣就能構成特征金字塔。
 自頂向下的過程也稱為上采樣進行,而橫向連接則是將上采樣的結果和自底向上生成的相同大小的feature map進行融合。其中,11的卷積核減少卷積核的個數,也就是減少feature map的個數,并不改變其尺寸大小。
 在融合之后還會再采用3*3的卷積核對每個融合結果進行卷積,目的是消除上采樣的混疊效應(aliasing effect)。并假設生成的feature map結果是P2,P3,P4,P5,和原來自底向上的卷積結果C2,C3,C4,C5一一對應。
 FPN同時使用低層特征高分辨率和高層特征的高語義信息,通過融合這些不同層的特征達到預測的效果。
2.3、數據整合
AVOD使用的是裁剪和調整(crop and resize),數據整合結構如下圖所示。
 
2.4、邊界框的幾何約束
AVOD在3D Bounding Box的編碼上添加了幾何約束。MV3D, Axis Aligned, AVOD三種不同的3D Bounding Box編碼方式如下圖所示,
 
AVOD利用一個底面以及高度約束了3D Bounding Box的幾何形狀,即要求其為一個長方體。MV3D只是給出了8個頂點,沒有任何的幾何約束關系。
 此外,MV3D中8個頂點需要一個24維(3x8)的向量表示,而AVOD只需要一個10維(2x4+1+1)的向量即可,做到了很好的編碼降維工作。
2.5、模型效果
與其他模型的對比:
 
在KITTI上,AVOD目前(2018.7.23)名列前茅,在精度和速度上都表現較好,與MV3D, VoxelNet, F-PointNet對比的結果如下表所示。
 
模型預測效果:
 
2.6、模型代碼
AVOD-Net 開源代碼:https://github.com/kujason/avod
 作者代碼的運行環境:
 **系統:**Ubuntu 16.04
 ****深度框架:****TensorFlow1.3(GPU 版本)
 **其他依賴庫:**numpy>=1.13.0 、opencv-python 、pandas、pillow、protobuf==3.2.0 、scipy、sklearn 等。
 **數據集:**在Kitti 對象檢測數據集上進行訓練。
版權聲明:本文為奧比中光3D視覺開發者社區特約作者授權原創發布,未經授權不得轉載,本文僅做學術分享,版權歸原作者所有,若涉及侵權內容請聯系刪文。
3D視覺開發者社區是由奧比中光給所有開發者打造的分享與交流平臺,旨在將3D視覺技術開放給開發者。平臺為開發者提供3D視覺領域免費課程、奧比中光獨家資源與專業技術支持。點擊加入3D視覺開發者社區,和開發者們一起討論分享吧~
或可微信關注官方公眾號 3D視覺開發者社區 ,獲取更多干貨知識哦。
總結
以上是生活随笔為你收集整理的【论文解读】MV3D-Net、AVOD-Net用于自动驾驶的多视图3D目标检测网络的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 生物信息学学习笔记(二)--蛋白质的结构
- 下一篇: AVOD-代码理解系列(三)
