從單幅影像到雙目立體視覺的3D目標檢測演算法

CVer發表於2019-08-01

一.導言

經典的計算機視覺問題是通過數學模型或者統計學習識別影像中的物體、場景,繼而實現視訊時序序列上的運動識別、物體軌跡追蹤、行為識別等等。然而,由於影像是三維空間在光學系統的投影,僅僅實現影像層次的識別是不夠的,這在無人駕駛系統、3604f85d04>擴增實境技術等領域表現的尤為突出,計算機視覺的更高層次必然是準確的獲得物體在三維空間中的形狀、位置、姿態,通過三維重建技術實現物體在三維空間的檢測、識別、追蹤以及互動。近年來,藉助於二維影像層面的目標檢測和識別的效能提升,針對如何恢復三維空間中物體的形態和空間位置,研究者們提出了很多有效的方法和策略。

相比影像層面的二維物體檢測問題,如何通過影像理解物體在三維空間中的位置通常更加複雜。較為準確的恢復物體的三維資訊包含恢復物體表面每個點的三維座標及三維點之間的關係,計算機圖形學中物體三維特徵可以表示為重建物體表面的三角化網格和紋理對映,不要求特別精確地場景下,也可以僅僅用三維空間中的立方體表示物體位置。由射影幾何學,僅僅依賴一副影像是無法準確恢復物體的三維位置,即使能得到相對位置資訊,也無法獲得真實尺寸。因此,正確檢測目標的3D位置最少需要多個相機或者運動相機組成的立體視覺系統,或者由深度相機、雷達等感測器得到的3D點雲資料。

從單幅影像到雙目立體視覺的3D目標檢測演算法圖1:兩種不同的3D檢測。

左圖中,通過檢測得到物體三角網格模型。右圖中,由影像特徵檢測3D空間立方體來表示物體在空間中的位置。

對於特定型別目標,基於機器學習的方法使得通過單目相機進行物體3D檢測成為可能。原因是特定型別目標往往具有很強的先驗資訊,因此依靠給真實物體做標註,聯合學習物體類別和物體姿態可以大概估計出物體3D尺寸。不過,為了更好的估計物體的3D位置,更好的方法是結合學習的方法充分融合射影幾何知識,來計算物體在真實世界中的尺度和位置。

在這篇文章中,將和大家一起回顧一下近年來幾個效果較好的3D目標檢測演算法。針對無人駕駛場景下,如何採用單目相機和雙目立體相機實現行人和車輛的3D檢測的幾個演算法進行一些對比和總結。並幫助更好地理解視覺3D目標檢測演算法的框架和當前主流演算法的演算法框架和基本原理,如果對本文的觀點持有不同的意見,歡迎向我們的公眾號發訊息一起討論。

二.3D目標檢測演算法的分類

通過影像、雷達、深度相機等訊號可以檢測和識別3D場景資訊,從而幫助計算機確定自身和周圍物體的位置關係,做出正確的運動互動和路徑規劃。從相機得到影像資訊,需要正確計算影像點和三維點的對應關係,而雷達和深度相機可以直接得到點雲或者點的空間位置。按照感測器和輸入資料的不同,可以把3D目標檢測分為如下幾類:

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖2:根據輸入訊號的不同,3D目標檢測的分類

從點雲獲取目標資訊是比較直觀和準確的3D目標檢測方法,由於點的深度資料可以直接測量,3D檢測問題本質上是3D點的劃分問題,Chen[4]等人通過擴充套件2D檢測演算法提出了一些利用點雲特徵估計物體位置的方法。相比於使用雷達系統或者深度相機,使用攝像機系統成本更低,但是需要進行影像點的反投影,計算點在空間中的位置。除此之外,相比於點雲資料,影像恢復深度可以適用於室外大尺度場景,這是普通深度相機所不能達到的。本文將討論使用影像資料估計特定型別物體在空間中的3D位置。

