在仔細閱讀了所有到目前已公開的比賽top-20解決方案后,以較為粗的視野,探討一下如何解決自動駕駛中的運動預(yù)測問題。
大概在幾個月前,lyft在kaggle平臺上組織了一個比賽[1]:Lyft Motion Prediction for Autonomous Vehicles,旨在用算法預(yù)測自動駕駛汽車周圍的交通參與者的運動軌跡。
比賽剛啟動時我還躍躍欲試,把數(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ù)測方法分):
在數(shù)據(jù)上,自動駕駛場景中的主流開源數(shù)據(jù)集對比如下,其中能用于軌跡預(yù)測的數(shù)據(jù)包括nuScenes、ApolloScape Trajectory、Argoverse Forecasting和Ours(指的是本次比賽中使用的lyft新開源的數(shù)據(jù)集):
lyft數(shù)據(jù)集的數(shù)據(jù)采集車如下圖左所示,其中感知部分包括3個Lidar(一個車頂64線10Hz,兩個前保險杠40線)和7個Camera(下圖右,都在車頂)、5個Radar(4個位于頂部,一個位于前保險杠)。
由20輛配備了同等傳感器的數(shù)據(jù)采集車,從2019年10月到2020年3月,采集到到數(shù)據(jù)包括:
1. 17萬個場景,每個場景25秒,通過感知傳感器捕捉自車狀態(tài)、自車周圍的交通參與者(騎車人、行人、車輛)狀態(tài)和交通燈狀態(tài);
2. 高精度語義地圖,包括(詳見下表):車道邊界、車道連接性、行駛方向、道路類型、道路材料、道路限速、車道限制、人行橫道、交通燈、交通標志、限制區(qū)域、減速帶;
3. 高分辨率的衛(wèi)星圖片,覆蓋74平方公里區(qū)域,由181個GeoTIFF切片構(gòu)成,每個切片大小10560 x 10560 像素(640 x 640 米)??捎糜谳o助預(yù)測。
數(shù)據(jù)集的數(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)星圖(左下);
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ī)劃上也會見到相同的趨勢。
參考資料:
[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)推薦閱讀】