看了轨迹预测比赛公开的获胜方案,我发现……

在仔细阅读了所有到目前已公开的比赛top-20解决方案后,以较为粗的视野,探讨一下如何解决自动驾驶中的运动预测问题

大概在几个月前,lyft在kaggle平台上组织了一个比赛[1]:Lyft Motion Prediction for Autonomous Vehicles,旨在用算法预测自动驾驶汽车周围的交通参与者的运动轨迹。

图源[1]

比赛刚启动时我还跃跃欲试,把数据下载了准备训练一波,无奈却被后续无比忙碌的工作和学习给耽搁了。在比赛结束后,心有不甘的我仔细阅读了截至目前已经公开的top-20解决方案,以较为粗的视野,和大家共同探讨一下如何解决自动驾驶中的运动预测问题。

01 问题定义和数据集

自动驾驶中的运动预测或轨迹预测,在这里我们定义为

给定

交通参与者(例如行人、骑车人、车辆)在过去一段时间的路径/轨迹

道路信息(例如道路结构、交通灯信息)

相关交通参与者过去一段时间对路径/轨迹

未来一段时间的(一段或多段可能)路径/轨迹

运动意图

占用格栅图

进行预测

上面这段文字便定义了问题的输入(“给定”部分)和输出(“对”部分),基于问题的定义,现存的研究有诸多方法,传统的方法如:

1. 基于运动学和动力学的预测(如卡尔曼滤波),缺点在于没有考虑到环境中其他交通参与者对被预测目标运动的影响;

2. 考虑了环境因素的方法,如社会力模型、逆强化学习等。

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

1. 循环神经网络(RNN)方法,由于轨迹具有明显的时序信息,通过RNN对时间维度建模;

2. 卷积神经网络(CNN)方法,将轨迹和环境信息编码成图的形式(例如多通道的鸟瞰图),用CNN方法进行建模。在比赛中的baseline和大多数参赛者的方法均基于此;

3. 其他,例如图神经网络、RNN+CNN的结合等;

Deep Learning-based Vehicle Behaviour Prediction for Autonomous Driving Applications: a Review [2]一文中,对基于深度学习对轨迹预测方法进行了下图的分类(蓝色按输入类型分,绿色按输出类型分,灰色按预测方法分):

图源[2]

在数据上,自动驾驶场景中的主流开源数据集对比如下,其中能用于轨迹预测的数据包括nuScenes、ApolloScape Trajectory、Argoverse Forecasting和Ours(指的是本次比赛中使用的lyft新开源的数据集):

图源[3] lyft新开源数据集与其他数据集的对比

lyft数据集的数据采集车如下图左所示,其中感知部分包括3个Lidar(一个车顶64线10Hz,两个前保险杠40线)和7个Camera(下图右,都在车顶)、5个Radar(4个位于顶部,一个位于前保险杠)。

图源[3] 数据采集车的配置

20辆配备了同等传感器的数据采集车,从2019年10月到2020年3月,采集到到数据包括

1. 17万个场景,每个场景25秒,通过感知传感器捕捉自车状态、自车周围的交通参与者(骑车人、行人、车辆)状态和交通灯状态;

2. 高精度语义地图,包括(详见下表):车道边界、车道连接性、行驶方向、道路类型、道路材料、道路限速、车道限制、人行横道、交通灯、交通标志、限制区域、减速带;

图源[3] 高精度语义地图包含要素

3. 高分辨率的卫星图片,覆盖74平方公里区域,由181个GeoTIFF切片构成,每个切片大小10560 x 10560 像素(640 x 640 米)。可用于辅助预测。

数据集的数据整体统计情况见下表:

图源[3] 数据集的统计值


02 赢得比赛的技巧

由于kaggle比赛有其显著的局限性(例如参赛者往往不具备从事运动预测研究的背景、比赛时间也就短短2-3个月),导致一般而言,小概率事件在kaggle比赛中能产生出SOTA的新方法。大概率事件是,对一些论文中已有SOTA方法的运用,并针对赛题添加针对性的trick。

在这个赛道上,lyft官方公开了一个baseline方法 [4] (属于第一部分中介绍的基于CNN的方法),大致可以分为下面两个步骤:

1. 将轨迹和环境信息编码成多通道的鸟瞰图,根据编码信息的不同,可以有下图中的几种形式:语义图(右上)、卫星图(右下)、语义卫星图(左下);

图源[3] 左上图中红色色块为自动驾驶车辆(自车),黄色色块为其他交通参与者(他车);其余三图中绿色为自车,蓝色为他车

2. 将编码后的图(224 x 224大小,以目标车辆为中心)作为CNN的输入数据,基网络为ResNet-50,模型预测值为未来5秒内的一连串位置点。

由于这个官方baseline并不弱,并且为参赛选手提供了便利,因此大多数参赛者都是基于此进行了修改。从赛道上top解决方案[5]来看,有一些重要的修改技巧摘选如下(都是图像比赛的基本操作,但根据问题领域的不同有所调整):

1. 对样本的筛选:对训练样本进行筛选,使其与评测样本保持一致。例如在这个赛题中,评测样本基本在未来十帧都有数据,因此在训练样本筛选时也只保留有未来十帧数据的样本;

2. 对数据的编码:

a) 历史帧的数目:第一名方案中history_num_frames=30,即构建了66通道的“图像”输入,包括30通道自车运动历史轨迹、30通道他车运动历史轨迹、3通道语义地图、3通道卫星地图;

b) 其他可以实验的参数:例如“图像”的整体大小、“图像”每个像素点代表的物理范围;

3. 数据增强:

a) 图像级增强:如 cutout、模糊、下采样;

b) 栅格级增强:如 随机丢弃他车数据;

4. 对训练过程的加速:lyft官方提供的上述数据栅格编码过程复杂,一次训练中的大部分时间都耗费在CPU上的数据处理中。因此可以优化编码部分代码,解决CPU运算瓶颈,提升多GPU训练效率,有助于在比赛中快速实验;

5. 单模型的选择和训练:第一名方案:EfficientNetB3模型,先用低分辨率图像预训练4个epoch,而后从第5个epoch开始,在原图上用余弦退火和阶梯下降学习率的方式进行训练;

6. 多模型的融合:

a) 第一名方案:用不同的数据编码参数训练得到5个模型,用stacking方法进行融合;

b) 第四名方案:用GMM方法将多模型的多条轨迹采样并拟合成最终的三条轨迹;


03 总结

在看了已公开的部分top20解决方案后,稍微有一些失望的是:由于数据量太大,大部分参赛者的方法都没能得到充分的训练,因此往往在baseline模型上稍微调调参数、训练足够久、训练出来多个模型,便能够获得好的名次;

虽然用于参赛的方法和实际工程方法之间,或者和学术创新方法之间的差别还是很大,但对我个人而言也有一些启发:

1. 设计高效的、表征强的数据编码方式极为重要, 在比赛中证明了“先对轨迹和环境数据在鸟瞰图上渲染,后用CNN进行学习”的方法是有效的,但也暴露出编码过程有信息损耗(eg.每个像素的物理范围)、编码效率低的问题;

2. 使用VectorNet方法[6] (CVPR 2020),提出了更高效的编码方式和模型,在比赛中以极少的计算资源便取得了第十名的成绩。

言而总之,如下图所示,对于自动驾驶而言,感知得到交通参与者和环境的探测结果、基于感知结果对环境中交通参与者的行为预测、根据预测结果进行轨迹和路径规划,这三个环节将持续地被深度学习的方法重构。过往几年我们看的比较多的是感知部分,未来相信在轨迹预测和规划上也会见到相同的趋势。

图源[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 -

新朋友们可以看看我过往的相关文章

【相关推荐阅读】

PRML-14章-组合模型

多模态:自动驾驶中的多模态学习

NCP:19个神经元完成自动驾驶?

从2018到2020的AI发展预测

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容