使用影像資料檢測物體的3D空間位置,可以通過首先估算3D點雲資料,藉助點雲檢測3D目標的流程來檢測3D目標。通過影像資料估算3D點雲有多種方法,比如Wang [5]藉助於CNN方法來模擬3D點雲。也可以通過每個點的深度估計來獲取影像的近似3D點雲[6, 7]。通過影像資料估計3D點雲,在使用已有的3D點雲方法來檢測3D目標,效率較低,容易出現誤差累積。近年來,採用射影幾何和機器學習演算法結合的方法,較好的提升基於影像的3D檢測演算法。

由於特定型別物體具有較強的尺寸先驗,比如車輛的寬、高、長,往往由車輛型別決定。而觀察車輛的角度對於車輛在影像中的外觀特徵具有很大的關聯性,因此,通過收集資料集並進行前期的3D標定,對於學習影像特徵到車輛3D屬性具有重要的意義。但與單目單幅影像的特定型別3D目標檢測,可以採用以深度學習為主的3D預測演算法,綜合射影幾何的原理,得到比較可信的3D檢測結果。對於雙目立體視覺,進行合理的雙目匹配,通過相機之間的相對位置計算,可以得到比單目視覺更強的空間約束關係,因此結合已有的物體先驗知識,可能得到比單目相機更準確的檢測結果。

對於基於視覺的3D目標檢測,如何融合機器學習演算法和射影幾何約束,對於提升演算法效能具有重要的意義。下文從幾種單目影像到雙目相機進行3D目標檢測演算法的詳細介紹,來說明和討論如何實現基於影像的3D目標檢測

三.單檢視像3D目標檢測演算法介紹

3.1結合迴歸學習和幾何約束的3D目標檢測演算法

A. Mousavian在CVPR2017提出了一種結合深度神經網路迴歸學習和幾何約束的3D目標(主要針對車輛)檢測和3維位置估計的演算法[1]。

在論文中,對車輛的3D姿態和位置進行建模的引數包括:車輛的姿態包括車輛在場景中的位置和車輛相對於攝像機的角度,包括兩方面引數:3D包絡的中心位置相對相機的偏移T = [tx,ty ,tz]T,車輛的旋轉矩陣R (由三個旋轉角度θ, ϕ, α決定, θ是方位角azimuth, ϕ是仰角elevation, α是翻轉角roll,對於自動駕駛場景ϕ=α=0)。除此之外,我們必須估算車輛的尺寸大小,包括三個方向的尺寸D = [dx,dy ,dz]。

假設以車輛中心為原點,世界座標系中某一個點x0=[X, Y, Z, 1]T在影像上的投影點為x=[x, y, 1]T。則他們滿足成像方程:

從單幅影像到雙目立體視覺的3D目標檢測演算法對於這9個引數的計算分為2個步驟:

第一步,在得到2D的矩形之後,利用迴歸學習的方法估計方位角θ和物體尺寸D = [dx,dy ,dz]。這裡忽略掉仰角和翻轉角(ϕ=α=0)。

角度θ的迴歸:

直接估算全域性方位角θ是很困難的,這裡轉而估算物體轉角相對於相機的區域性角度θl,類似於Faster-RCNN對目標的位置設定anchor位置,這裡區域性角度θl的估計也採用離散劃分的方法,首先分為n個不同的區間,預測的目標轉化為第i個角度區間的概率ci和角度偏差的餘弦和正弦值cos(∆θi)和sin(∆θi)。

從單幅影像到雙目立體視覺的3D目標檢測演算法

(a)

從單幅影像到雙目立體視覺的3D目標檢測演算法

(b)

圖3. (a):車輛方位角θ的俯檢視。方位角是車輛繞y軸的旋轉角(車輛高度dy),對於攝像機來說車輛在影像成像看到的是區域性的轉角θl,若θray為車輛相對於與攝像機的旋轉角度,則θ=θl+θray。我們迴歸的角度是區域性轉角θl。圖(b): 用於角度迴歸的網路設計。

