3D 目標檢測

參考:

  1. 3D檢測入門知識梳理

  2. 基於單目攝像頭的物體檢測(YOLO 3D)

1 基本處理方法

目前主要是綜合利用單目相機、雙目相機、多線激光雷達來進行3D目標檢測,從目前成本上講,激光雷達>雙目相機>單目相機,從目前的準確率上講,激光雷達>雙目相機>單目相機。

1.1 激光

 CVPR2018年的一篇文章Voxlnet,直接處理激光點雲,將點雲在空間上劃分爲均勻的voxel,再把不同的voxel點雲提取Voxel Feature Encoding對物體進行分類和位置迴歸。具體的研讀看這裏

Voxelnet把激光點雲在空間中均勻劃分爲不同的voxel,再把不同voxel中的點雲通過提出的VFE(Voxel Feature Encoding)層轉換爲一個統一的特徵表達,最後使用RPN(Region Proposal Network)對物體進行分類和位置迴歸,整體流程如圖Fig.2所示。

Fig.2 Voxelnet Architecture, figure from reference[2]

如圖所示,voxelNet的過程分爲3的步驟,分別是:VFE特徵提取,3D卷積和RPN預測。本文第一篇使用自學特徵做檢測,不是採用的手工特徵。並且僅僅只用了點雲輸出。
(1)文章最大的亮點在VFE層,其實結構就是Pointnet,但是卻採用了一個voxel中所有數據的整合。最後得到每一個voxel都具有128維度特徵的voxel-wise結構。後續就是一個3D卷積和維度融合成二維卷積,再在二維上做RPN操作。
(2)另外一個亮點是在VFE層中計算時先進行升維操作(很多在這篇文章上的後續工作都跟進了這一操作,也就是局部信息和全局座標結合變成7個維度的特徵)。
(3)但是需要提出的問題依舊是兩點:第一點,3D卷積的操作實則是一個很雞肋的東西,在voxel中對每個voxel的特徵的提取實則不能做到很好的效果。第二點,anchor-based的方法還是比較耗時間的,而且3D卷積尤其如是。這裏的proposals沒有任何先驗就提來了,而後續的兩片文章呢則是在proposal上做了不少文章。
 

1.2單目相機

YOLO3D將3D檢測通過2D的YOLOV2模型來擴展延伸。

以開源的Apollo爲例,Apollo中使用的YOLO 3D,在Apollo中通過一個多任務網絡來進行車道線和場景中目標物體檢測。其中的Encoder模塊是Yolo的Darknet,在原始Darknet基礎上加入了更深的卷積層同時添加反捲積層,捕捉更豐富的圖像上下文信息。高分辨多通道特徵圖,捕捉圖像細節,深層低分辨率多通道特徵圖,編碼更多圖像上下文信息。和FPN(Feature Paramid Network)類似的飛線連接,更好的融合了圖像的細節和整體信息。Decoder分爲兩個部分,一部分是語義分割,用於車道線檢測,另一部分爲物體檢測,物體檢測部分基於YOLO,同時還會輸出物體的方向等3D信息。

Fig.3 Multi-Task YOLO 3D in Apollo, figure from reference[3]

 

通過神經網絡預測3D障礙物的9維參數難度較大,利用地面平行假設,來降低所需要預測的3D參數。1)假設3D障礙物只沿着垂直地面的座標軸有旋轉,而另外兩個方向並未出現旋轉,也就是隻有yaw偏移角,剩下的Pitch和Roll均爲0。障礙物中心高度和相機高度相當,所以可以簡化認爲障礙物的Z=0;2)可以利用成熟的2D障礙物檢測算法,準確預測出圖像上2D障礙物框(以像素爲單位);3)對3D障礙物裏的6維描述,可以選擇訓練神經網絡來預測方差較小的參數。

Fig.4 Predictparameters in Apollo YOLO 3D, figure from reference[3]

在Apollo中,實現單目攝像頭的3D障礙物檢測需要兩個部分:

1、訓練網絡,並預測出大部分參數:

圖像上2D障礙物框預測
障礙物物理尺寸
不被障礙物在圖像上位置所影響,並且通過圖像特徵可以很好解釋的障礙物yaw偏轉角

2、通過圖像幾何學計算出障礙物中心點相對相機座標系的偏移量X分量和Y分量

 

1.3 激光+單目相機

 

AVOD,AVOD輸入RGB圖像及BEV(Bird Eye View),利用FPN網絡得到二者全分辨率的特徵圖,再通過Crop和Resize提取兩個特徵圖對應的區域進行融合,挑選出3D proposal來進行3D物體檢測,整個流程如圖Fig.5所示。

 

Fig.5 AVOD Architecture, figure from reference[4]

 

在KITTI 3D object Detection的評測結果如下圖Fig.6,目前領先的算法主要集中於使用激光數據、或激光和單目融合的方法,純視覺做3D目標檢測的方法目前在準確度上還不能和上述兩種方法相提並論,在相關算法上還有很大的成長空間,在工業界有較大的實用性需求,本次分享主要集中在目前比較新的純視覺單目3D目標檢測。

Fig.6 KITTI 3D object detection competition ranking for car, figure from reference[5]

2 研究問題

2.1 3DBBox

 理論上3DBBox會含有9個自由度。分別是:

  • 描述形狀:{L,W,H}
  • 描述位置:{X,W,Z}
  • 描述旋轉角:{Yaw,pitch,roll}

但是我們存在先驗知識:地面是水平的,所以一般就可以少去描述位置的Z的變量和旋轉角的pitch和roll,因此變成如下的6個自由度:

  • 描述形狀:{L,W,H}
  • 描述位置:{X,W,0}
  • 描述旋轉角:{Yaw,0,0}

所以3D檢測的位置迴歸是一個6D的預測迴歸問題。

2.2 目前存在的數據集

  • Jura
  • Pascal3D+
  • LINEMOD
  • KITTI

以KITTI數據集爲例,如圖Fig.7是KITTI數據集中對於一個3D障礙物的標註:

 

2.3主要難點

  • 遮擋問題:目標相互遮擋或者目標被背景遮擋。
  • 截斷: 只有物體的一部分
  • 小目標
  • 旋轉角度的學習:物體的朝向不同,但是對應的特徵相同

    ,旋轉角的有效學習有較大難度,如圖Fig.8所示

    Fig.8 Rotation angle confusion, figure from reference[4]

    5)缺失深度信息,2D圖片相對於激光數據存在信息稠密、成本低的優勢,但是也存在缺失深度信息的缺點

  •  

2.4 主要方法

