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