Social-lstm算是比较出名的行人轨迹预测方法了。2016年CVPR的论文,在这个领域已经算是比较古老的方法了,但是许多后续论文都是受到这篇文章的启发,被引量达到了120。想研究轨迹预测,这是相当不错的一个入门文章,而且网上的代码复现也比较齐全。这篇文章同时整合了行人自身轨迹和周围人群影响,把每个人看作lstm,在每个时刻把每个人周边的人的lstm隐状态拿出来做一个pooling, 这样就能体现这种动态的行人互动。
本文 Social LSTM: Human Trajectory Prediction in Crowded Spaces,来自
https://www.researchgate.net/publication/311611429_Social_LSTM_Human_Trajectory_Prediction_in_Crowded_Spaceswww.researchgate.net可以看到,黑色agent的lstm隐状态受到周围点的影响,这种影响通过s-pooling输入到下一阶段的lstm。
h是上一阶段的隐状态,1mn[]是计算其他点是否处在在一定范围内的indicator。这个式子相当于点黑点周围相关点的隐状态收集起来了,黑点的新状态是h
其中e是坐标信息,a是周围人的状态。最后出来的高维向量符合双变量高斯分布,看来这个套路很符合轨迹预测,然后利用这个分布画轨迹热力图。下图是pooling的示意图
作为对比试验,作者只pooling周围点坐标进来(O-LSTM),结果发现可以实现agent被避碰,但是和ground truth还是有差距。如下是各种方法在不同数据库上的对比
可以看出在实时更新状态的过程中,预测会更接近ground truth(实线)
从下图可以看出来这个模型在某种情况下产生的错误预测。个人对想法:影响行人走动主要是行人眼前的东西,以行人为中心做pooling可能不是最好的办法,因为身后的人的速度方向都不会影响他,因此需要考虑这个人前方区域比如模拟视线的扇形做pooling才是更合理的选择,笔者打算亲自实战一番看一看是否能有改进。过两天会再写一个socisl-lstm代码的解读。