目前基於單目相機的3D目標檢測的方法主要是複用2D檢測中的一系列方法,同時加入多座標點的迴歸、旋轉角的迴歸或分類,同時也有采用自編碼器的方法來進行姿態學習。

2.4.1

2.4.1 SSD-6D

Making RGB-Based 3D Detection and 6D Pose Estimation Great Again

 

 

 

Fig.9 SSD-6D Architecture, figure from reference[6]

 

SSD-6D的模型結構如上圖Fig.9所示,其關鍵流程介紹如下:

輸入爲一幀分辨率爲299x299的三通道RGB圖片
輸入數據先經過Inception V4進行特徵提取和計算
分別在分辨率爲71x71、35x35、17x17、9x9、5x5、3x3的特徵圖上進行SSD類似的目標值(4+C+V+R)迴歸,其中目標值包括4(2D包圍框)、C(類別分類得分)、V(可能的視點的得分)和R(平面內旋轉)
對迴歸的結果進行非極大抑制(NMS),最終得到結果

 

關鍵點:

Viewpoint classification VS pose regression:

作者認爲儘管已有論文直接使用角度迴歸,但是有實驗證明對於旋轉角的檢測,使用分類的方式比直接使用迴歸更加可靠,特別是使用離散化的viewpoints比網絡直接輸出精確數值效果更好

Dealing with symmetry and view ambiguity:

給定一個等距採樣的球體,對於對稱的目標物體,僅沿着一條弧線採樣視圖,對於半對稱物體,則完全省略另一個半球,如圖Fig.10所示

 

Fig.10 discrete viewpoints, figure from reference[6]

效果:

Tab.1 F1-scores for each sequence of LineMOD, table from reference[6]

 

2.4.2 3D Bounding Box Estimation Using Deep Learning and Geometry

作者提出一種從單幀圖像中進行3D目標檢測和姿態估計的方法,該方法首先使用深度神經網絡迴歸出相對穩定的3D目標的特性,再利用估計出來的3D特徵和由2D bounding box轉換爲3D bounding box時的幾何約束來產生最終的結果。論文中,作者提出了一個嚴格的假設,即一個3D bounding box應該嚴格地被2D bounding box所包圍,一個3D bounding box由中心點的(x, y, z)座標、和三維尺度(w, h, l)和三個旋轉角所表示。要估計全局的物體姿態僅僅通過檢測到的2D bounding box是不可能的,如下圖Fig.11所示,儘管汽車的全局姿態一直沒有變,但是在2D bounding box中的姿態一直在變。因此,作者選用迴歸2D bounding box中的姿態再加上在相機座標系中汽車角度的變化的綜合來進行汽車全局姿態的估計。

Fig.11 Left: Cropped image of car, Right: Image of whole scene, figure from reference[7]

 

同時,作者還提出了MultiBin的結構來進行姿態的估計,首先離散化旋轉角到N個重疊的Bin,對個每一個Bin,CNN網絡估計出姿態角度在當前Bin的概率,同時估計出角度值的Cos和Sin值。網絡整體結構如下圖Fig.12所示,在公共的特徵圖後網絡有三個分支,分別估計3D物體的長寬高、每個Bin的置信度和每個Bin的角度估計。

 

Fig.12 MultiBin estimation for orientation and dimension estimation, figure from reference[7]

 

效果:

Tab.2.Comparison of the average orientation estimation, average precision andorientation score for KITTI car, table from reference[7]

Tab.3. Comparisonof the average orientation estimation, average precision and orientation scorefor KITTI cyclist,, table from reference[7]

 

2.4.3 Implicit 3D Orientation Learning for 6D Object Detection from RGB Images

Fig.13 Top:codebook from encodings of discrete object views; Bottom: object detection and3D orientation estimation with codebook, figure from reference[8]

 

作者主要是提出了一種新型的基於去噪自編碼器DA(Denoising Autoencoder)的3D目標朝向估計方法,使用了域隨機化(Domain Randomization)在3D模型的模擬視圖上進行訓練。在進行檢測時,首先使用SSD(Single Shot Multibox Detector)來進行2D物體邊界框的迴歸和分類,然後使用預先訓練的深度網絡3D目標朝向估計算法對物體的朝向進行估計。在模型的訓練期間,沒有顯示地從3D姿態標註數據中學習物體的6D pose,而是通過使用域隨機化訓練一個AAE(Augmented Autoencoder)從生成的3D模型視圖中學習物體6D pose的特徵表示。

 

這種處理方式有以下幾個優勢:

可以有效處理有歧義的物體姿態,尤其是在物體姿態對稱時
有效學習在不同環境背景、遮擋條件下的物體3D姿態表示
AAE不需要真實的姿態標註訓練數據

Fig.14 Training process for AAE, figure from reference[8]

 

效果:

Tab.4 LineMOD object recall with different training and testing data, table from reference[8]

2.4.4 基於YOLO的3D目標檢測:YOLO-6D

https://zhuanlan.zhihu.com/p/41790888

2D圖像的目標檢測算法我們已經很熟悉了,物體在2D圖像上存在一個2D的bounding box,我們的目標就是把它檢測出來。而在3D空間中,物體也存在一個3D bounding box,如果將3D bounding box畫在2D圖像上,那麼長這樣子:

這個3D bounding box可以表示一個物體的姿態。那什麼是物體的姿態?實際上就是物體在3D空間中的空間位置xyz,以及物體繞x軸,y軸和z軸旋轉的角度。換言之,只要知道了物體在3D空間中的這六個自由度,就可以唯一確定物體的姿態。

知道物體的姿態是很重要的。對於人來說,如果我們想要抓取一個物體,那麼我們必須知道物體在3D空間中的空間位置xyz,但這個還不夠,我們還要知道這個物體的旋轉狀態。知道了這些我們就可以愉快地抓取了。對於機器人而言也是一樣,機械手的抓取動作也是需要物體的姿態的。因此研究物體的姿態有很重要的用途。

Real-Time Seamless Single Shot 6D Object Pose Prediction這篇文章提出了一種使用一張2D圖片來預測物體6D姿態的方法。但是,並不是直接預測這個6D姿態,而是通過先預測3D bounding box在2D圖像上的投影的1箇中心點和8個角點,然後再由這9個點通過PNP算法計算得到6D姿態。我們這裏不管怎麼由PNP算法得到物體的6D姿態,而只關心怎麼預測一個物體的3D bounding box在2D圖像上的投影,即9個點的預測。

1. 思想

