綜述:3D目標檢測於RGB-D(Object detection in RGB-D images)

前言

CNN(convolutional neural network)在目標檢測中大放異彩,R-CNN系列,YOLO,SSD各類優秀的方法層出不窮。在2D圖像的目標檢測上,不少學術界提出的框架已經投入商用。但是,具體落實到自動駕駛、機器人這類應用場景上時,2D場景下的目標檢測對於3D真實世界的場景描述依然不夠。

目標檢測問題實際上包含了兩個任務:定位和分類。3D目標檢測在定位這一任務上的目標是返回3D bounding boxes,而其需要的信息除了2D的RGB圖像以外,還包含了與之對應的深度信息Depth Map:

RGB-D = 普通的RGB三通道彩色圖像 + Depth Map

在3D計算機圖形中,Depth Map(深度圖)是包含與視點的場景對象的表面的距離有關的信息的圖像或圖像通道。其中,Depth Map 類似於灰度圖像,只是它的每個像素值是感測器距離物體的實際距離。通常RGB圖像和Depth圖像是配準的,因而像素點之間具有一對一的對應關係。

本文以時間為主軸,帶你速覽自2014年以來的,在RGB-D圖像上進行目標檢測的典型論文。

論文

2014年:Learning Rich Features from RGB-D Images for Object Detection and Segmentation(ECCV14)

本文是rbg大神在berkeley時的作品。」基於CNN已經在圖像分類、對象檢測、語義分割、細粒度分類上表現出了相當的優勢,不少工作已經將CNN引入在RGB-D圖像上的視覺任務上。這些工作中一部分直接採用4-channel的圖像來進行語義分割任務(not object detetction),一部分只是在非常理想的環境下對小物體進行目標檢測。「

作者的方法是在2D目標檢測框架R-CNN的基礎上,增加對Depth Map進行利用的module,總體結構如下:

(1)基於RGB圖像和Depth Map,檢測圖像中的輪廓,並生成2.5D的proposals(從overview上可以看到,所謂的2.5D實則包括目標每個像素的視差、高度、傾斜角)

(2)利用CNN進行特徵提取,這裡的網路包括兩個:Depth CNN學習深度圖上的特徵,RGB CNN學習2D圖像上的特徵,最後利用SVM進行分類。

在對Depth Map的利用上,論文所述方法並沒有直接利用CNN對其進行學習,而是encode the depth image with three channels at each pixel: horizontal disparity(水平視差), height above ground(高度), and the angle the pixel』s local surface normal makes with the inferred gravity direction(相對於重力的傾斜角).

2015年:3D Object Proposals for Accurate Object Class Detection(NIPS15)

來自Tsing Hua陳曉智大神的作品(大神在同時也是CVPR17: Multi-View 3D Object Detection Network for Autonomous Driving的一作,給跪了)。

作者首先指出,目前最先進的RCNN方法在自動駕駛數據集KITTI上表現不好,原因之一在於KITTI上的測試圖像中,包含許多小型物體、遮擋、陰影,使得實際包含了object的proposals被認為是不包含的。此外,KITTI對區域的精細程度要求很高(overlap),而目前的大多數區域推薦都基於強度和紋理的grouping super pixels,它們無法獲得高質量的proposals。

文章面向自動駕駛場景,提出了一種新的object proposal方法。對於每一個3D bounding box(記為y),將其用一個元組來表示(x, y, z, θ, c, t),(x, y, z) 表示 3D box的中心,θ 表示其方位角,c代表object是哪一類,t代表相應的3d box模板集合。

x代表點雲,y代表proposal,作者認為y應該有以下特性:

  • 包含點雲的高密度區域
  • 不能與free space重疊
  • 點雲不應該垂直延伸在3d box之外
  • box附近的點雲高度應該比之低

基於這些特性,作者列出了能量方程,目標為最小化E(x,y),採用ICML2004上一篇文章中所述的structured SVM進行訓練。

文章中所述方法的效果、代碼、數據:3D Object Proposals for Accurate Object Class Detection

2016年:Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images(CVPR16)

文章來自普林斯頓大學,提出的方法為Faster R-CNN的3D版本,側重於indoor scene下的object detection。

目前關於3D目標檢測任務的方法,有採用2D方法來結合深度圖的,也有在3D空間內進行檢測的。這不禁讓作者發問:which representation is better for 3D amodal object detection, 2D or 3D?接著他指出,目前2D方法表現更優異的原因,可能是因為其CNN模型更為powerful(well-designed&pre-trained with ImageNet),而不是由於其2D表達。

作者的方法是設計名為Deep Sliding Shapes的3D CNN,輸入3D的立體場景,輸出3D bounding boxes,由此提出了Multi-scale 3D RPN(Region Proposal Network):

類似於Faster R-CNN中的RPN網路,對於每一個滑動窗口,作者定義N=19種anchor boxes:

而後,為了檢測大小不一的目標,作者增加了多尺度的檢測手段。具體來說,在不同的卷積層上進行滑窗。這裡的滑窗是3D sliding window,因為整個網路結構就是接收3Dinput的。為了精修區域,作者改進了bbox regression,提出3D box regression:一個3D box可以由中心坐標[cx, cy, cz],長寬高[s1, s2, s3]來表示,最後要得到的是6個偏移量:

而後採用與2D box regression同樣的smooth L1 loss即可。

