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