这篇文章的三个主要亮点就是:lstm的encoder和decoder,用cnn抓住局部车辆相对位置来弥补lstm不能感知相对位置的缺点,以及把驾驶行为量化成六个并且计算分布。本文的前题是只考虑基于公路中心线的横向位移以及沿着公路的加速减速,所以路的弧度并不影响模型。因此作者得以把每辆车的前后一定距离单独拿出来,看下这个区域里面其他车辆的相对位置。Convolutional Social Pooling for Vehicle Trajectory Prediction,来自
https://arxiv.org/pdf/1805.06771.pdfarxiv.org、
主要优化的地方如下
其中X是车辆历史轨迹,mi是不同的驾驶行为,Y是预测轨迹,θ是双变量高斯分布的参数。用白话来说就是,整出来一个encoder-decoder系统,能根据输入进来的信息(预测车辆的历史轨迹+周围车辆轨迹),给出预测车辆将要做什么行为以及这个行为每帧轨迹轨迹的分布。我认为这个多行为分类是一个比较好的思路,试想下如果没有分成这些刹车,左转,右转行为,你的decoder搞出来的就是在一个分布上预测车辆轨迹。提亲预设这些行为相当于人工解耦,因为车辆就这么几个行为,这样每个行为都有一个分布,只要数据足够,训练难度和精度都会改善。下面来看下网络结构
车辆的历史轨迹输入共享参数的lstm,再根据最后的位置进行两次卷积操作一次max-pooling,然后和需要预测的车辆通过lstm得出的向量连接,然后用两个softmax得出横向和纵向分别的行为,同时lstm decoder生成每一帧轨迹分布的mean和dev。这样轨迹就出来了。
在训练中,由于ground truth每次知识一种行为,所以实际需要最小化的是下面这个式子
再思考下训练中的loss问题,不能使用距离loss,因为很多时候超车等动作在左右两边都是可以的(不考虑交通法则)。比如模型向左变道并且加速。Ground truth是向右边到并且加速,实际上是差不多的。因此本文使用了负log-likelyhood(交叉熵代价函数)进行计算。
从表格结果可以看出来negative log-likelyhood在多行为训练模式下比距离计算要好,总体最优体现在NLL多行为方法。
这些带有颜色的图是概率分布图画出来的,可以看到如果划分多模态的时候,车辆的行为包括了横向和纵向的,相比于单纯轨迹预测更加真实。作者又对比了加cnn和单纯全连接encoder的性能,发现cnn结构下对于更长时间的预测error上升率要小
这里提一下认为可以改进的地方,也就是cnn的方式,可以看到cnn是根据车辆最后的位置进行卷积的,如果一辆车飞快地从这些车流穿过,最后距离预测车辆的位置比较远,但是对于预测车辆有个很大的影响,这个情况下cnn是无法感知到。如果能在所有车辆lstm每个cell之间搞点事情,是可以的。直白讲,本文结构把握住了相对位置,但是对于相对位置的变化并没有做出很好的解释。