上面已經講到,我們把預測6D姿態問題轉爲了預測9個座標點的問題。而在2D的目標檢測中,我們實際上也是需要預測座標點xy的。那麼,我們能不能把目標檢測框架拿來用呢? 很顯然是可以的。所以這篇文章就提出基於yolo的6D姿態估計框架。

2. 網絡架構

整個網絡結構圖如下:

從上圖可以看到,整個網絡採用的是yolo v2的框架。網絡吃一張2D的圖片(a),吐出一個SxSx(9x2+1+C)的3D tensor(e)。我們會將原始輸入圖片劃分成SxS個cell(c),物體的中心點落在哪個cell,哪個cell就負責預測這個物體的9個座標點(9x2),confidence(1)以及類別(C),這個思路和yolo是一樣的。下面分別介紹這些輸出的意義。

3. 模型輸出的意義

上面已經提到,模型輸出的維度是13x13x(19+C),這個19=9x2+1,表示9個點的座標以及1個confidence值,另外C表示的是類別預測概率,總共C個類別。

3.1 confidence的意義

confidencel表示cell含有物體的概率以及bbox的準確度(confidence=P(object) *IOU)。我們知道,在yolo v2中,confidence的label實際上就是gt bbox和預測的bbox的IOU。但是在6D姿態估計中,如果要算IOU的話,需要在3D空間中算,這樣會非常麻煩,因此本文提出了一種新的IOU計算方法,即定義了一個confidence函數:

其中D(x)是預測的2D點座標值與真實值之間的歐式距離,dth是提前設定的閾值,比如30pixel, alpha是超參,作者設置爲2。從上圖可以看出,當預測值與真實值越接近時候,D(x)越小,c(x)值越大,表示置信度越大。反之,表示置信度越小。需要注意的是,這裏c(x)只是表示一個座標點的c(x),而一個物體有9個點,因此會計算出所有的c(x)然後求平均。

另外需要注意的是,圖上的那個公式是錯的,和函數圖對應不起來,真正的公式應該是:

通過以上定義的confidence函數,就可以代替IoU的計算。

3.2 座標的意義

上面講到網絡需要預測的9個點的座標,包括8個角點和一箇中心點。但是我們並不是直接預測座標值,和yolo v2一樣,我們預測的是相對於cell的偏移。不過中心點和角點還不一樣,中心點的偏移一定會落在cell之內(因爲中心點落在哪個cell哪個cell就負責預測這個物體),因此通過sigmoid函數將網絡的輸出壓縮到0-1之間,但對於其他8個角點,是有可能落在cell之外的,所以我們沒有對8個角點預測添加任何限制。因此座標偏移可以表示爲:

其中cx,cy表示cell的座標。對於中心點而言,f(.)表示sigmoid函數,對於角點而言,f(.)表示恆等函數。

3.3 類別的意義

類別代表的意義很簡單,就是指預測的類別概率,不過這是一個條件概率P(class/object),因爲我們在訓練的時候,只會在有物體的情況下才計算概率損失,這個和yolo是一樣的。

3.4 多目標檢測

以上講的只是對於單目標的情況,如果是多目標的話,某個cell可能會落入多個物體,這個時候就需要使用anchor了,引入anchor之後,網絡的輸出相應地變爲:13x13x(19+C)×anchors,這篇文章使用的anchor數目爲5。引入anchor就需要考慮一個問題,如果一個物體落入了某個cell,那麼這個cell中的哪個anchor去負責這個物體?這篇文章中的做法和yolo一樣,就是去表物體的2D bounding box和anchor的尺寸,最匹配的那個anchor就負責這個物體。

6. 總結

這篇文章實際上將6d姿態問題轉爲了2D圖像中座標點檢測的問題,而2D座標點的檢測問題可以很好地利用目標檢測框架來做。當然,這種做法會有一個問題,就是即使你在2D上座標的檢測誤差很小,但映射到3D空間中可能會存在較大的誤差。當然,這可能是2D圖像作爲輸入的6D姿態估計算法都會面臨的問題。不過這篇文章的這個思路還是很值得借鑑的。

 

 上面的幾篇文章都是重點在2D圖像或者單目結合激光學習6D的姿態,數據來源和我要做的貌似有點出入,我要做的是基於點雲的3D檢測,因此後續繼續挖坑。

 

2.4.5 基於Mask RCNN的6D姿態估計:deep 6d

https://zhuanlan.zhihu.com/p/45583685

在上篇yolo-6d

stone:基於YOLO的3D目標檢測:YOLO-6D​zhuanlan.zhihu.com圖標

