文献及代码阅读报告 - SS-LSTM:A Hierarchical LSTM Model for Pedestrian Trajectory Prediction...

本文主要是介绍文献及代码阅读报告 - SS-LSTM:A Hierarchical LSTM Model for Pedestrian Trajectory Prediction...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1616500-20190808233230913-1040141317.png

概览

简述

SS-LSTM全称Social-Scene-LSTM,是一种分层的LSTM模型,在已有的考虑相邻路人之间影响的Social-LSTM模型之上额外增加考虑了行人背景的因素。SS-LSTM架构类似Seq2Seq,由3个Encoder生成的向量拼接后形成1个Decoder的输入,并最终做出轨迹预测,有关Encoder和Decoder具体细节下文介绍。

主要结论与贡献

  1. 提出了SS-LSTM分层模型,相较于其他LSTM-based模型在benchmark数据集上有更好表现。
  2. 引入了圆形的neighborhood划分方式,经过实际对比得出log圆形区域划分相交线性圆形划分和矩形划分有更好表现。

测试

  1. 数据集:ETH、UCY(采用Alahi等人提出Social LSTM时使用的数据集,位置信息经过了归一化处理)。

  2. 测试指标:FDE、ADE

  3. 测试对象:

    1. baseline:linear、Vanilla LSTM

    2. LSTM-based:S-LSTM(g,c,l),SS-LSTM(g,c,l)

      g: grid maps, c:circle maps, l: log maps(区别在于区域形状和划分标准不同)

