看了軌跡預(yù)測比賽公開的獲勝方案,我發(fā)現(xiàn)……

在仔細閱讀了所有到目前已公開的比賽top-20解決方案后,以較為粗的視野,探討一下如何解決自動駕駛中的運動預(yù)測問題。

大概在幾個月前,lyft在kaggle平臺上組織了一個比賽[1]:Lyft Motion Prediction for Autonomous Vehicles,旨在用算法預(yù)測自動駕駛汽車周圍的交通參與者的運動軌跡。

圖源[1]

比賽剛啟動時我還躍躍欲試,把數(shù)據(jù)下載了準備訓(xùn)練一波,無奈卻被后續(xù)無比忙碌的工作和學習給耽擱了。在比賽結(jié)束后,心有不甘的我仔細閱讀了截至目前已經(jīng)公開的top-20解決方案,以較為粗的視野,和大家共同探討一下如何解決自動駕駛中的運動預(yù)測問題。

01 問題定義和數(shù)據(jù)集

自動駕駛中的運動預(yù)測或軌跡預(yù)測,在這里我們定義為

給定

交通參與者(例如行人、騎車人、車輛)在過去一段時間的路徑/軌跡

道路信息(例如道路結(jié)構(gòu)、交通燈信息)

相關(guān)交通參與者過去一段時間對路徑/軌跡

未來一段時間的(一段或多段可能)路徑/軌跡

運動意圖

占用格柵圖

進行預(yù)測。

上面這段文字便定義了問題的輸入(“給定”部分)和輸出(“對”部分),基于問題的定義,現(xiàn)存的研究有諸多方法,傳統(tǒng)的方法如:

1. 基于運動學和動力學的預(yù)測(如卡爾曼濾波),缺點在于沒有考慮到環(huán)境中其他交通參與者對被預(yù)測目標運動的影響;

2. 考慮了環(huán)境因素的方法,如社會力模型、逆強化學習等。

基于deep learning的方法可以大致分為

1. 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)方法,由于軌跡具有明顯的時序信息,通過RNN對時間維度建模;

2. 卷積神經(jīng)網(wǎng)絡(luò)(CNN)方法,將軌跡和環(huán)境信息編碼成圖的形式(例如多通道的鳥瞰圖),用CNN方法進行建模。在比賽中的baseline和大多數(shù)參賽者的方法均基于此;

3. 其他,例如圖神經(jīng)網(wǎng)絡(luò)、RNN+CNN的結(jié)合等;

Deep Learning-based Vehicle Behaviour Prediction for Autonomous Driving Applications: a Review?[2]一文中,對基于深度學習對軌跡預(yù)測方法進行了下圖的分類(藍色按輸入類型分,綠色按輸出類型分,灰色按預(yù)測方法分):

圖源[2]

在數(shù)據(jù)上,自動駕駛場景中的主流開源數(shù)據(jù)集對比如下,其中能用于軌跡預(yù)測的數(shù)據(jù)包括nuScenes、ApolloScape Trajectory、Argoverse Forecasting和Ours(指的是本次比賽中使用的lyft新開源的數(shù)據(jù)集):

圖源[3]?lyft新開源數(shù)據(jù)集與其他數(shù)據(jù)集的對比

lyft數(shù)據(jù)集的數(shù)據(jù)采集車如下圖左所示,其中感知部分包括3個Lidar(一個車頂64線10Hz,兩個前保險杠40線)和7個Camera(下圖右,都在車頂)、5個Radar(4個位于頂部,一個位于前保險杠)。

圖源[3]?數(shù)據(jù)采集車的配置

20輛配備了同等傳感器的數(shù)據(jù)采集車,從2019年10月到2020年3月,采集到到數(shù)據(jù)包括

1. 17萬個場景,每個場景25秒,通過感知傳感器捕捉自車狀態(tài)、自車周圍的交通參與者(騎車人、行人、車輛)狀態(tài)和交通燈狀態(tài);

2. 高精度語義地圖,包括(詳見下表):車道邊界、車道連接性、行駛方向、道路類型、道路材料、道路限速、車道限制、人行橫道、交通燈、交通標志、限制區(qū)域、減速帶;

圖源[3]?高精度語義地圖包含要素

3. 高分辨率的衛(wèi)星圖片,覆蓋74平方公里區(qū)域,由181個GeoTIFF切片構(gòu)成,每個切片大小10560 x 10560 像素(640 x 640 米)??捎糜谳o助預(yù)測。

數(shù)據(jù)集的數(shù)據(jù)整體統(tǒng)計情況見下表:

圖源[3]?數(shù)據(jù)集的統(tǒng)計值


02 贏得比賽的技巧

由于kaggle比賽有其顯著的局限性(例如參賽者往往不具備從事運動預(yù)測研究的背景、比賽時間也就短短2-3個月),導(dǎo)致一般而言,小概率事件在kaggle比賽中能產(chǎn)生出SOTA的新方法。大概率事件是,對一些論文中已有SOTA方法的運用,并針對賽題添加針對性的trick。

在這個賽道上,lyft官方公開了一個baseline方法 [4] (屬于第一部分中介紹的基于CNN的方法),大致可以分為下面兩個步驟:

1. 將軌跡和環(huán)境信息編碼成多通道的鳥瞰圖,根據(jù)編碼信息的不同,可以有下圖中的幾種形式:語義圖(右上)、衛(wèi)星圖(右下)、語義衛(wèi)星圖(左下);

圖源[3]?左上圖中紅色色塊為自動駕駛車輛(自車),黃色色塊為其他交通參與者(他車);其余三圖中綠色為自車,藍色為他車

2. 將編碼后的圖(224 x 224大小,以目標車輛為中心)作為CNN的輸入數(shù)據(jù),基網(wǎng)絡(luò)為ResNet-50,模型預(yù)測值為未來5秒內(nèi)的一連串位置點。

由于這個官方baseline并不弱,并且為參賽選手提供了便利,因此大多數(shù)參賽者都是基于此進行了修改。從賽道上top解決方案[5]來看,有一些重要的修改技巧摘選如下(都是圖像比賽的基本操作,但根據(jù)問題領(lǐng)域的不同有所調(diào)整):

1. 對樣本的篩選:對訓(xùn)練樣本進行篩選,使其與評測樣本保持一致。例如在這個賽題中,評測樣本基本在未來十幀都有數(shù)據(jù),因此在訓(xùn)練樣本篩選時也只保留有未來十幀數(shù)據(jù)的樣本;

2. 對數(shù)據(jù)的編碼:

a) 歷史幀的數(shù)目:第一名方案中history_num_frames=30,即構(gòu)建了66通道的“圖像”輸入,包括30通道自車運動歷史軌跡、30通道他車運動歷史軌跡、3通道語義地圖、3通道衛(wèi)星地圖;

b) 其他可以實驗的參數(shù):例如“圖像”的整體大小、“圖像”每個像素點代表的物理范圍;

3. 數(shù)據(jù)增強:

a) 圖像級增強:如 cutout、模糊、下采樣;

b) 柵格級增強:如?隨機丟棄他車數(shù)據(jù);

4. 對訓(xùn)練過程的加速:lyft官方提供的上述數(shù)據(jù)柵格編碼過程復(fù)雜,一次訓(xùn)練中的大部分時間都耗費在CPU上的數(shù)據(jù)處理中。因此可以優(yōu)化編碼部分代碼,解決CPU運算瓶頸,提升多GPU訓(xùn)練效率,有助于在比賽中快速實驗;

5. 單模型的選擇和訓(xùn)練:第一名方案:EfficientNetB3模型,先用低分辨率圖像預(yù)訓(xùn)練4個epoch,而后從第5個epoch開始,在原圖上用余弦退火和階梯下降學習率的方式進行訓(xùn)練;

6. 多模型的融合:

a) 第一名方案:用不同的數(shù)據(jù)編碼參數(shù)訓(xùn)練得到5個模型,用stacking方法進行融合;

b) 第四名方案:用GMM方法將多模型的多條軌跡采樣并擬合成最終的三條軌跡;


03 總結(jié)

在看了已公開的部分top20解決方案后,稍微有一些失望的是:由于數(shù)據(jù)量太大,大部分參賽者的方法都沒能得到充分的訓(xùn)練,因此往往在baseline模型上稍微調(diào)調(diào)參數(shù)、訓(xùn)練足夠久、訓(xùn)練出來多個模型,便能夠獲得好的名次;

雖然用于參賽的方法和實際工程方法之間,或者和學術(shù)創(chuàng)新方法之間的差別還是很大,但對我個人而言也有一些啟發(fā):

1. 設(shè)計高效的、表征強的數(shù)據(jù)編碼方式極為重要, 在比賽中證明了“先對軌跡和環(huán)境數(shù)據(jù)在鳥瞰圖上渲染,后用CNN進行學習”的方法是有效的,但也暴露出編碼過程有信息損耗(eg.每個像素的物理范圍)、編碼效率低的問題;

2. 使用VectorNet方法[6] (CVPR 2020),提出了更高效的編碼方式和模型,在比賽中以極少的計算資源便取得了第十名的成績。

言而總之,如下圖所示,對于自動駕駛而言,感知得到交通參與者和環(huán)境的探測結(jié)果、基于感知結(jié)果對環(huán)境中交通參與者的行為預(yù)測、根據(jù)預(yù)測結(jié)果進行軌跡和路徑規(guī)劃,這三個環(huán)節(jié)將持續(xù)地被深度學習的方法重構(gòu)。過往幾年我們看的比較多的是感知部分,未來相信在軌跡預(yù)測和規(guī)劃上也會見到相同的趨勢。

圖源[3]


參考資料:

[1]?https://www.kaggle.com/c/lyft-motion-prediction-autonomous-vehicles/overview/description

[2]?https://arxiv.org/abs/1912.11676

[3]?https://arxiv.org/abs/2006.14480

[4]?https://github.com/lyft/l5kit

[5]?https://www.kaggle.com/c/lyft-motion-prediction-autonomous-vehicles/discussion/201470

[6]?https://arxiv.org/abs/2005.04259

- END -

新朋友們可以看看我過往的相關(guān)文章

?

【相關(guān)推薦閱讀】

PRML-14章-組合模型

多模態(tài):自動駕駛中的多模態(tài)學習

NCP:19個神經(jīng)元完成自動駕駛?

從2018到2020的AI發(fā)展預(yù)測

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容