尺寸d的迴歸:

在KITTI資料集中,車輛被粗略的分為4類{cars, vans(小貨車), trucks(卡車), buses}。

每種型別的車輛形狀相似,尺寸相近,變化很小。首先統計每類車輛的平均尺寸,這裡估計得尺寸為與平均尺寸的偏差(residual)。

損失函式為:

從單幅影像到雙目立體視覺的3D目標檢測演算法這裡D*為基準尺寸。是我們要估計的值。

第二步,在得到方位角和物體尺寸之後,利用成像公式,計算中心點向量T = [tx,ty ,tz]T。

在R和D=[dx,dy ,dz]已知的情況下,可以利用下面投影公式,計算T的值。

從單幅影像到雙目立體視覺的3D目標檢測演算法

3.2 基於引導和表面(GS)的3D車輛檢測演算法

本方法也是先計算2D檢測結果,通過一些先驗知識結合學習演算法計算3D檢測邊界框的尺寸和方位[2]。本文的創新點是充分利用3D表面在2D影像的投影特徵,進行區分判別。

本方法以單張影像為輸入,由粗到細逐步恢復目標(車輛)的3D結構。如下圖所示:步驟(1): 藉助於一個基於CNN的檢測演算法得到2D檢測框和觀測角度。步驟(2): 通過場景先驗,計算粗糙3D邊界框(3D guidance)。步驟(3): 3D框被重投影到影像平面,計算表面特徵。步驟(4):通過子網路,由重投影特徵進行分類學習,得到精化的3D檢測框。

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖4:GS-3D基本流程


第一步:擴充套件Faster-RCNN判別迴歸網路部分,估計2D檢測結果的型別、2D邊框、方位角度。如下圖左圖。注意,這裡估計的角度是觀測角度α。如下圖右所示:
從單幅影像到雙目立體視覺的3D目標檢測演算法

(a) 

從單幅影像到雙目立體視覺的3D目標檢測演算法

(b)

圖5:(a)通過多分支的RCNN框架預測2D檢測框的物件型別、2D邊框、以及目標的角度。(b)觀測角度α和全域性角度β的圖示。這裡y軸向下,所以角度正方向是順時針方向。