进一步研究方向

  1. 增加行人的影响权重,例如依据行人间的距离。(此文采用的neighborhood矩阵是Occupancy Tensor而不是Social Tensor,在模型开始跑之间可以完全求出,即每个行人的LSTM数据在运行中不会交叉。详情请见https://www.cnblogs.com/sinoyou/p/11227348.html)
  2. 为模型加入空间-时间的注意力机制。
  3. 为模型加入新网络以学习其他因素,例如场景中行人之间的舒适距离。


模型

整体框架

1616500-20190808233246054-1482220918.png

[注意]:图示来自论文,查阅模型代码后发现部分连线有误导性,详情见下一节。


1. Person Scale LSTM Encoder

描述:对于行人\(i\)编码其自身的轨迹序列

模型输入:\(X_{obs}^i = [(x_1^i,y_1^i), ..., (x_{obs}^i,y_{obs}^i)]\)

模型迭代:\(p_t^i = LSTM_l^{enc}(p_{t-1}^i, x_t^i, y_t^i, W_1)\)

2. Social Scale LSTM Encoder

描述:对于行人\(i\)编码其邻近行人的信息矩阵序列

模型输入:Occupancy Map \(O_t^i\)

  • Occupancy对于每个行人在每个时间片刻都是不同的。
  • \(O_t^i(a,b) = \Sigma_{j \in N^i} \alpha_{ab}(x_t^j, y_t^j)\) (其中\(\alpha(.,.)\)是判断函数,根据行人\(j\)是否处在\(i\)编号为\([a,b]\)的区域内,映射至真值域)。
  • 本文注重讨论了三种判断函数:
    • 方形图
    • 线性半径的圆形图
    • log半径的圆形图

模型迭代:\(s_o^{i,t} = LSTM_2^{enc}(s_o^{i,t-1}, O_i^t, W_2)\)

3. Scene Scale Encoder

描述:对于行人\(i\)编码其所处图像背景信息。

模型输入:Scene Feature \(F_t\)

  • 从图片到LSTM的输入\(F_t\),需要使用CNN网络提取特征。
  • CNN网络同其他LSTMs共同训练,包含三层带池化的卷积层,两层全连接层和防止过拟合的Batch Normalization层。

1616500-20190808233300688-1991439045.png

模型迭代:\(s_c^{i,t} = LSTM_3^{enc}(s_c^{i,t-1}, F_t, W_3)\)


4. Decoder

描述:根据三个Encoder编码出的向量进行解码,做出轨迹预测。

模型输入:将来自Person Scale,Social Scale,Scene Scale编码器的输入拼接。

  • \(h_i^t = \varphi(p_t^i, s_o^{i,t}, s_c^{i,t}) = p_t^i \oplus s_o^{i,t} \oplus s_c^{i,t}\)
  • [注意]:原文描述与源代码实现存在出入,原文\(h_i^t\)的计算部分是\(1<=t<=obs\),但源代码并不是这样实现的,详情请见下文。

模型迭代:

\[\hat h_t^i = LSTM^{dec}(\hat h_{t-1}^i, h_t^i, W_d)\]

\[(\hat x_i^t, \hat y_i^t) = W_o\hat h_t^i + b_o \]

[注意]:与Social LSTM,Spatio-Temporal Attention Network等不同的是,SS-LSTM模型的decoder输出不再是基于高斯二维分布,而是直接将Decoder的输出经线性变换后即得到预测轨迹的坐标值



SS-LSTM模型细节内容探讨

在阅读SS-LSTM的原文时由于阅读能力不足/文章描述不充分导致对模型部分细节存在疑惑,好在原文中提供了模型的源代码,因而解答了这些疑惑,在此做一些记录。若笔者理解存在问题,恳请批评指正。

Question 1

模型训练时的损失函数?

模型对于Decoder的输出并未采用二维高斯分布的假设,因此无法使用negative log-likelihood作为损失函数。经过笔者阅读,尚未在原文中发现有关损失函数的描述,在源代码中损失函数采用Mean Square Error。


Question 2

对于Decoder的LSTM,其每步迭代过程中的输入是什么?

原文有指明Decoder每步运行的输入:\(h_i^t = \varphi(p_t^i, s_o^{i,t}, s_c^{i,t}) = p_t^i \oplus s_o^{i,t} \oplus s_c^{i,t}\)(即对应的三个encoder每一步输出的拼接值),但放在实际情况中存在几个矛盾:

  • \(obs\_length < pred\_length\),则没有足够的\(h_i^t\)可以提供。
  • 即使有足够的\(h_i^t\),decoder最多能够预测到\(obs\_length+1\)时刻的位置,因为若要预测\(obs\_length+2\)则需要三个encoder提供对应信息,而实际上又无法提供。

根据查阅源代码,模型中Decoder每运行一步时输入都是一样的,为person scale, social scale, scene scale三个Encoder最终一次输出拼接得到的向量。这是一种Seq2Seq模型中较为简单的模型,在解码时都没有使用Decoder上一步的输出作为输入。

model = Sequential()
model.add(Merge([scene_scale, group_model, person_model], mode='sum'))
model.add(RepeatVector(predicting_frame_num))   # 复制拼接向量,使decoder每步输入都一致。
model.add(GRU(128,input_shape=(predicting_frame_num, 2),batch_size=batch_size,return_sequences=True,stateful=False,dropout=0.2))

因此回到上文中文中所给出的SS-LSTM模型的整体结构(见下图),连接线展现出三个Encoder每步运算后得到的输出都参与了Decoder输入的拼接,但这与源代码是存在矛盾的

1616500-20190808233246054-1482220918.png


Question 3

通过CNN抽取的背景图像特征\(F_t\),是否需要有下标t?(是否需要虽时间发生变化)

严格来说是需要的,但是由于Scene Scale主要用于捕获图像的非行人特征,而不同时间段图像特征的差异主要在行人,因此\(LSTM_3^{enc}\)的每一步输入可以是一致的,源代码中采用这种思路,即对于每个行人的轨迹预测,抹去了图像特征的时间因素

scene_scale = CNN(dimensions_1[1], dimensions_1[0])
scene_scale.add(RepeatVector(tsteps)) # 复制CNN输出tsteps=obs_length次,使lstm每步输入相同
scene_scale.add(GRU(hidden_size,input_shape=(tsteps, 512),batch_size=batch_size,return_sequences=False,stateful=False,dropout=0.2))


Question 4

圆形的邻近区域的数据存储方式?

如下图,对于矩形区域,Occupancy Map的形状为[4,4]或[4x4];而对于圆形区域,Map可按照自行编码习惯映射为矩阵或向量,例如,以半径为第一维度,圆角为第二维度,则Map形状为[3,4]或[3x4]

1616500-20190808233332222-591505476.png

Article:

H. Xue, D. Q. Huynh and M. Reynolds, "SS-LSTM: A Hierarchical LSTM Model for Pedestrian Trajectory Prediction," 2018 IEEE Winter Conference on Applications of Computer Vision (WACV), Lake Tahoe, NV, 2018, pp. 1186-1194.

Code - implemented with keras:

  • link: https://github.com/xuehaouwa/SS-LSTM
  • The codes is not complete: datasets, self-defined function, program entry of train & sample and etc. So codes are not directly runnable.

转载于:https://www.cnblogs.com/sinoyou/p/11324571.html

这篇关于文献及代码阅读报告 - SS-LSTM:A Hierarchical LSTM Model for Pedestrian Trajectory Prediction...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268839

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd