單目的3D目標檢測近幾年一直是研究的熱點,雖然往算法中添加先驗知識,能夠一定程度的提升準確率,但是也增加了獲取標簽的難度和算法設(shè)計的復(fù)雜性。本文介紹一種端到端且輕量化的單目3D檢測技術(shù)——基于關(guān)鍵點獲取目標在圖像空間的透視投影位置。
三維目標檢測是自動駕駛領(lǐng)域中常見的視覺任務(wù),感知模塊需要將周圍的環(huán)境信息,包括目標的三維坐標、朝向角、類別、速度、加速度等輸出給規(guī)控模塊。那么如何得到一個物體的三維信息呢?我們可以從KITTI算法測評數(shù)據(jù)集中瀏覽一些主流方法:從上圖中可以發(fā)現(xiàn),MAP靠前的算法還是以激光雷達的感知為主,畢竟此類主動觸發(fā)式傳感器能夠提高準確的距離信息。但問題是20萬以下的車型很難負擔(dān)得起激光雷達的高額成本,所以單目相機的3D檢測逐漸成為主要的研究方向,圖像中的3D外接框由于缺少深度信息,其三維空間中的8個頂點是通過透視投影映射到圖像空間的,如下圖所示:單目3D目標檢測根據(jù)采用的方法大致分成以下四類:1. 基于現(xiàn)在的二維檢測算法,在目標的ROI中添加額外的回歸分支預(yù)測三維參數(shù)。但是這種直接回歸的方法由于搜索空間過大很難取得好的效果。如下圖所示:使用CNN檢測2D的外接框以及圖像中的朝向角,然后利用相關(guān)的引導(dǎo)信息得到粗略的3D檢測框。然后再對粗略的檢測框進行提煉,得到最終的檢測框。2.利用2D外接框和3D目標屬性作為監(jiān)督數(shù)據(jù)。將投影幾何引入作為一種約束用深度回歸網(wǎng)絡(luò)去預(yù)測3D信息,但是2D外接框只能提供四個約束,這就要求BBox的預(yù)測相當精準。如下圖所示:使用CNN提取特征估計2D外接框中的尺寸和方向,然后采用最小二乘求解基于相機投影矩陣解決2D到3D逆幾何映射問題來獲得物體的位置。這個約束依據(jù)某個3D點會被投影到2D邊界框的邊緣,但是相應(yīng)關(guān)系和投影的具體位置存在多種可能性,所以只能提供四個約束不足以在9個參數(shù)(8個頂點+1個中心)中進行完整的3D表示,需要估計其他先驗信息。?同時2D框的偏移也會帶有約束結(jié)果的不準確性,為降低2D框的預(yù)測偏差此類方法大多通過兩階段檢測來獲得精確的2D框,這樣就很難保證實時性。3. 利用復(fù)雜特征比如語義分割、CAD模型、對象輪廓、深度圖等,在多階段融合模塊中選擇最佳建議計算目標的3D外接框。但是訓(xùn)練這些網(wǎng)絡(luò)大多也需要額外的標注,同時在推理過程中也會耗費更多的資源。如下圖所示:此類方法從車輛關(guān)鍵點推斷出完整形狀,可以提高遮擋物和截斷物的檢測精度。一般使用線框模板(CAD模型)來表示常規(guī)形狀的車輛。但是為了訓(xùn)練關(guān)鍵點檢測網(wǎng)絡(luò),需要額外標注相關(guān)數(shù)據(jù),甚至需要提供深度圖來增強檢測能力。4.參照人體姿態(tài)估計中的關(guān)鍵點檢測技術(shù),對車輛行人等道路障礙物進行關(guān)鍵點提取和組合,最后再通過相機的內(nèi)外參進行圖像的透視約束。如下圖所示:此類將3D檢測重新構(gòu)造為稀疏關(guān)鍵點檢測任務(wù),無需基于現(xiàn)成的2D檢測器或其他數(shù)據(jù)生成器來預(yù)測3D框,而是建立一個網(wǎng)絡(luò)預(yù)測3D框的8個頂點和1個中心投影的9個2D關(guān)鍵點,同時將重投影誤差最小化以找到最佳結(jié)果 。幾何信息融入深度學(xué)習(xí)方法的一個局限性在于2D外接框的四條邊所能提供的約束有限,2D框的4條邊只提供恢復(fù)3D框的4個約束,而3D框的頂點可能與2D外接框任何一條邊都有關(guān)。而且對2D框的過度依賴使得當2D框有輕微的錯誤會對3D框的預(yù)測效果有很大影響。但是如果采用提取關(guān)鍵點的方法對遮擋和截斷的物體就能具有良好的特性,試想一下即使檢測出幾個特征點,其它信息的也可以根據(jù)物體的表示模型推斷出來。近幾年來由于anchor-free技術(shù)的日漸成熟,基于關(guān)鍵點檢測的方法越來越受到工業(yè)界追捧。相比于以前采用2D檢測器提供的ROI來回歸頂點坐標,兩階段的檢測算法限制了推理速度,在一些需要算法快速相應(yīng)的場景中已經(jīng)逐漸銷聲匿跡。關(guān)鍵點檢測較早的應(yīng)用出現(xiàn)在人臉識別或者姿態(tài)估計中,從這些應(yīng)用中我們了解到直接回歸特征點一般沒有熱度圖的精度高。因此擬采用單階段生成熱度圖的方法,考慮只預(yù)測3D外接框的8個頂點和1個中心點。不過考慮到9個特征點盡管可以提供18個約束,但尺度還沒辦法確定,所以需要一些額外的先驗信息。根據(jù)上面的分析也就和RTM3D的主要思想基本吻合:建立全卷積網(wǎng)絡(luò)預(yù)測目標的3D信息,包括目標的9個關(guān)鍵點投影(1個中心點,8個頂點),9個關(guān)鍵點提供對3D框的18個幾何約束。8個頂點和1個中心的關(guān)系通過建模來解決關(guān)鍵點聚集和頂點的順序問題。同時為了解決搜索空間較大的問題,該算法利用3D外接框頂點到2D外接框邊緣之間的幾何約束來修正并預(yù)測目標參數(shù),得到更加精確的9個空間點。第一步:輸入單RGB圖像,輸出關(guān)鍵點的熱度圖,頂點熱度圖和頂點坐標,用于預(yù)測由8個頂點和3D對象的中心點在圖像空間中投影的序數(shù)關(guān)鍵點;第二步:使用透視投影的幾何約束將預(yù)測的3D邊界框估計重新構(gòu)造為使能量函數(shù)最小化的問題,來修正空間點坐標;針對輸入圖像使用因子S=4進行下采樣,源碼中提供了ResNet-18和DLA-34兩個網(wǎng)絡(luò)進行提取特征,編碼環(huán)節(jié)進行5次采樣,然后通過三次雙線性插值和1×1卷積層對瓶頸進行了三次上采樣。引入FPN將低級特征圖和高級特征圖連接用于整合多尺度特征,同時添加一個1×1的卷積層以減少信道尺寸。圖像中的關(guān)鍵點的大小基本不會隨著目標的遠近產(chǎn)生太大的變化。所以傳統(tǒng)的特征金字塔網(wǎng)絡(luò)并不適用于關(guān)鍵點檢測。這里使用關(guān)鍵點特征金字塔網(wǎng)絡(luò)來檢測點向空間中的尺度不變性。具體做法如下:假設(shè)有F尺度的特征圖,可以先將每個尺度f還原到最大尺度,然后通過softmax運算生成輕權(quán)重以表示每個尺度的重要性。通過線性加權(quán)和獲得最終的尺度空間得分圖(有點類似與注意力機制)。檢測頭由三個基本組件和六個可選組件組成,在網(wǎng)絡(luò)訓(xùn)練時可以選擇輸出特征圖的個數(shù),附加的可選項越多可以達到精度上限越高,但是訓(xùn)練時任務(wù)頭之間的權(quán)衡也需要仔細調(diào)節(jié)。RTM3D算法中將一個關(guān)鍵點作為連接所有功能的主要中心,由于在截斷的情況下對象的三維投影點可能超過圖像邊界不利于檢測,所以最終選擇二維框的中心點作為主點。傳統(tǒng)Harris等算子提取角點
區(qū)域生長等角點檢測算法
直接在圖像中回歸坐標點
高斯分布角點區(qū)域進行分割
方法1和2是在圖像處理中最常見的提取角點手段,如下圖所示:在做相機標定時提取棋盤格的角點坐標是必不可少的一項工作。那么在深度學(xué)習(xí)蓬勃發(fā)展的今天,如何在神經(jīng)網(wǎng)絡(luò)中得到角點或者關(guān)鍵點坐標呢?方法3是最直接也最容易想到的,有監(jiān)督的學(xué)習(xí)要么是分類任務(wù)要么是回歸任務(wù),在圖像中定位關(guān)鍵點的位置好像和坐標回歸的關(guān)系更大一些哦~~~但是在整張圖片中回歸幾個坐標點總感覺比較困難,試想一副720P分辨率的圖片包括100萬個像素的,回歸幾個或者幾十個像素點坐標難度可想而知。實驗證明用神經(jīng)網(wǎng)絡(luò)直接回歸點的二維坐標是很難收斂的,這是一個極其非線性的過程,而且損失函數(shù)對權(quán)重的約束會比較弱。方法4在關(guān)鍵點上附加了二維高斯分布,因為關(guān)鍵點附近的點其實也很像關(guān)鍵點,如果直接將其標為負樣本,可能給神經(jīng)網(wǎng)絡(luò)的訓(xùn)練帶來干擾噪聲(人工打標注也是存在偏差的),將其用高斯函數(shù)做一個軟標簽?zāi)軌虼偈咕W(wǎng)絡(luò)更好的收斂。并且高斯分布也能夠給訓(xùn)練增加方向性引導(dǎo),距離關(guān)鍵點越近真值概率越大,這樣網(wǎng)絡(luò)能有方向的去快速到達關(guān)鍵點。
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。