自動駕駛視覺感知技術路線淺析
01 背景
自動駕駛是逐漸從預言階段向工業化階段的一個過渡,具體表現可分為4點。首先,在大數據的背景下,數據集的規模在快速擴張導致以前在小規模數據集上開發原型的細節會被大量過濾掉,能在大規模數據上有效的工作才會被留下來。其次是關注點的切換,從單目切換到多目場景,導致復雜度提升。然后是傾向于對應用友好的設計,如輸出的空間從圖像空間向BEV空間的轉移。
最后就是從之前單純追求精度到逐漸同時考慮推理速度。同時自動駕駛場景下需要快速響應,因此對性能的要求會考慮速度方面,另外就是更多的去考慮如何部署到邊緣設備。
還有一部分的背景是在過去10年里,視覺感知在深度學習的推動下快速發展,分類檢測、分割等主流的方向上有大量的工作以及部分相當成熟的范式。自動駕駛場景里的視覺感知在發展的過程中,像特征編碼的目標定義、感知范式和監督等方面都大量借鑒了這些主流的方向,因此在投身自動駕駛感知之前,這些主流的方向都應該去涉獵一下。
在這些背景之下,過去一年涌現了大量針對大規模數據集的三維目標檢測工作,如圖1所示(標紅的為曾經第一過的算法)。
圖1 三維目標檢測近一年發展
02 技術路線
2.1 Lifting
自動駕駛場景中視覺感知和主流的視覺的感知區別主要在于給定的目標定義空間不同,主流的視覺感知的目標定義在圖像空間,自動駕駛場景的目標定義在3維空間。在輸入都是圖像的情況下,獲取3維空間的結果就需要有一個Lift的過程,這就是自動駕駛視覺感知核心的問題。
我們可以把解決Lift對象問題的方法分為輸入、中間特征和輸出,輸入級別的一個例子就是視角變化,其原理是利用圖像去推理深度信息,然后利用深度信息把圖像的RGB值投影到三維空間,得到一個帶顏色的點云,后面就沿用點云檢測的相關工作。
目前比較有前景的是特征級別的變換或特征級別的Lift,如DETR3D這些都是在特征級別進行空間變化,特征級別變換的好處是可以避免重復的去提取圖像級別的特征,計算量小,也可以避免輸出級別的環視結果融合的問題。當然特征級別的轉換也會有一些典型的問題,如通常會用到一些奇怪的OP,導致部署的時候并不友好。
目前特征級別的Lift過程比較魯棒的主要有基于深度和注意力機制策略,分別具有代表性的為BEVDet和DETR3D。基于深度的策略是通過計算圖像的每一點的深度,然后根據相機的成像模型把特征投影到3維空間,從而完成Lift的一個過程。基于注意力機制的策略是通過預先定義3維空間中的一個對象當做query,通過內外參找到和三維空間中點所對應的圖像特征當做key和value,再通過attention的方式去計算得到一個3維空間中對象的一個特征。
當前所有的算法都基本上高度依賴于相機模型,無論是基于深度的還是基于注意力機制的,這就會導致對標定敏感以及計算過程普遍偏復雜。而那些拋棄相機模型的算法往往會缺乏魯棒性,所以這方面還沒有完全的成熟。
2.2 Temporal
時序(Temporal)的信息可以有效提高目標檢測的效果。對于自動駕駛的場景來說,時序具有更深層次的意義在于目標的速度是當前場景下主要的感知目標之一。速度重點在于變化,單幀數據并不具備充分的變化信息,因此需要去建模來提供時間維度的一個變化信息。現有的點云時序建模方法是把多幀的點云混合在一起作為輸入,這樣可以得到比較稠密的點云,使得檢測更準確。另外多幀的點云含有持續的信息,后面在網絡訓練過程中通過BP學會如何提取這個持續的信息,以解決速度估計這種需要持續信息的任務。
視覺感知的時序建模方式主要來源于BEVDet4D和BEVFormer。BEVDet4D通過簡單的融合兩幀的一個特征,為后續的網絡提供一個持續的信息。另外一個路徑是基于attention的,同時提供單時幀和逆時針的特征作為query的一個對象,然后通過attention的方式同時去查詢這兩個特征,從而去提取時序的信息。
2.3 Depth
自動駕駛視覺感知相比于雷達感知的一個最大的缺點就是深度估計的準確度。論文《probabilistic and geometric depth: detecting objects in perspective》通過替換GT的方法來研究不同因素對表現分的影響程度,分析得到的主要結論是精確的深度估計可以帶來顯著的性能提升。
但深度估計是當前視覺感知的一個主要的瓶頸,目前改進的思路主要就有兩種,一種是在PGD里面利用幾何約束對預測的深度圖進行refine。另一種是利用激光雷達作為監督去獲得一個魯邦性更好的深度估計。
目前流程上優勝的方案BEVDepth,是在訓練的過程中利用激光雷達所提供的深度信息去對變化過程中的深度估計進行監督,和感知的主任務同時進行。
2.4 Muti-modality/Multi-Task
多任務是希望在一個統一的框架上去完成多種的感知任務,通過這個計算能夠達到節省資源或者加速計算推理的目的。但目前的方法基本上都是在得到一個統一的特征之后,通過不同的層次去處理特征來簡單的實現多任務,普遍都存在任務合并之后,性能下降的問題。多模態也差不多普遍都是在整個判斷里面找到一個可以直接融合的形式,然后實現一個簡單的融合。
03 BEVDet系列
3.1 BEVDet
BEVDet網絡如圖2所示,特征提取過程主要是提取的圖像空間的一個特征轉化成一個BEV空間的特征,然后進一步的去編碼這個特征,得到一個預測可用的特征,最后用稠密預測的方式進行目標預測。
圖2 BEVDet網絡結構
視角變化模塊過程分兩步走,首先假設要變換的特征的大小是VxCxHxW,然后在圖像空間以分類的方式去預測一個深度,對于每一個像素得到一個D維的深度分布,那么就可以利用這兩個將不同深度的特征進行渲染,得到一個視覺特征,然后利用相機模型將它投影到3維空間中,對3維空間進行體素化,其次進行splat過程得到BEV特征。
視角變化模塊的一個非常重要特點是在數據增緩中起到了一個相互隔離的作用。具體而言就是經過相機的內參,可以投影到3維空間中得到相機坐標系上的一個點,當數據增廣的作用在圖像空間上點的時候,為了維持在這個相機坐標系上點的坐標不變,則需要做一個逆變換,即在相機坐標系上面的一個坐標在增廣前和增廣后是不變的,這就起到了一個相互隔離的效果。相互隔離的缺點是圖像空間的增廣并不會對BEV空間的學習起到正則化的作用,優點可以提高BEV空間學習的魯棒性
我們從實驗上可以得到幾個比較重要的結論。首先,在使用了BEV空間的編碼器之后,算法更容易陷入過擬合的情況。另外一個結論是BEV空間的增廣會比圖像空間的增廣對性能的影響更大。
還有就是BEV空間的目標尺寸和類別高度的相關,同時目標之間的重合長度很小會導致一些問題,觀察到在圖像空間里面設計的非極大值抑制方法并非是最優的。同時加速的策略的核心是利用并行的計算方式去給不同小的計算任務去分配獨立的線程去達到并行計算加速的目的,優點在于沒有額外的顯存開銷。
3.2 BEVDet4D
BEVDet4D網絡結構如圖3所示。該網絡的主要關注點在于怎么把逆時幀的特征應用到當前幀,我們選擇輸入的特征作為一個保留的對象,但沒有選擇這個圖像特征,因為目標的變量都是定義在BEV空間,而圖像的特征并不適用于直接的時序建模。同時也沒有選擇BEV Encoder后面的特征去作為持續融合的特征,因為我們需要在BEV Encoder的中進行一個持續特征的提取。
考慮到視角變化模塊輸出的特征比較稀疏,因此在視角變換后接了一個額外的BEV Encoder去提取初步BEV特征,再去進行一個時序的建模。在時序融合的時候,我們把逆時幀的特征通過對齊之后和當前針進行簡單的拼接就完成這個時序的一個融合,其實我們在這里就是把這個時序特征的提取的任務就交給了后面的BEV去做。
圖3 BEVDet4D網絡結構
怎么去設計與網絡結構相匹配的目標變量?在這之前,我們首先要了解一下網絡的一些關鍵的特性,首先是特征的感受野,因為網絡是通過BP學習,特征的感受野是由輸出空間所決定的。
自動駕駛的感知算法的輸出空間一般會定義在自車周圍的一定范圍內的空間,特征圖就可以視為該連續空間上一個均勻分布,角點對齊的一個離散采樣。由于在特征圖的感受野是定義在自車周圍的一定范圍內就會隨著自車的運動而發生了變化,因此在兩個不同時間節點,特征圖的感受野在世界坐標系上面是有一定的偏移的。
若直接把兩個特征進行一個拼接,靜態目標在兩個特征圖中的位置是不同的,動態目標在這兩個特征途圖中的偏移量等于自測的偏移量加上動態目標在世界坐標系中的偏移量。根據模式一致的一個原則,既然拼接的特征里面目標的偏移量是跟自車相關的,因此在設定網絡的學習目標的時候,應該是目標在這兩張特征圖中的位置的變化量。
根據下面的公式去進行推導,可以得到一個學習的目標是跟自測的運動是不相關的,只跟目標在世界坐標系下面的一個運動相關。
我們從上述推導得到的學習目標和當前主流方法的學習目標區別就在于去掉了時間成分,而速度等于位移/時間,但這兩個特征中并沒有提供時間相關的線索,所以如果學習這個速度的目標,需要網絡去準確的估計出這個時間的成分,這就增加了一個學習的難度。在實際中,我們可以把訓練過程中兩幀的時間設定為恒定值,一個恒定的時間間隔網絡是可以通過學 BP學習到的。
在時域的增廣當中,我們在訓練過程中隨機的采用不同的時間間隔,在不同的時間間隔下,目標在兩張這張圖中的偏移量不同,學習的目標偏移量也不同,以此達到模型對不同偏移量的魯邦效果。同時,模型對于目標的偏移量是有一定的靈敏度的,即如果間隔太小,兩幀之間變化太小就很難被感知到。因此在測試的時候選擇一個合適的時間間隔,可以有效提高模型的一個泛化的性能。
3.3 BEVDepth
這篇是利用雷達去得到一個魯棒性的深度估計,如圖4所示。它通過利用點云去對變化模塊中的深度分布去進行監督,這個監督是稀疏的,這個稀疏是相比于目標所提供的深度監督來說是稠密的,但是也沒有達到每個像素都有一個準確的深度監督,也是相對稀疏。不過可以提供更多的樣本,提高這個深度估計的一個泛化的性能。
圖4 BEVDepth網絡結構
這篇工作另外一個方面是把特征和深度分了兩個分支進行估計,并且在深度估計的分支里面增加額外的殘差網絡以提高深度估計分支的感受野。研究人員認為這個相機內外參的精度問題會導致context和深度是不對齊的,當這個深度估計的網絡的感受不夠大的時候,會有一定的精度損失。
最后就是將這個相機的內參作為一個深度估計的分支輸入,使用了一個類似于NSE的方式,對輸入特征的通道進行一個通道層面的調整,這可以有效提高網絡對于不同的相機內參的魯棒性。
04 局限性與相關的討論
首先,自動駕駛的視覺感知最終服務于部署,而在部署的時候會涉及到數據的問題和模型的問題。數據的問題涉及到一個多樣性的問題和數據標注,因為人工標注是非常昂貴的,因此看以后能不能夠實現自動化的標注。
目前來說對于動態目標的標注還是前所未有的,對于靜態目標可以通過3維重建去得到一個偏自動化標注或者半自動化的標注。另外是模型方面,現在的模型設計對標定是一個不魯棒的或說是對標定是敏感的,那么怎么樣去讓模型對標定魯棒或者說不依賴于標定這也是一個值得思考的問題。
另外就是網絡結構加速的問題,能不能用通用的OP去實現視角的變化且這個問題會影響到網絡加速的過程。