一、介紹
VAD是華科團隊設計的一個端到端無人駕駛框架,針對傳統的無人駕駛框架的模塊化設計的問題,該算法使用向量化的策略進行了端到端的實現。傳統的模塊化設計使得感知模塊完全依賴于感知模塊的計算結果,這一解耦實際上從規劃模塊的角度損失了很多的信息,諸如語義信息。VAD采用向量化的策略進行了重新設計,從實驗結果上來看超過了上海實驗室提出的UniAD。
二、方法
VAD的模型以多視角的圖像作為輸入,編碼后提取BEV特征,該特征會被送到Transformer中提取兩類特征,這兩類特征后續應用到軌控模塊中。
3.1 Vectorized Scene Learning
這一節主要是介紹特征提取的部分。首先論文并沒有介紹從多視角圖像到BEV圖像這個過程是如何實現的,應該是直接使用了現成的轉換模型。論文直接是從得到BEV視角后開始介紹的。這一部分實際上包括了兩種查詢:Ageng query和Map query。這里的query實際上就是Transformer里面的那個query,我們主要就是訓練這個query。
Map query
先給出結論, 這一個查詢輸入是BEV視角下的特征,輸出是場景中的向量化的實例特征,可以理解為“當前場景中的物體以及哪些點歸屬于這些物體”。這個實例特征作者起名叫做map vector,它是一個Nm×Np×2大小的矩陣,其中Nm表示場景中物體的數目、Np為一個物體占據的點的數目,最后的2則是說它在BEV視角下的位置。這一個模塊中算法主要關注三個內容:車道分割線、道路邊界以及人行橫道。簡單來說就是通過Transformer處理之后,最后轉換為一個三分類任務。
Agent query
與Map query類似,這一部分其實也是提取一類特征,主要是對場景中的物體的行進軌跡進行預測,這一預測會被用到后續的規劃中。這一部分的輸入依然是BEV視角下的特征,輸出的是一個大小為Na×Nk×Tf×2的矩陣,其中Na表示場景中物體的數量,Nk表示行駛狀態,Tf表示未來的時間戳,最后的2則是BEV視角下的坐標。我的理解是,這個矩陣表示了未來Tf時間內,Na個車輛的行駛狀態及位置。相當于在這個模塊內進行了所有交通參與者的狀態預測,利用這一預測結果來約束后面軌控模塊的行駛策略。
在這個模塊中,稍微補習了一下Transformer的內容,在Transformer的編碼器中,關鍵的三個值是query、key和value,其中query是我們訓練的結果,key和value則是輸入的變種。對于VAD中的查詢模塊,key和value都來源于BEV視角下的特征輸入。這里的過程如下圖:
查詢的數量并不等于類別數量,查詢相當于多個卷積核,只負責特征的提取,而真正影響類別數量的是最后softmax層的結構。計算Key和Value的時候,映射矩陣Wk和Wv相當于一個降維的作用,負責對齊Key、Value以及Query的維度,這兩個映射矩陣也是模型需要學習的參數。計算注意力的時候,所涉及的維度變化為:
在計算注意力之前,其實就已經存在一個展平的過程,原本BEV應該是H×W×C大小的,每張圖是H×W,一共有C張,在計算鍵值的時候就已經展平了,這樣子才可以與Wk和Wv進行計算,計算之后的鍵值變為D個長度為H×W的向量,拼成一個二維矩陣,key首先與query進行計算,得到相關性,這一相關性與value加權求和,得到大小為Nm×D的二維矩陣,表示D個長度為Nm的向量,可以解釋為Nm個關鍵信息,每個信息都是一個長度為D的向量。這些信息會通過MLP解碼進行后處理,將D維度調整為Np×2的維度,這樣子就可以恢復出地圖元素的位置以及包括的點。最終變成Vm: