軌跡預(yù)測(cè)系列 | HiVT之進(jìn)化版QCNet到底講了啥?
本文經(jīng)自動(dòng)駕駛之心公眾號(hào)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
HiVT的進(jìn)化版(不先看HiVT也能直接讀這篇),性能和效率上大幅提升。
文章也很容易閱讀。
【軌跡預(yù)測(cè)系列】【筆記】HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction - 知乎 (zhihu.com)
原文鏈接:
https://openaccess.thecvf.com/content/CVPR2023/papers/Zhou_Query-Centric_Trajectory_Prediction_CVPR_2023_paper.pdf
Abstract
Agent為中心的進(jìn)行預(yù)測(cè)的model存在一個(gè)問題,當(dāng)窗口移動(dòng)時(shí)需要多次重復(fù)normalize到agent中心,再進(jìn)行重復(fù)encoding的過程,對(duì)于onboard使用是不劃算的。因此對(duì)于場(chǎng)景的encoding我們采用了query-centric的框架,可以重復(fù)使用已經(jīng)計(jì)算過的結(jié)果,不依賴于全局的時(shí)空坐標(biāo)系。同時(shí),因?yàn)閷?duì)于不同agent共享了場(chǎng)景特征,使得agent的軌跡decoding過程可以更加并行處理。
即使對(duì)于場(chǎng)景進(jìn)行了復(fù)雜的encoding,目前的decoding辦法對(duì)于多mode的信息抓取還是比較難,特別是對(duì)于長(zhǎng)時(shí)間的預(yù)測(cè)。為了解決這個(gè)問題,我們首先使用anchor-free的query來生成軌跡proposal(走一步看一步的提取特征辦法),這樣model能能更好利用不同時(shí)刻位置的場(chǎng)景特征。然后是調(diào)整模塊,利用上一步得到的proposal來進(jìn)行軌跡的調(diào)優(yōu)(動(dòng)態(tài)的anchor-based)。通過這些高質(zhì)量的anchor,我們的query-based decoder可以更好的處理多mode的特征。
打榜成功。這個(gè)設(shè)計(jì)也實(shí)現(xiàn)了場(chǎng)景特征encoding和并行多agent的decoding的pipeline。
Introduction
目前的軌跡預(yù)測(cè)paper有這么幾個(gè)問題:
- 對(duì)于多種異構(gòu)的場(chǎng)景信息額度處理效率低下。無人駕駛?cè)蝿?wù)里,數(shù)據(jù)以一幀一幀的流給到model,包含矢量化的高精地圖和周圍agent的歷史軌跡。最近的factorized attention方法(時(shí)空分開分別進(jìn)行attentin)將這些信息的處理提升到新高度。但這需要對(duì)于每個(gè)場(chǎng)景元素做attention,如果場(chǎng)景非常復(fù)雜,cost還是很大的。
- 隨著預(yù)測(cè)的時(shí)間增長(zhǎng),預(yù)測(cè)的不確定性也在爆炸式增長(zhǎng)。比如在路口的車可能直行或轉(zhuǎn)彎。為了避免錯(cuò)過潛在的可能性,模型需要獲取多mode的分布,而不是僅僅只預(yù)測(cè)出現(xiàn)頻率最高的mode。但是gt只有一個(gè),沒法對(duì)多個(gè)可能性進(jìn)行比較好的學(xué)習(xí)。有些paper提出了多個(gè)手捏的anchor來監(jiān)督的做法,這個(gè)效果就完全取決于anchor的質(zhì)量高低了。當(dāng)anchor無法準(zhǔn)確cover gt時(shí),這個(gè)做法就很糟糕了。也有別的做法直接預(yù)測(cè)多mode,忽視了mode塌縮和訓(xùn)練不穩(wěn)定的問題。
為了解決上述問題,我們提出了QCNet。
首先,我們想要在利用好強(qiáng)大的factorized attention的同時(shí),提高onboard的inference速度。過去的agent-centric encoding辦法顯然不行。當(dāng)下一幀數(shù)據(jù)到來,窗口就會(huì)移動(dòng),但還是和上一幀有很大部分重疊的,所以我們有機(jī)會(huì)重復(fù)使用這些feature。但是agent-centric辦法需要轉(zhuǎn)到agent坐標(biāo)系,導(dǎo)致其必須要重新encode場(chǎng)景。為了解決這個(gè)問題,我們使用了query-centric的辦法:場(chǎng)景元素在它們自己的時(shí)空坐標(biāo)系內(nèi)進(jìn)行特征提取,和全局坐標(biāo)系無關(guān)(ego在哪無關(guān)了)。(高精地圖可以用因?yàn)榈貓D元素有長(zhǎng)久的id,非高精地圖應(yīng)該就不好用了,地圖元素的得在前后幀tracking住)
這使得我們可以把之前處理好的encoding結(jié)果進(jìn)行重復(fù)使用,對(duì)于agent來說直接用這些cache的feature,這樣就能節(jié)省latency了。
其次,為了更好地用這些場(chǎng)景encode結(jié)果進(jìn)行多mode長(zhǎng)時(shí)間預(yù)測(cè),我們使用了anchor-free的query來一步步(在上一個(gè)位置的地方)提取場(chǎng)景的feature,這樣每一次的decode都是非常短的一步。這個(gè)做法可以使得對(duì)于場(chǎng)景的特征提取重心放在agent未來在的某一個(gè)位置,而不是為了考慮未來多個(gè)時(shí)刻的位置,去提取遠(yuǎn)處的feature。這樣得到的高質(zhì)量anchor會(huì)在下一個(gè)refine的module進(jìn)行精細(xì)調(diào)整。這樣結(jié)合了anchor-free和anchor-based的做法充分利用了兩個(gè)辦法的優(yōu)點(diǎn),實(shí)現(xiàn)多mode長(zhǎng)時(shí)間的預(yù)測(cè)。
這個(gè)做法是第一個(gè)探索了軌跡預(yù)測(cè)的連續(xù)性來實(shí)現(xiàn)高速inference的辦法。同時(shí)decoder部分也兼顧了多mode和長(zhǎng)時(shí)間預(yù)測(cè)的任務(wù)。
Approach
Input and Output
同時(shí)prediction模塊還可以從高精地圖獲得M個(gè)polygon,每一個(gè)polygon都有多個(gè)點(diǎn)以及語義信息(crosswalk,lane等類型)。
預(yù)測(cè)模塊使用T個(gè)時(shí)刻的上述的agent state和地圖信息,要給出K個(gè)總共T'長(zhǎng)度預(yù)測(cè)軌跡,同時(shí)還有其概率分布。
Query-Centric Scene Context Encoding
第一步自然是場(chǎng)景的encode。目前流行的factorized attention(時(shí)間和空間維度分別做attention)是這么做的,具體來說一共有三步:
- 時(shí)間維度attention,時(shí)間復(fù)雜度O(A),每個(gè)agent自己的時(shí)間維度矩陣乘法
- agent和map的cross attention,時(shí)間復(fù)雜度O(ATM),在每個(gè)時(shí)刻,agent和地圖元素的矩陣乘法
- agent和agent間的attention,時(shí)間復(fù)雜度O(T), 在每個(gè)時(shí)刻,agent和agent矩陣乘法
這個(gè)做法和之前的先在時(shí)間維度壓縮feature到當(dāng)前時(shí)刻,再agent和agent,agent和地圖間交互的做法比起來,是對(duì)于過去每個(gè)時(shí)刻去做交互,因此可以獲取更多信息,比如agent和map間在每個(gè)時(shí)刻的交互演變。
但是缺點(diǎn)是三次方的復(fù)雜度隨著場(chǎng)景變復(fù)雜,元素變多,會(huì)變得很大。我們的目標(biāo)就是既用好這個(gè)factorized attention,同時(shí)不讓時(shí)間復(fù)雜度這么容易爆炸。
一個(gè)很容易想到的辦法是利用上一幀的結(jié)果,因?yàn)樵跁r(shí)間維度上其實(shí)有T-1幀是完全重復(fù)的。但因?yàn)槲覀冃枰堰@些feature旋轉(zhuǎn)平移到agent當(dāng)前幀的的位置和朝向,因此沒法就這么使用上一幀運(yùn)算得到的結(jié)果。
為了解決坐標(biāo)系的問題,采用了query-centric辦法,來學(xué)習(xí)場(chǎng)景元素的特征,而不依賴它們的全局坐標(biāo)。這個(gè)做法對(duì)每個(gè)場(chǎng)景元素建立了局部的時(shí)空坐標(biāo)系,在這個(gè)坐標(biāo)系內(nèi)提取特征,即使ego到別處,這個(gè)局部提取出來的特征也是不變的。這個(gè)局部時(shí)空坐標(biāo)系自然也有一個(gè)原點(diǎn)位置和方向,這位置信息作為key,提取出來的特征作為value,便于之后的attention操作。整個(gè)做法分為下面幾步:
Local Spacetime Coordinate System
對(duì)于agent i在t時(shí)刻的feature來說,選擇這個(gè)時(shí)刻的位置和朝向作為參考系。對(duì)于map元素來說,則采用這個(gè)元素的起始點(diǎn)作為參考系。這樣的參考系選擇方法可以在ego移動(dòng)后提取的feature保持不變。
Scene Element Embedding
對(duì)于每個(gè)元素內(nèi)的別的向量特征,都在上述參考系里獲取極坐標(biāo)表示表達(dá)。然后將它們轉(zhuǎn)成傅里葉特征來獲取高頻信號(hào)。concat上語義特征后再M(fèi)LP獲取特征。對(duì)于map元素,為了保證內(nèi)部點(diǎn)的順序不相關(guān)性,先做attention后pooling的操作。最后獲得agent特征為[A, T, D], map特征為[M, D]. D是特征維度,保持一致才可以方便attention的矩陣相乘。這樣提取出來的特征可以使得ego處于任何地方都能使用。
傅里葉embedding: 制造正態(tài)分布的embedding,對(duì)應(yīng)各種頻率的權(quán)重,乘輸入和2Π, 最后取cos和sin作為feature。直觀理解的話應(yīng)該是把輸入當(dāng)作一個(gè)信號(hào),把信號(hào)解碼成多個(gè)基本信號(hào)(多個(gè)頻率的信號(hào))。這樣可以更好的抓取高頻信號(hào),高頻信號(hào)對(duì)于結(jié)果的精細(xì)程度很重要,一般的做法容易丟精細(xì)的高頻信號(hào)。值得注意的是對(duì)于noisy數(shù)據(jù)不建議使用,因?yàn)闀?huì)誤抓錯(cuò)誤的高頻信號(hào)。(感覺有點(diǎn)像overfit,不能太general但又不能精準(zhǔn)過頭)
Relative Spatial-Temporal Positional Embedding
Self-Attention for Map Encoding
Factorized Attention for Agent Encoding
附近的定義為agent周圍50m范圍內(nèi)。一共會(huì)進(jìn)行次。
值得注意的是,通過以上方法得到的feature具備了時(shí)空不變性,即不管ego在什么時(shí)刻到什么地方,上述feature都是不變的,因?yàn)槎紱]有針對(duì)當(dāng)前的位置信息進(jìn)行平移旋轉(zhuǎn)。由于相比于上一幀只是多了新的一幀數(shù)據(jù),并不需要計(jì)算之前的時(shí)刻的feature,所以總的計(jì)算復(fù)雜度除以了T。
Query-Based Trajectory Decoding
類似于DETR的anchor-free query去某些key value里做attention的辦法會(huì)導(dǎo)致訓(xùn)練不穩(wěn)定,模態(tài)塌縮的問題,同時(shí)長(zhǎng)時(shí)間預(yù)測(cè)也不靠譜,因?yàn)椴淮_定度會(huì)在靠后時(shí)間爆炸。因此此模型采用了先來一次粗的anchor-free query辦法,再對(duì)這個(gè)輸出進(jìn)行refine的anchor-base辦法。
整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)
Mode2Scene and Mode2Mode Attention
Mode2Scene的兩步都采用了DETR結(jié)構(gòu):query為K個(gè)軌跡mode(粗的proposal步是直接隨機(jī)生成的,refine步是由proposal步得到的feature作為輸入),然后在場(chǎng)景feature(agent歷史,map,周圍agent)上做多次cross attention。
DETR結(jié)構(gòu)
Mode2Mode則是在K個(gè)mode間進(jìn)行self attention,企圖實(shí)現(xiàn)mode間的diverse,不要都聚在一起。
Reference Frames of Mode Queries
為了并行預(yù)測(cè)多個(gè)agent的軌跡,場(chǎng)景的encoding是被多個(gè)agent分享的。因?yàn)閳?chǎng)景feature都是相對(duì)于自身的feature,所以要使用的話還是得轉(zhuǎn)到agent的視角下。對(duì)于mode的query,會(huì)附加上agent的位置和朝向信息。和之前encode相對(duì)位置類似的操作,也會(huì)對(duì)場(chǎng)景元素和agent的相對(duì)位置的信息進(jìn)行embedding作為key和value。(直觀上說就是agent每個(gè)mode在附近信息使用上的一個(gè)加權(quán)注意力)
Anchor-Free Trajectory Proposal
第一次是anchor free的辦法,采用可以學(xué)習(xí)的query來制造相對(duì)低質(zhì)量的軌跡proposal,一共會(huì)產(chǎn)生K個(gè)proposal。由于會(huì)用cross attention的方式從場(chǎng)景信息里提取特征,因此可以高效產(chǎn)生比較少而有效的anchor供第二次refine使用。self attention則使得各proposal總體會(huì)更diverse。
Anchor-Based Trajectory Refinement
anchor free的辦法雖然比較簡(jiǎn)單,但也存在訓(xùn)練不穩(wěn)定的問題,有可能mode塌縮。同時(shí),隨機(jī)生成的mode還需要能在全場(chǎng)景里對(duì)于不同agent都有不錯(cuò)的表現(xiàn),這比較難,很容易生成出不符合運(yùn)動(dòng)學(xué)的或者不符合交通的軌跡proposal。因此我們想到可以再來一次anchor-based修正。在proposal的基礎(chǔ)上預(yù)測(cè)了一個(gè)offset(加到原proposal獲得修正后軌跡),并預(yù)測(cè)了每個(gè)新軌跡的概率。
這個(gè)模塊同樣使用了DETR的形式,每個(gè)mode的query都是用上一步的proposal來提取,具體是用了一個(gè)小的GRU來embed每個(gè)anchor(一步步往前走),使用到最后一個(gè)時(shí)刻的feature作為query。這些基于anchor的query可以提供一定的空間信息,使得attention時(shí)更容易捕捉有用的信息。
Training Objectives
和HiVT一樣(參考HiVT的分析),采用Laplace分布。直白的講就是把每個(gè)mode下每個(gè)時(shí)刻建模為一個(gè)laplace分布(參考一般的高斯分布,由mean和var,代表這個(gè)點(diǎn)的位置和其不確定性)。并且認(rèn)為時(shí)刻之間是獨(dú)立的(直接連乘)。Π代表了對(duì)應(yīng)mode的概率。
Loss的話由3部分組成
主要分為兩部分:分類loss和回歸loss。
分類loss是指預(yù)測(cè)概率的loss,這個(gè)地方要注意的是需要打斷梯度回傳,不可以讓概率的引起的梯度傳到對(duì)于坐標(biāo)的預(yù)測(cè)(即在假設(shè)每個(gè)mode預(yù)測(cè)位置為合理的前提下)。label則是最接近gt的為1,別的都是0。
回歸loss有兩個(gè),一個(gè)是一階段的proposal的loss,一個(gè)是二階段的refine的loss。采用贏者通吃的辦法,即只計(jì)算最接近gt的mode的loss,兩個(gè)階段的回歸loss都要算。為了訓(xùn)練的穩(wěn)定性,此處在兩個(gè)階段中也打斷了梯度回傳,使得proposal學(xué)習(xí)就專門學(xué)習(xí)proposal,refine就只學(xué)refine。
Experiments
Argoverse2基本各項(xiàng)SOTA(* 表示使用了ensemble技巧)
b-minFDE相比minFDE的區(qū)別在于額外乘上了和其概率相關(guān)的系數(shù). 即目標(biāo)希望FDE最小的那條軌跡的概率越高越好。
關(guān)于ensemble技巧,感覺是有點(diǎn)作弊的:可以參考BANet里的介紹,下面簡(jiǎn)單介紹一下。
生成軌跡的最后一步同時(shí)連做好多遍結(jié)構(gòu)一樣的submodel(decoder),會(huì)給出多組預(yù)測(cè),比如有7個(gè)submodel,每個(gè)有6條預(yù)測(cè),一共42條。然后用kmeans來進(jìn)行聚類(以最后一個(gè)坐標(biāo)點(diǎn)為聚類標(biāo)準(zhǔn)),目標(biāo)是6組,每組7條,然后每組里面進(jìn)行加權(quán)平均獲得新軌跡。
加權(quán)方法如下,為當(dāng)前軌跡和gt的b-minFDE,c為當(dāng)前軌跡的概率,在每組里面進(jìn)行權(quán)重計(jì)算,然后對(duì)軌跡坐標(biāo)加權(quán)求和獲得一條新軌跡。(感覺多少有些tricky,因?yàn)閏其實(shí)是這個(gè)軌跡在submodel輸出里的概率,拿來在聚類里算有點(diǎn)不太符合預(yù)期)
并且這么操作后新軌跡的概率也很難精準(zhǔn)計(jì)算,不能用上述方法,否則總概率和就不一定是1了。似乎也只能等權(quán)重地算聚類里的概率了。
Argoverse1也是遙遙領(lǐng)先
關(guān)于場(chǎng)景encode的研究:如果復(fù)用了之前的場(chǎng)景encode結(jié)果,infer的時(shí)間可以大幅減少。agent和場(chǎng)景信息的factorized attention交互次數(shù)變多,預(yù)測(cè)效果也會(huì)變好,只是latency也漲的很兇,需要權(quán)衡。
各種操作的研究:證明了refine的重要性,以及factorized attention在各種交互中的重要性,缺一不可。