第二步:計算粗化的3D框。給定相機內引數K, 2D邊界框,以及方位角α,通過射影幾何方法計算3D框。這裡,用符號表示檢測車輛的3D邊框為Bg=(wg,hg ,lg,xg,yg ,zg,θg),其中((wg,hg ,lg)是物體的長、寬、高。(xg,yg ,zg)是物體的中心3D位置。θg是在空間中的朝向角度。這裡粗略的估計車輛的長、寬、高採用了車輛識別型別的先驗尺寸,即預先統計真實情況下,每種車輛的平均長、寬、高,按照前一步預測的型別直接設定物體尺寸為平均尺寸。根據上圖中的觀察,可以得到:

從單幅影像到雙目立體視覺的3D目標檢測演算法

這裡x和z是中心位置的x和z座標值。因此,現在的問題是如何估計中心位置Cb的值。這裡假設3D車輛頂面的中心投影在2D影像上為2D檢測框的上邊中點;3D車輛底面的中心投影到2D影像上為2D檢測框的下邊中點。可以根據這個假設,粗略的估計3D車輛的中心位置。若影像中2D框為從單幅影像到雙目立體視覺的3D目標檢測演算法,那麼上邊中心的奇次座標為從單幅影像到雙目立體視覺的3D目標檢測演算法,下邊中心的奇次座標為從單幅影像到雙目立體視覺的3D目標檢測演算法。他們的正則化3D座標(深度為1的3D投影)為:

從單幅影像到雙目立體視覺的3D目標檢測演算法

由於車輛的高度為hg,因此可以估計深度d為d = hg/(ỹb- ỹt),所以車輛中心座標可以估算為:

從單幅影像到雙目立體視覺的3D目標檢測演算法

第三步:重投影表面特徵,並精化3D檢測框。上述第二步得到的3D框座標是粗略的(採用平均尺寸作為已知尺寸總是有偏差的),為了計算更準確的3D框座標,需要根據影像本身特徵進行矯正。這裡依然使用深度學習的方法。

下圖表示如何計算可見的車輛表面:除了上表面(車底一般是看不到的),根據觀察角度α的取值範圍,可以確定觀察到的是車的左側或者右側(|α|>π/2或者|α|<π/2); 以及車頭或者車尾是否被觀測到(α>0或者α<0)。根據具體觀測的三個表面,可以對他們進行單應變換,在卷積特徵上提取變換這三個表面,按通道拼接到一起。

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖6:三個表面特徵的對映和提取

這裡對3D框的預測採用分類形式,分類目標為離散3D框殘差尺寸。預測網路如下圖:

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖7: 實現殘差尺寸預測的網路結構

網路的輸入為變換的車輛表面和2D框影像上下文特徵;輸出為真實3D框座標與預估座標的差值,公式如下:

從單幅影像到雙目立體視覺的3D目標檢測演算法

四.雙目立體視覺3D目標檢測演算法介紹

4.1 基於3DOP的3D目標檢測

本文采用類似於Fast R-CNN的二步檢測演算法。對於具有2副成對影像的雙目立體視覺影像[8]。首先,採用Yamaguchi在ECCV2014年發表的方法[6]計算每個點的深度影像,由此生成點雲資料,後續的處理是基於點雲做為處理和輸入資料。然後,採用Struct-SVM優化的方法選擇3D檢測的候選3D框y。最後,通過R-CNN方式,對每個候選框進行分類評估和位置迴歸。

第一步,產生3D檢測的候選框。

這裡,每個候選框用6維向量表示y=[x, y, z, θ, c, t]。其中[x, y, z]表示3D候選框的中心點,θ表示物體的水平方位角,c∈C表示目標的類別,這裡類別指{車輛-car、自行車-Cyclist、行人-Pedestrian}。t表示在型別c中尺寸模板的下標,這裡每種型別的尺寸模板是對訓練資料中基準3D邊框進行聚類得到的聚類中心尺寸大小。如果輸入的點雲資料表示為x,那麼根據每個候選框y和輸入x可以得到一些特徵。本文設計了4種特徵從單幅影像到雙目立體視覺的3D目標檢測演算法,然後令權重為w=從單幅影像到雙目立體視覺的3D目標檢測演算法。可以得到下面能量函式:

從單幅影像到雙目立體視覺的3D目標檢測演算法

這裡特徵的構成主要是:(1)點雲密度ϕpcd,平均立方體內的點雲數目。(2)空間空置率ϕfs,,定義為點雲與相機之間的空間大小。(3)離地面的平均高度ϕht, 定義為與高度先驗的平均相似率。(4)高度對照率ϕht-contr,3D邊界框周圍點雲的分佈率。

為了優化這個能量函式,訓練引數向量w, 本文采用結構化SVM優化模型,給定訓練資料可以使用cutting-plane演算法求上述最小化問題。

推導過程中,首先根據點雲資訊估計地面位置。候選3D框的計算採用窮舉的方法得到,首先找到能量最低的3D框,然後找下一個,搜尋的過程採用NMS(非最大抑止)的策略。以此找到m個候選框:

從單幅影像到雙目立體視覺的3D目標檢測演算法

第二步,採用Fast-RCNN類似的框架,對候選3D框判別和迴歸,選擇正確的3D邊界框。

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖8:基於單個RGB或者RGB-HHA影像的3D目標檢測網路

如上圖,本文采用Fast-RCNN類似的框架,對候選3D框進行判別和矯正。不同的是,在5層卷積層之後,新增了一個影像上下文區域資訊,對這個特徵進行卷積和2層全連線運算後,拼接到原來Pooling後的特徵中,輸出為分類類別c, 3D邊框的矯正估計,以及角度迴歸。

也可以考慮畫素的深度資料(depth information)[2],為了處理深度資料,可以直接在輸入影像中增加深度資料影像,也可以採用下面圖中的雙分支架構的判別和迴歸網路。但是這種雙分支訓練時需要更大的視訊記憶體,對於視訊記憶體的要求是原來的2倍。

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖9. 雙分支的3D物件檢測網路結構

4.2基於立體視R-CNN的3D目標檢測演算法

本方法是擴充套件 Faster-RCNN網路框架到雙目立體視覺進行3D目標檢測的方法[10]。方法的關鍵步驟是對左右影像的自動對齊學習,以及通過稠密匹配優化最終的檢測結果。

第一步:左右檢視的Stereo-RPN設計

從單幅影像到雙目立體視覺的3D目標檢測演算法

圖10:建議的立體視Stereo-RCNN網路架構

由左右檢視影像經過2個相同的Faster-RCNN中的RPN接面構計算左右檢視中匹配的推送(proposals)矩形框stereo-RPN。輸出為六元組[∆u, ∆w, ∆u’, ∆w’, ∆v, ∆h]。其中∆u, ∆w, ∆u’, ∆w’為左右檢視中目標2D框的橫座標與錨點(anchor box)的偏差。∆v, ∆h為縱座標偏差和高度偏差。注意這裡採用校正的雙目相機,因此,左右檢視的縱座標和高度是相同的。

RPN主幹網路採用Resnet-101或者FPN。與Faster-RCNN中的RPN相比,stereo-RPN同時計算了可能的2D框,並且對左右檢視的2D框進行了配對(association)。

第二步:估計3D物體的尺寸(dimension)、角度(viewpoint)和關鍵點

採用學習的方法,可以估計物體的3D尺寸(dimension),在世界座標中的轉角(θ)。類似於六元組[∆u, ∆w, ∆u’, ∆w’, ∆v, ∆h],採用左右檢視的特徵拼接,經過2個全連線卷積得到3個全歸目標:物體的類別, 立體框六元組,物體的尺寸,相對視角α。這裡主要說明相對視角α。參考下圖,為了估計物體3D位置,要確定全域性轉角θ,但是對於物體在相機中的投影來說,相同的相對視角α,具有相同的投影。因此,從投影迴歸全域性轉角θ並不直觀。這裡的方法採用[2]中類似的方法首先回歸相對視角α,再計算全域性轉角θ。

從單幅影像到雙目立體視覺的3D目標檢測演算法圖11

圖11:物體的全域性方向角是θ,從相機觀察的角度是β,物體相對於相機的視角是α=θ+β。由於相同的相機視角α得到近似相同的投影,因此這裡迴歸的角度是物體轉角相對於相機的視角α。和其他工作類似,迴歸採用α的三角函式[sin(α), cos(α)]。

對於物體的尺寸估計也借鑑了[2]中的方法,對於每個類物體估計與平均尺寸的尺寸偏差。

估計關鍵點,作者採用左檢視特徵。這裡的關鍵點是指物體地面的4個三維角點。這4個角點投影到影像中,只有一個角點實在物體影像中間的,看作為投影關鍵點(perspective key point)。另外2個對3D重建有用的關鍵點是投影到影像中物體2D邊界的,這兩個點成為邊界關鍵點(boundary key point),他們之間的畫素看作在物體中。左檢視特徵經過6個卷積層和2個反摺積層得到6x28的特徵,其中4個通道反映了這4個關鍵點投影到為投影關鍵點的概率,2個通道反映了投影到左、右邊界的概率。

第三步: 粗略3D檢測估計

在得到角度、物體尺寸之後,對於3D目標的位置描述主要包括中心點空間座標和旋轉角{x, y, z, θ}。

從單幅影像到雙目立體視覺的3D目標檢測演算法圖12

圖12:3D矩形框在2D影像平面投影的示意圖

根據上圖空間關鍵點的投影示意圖。可以得到如下公式組:

從單幅影像到雙目立體視覺的3D目標檢測演算法

上式共有7個等式,其中b是校正的雙目相機之間的基線長度。{w, h, l}是迴歸估計得目標空間尺寸。根據高斯-牛頓演算法可以求解上式,得到(x, y, z)的值。

第四步:優化3D檢測結果

為了得到更精確的3D位置,進一步考慮目標矩形框內的畫素值,使用稠密畫素匹配,可以得到左右檢視畫素偏差的和:

從單幅影像到雙目立體視覺的3D目標檢測演算法

其中z是目標中心的深度,∆zi是每個畫素與中心位置的深度偏差。對於上式中畫素的範圍取作車輛下半部分關鍵點之間的區域(Patch),優化的目標是最小化這個畫素差和,計算最優的z值。可以採用集束優化(Bundle Adjustment)的思想進行優化,得到優化的深度值z。

五.視覺3D目標檢測小結

相比2D目標檢測問題,進行物體在3D空間的位置估計對於實際應用場景更有意義。通過估計實際位置,自主駕駛的車輛和機器人可以準確的預判和規劃自己的行為和路徑,避免碰撞和違規。同時,3D目標檢測問題也面臨更多的挑戰,主要的區別在於不僅要找到物體在影像中出現的位置,還需要反投影到實際3D空間中,需要有絕對的尺寸估計。對於視覺3D目標估計,採用擴充套件影像目標檢測演算法的深度學習模型對於3D檢測具有重要幫助,但是加入空間幾何關係的約束是非常必要的前提,不僅可以提升檢測精度,也可以去除可能的無意義的錯檢。而如何結合稠密匹配演算法以及3D重建中的集束調整技術,對於進一步提升3D目標檢測精度必然具有重要作用。


參考文獻
[1]A. Mousavian, D. Anguelov, J. Flynn, J. Kosecka, “3d bounding box estimation using deep learning and geometry”. In CVPR 2017, 5632-5640.
[2]B. Li, W. Ouyang, L. Sheng, X. Zeng, X. Wang. “GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving”, CVPR 2019.[3]S. Gupta, R. Girshick, P. Arbelaez, and J. Malik, “Learning rich features from RGB-D images for object detection and segmentation,” in Proc. Eur. Conf. Comput. Vis., 2014, pp. 345–360.
[4]X. Chen, K. Kundu, Y. Zhu, A. G. Berneshawi, H. Ma, S. Fidler, and R. Urtasun, “3D object proposals for accurate object class detection”, in Neural Information Processing Systems, 2015.
[5]Y. Wang, and W. Chao, and D. Garg, and B. Hariharan, and M. Campbell, and Weinberger, Q. Kilian, “ Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving”. arXiv preprint arXiv:1812.07179, 2018.
[6]K. Yamaguchi, D. McAllester, and R. Urtasun, “Efficient joint segmentation, occlusion labeling, stereo and flow estimation,” in Proc. Eur. Conf. Comput. Vis., 2014, pp. 756–771.
[7]H. Fu, M. Gong, C. Wang, K. Batmanghelich, and D. Tao. “Deep Ordinal Regression Network for Monocular Depth Estimation”. CVPR, 2018.
[8]A. Mousavian, D. Anguelov, J. Flynn, J. Kosecka, “3d bounding box estimation using deep learning and geometry”. In CVPR 2017, 5632-5640.
[9]X. Chen, K. Kundu, Y. Zhu, H. Ma, S. Fidler, and R. Urtasun. 3d object proposals using stereo imagery for accurate object class detection. In TPAMI, 2018.P. Li, X. Chen, S. Shen. “Stereo R-CNN based 3D Object Detection for Autonomous Driving”. CVPR 2019.

相關文章