補充:如何從Depth Map得到3D Input?

Encoding 3D Representation:不同於Depth RCNN的disparity+height+angle 表達,作者在這裡採用了TSDF方法,可以看如下的引用:

KinectFusion在世界坐標系中定義了一個立方體,並把該立方體按照一定的解析度切割成小立方體(voxel)。以圖8上為例所示,圖中定義了一個3x3x3米的立方體,並把立方體分為不同解析度的小立方體網格。也就是說,這個大立方體限制了經過掃描重建的模型的體積。然後,KinectFusion使用了一種稱為「截斷有符號距離函數」(truncated signed distance function,簡稱TSDF)的方法來更新每個小網格中的一個數值,該數值代表了該網格到模型表面的最近距離,也稱為TSDF值(圖8下)。對於每個網格,在每一幀都會更新並記錄TSDF的值,然後再通過TSDF值還原出重建模型。例如,通過圖8下兩幅圖中的網格的TSDF數值分布,我們可以很快還原出模型表面的形狀和位置。這種方法通常被稱為基於體數據的方法(Volumetric-based method)。該方法的核心思想是,通過不斷更新並「融合」(fusion)TSDF這種類型的測量值,我們能夠 越來越接近所需要的真實值。

2017:Learning Cross-Modal Deep Representations for Robust Pedestrian Detection(CVPR17)

這篇文章雖然是針對於專門的pedestrians detection任務,但是其做法是很具有啟發性的,所以也貼在這裡。

作者指出,「行人檢測任務在深度學習的幫助下已經取得重大突破,同時新型感測器(如thermal and depth cameras)也為解決不利照明和遮擋提供了新的機會。但是,現有監控系統絕大多數仍然採用傳統的RGB感測器,因此在illumination variation, shadows, and low

external light仍然十分具有挑戰。」

在針對於照明條件不利環境下的行人檢測任務,文章描述了一種依賴於cross-modality learning framework的學習框架,由兩個網路組成:

(1)Region Reconstruction Network (RRN)

RRN用於學習在RGB圖像和thermal image間的映射,而後學習得到的模型就可以用於依據RGB生成thermal image。RRN接收RGB+行人proposals,在ROI Pooling後加了重建網路(全卷積)。這裡的重建網路不重建整幅圖像的thermal image,而是只對行人區域進行重建。

(2)Multi-Scale Detection Network (MSDN)

MSDN利用RRN學習的cross-modal representations來進行檢測。其包含兩個子網(Sub-Net A和Sub-Net B),其中Sub-Net B中的參數從RRN中遷移而來,最後的fc分別做multi-task:bbox regression和softmax。

2017:Amodal Detection of 3D Objects: Inferring 3D Bounding Boxes from 2D Ones in RGB-Depth Images(CVPR17)

來自坦普爾大學的文章。作者在這裡與2016的Deep Sliding Shapes思路不同,重新回到2.5D方法來進行3D目標檢測。所謂2.5D方法,實則就是從RGB-D上提取出合適的表達,而後building models to convert 2D results to 3D space。「雖然利用三維幾何特徵檢測前景光明,但在實踐中,重建的三維形狀往往不完整,由於遮擋、反射等原因而含有各種雜訊。」

整個系統的overview如下,其基於Fast R-CNN實現:

對於每一個2D的proposal(這裡關於2D proposals的方法就是用的Depth R-CNN中的方法),由分類結果和depth information來初始化一個3D bounding box(圖中黃色的虛線框),而後也是用一個3d box regression來進行區域精修。重點關注3D box proposal and regression:

圖中是3D box proposal的一個實例。每一個3d box由向量[xcam, ycam, zcam, l, w, h, θ].來表達,[xcam, ycam, zcam]表中心位置,[l, w, h]表尺寸,θ∈ [?π/2, π/2]表示方位角,即圖中黃色的箭頭與z軸形成的夾角。在初始化的時候,關於尺寸是由某一類物體的類別來進行確定的。最後輸出7個調整量[δx, δy, δz, δl, δw, δh, δθ],利用Smooth L1 Loss作為損失函數。

結語

3D目標檢測對於自動駕駛與機器人等領域意義重大。本文以時間為序,重點關注和分析了基於RGB-D上的3D Object Detection方法。從Depth R-CNN到3D Faster-RCNN,似乎始終基於2D的目標檢測框架在跟循改進。期待在未來,將會有更為優美的方法出現。

感謝您的閱讀,文中的遺漏與錯誤,懇請批評指正。

參考文獻

[1] Gupta S, Girshick R, Arbeláez P, et al. Learning Rich Features from RGB-D Images for Object Detection and Segmentation[C]// European Conference on Computer Vision. Springer, Cham, 2014:345-360.

[2] Chen X, Kundu K, Zhu Y, et al. 3D object proposals for accurate object class detection[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015:424-432.

[3] Song S, Xiao J. Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images[J]. 2015, 139(2):808-816.

[4] Deng Z, Latecki L J. Amodal Detection of 3D Objects: Inferring 3D Bounding Boxes from 2D Ones in RGB-Depth Images[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2017:398-406.

[5] Xu D, Ouyang W, Ricci E, et al. Learning Cross-Modal Deep Representations for Robust Pedestrian Detection[J]. 2017.


推薦閱讀:

TAG:計算機視覺 | 深度學習DeepLearning | 目標檢測 |