中已經講了如何通過物體的3D bounding box在2D圖像上投影的8個角點和一箇中心點來評估物體的6d姿態,這是一種將3d問題轉化爲2d問題來解決的思路。但deep6d(https://arxiv.org/abs/1802.10367)這篇文章提供了另外一種思路,直接回歸6d pose,非常簡單暴力。下面詳細介紹這種方法。

爲什麼要基於目標檢測框架?

在正式講deep6d之前,我們先思考一個問題:很多6d姿態估計的方法都是基於2D圖像的目標檢測框架,爲什麼要這麼做?

我的看法是:目前主流的目標檢測方法都是基於多目標檢測設計的,而6d姿態估計也涉及多目標,並且也是基於2D圖像來進行預測的,只是目標檢測預測的目標是xywh,而6d姿態估計預測的是xyzuvw(平移和旋轉),因此基於目標檢測框架來進行姿態估計也是非常自然的選擇。

怎麼表示物體的旋轉?

這部分是立體視覺的知識。如果對這部分不瞭解的可以跳過,只要知道,一個物體的旋轉可以用一個三維向量來表示就好了。

3D空間中物體的姿態可以用旋轉矩陣R和平移向量t來表示。直接回歸t沒有問題,但是直接回歸旋轉矩陣R就比較麻煩,因爲旋轉矩陣需要滿足單位正交的條件,網絡迴歸的結果很難滿足這種限制,因此需要考慮用其他方式來表示旋轉。

表示旋轉有幾個選擇:

  1. 歐拉角
  2. 旋轉矩陣
  3. 四元數
  4. 旋轉向量

歐拉角的表示最爲簡單,也很容易理解,用一個三維向量來表示旋轉就好了。但歐拉角有一個問題,同一個角度可以有多種表示,比如1度和361度實際上是同一個角度。除此之外還有萬向鎖的問題。所以歐拉角不是一個好的選擇。

旋轉矩陣也是一個選擇,但是旋轉矩陣的自由度實際上是3,用一個3x3的矩陣來表示旋轉顯然是多餘的。除此之外,旋轉矩陣需要滿足單位正交的限制,如何在訓練目標中加入這個限制條件也是一件難事。所以直接回歸旋轉矩陣也不是一個好的選擇。

四元數就是用一個四維向量來表示旋轉,具體什麼是四元數這裏就不講了,有興趣的請查閱其他資料。但是四元數需要滿足一個限制,就是這個四維向量必須是一個單位向量。你很難讓網絡吐出來的結果滿足這種限制,因此四元數也不是一個很好的選擇。

總之,以上表示方法都有缺點,因此作者就考慮使用一種新的表示方法:旋轉向量。旋轉向量用一個三維向量的方向來表示旋轉軸,用該三維向量的模來表示旋轉的角度,所以沒有上面的問題。

怎麼表示平移?

以上講解了如何表示旋轉,現在還要關心的是如何表示平移xyz。直接預測xy是不容易的,考慮這樣一種情況,如果兩個物體的z大小一致,但是xy不太一樣,這樣將3D物體投影到2D圖像上之後,從圖像上看表面非常相似,大小也相似,只是會在圖片中的不同位置。因此很難通過2D圖像中的物體來預測xy。因此作者提出通過目標檢測得到2D bounding box的中心座標,由這個中心座標映射到相機的座標系就可以得到xy座標。具體如下:

其中 , (u0,v0)是2d邊界框的中心點座標, (cx,cy)是相機內參。注意:上面原圖的第2個公式中寫錯了,應該是cx->cy

模型

知道了如何表示旋轉和平移,實際上就知道了模型的訓練目標,基於此就可以設計模型了。

模型的架構和mask RCNN是一致的,如下圖,只是多了一個pose預測分支。我們先來分別看每個分支。

class和box分支:這兩個分支是公用一個head的,共用一個head代表分類和迴歸任務之間的gap比較小,本質上做的事情很像,所以可以共用一個分支。

Mask分支:mask分支和MaskRCNN的網絡設計是一樣的,唯一不同的是,輸出的mask是與類別無關的,只是一個二值mask。而Mask RCNN中,mask的預測是和類別相對應起來的。爲什麼要這麼做?我覺得這是因爲mask預測在6d pose預測中是一個很必要的東西,但作者仍然保留下來。既然沒什麼用,但還保留下來,好吧,那就減少mask預測的複雜度,不管對於哪一類物體,只要預測mask就好了。

Pose分支:pose分支是本文新增的分支。與mask分支不同的是,pose預測是和類別有關的。也就是說每個類別的物體,都會對應一個pose預測。因此pose預測的輸出維度是4×num_class。爲什麼這麼做?我覺是因爲pose我們的最根本任務就是預測pose,那麼我pose預測針對每個類別來做,會更專業化,效果也會更好。這種做法在很多論文裏都有這麼做。

那麼,網絡的損失計算就包括了四個方面,總結如下:

分別包括分類,box迴歸,mask和pose損失。其中需要特別注意的是pose分支的loss:

這裏將rotation和z分開算了,前面的係數表示它們的權重,言下之意就需要分別對待旋轉和平移。

實驗

具體的實驗結果這裏不多說了,這裏看一下實驗的一個可視化結果:

總結

這種通過直接回歸6D姿態的方法非常直覺,也很簡單,但這類方法想要很好地work的一個重要條件就是,2D圖像的變化和6D姿態的變化要能夠match,比如說,一個2D圖像只有一個輕微的變化,但6D姿態可能變化很大,這種情況是很難讓網絡學習好的,除非我們有足夠的數據進行訓練,否則很容易過擬合。直接回歸6D姿態應該此前就有人想過,但是可能效果不太好,而這篇文章則驗證了直接回歸6d姿態也是一個可行的方法,可以說是提供了一種新的思路。

3 Survey of object classification and detection based on 2D/3D data

Brief

 這是CVPR-wrokshop上的一篇總結。站在大佬的肩膀上看世界,看看最新的研究進展和發展。文章指出5點3D視覺比2D視覺更加複雜的原因:

  • 3D數據的表達多種形式,例如電雲和mesh結構,但是2D只有像素格子。
  • 計算和內存複雜度都要求更多,更復雜
  • 室內,室外的數據分佈特徵使得一個統一的結構很難運作
  • 3D數據,尤其是室外場景,其具有的稀疏性使得檢測任務很難做。
  • 3D有監督的數據很少,使得學習任務非常困難

3.1 3D data-sets for object detection

  • NYU Depth Dataset V2 : has 1449 densely labeled pairs of aligned RGB and depth images from Kinect video sequences for a variety of indoor scenes.
  • SUN-RGBD dataset: RGB-D images
  • KITTI

3.2 階段性方法對比

如下圖所示的內容,除去19年薪的內容,經典的文章可以如下:

主要可以分爲two-stage和three-stage,果然維度提升一維,難度加大的不是一點點。

3.2.1 3D bounding box 編碼方式


按照輸入的數據,把目前3D-detection的文章分類如下;一般來講,只使用2維數據(單目和立體的數據)的效果並沒有結合3維數據的好。

下圖表示了目前幾種主流(除去19年)的3D檢測的方法的Bbox和proposals 生成方法的對比:

 

Sliding window

Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficien(IROS2017)


該方法使用三維滑動窗口的方法。首先將點雲柵格化,然後使用固定大小的三維窗口,使用CNN判斷該窗口的區域是否爲車輛。由於柵格化的稀疏性質,該文章使用了稀疏卷積的操作,將卷積核做中心對稱,將卷積操作變爲投票操作,使得該投票操作只用在不爲0的柵格點進行投票即可,減少了大量空卷積的操作。具體投票方式見下圖。

具體投票爲將中心對稱過後的卷積核的中心與非零點對齊,然後相乘,即可得到改點的投票。將多點投票的重疊的區域相加,得到輸出。

Two Stage

Multi-View 3D Object Detection Network for Autonomous Driving (CVPR2017)


MVNet使用點雲和圖像作爲輸入。點雲的處理格式分爲兩種:第一種是構建俯視圖(BV),構建方式是將點雲柵格化,形成三維柵格,每一個柵格是該柵格內的雷達點最高的高度,每一層柵格作爲一個channel,然後再加上反射率(intensity)和密度(density)的信息;第二種是構建前視圖(FV),將雷達點雲投影到柱座標系內,也有文章叫做range view,然後柵格化,形成柱座標系內的二維柵格,構建高度、反射率和密度的channel。
使用俯視圖按照RPN的方式迴歸二維proposal,具有(x, y, w, l)信息,角度只分成0和90度兩種,z和h的信息在這一步被設置爲常量。然後將三維的proposal進行多個角度的ROI pooling,fusion過程可使用concatenation或summation。最後加上經典的分類頭和迴歸頭。

  • 文章中強調使用俯視圖的好處
    “We use the bird’s eye view map as input. In 3D object detection, The bird’s eye view map has several advantages over the front view/image plane. First, objects preserve physical sizes when projected to the bird’s eye view, thus having small size variance, which is not the case in the front view/image plane. Second, objects in the bird’s eye view occupy different space, thus avoiding the occlusion problem. Third, in the road scene, since objects typically lie on the ground plane and have small variance in vertical location, the bird’s eye view location is more cru- cial to obtaining accurate 3D bounding boxes. Therefore, using explicit bird’s eye view map as input makes the 3D location prediction more feasible.”

  • 本文提出的俯視圖的構建過程非常有參考價值,是後續多篇文章所參考的依據。


RT3D: Real-Time 3-D Vehicle Detection in LiDAR Point Cloud for Autonomous Driving

用R-FCN檢測車輛。詳細解讀傳送門

Frustum PointNets for 3D Object Detection from RGB-D Data (CVPR2018) F-PointNet


該方法使用圖像和激光雷達檢測障礙物。

  • 處理流程
    利用2D Object Detection方法在image上進行車輛檢測;
    使用2D proposals得到3D椎體proposals,並進行座標變換,將座標軸旋轉至椎體中心線;
    利用PointNet++進行3D Instance Segmentation,並進行座標變換,將原點平移至instance的型心;
    使用T-net進行座標變換,估計物體的中心;
    3D box 迴歸。

先說下一大體流程:
(1)採用2D優秀的檢測方法對深度圖的RGB進行檢測出物體。
(2)根據檢測出來的物體可以確定視錐,文章說的是根據投影關係確定的,所以也不用去考慮什麼viewpoint這個無聊的問題。
(3)在視錐內的點進行實例分割,實際上也就是語義分割而已。採用的是一個pointnet的變種結構。這樣就算是得到了對應的點。然後在做一次座標變換,把中心點變換到座標原點上去。
(4)採用一個T-NET對姿態進行調整,也就是旋轉到gt類似的姿態;然後進行的是對size和angel的迴歸,作者採取了anchor的形式,多個size,多個angel。進行迴歸。值得注意的一點在於文章的corner-loss的使用。沒有細看這個損失。

講一下文章的貢獻點吧:

採用原數據輸入。。。文章的意思是沒有使用voxel的方式吧。是anchor_free的方法。
座標轉化的使用,很重要,這一點也不算亮點,但是是個trick,後續的PointRCNN也是如此,多次座標變換得到一個好的結果,我覺得後者就是借鑑了本文的座標變換,如下圖的第三個和第四個所示:

其中包含三次座標變換如下圖:

  • 相比於Pointnet,T-net的訓練是受監督的。
    “However, different from the original STN that has no direct supervision on transformation, we explicitly supervise our translation network to predict center residuals from the mask coordinate origin to real object center.”

  • 在迴歸3D box時,該文還提出同時使用Smooth_L1和Corner loss,以提升迴歸的準確性
    "While our 3D bounding box parameterization is compact and complete, learning is not optimized for final 3D box accuracy – center, size and heading have separate loss terms. Imagine cases where center and size are accurately predicted but heading angle is off – the 3D IoU with ground truth box will then be dominated by the angle error. Ideally all three terms (center,size,heading) should be jointly optimized for best 3D box estimation (under IoU metric). To resolve this problem we propose a novel regularization loss, the corner loss:
    "

這裏提前給一下pointRCNN的變換,下圖所示,是不是也是移到中心,然後再正交對齊。

  • 貢獻點,第三個是採用了一種策略去縮小proposal的範圍,這就是那個voxel的存在的問題,滿屏的anchor就很蠢。

那麼依舊不足如下:

  • F-PointNet假設一個frustum中只存在一個instance,這對一些密集區域的segmentation是不利的。
  • 受到串行結構的影響,F-PointNet中3d box estimation的結果嚴重依賴於2d detection,並且RGB信息對整個結構是至關重要的。然而,圖像受到光照以及前後遮擋的影響,會導致2d detector出現漏檢的情況。
  • 有的結構可能只能在3D中才能被看到,一些小的被遮擋住的。
  • 階段性過強,對2D的依賴太大。

Joint 3D Proposal Generation and Object Detection from View Aggregation (IROS2018)


利用Anchor grid作爲感興趣區域進行Crop和Resize到同一大小,然後將兩者的特徵進行element-wise sum,然後進行3D proposals的第一次迴歸。然後進行NMS,使用proposals對feature map再次進行Crop和Resize, 然後再次迴歸,修正proposals,通過NMS得到Object Bounding Boxes。
上圖中左邊的Fully Connected Layers迴歸車輛位置的尺寸,右邊的Fully Connected Layers迴歸車輛的朝向角。

  • 本文提出了一種新的3D box 的8個corner的編碼方式
    “To reduce redundancy and keep these physical constraints, we propose to encode the bounding box with four corners and two height values representing the top and bottom corner offsets from the ground plane, determined from the sensor height.”

PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud (CVPR2019)


該文章提出了使用
PointNet++作爲主幹網絡使用two-stage的方法進行目標檢測的方法。該方法首先使用PointNet++得到point-wise的feature,並預測point-wise的分類和roi。然後擴大roi,使用上一步得到的feature再使用PointNet++優化3D Box。具體的網絡結構可以參考我的另一篇PointRCNN網絡可視化,代碼詳解

  • 由於該方法第一次得到RoI的數量與三維點的數量相等,所以該方法理論上可以檢測到所有的框。
  • 文章中提到了Frustum PointNet的弊端
    “F-PointNet [22] generates only 2D box proposals from 2D images, and estimate 3D boxes based on the 3D points cropped from the 2D regions. Its 2D-based proposal generation step might miss many difficult objects that could only be clearly observed from 3D space.”
  • 解決了大量使用anchor的問題
    “our method avoids using a large set of predefined 3D anchor boxes in the 3D space and significantly constrains the search space for 3D proposal generation.”
  • 使用了Full-bin Loss,使得收斂速度和精度上升

 

依舊先講一下過程,兩階段法,很明確的proposals和RCNN兩個階段。
階段一的過程:

(1)採用pointnet對每個點進行編碼得到point-wise特徵,隨後同時進行兩步操作,分割和生成候選框。
(2)分割。採用的方式也就是pointnet,不多說,這裏會生成前景mask。
(3)generate proposals。每一個點首先都會生成一個box,但是不會去使用它,而是判斷這個點是否在Gt的內部,如果是,那麼我們就可以使用這個點的box做proposals;
(4)NMS刪選出一些候選的BOX

階段二:

(1)整合上述的特徵,包括有point-wise features,座標和深度補償,mask。
(2)進一步對BOX篩選和迴歸。

優勢點:

  • 標準的兩階段,Pointnet+RCNN這個名字就是致敬。不過是anchor_free的方法。
  • proposals也是相當於經過一定的先驗再得到的,會比voxel滿屏的anchor好很多。
  • bin損失的使用,文章說了這樣會比直接使用smoothL1要準確。
  • 只採用點雲作爲輸入,完完全全的使用了點雲特徵,也就是存在Pointnet-wise這個feature。以及各種的feature的大雜燴,但是沒有使用局部算數平均值和offest是不是會更好一些。
  • 變換座標這個key-point吧。

不足:

  • 每一個點都會開始存在一個proposals,而不是隻對前景點。作者當然有考慮到這個問題,只是這樣子會比較好計算吧,畢竟一個統一的batch。這倒可以結合voxel的那個採樣的思想試一試。
  • 大規模的輸入,固定到16384個點,點多有點慢。沒有采樣之類的操作,當然這也是爲了得到一個比較高的召回率。
  • 一個兩階段法都要去思考的問題,時間比較長。

 

VoteNet:Deep Hough Voting for 3D Object Detection in Point Clouds

詳細解讀傳送門


Multi-Task Multi-Sensor Fusion for 3D Object Detection

詳細解讀傳送門


GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving

詳細解讀傳送門


Stereo R-CNN based 3D Object Detection for Autonomous Driving

詳細解讀傳送門


STD: Sparse-to-Dense 3D Object Detector for Point Cloud

[詳細解讀傳送門(https://blog.csdn.net/wqwqqwqw1231/article/details/100565150)


Part-A^2 Net: 3D Part-Aware and Aggregation Neural Network for Object Detection from Point Cloud

[詳細解讀傳送門(https://blog.csdn.net/wqwqqwqw1231/article/details/100541138)


Class-balanced Grouping and Sampling for Point Cloud 3D Object Detection

本文更偏重於講一些數據增廣的方法和小技巧。
詳細解讀傳送門


BirdNet: a 3D Object Detection Framework from LiDAR Information(2018 ITSC)

本文主要的貢獻是解決跨線數激光雷達的訓練和檢測的魯棒性問題。
詳細解讀傳送門


StarNet: Targeted Computation for Object Detection in Point Clouds

本文提出了不使用神經網絡生成proposal的方法,該方法的另外一個先進性在於inference過程和train過程的使用點雲的數量可以不同,使得部署更方便。
詳細解讀傳送門


PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

目前KITTI榜首。
詳細解讀傳送門



One Stage

3D Fully Convolutional Network for Vehicle Detection in Point Cloud (IROS2017)


該文章是3D Object Detection的早期之作,使用的方法就是3D卷積,pytorch中有對應的函數torch.nn.Conv3D。方法簡單,與YOLOv1思路類似。進行三維卷積和池化,提取高維特徵,然後反捲積得到分辨率適中的feature map然使用分類頭和迴歸頭預測Bounding Box。

相比後來的方法,該方法顯得粗糙一些,但是本論文是將3D Object Detection從傳統方法過度到深度學習的文章之一,還是有值得學習之處。

  • 提出了使用Bounding Box的Corners作爲迴歸變量,該回歸方法在Frustum PointNets又被重新使用,並取得了效果的提升。
  • 該文章介紹了比較多的點雲柵格化過程中每個柵格的特徵構建的方法,可以用來查找手工構建柵格特徵的方法。

Complex-YOLO: An Euler-Region-Proposal for Real-time 3D Object Detection on Point Clouds(ECCV2018)

YOLO3D: End-to-end real-time 3D Oriented Object Bounding Box Detection from LiDAR Point Cloud(ECCV2018)

兩篇文章作者來自同一個機構,姑且認爲兩篇文章有聯繫。這兩篇文章用的方法也如出一轍,都是使用MVNet俯視圖的構建方法,然後利用YOLO在俯視圖上做Object Detection,只不過是迴歸變量多了一個維度和角度,就解決了3D Object Detection的問題。
方法沒有什麼創新之處,文章中提到了Frustum Pointnet的不足之處。
“This approach has two drawbacks: i). The models accuracy strongly depends on the camera image and its associated CNN. Hence, it is not possible to apply the approach to Lidar data only; ii). The overall pipeline has to run two deep learning approaches consecutive, which ends up in higher inference time with lower effciency.”
說出了Frustum Pointnet在構建proposal的時候依賴CNN這個問題。


PIXOR: Real-time 3D Object Detection from Point Clouds (CVPR2018)


PIXOR思路非常簡單,容易理解。計算過程如上圖:

類似於MVnet,將點雲轉爲俯視圖表示。
使用resnet進行特徵提取,然後upsample至原圖1/4的大小。
然後加入分類頭和迴歸頭。

整個網絡框架如下圖

我認爲這個方法類似於YOLO的思想,One Shot將box分類和迴歸。Feature Map上採樣至俯視圖尺寸的1/4,相當於YOLO中的每個格子爲4*4個像素。該方法迴歸的變量均是2維變量:俯視圖中的中心點、長寬和方向角。

  • 該論文的俯視圖的編碼是使用柵格的佔據編碼,不再使用大多數文章使用的高度。
    “The value for each cell is encoded as occupancy”
  • 論文論述瞭如何解決小目標的問題。小目標在原始圖片張佔據的像素點少,提取高層特徵後,很容易在feature map只對應幾個像素點。
    “One direct solution is to use fewer pooling layers. However, this will decrease the size of the receptive field of each pixel in the final feature map, which limits the representa- tion capacity. Another solution is to use dilated convolu- tions. However, this would lead to checkerboard artifacts [25] in high-level feature maps. Our solution is simple, we use 16×downsampling factor, but make two modifications. First, we add more layers with small channel number in lower levels to extract more fine-detail information. Sec- ond, we adopt a top-down branch similar to FPN [21] that combines high-resolution feature maps with low-resolution ones so as to up-sample the final feature representation.”
  • 一個實現細節,在regression頭後沒有再使用sigmoid函數

HDNET: Exploiting HD Maps for 3D Object Detection (CoRL2018)


該論文是PIXOR的延續之作,使用了PIXOR的網絡框架,加入了高精地圖的信息,使得檢測更準。該論文首先假設高精地圖是存在的,那麼對於俯視圖中,就有道路的的mask和路面的高度。該論文對PIXOR的改進之處體現在將點雲轉爲俯視圖過程中,將雷達點的高度z減去對應的高精地圖中儲存的該點的高度,做此變換之後然後柵格化地圖,之後就與PIXOR相同。這樣做的目的,論文中提到是減小道路坡度影響,因爲PIXOR在進行車輛的Bounding Box的迴歸時沒有考慮高度這個軸,所以這樣做直觀感覺確實可以提高精度。然後該論文提出了不存在高精度地圖的情況,那麼就先柵格化點雲,然後用U-net在俯視圖中做road segmentation和ground estimation(這一步就可以認爲是在線地估計高精地圖)。

  • 該文章除了使用在使用高清地圖的地方對PIXOR做了改進,還在輸入和迴歸變量的地方進行了略微改進,論文中稱爲PIXOR++,可以從結果看出PIXOR++的效果要比PIXOR效果好不少,值得借鑑。
  • 爲了提高網絡在高精地圖不存在情況下的魯棒性,該論文提出了對高清地圖做dropout的方法。
    “In practice, having a detector that works regardless of map availability is important. Towards this goal, we apply data dropout on the semantic prior, which randomly feeds an empty road mask to the network during training. Our experiments show that data dropout largely improves the model’s robustness to map availability.”

Voxel-FPN: multi-scale voxel feature aggregation in 3D object detection from point clouds

詳細解讀傳送門


VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection (CVPR2018) (未完)


LaserNet: An Effcient Probabilistic 3D Object Detector for Autonomous Driving Gregory (Arxiv2019)(未完)


PointPillars


很清晰的三個階段:

  • 特徵提取和轉化到二維
  • 2D CNN骨架網絡提取2D特徵
  • 2D 檢測

只說一下第一步:

如何把3D特徵轉化爲2D圖片呢?
(1)分柱子。把俯視圖分成[Math Processing Error]H \times WH×W個小方格子,再沿着z軸向上拉就成了柱體。
(2)提特徵。每個柱體中的點作爲一個集合,採用和voxel一樣的方式提取特徵,最後採用最大池化爲[Math Processing Error][T,1,C][T,1,C]
(3)轉化爲二維。因爲[Math Processing Error]T=H\times WT=H×W,所以我們最後可以變化成[Math Processing Error][H,W,C][H,W,C],這是啥,這不就是2D卷積的東西了嗎。

優勢:

  • 又快又好,結構簡單優雅。
  • 利用了2D成熟的CNN
  • anchor-free的方法,借鑑了前人voxelnet的方法,改進了他的3D卷積部分和後續。
  • 巧妙的轉換到2維度。

不足:

  • Z軸的存在的特徵缺失。

另一種分類方式:Voxel or Image or Pointcloud?

另一種分類方式,是從網絡的輸入和網絡結構來分。對這種分類的詳細的解釋,可以參考我的另一篇博客三維激光雷達點雲處理分類

  • Voxel:輸入爲體素格式,典型爲VoxelNet,網絡使用3D卷積大量使用操作
  • Image:輸入爲圖片格式,典型爲MVNet,網絡使用傳統的CNN
  • Pointcloud:輸入爲點雲格式,典型爲PointNet,網絡使用多層感知機,多層感知機的具體實現是2D卷積,但卷積核大小和步長多數爲1

這種分類方式由於輸入的不同,數據本身就有獨自的優勢和劣勢:

  • Voxel:最大問題就是計算慢!體素是三維的,卷積模板也是三維的,那麼計算起來就比二維的慢,而且卷積核移動的方向也是三維的,隨着空間的大小的增大,體素的數量是以立方的數量增長;而且在自動駕駛場景,體素是稀疏的,存在大量體素中不包含雷達點,特徵爲0,做很多無用卷積。所以這種方式計算量大而且很多是無效計算。
  • Image:結果的好壞與輸入的特徵的有關,有效地將點雲轉爲圖像也是一個可以研究的點。
  • PointNet:可用的工具少,目前主流的也就是PointNet系列和Graph convolution系列

 

 

4.1.2 思考與探索

2D CNN的使用方法:

  • 類似mv那種,使用對3D的投影得到其2維的圖像,再使用2D CNN,這樣做無疑是會出現信息損失的,另外呢,先把3D點雲分割成若干個體素小塊,再把點個數當做二維像素值,再使用2D CNN結構,這又只使用了密度信息,沒有局部幾何信息。都是不太好的。
  • 第二種呢就是先對點的局部提取點特徵(這都要歸功於pointnet),然後在利用卷積進行處理;這裏呢需要說的是voxelnet是第一篇提取局部特徵後去做檢測的,但是使用了3D voxel檢測,後續再把深度信息和通道結合成一個維度,採用二維的RPN。這裏最大的雞肋就是這個3D CNN,後續有一篇sensors上的文章只改了這個3D CNN變成了 稀疏3D卷積的形式;這一篇PointPillars則是在這兩篇文章的基礎上做的,直接把3DCNN取消了,採用二維CNN接手後面的操作,雖然創新點不算特別亮眼,不過也着實巧妙。

就點雲輸入的研究熱點

  • anchor_free的方法,也就是研究如何經過一定的處理再提出proposals,就像是F-pointnet首先經過視錐縮小範圍,PointRCNN首先進行一下前景分割,不過實際上每個點也是anchor;
  • 把二維成熟的方法向着3維上靠。F-pointnet和voxelnet和pointpillars。PointRCNN的名字就來自二維。

一些重要的trick

  • 旋轉對其和座標變換。在pointRCNN和F-pointnet都使用了的。
  • 首先進行pointent編碼,我覺得這個纔是正確的點雲使用方式,F-pointnet的後續開展肯定不多,而pointliarrs和voxelNet肯定會有更好的發展。
  • 局部結構特徵的使用,這裏講的是中心座標和中心偏移量的使用。

可能有發展的Idea

  • 各向異性卷積核的使用。

4.2彙報總結【19年9月9日——19年9月21日】

4.2.1 論文總結

4.2.1.1 GSPN

  • 怎麼生成ins的預測框

(1)預測一個對目標ins的中心
(2)對每一個預測的中心採取一個多尺度特徵提取的方式進行特徵提取。
(33)對提取到的特徵和近似的分佈進行採樣聯合生成一個bbox。

  • 運用在檢測中會有什麼樣的問題:

(1) 在訓練時,展現的內容是KL-loss不收斂。
(2)研究了生成預測中心的loss,在實例分割中,隨機採樣的128個點都是有所屬實例,因此存在着對應的GT,但是在Kitti數據集中,並不是所有點都有實例。因此網絡需要密集採樣,但是目前採樣點數過多就會導致無法訓練。

  • 運用到目標檢測上的嘗試

(1)想要解決的問題:

  • 根據提取到的特徵結合分佈信息(已經被嵌入了gt的分佈信息)生成這樣大小的size,就不用了根據不同大小設置不同size的anchor了。
  • 可以同時做到多分類檢測

(2)網絡整體結構圖可以如下所示:

(3)對代碼中5中LOSS的理解,看個人理解的博客。

4.2.1.2 Attention pointnet

上面一篇GSPN的文章重點是在於對實例點的生成ins,但是運用到det的任務時就不能夠採樣到很多的gt的點,導致需要密集採樣纔可完成,這一篇文章是採用了GRU的attention,能夠從[Math Processing Error]12\times 1212×12的區間中劃分感興趣的區域,這就可以解決上訴的採樣的問題,作者把這個叫做attention的機制,是屬於大場景下的找到目標的方式,結合 博客理解。

  • 可以給我帶來什麼?

(1)上面的idea正是由於密集採樣而導致了生成的問題,但是如果可以先粗略的attention這個所檢測的物體上,那麼我們就可以在這個小區域上進行採樣生成
(2)難點:該文章的代碼結合了ROS的rospy,需要進行一定的修改(小事情),不知道實際的效果如何。需要測試。

4.2.1.3 MEGV

這一篇 博客

  • 文章主要做什麼

(1)文章主要在nusense上做多目標檢測,先分size再細每一個類別,目前還沒有開源。
(2)算是第一篇做anchor-free的文章。

  • 可以給我帶來什麼

(1)多分類的參考
(2)文章是屬於標準的pointpillars那一套做法,劃分網格,然後通過voxel提取特徵,再轉到二維進行RPN和多目標檢測。

4.2.1.4 Fast Point R-CNN

也是很新的文章,同樣是賈佳亞組的工作(上一篇的PointRCNN),寫在博客這裏

  • 主要優點:

(1)在轉到二維的時候採用的多尺度聯合的方式。
(2)粗迴歸後又進行了原始點雲的細迴歸。因爲voxel會出現roi pooling的精度定位到網格上,因此網格個大小直接導致了迴歸的精度,作者就此採用了原始點雲的輸入進行refine。

4.2.2 思路整理

  • 3D檢測就是要就解決兩個問題:定位和分類。

(1)第一個問題,分類,目前做了多目標檢測的文章只有19年8月才放上arxiv上的class_blanced的MEGV,採用nuscence檢測數據集,具體實現是採用了一個voxelnet的anchor方式,但是最後通過了對二維上的每一個voxel粗分類大致確定其size,然後再細分類得到對應的類別;此外其他我見過只採用lidar數據輸入的文章只有單次訓練一個類別,能不能通過voxelnet特徵提取後,在最後的每一個二維的anchor上根據對應的特徵生成一個box而不是迴歸,做到分類和迴歸同時做。
(2)第二個問題,迴歸,怎麼定位一個目標在平面的區域呢?目前的3D的方法有一個系列(voxelnet)是通過滿屏的anchor來把三維的降到二維,再對沒也給二維中每一個voxel迴歸一個7維的定位信息(實際上就不是定位問題,而是一個回問題,這裏並沒有失去一個遍歷的方式,全場景的anchor只有背景和不是背景,是前景的就在每一個anchor的位置迴歸7個維度的定位信息),這個系列的文章包括了(voxelnet,Second,pointpillars,包括pointrcnn和fastpointRCNN)後面兩種方法實際上是採用了voxel特徵提取的方式,但是自己的anchor是基於每一箇中心點來提的,而faster_rcnn則更加回到voxelnet的方式,採用的結構更加類似,文章還採用所謂的attention(非常簡單);但是19年CVPR上有一篇文章:attention-pointnet,這一篇文章,採用GRU的方式直接對輸入的點雲塊採取注意力的形式得到去想要得到的塊,再通過座標變換得到相應的旋轉回歸矩陣。還有一些不入流的方法,比如我覺得F-pointnet就算是一個,採用一種先減少候選區域的方法去生成proposals的方法,PointRCNN也有一點這樣的想法,先通過場景語義分割得到對應的一些粗略的點。目前按照論文的數量來說,voxelnet系列是絕對佔有的一種,其首先提取每一個anchor的三維特徵,再通過網絡降爲成二維的anchor去預測訓練的前景的概率和對應的迴歸的7個量,但是不得不說的一點是這樣會存在信息的丟失,如何使得信息較少的丟失是一個問題?這裏在fast_point_rcnn的多尺度結合應該會存在這個效果;但是依舊很大的問題,定位太依賴anchor,而不是區域中比較突出的特徵去直接attention上,分類由於anchor在三維空間上的變化太大,這個系列都是通過固定size的形式,而不是採用生成的方式。

4.2.3 其他工作

  • pointpillars 的kittiviewer:
    在web上的界面已經聯通了,具體操作:

(1)在服務器端運行gui界面的代碼:cd ./kittiviewer/frontend && python -m http.server
(2)在服務器運行後端加載處理程序:python main.py main(目前還有問題)
(3)在本地上連接並監聽對應的端口:ssh -L 16666:127.0.0.1:8000 [email protected],然後在本地對應的瀏覽器上輸入網址:http://127.0.0.1:16666/

 

參考資料

  • LiborNovák. Vehicle Detection andPose Estimation for Autonomous Driving. Master’s thesis, Czech TechnicalUniversity in Prague.
  • YinZhou, Oncel Tuzel. VoxelNet: End-to-End Learning for Point Cloud Based 3DObject Detection. In CVPR, 2018.
  • https://mp.weixin.qq.com/s/XdH54ImSfgadCoISmVyyVg
  • Ku,Jason and Mozifian, Melissa and Lee, Jungwook and Harakeh, Ali and Waslander,Steven. Joint 3D Proposal Generation and Object Detection from ViewAggregation. In IROS, 2018.
  • http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
  • Wadim Kehl, Fabian Manhardt, Federico Tombari,Slobodan Ilic and Nassir Navab: SSD-6D: Making RGB-Based 3D Detection and 6DPose Estimation Great Again. ICCV 2017.
  • ArsalanMousavian, Dragomir Anguelov, John Flynn, Jana Košecká. 3d bounding box estimation using deep learning andgeometry.CVPR 2017.
  • MartinSundermeyer、En Yen Puang、Zoltan-Csaba Marton、Maximilian Durner、Rudolph Triebel. Implicit 3DOrientation Learning for 6D Object Detection from RGB Images. In ECCV, 2018.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章