[论文阅读笔记24]Social-STGCNN: A Social Spatio-Temporal GCNN for Human Traj. Pred.


论文: 论文地址

代码: 代码地址

作者在这篇文章中直接用GNN对目标的轨迹时空特征进行建模, 并用时序CNN进行预测, 代替了训练难度较大和速度较慢的RNN类方法.


0. Abstract

行人轨迹预测是一个比较有挑战性的任务, 有着许多的应用. 一个行人的轨迹不仅是由自己决定的, 而且受其周围目标的影响. 过去的方法都是学习每个行人自己的运动状态, 然而本文的方法是用一个GNN对整个场景的行人之间的interaction进行建模. 本文提出的方法叫Social-STGCNN, 是在STGCNN(一个基于骨架的action recognization的方法) 的基础上拓展到轨迹预测任务中的.

1. Introduction

过去的一些方法(例如Social-LSTM)是对每一个行人, 都分配一个循环结构的神经网络(lstm)来预测轨迹. 此外也有一些方法利用GAN来去生成未来的轨迹. 但是作者认为, 这些方法的训练成本都是相当高的, 能不能用一个统一的网络, 对行人之间的interaction进行建模.

作者还另起一段在道理上分析了为什么过去的网络是次优的. 主要是如下两个方面:

  1. 对每个行人用单独的网络进行预测, 并用池化来衡量行人之间的interaction. 这种方式是缺乏可解释性的. 相比之下, 本文用graph这种天然能够衡量节点之间关系的结构就具有了直观的可解释性.
  2. 池化会对信息造成损失.

因此, 作者提出了Social-STGCNN以解决上面的两个问题. 作者用一个具有时空(spatial-temporal)信息的GNN来衡量interaction, 并且显式地建模目标之间的影响力, 以此组成邻接矩阵, 然后用图卷积进行进一步的特征提取. 最后, 作者采用时序CNN来预测轨迹.

2. Related Work

这部分主要包含三个方面: 轨迹预测过去的工作, 图卷积的工作和时序CNN的工作.

3. Method

整个的Social-STGCNN由两部分组成, 一个是提取时空特征的STGCNN部分, 一个是预测轨迹的时序CNN(TXP-CNN)部分.

3.1. 空域建图

对于第 t t t帧, 我们考虑为第 t t t帧建图 G t = ( V t , E t ) G_t=(V_t,E_t) Gt=(Vt,Et). 我们以每个点在画面中的坐标表示为节点特征:

V t = { v t i } ∣ i = 1 N , v t i = ( x t i , y t i ) V_t = \{v_t^i\}|_{i=1}^N, ~~v_t^i=(x_t^i, y_t^i) Vt={vti}i=1N,  vti=(xti,yti)

e t i j e_t^{ij} etij仅仅表示节点 i i i j j j之间是否相连. 然而, 对于邻接矩阵 A t = [ a s i m , t i j ] A_t=[a_{sim, t}^{ij}] At=[asim,tij]的构造, 是通过节点之间的欧氏距离定义的:

在这里插入图片描述

在建图之后, 我们就可以通过图卷积层来得到更新的node features了. 图卷积的公式如下:

在这里插入图片描述
其中 B ( ⋅ ) B(\cdot) B()表示邻居节点的集合, p ( ⋅ ) p(\cdot) p()表示聚合函数, w ( ⋅ ) \mathbf{w}(\cdot) w()表示卷积核.

注意 B ( ⋅ ) B(\cdot) B()是通过最短路定义的:

B ( v i ) = { v j ∣ d ( v i , v j ≤ D ) } B(v^i) = \{v^j|d(v^i, v^j\le D)\} B(vi)={vjd(vi,vjD)}

其中 d d d表示最短路.

3.2. 时域建图

我们对每一帧进行上面的建图, 对于 T T T帧, 就可以得到一个时空图 G = ( V , E ) G=(V,E) G=(V,E). 其中 V = { v i } V=\{v^i\} V={vi}, v i = { v t i } ∣ t v^i=\{v_t^i\}|_t vi={vti}t. 边同理. 邻接矩阵也同理.

3.3. 轨迹预测

在得到时空的节点嵌入特征后, 时序CNN从时间维度对该嵌入进行特征提取即可预测未来的轨迹.

整个框图如下:

在这里插入图片描述

3.4. 具体实现

在实现时, 需要将图利用图的Lapalace矩阵进行归一化, 然后在进行卷积. 这是常规做法, 如下式:

A t = Λ t − 1 / 2 ( A t + I ) Λ t 1 / 2 , Λ t = d i a g ( A t ) A_t = \Lambda_t^{-1/2}(A_t+I)\Lambda_t^{1/2}, \Lambda_t = diag(A_t) At=Λt1/2(At+I)Λt1/2,Λt=diag(At)

4. 实验

在消融实验部分, 作者比较了以下三种构造邻接矩阵的方式, 发现还是朴素的欧氏距离最好:

在这里插入图片描述
通过以下实验对比, 发现速度确实快很多:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品设计思考:如何平衡用户习惯和用户体验

在产品设计领域,平衡用户习惯与用户体验之间的关系是一个重要而复杂的任务。 用户习惯是指用户在长期使用产品过程中逐渐形成的一种行为模式,而用户体验则是用户在与产品交互时所感受到的整体感受。 在追求良好的用户体验的同时,还需要考虑用…

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二Python代码分析

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二 相关链接 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析 【2023 年第二届钉钉杯大学生大数据挑…

进阶级!美创暗数据发现和分类分级系统获中国信通院权威测评

近日,美创科技暗数据发现和分类分级系统顺利通过中国信通院“数据分类分级能力检验进阶级”认证,获颁数据安全产品检验证书。 数据分类分级进阶级评测通过主动探测识别率、被动探测识别率、用户相关数据识别准确率、分级标识准确率等技术指标的检测&…

AMEYA360代理线:ROHM开发出EcoGaN™减少服务器和AC适配器等的损耗和体积!

全球知名半导体制造商ROHM(总部位于日本京都市)面向数据服务器等工业设备和AC适配器等消费电子设备的一次侧电源*1,开发出集650V GaN HEMT*2和栅极驱动用驱动器等于一体的Power Stage IC“BM3G0xxMUV-LB”(BM3G015MUV-LB、BM3G007…

【C++】继承

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

了解Unity编辑器之组件篇Video(二)

Video Player组件:用于在游戏中播放视频的组件。它提供了一系列属性来控制视频的播放、显示和交互。 1.Source(视频源):用于指定视频的来源。可以选择两种不同的视频源类型: (1)Vieo Clip&#…

RDIFramework.NET CS敏捷开发框架 V6.0发布(支持.NET6+、Framework双引擎,全网唯一)

全新RDIFramework.NET V6.0 CS敏捷开发框架发布,全网唯一支持.NET6,Framework双引擎,降低开发成本,提高产品质量,提升用户体验与开发团队稳定性,做软件就选RDIFramework.NET开发框架。 1、RDIFramework.NET…

《网络是怎样连接的》(二.1)

(83条消息) 《网络是怎样连接的》(一)_qq_38480311的博客-CSDN博客 本文主要取材于 《网络是怎样连接的》 第二章。 目录 (1)创建套接字 (2)连接服务器 (3)收发数据 &#xf…

jdk,jre和jvm三者的关系和区别

目录 一、三者的关系 二、JDK的概念 三、JRE的概念 四、JVM的概念 五、三者区别 一、三者的关系 从图中可以清楚地看到,他们之间的关系是JDK包含JRE, JRE又包含JVM。 因此,JDK包含JRE和JVM。 JDK JRE Java 开发工具包 [Java,Javac,Javadoc,Javap…

【stm32L152】段码屏驱动注解、MX_LCD_Init()初始化失败的解决方法

文章目录 断码屏驱动补充MX_LCD_Init()驱动初始化失败 断码屏驱动补充 已经有大神写过较详细的教程:https://blog.csdn.net/CSDN_Gao_16/article/details/115463499,但这篇博文仍然比较抽象,我看了好多遍才看明白-_-||,为了节省和…

【Java基础教程】(四十四)IO篇 · 上:解析Java文件操作——File类、字节流与字符流,分析字节输出流、字节输入流、字符输出流和字符输入流的区别

Java基础教程之IO操作 上 🔹本节学习目标1️⃣ 文件操作类:File2️⃣ 字节流与字符流2.1 字节输出流:OutputStream2.2 字节输入流:InputStream2.3 字符输出流:Writer2.4 字符输入流:Reader2.5 字节流与字符…

电脑新装系统优化,win10优化,win10美化

公司发了新的笔记本,分为几步做 1.系统优化,碍眼的关掉。防火墙关掉、页面美化 2.安装必备软件及驱动 3.数据迁移 4.开发环境配置 目录 目录复制 这里写目录标题 目录1.系统优化关掉底部菜单栏花里胡哨 2.安装必备软件及驱动新电脑安装360 1.系统优化 关掉底部菜单…

es通过rest接口_search、_delete_by_query查询与删除数据

1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式: {"query": {"wildcard": {"accountID": {"value": "v*"}}} }postman请求截图: 2、使用Rest接口删除数据 …

re学习(23)BUUCTF 刮开有奖(中间变量的获取)

INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {const char *v4; // esiconst char *v5; // ediint v7[2]; // [esp8h] [ebp-20030h] BYREF 虽然看名称不连续,但是通过看偏移地址,可知,这些变量在内存中是连续的&…

iOS--属性关键字

定义 chat: 在iOS开发中,属性关键字是用于声明类的属性(实例变量)的修饰符。属性关键字可以影响属性的访问权限、内存管理和生成相关的getter和setter方法。 属性关键字有哪些? 分类属性关键字原子性atomic、nonato…

Android ConstraintLayout使用攻略

原文链接 Android ConstraintLayout使用攻略 ConstraintLayout是新一代的布局,它汲取了众家之长,把布局的概念进行了大统一,灵活且强大,基本上可以干掉以前所有的常用布局(LinearLayout, RelativeLayout和FrameLayout…

【重点:单例模式】特殊类设计

请设计一个类,只能在堆上创建对象 方式如下: 将构造函数设置为私有,防止外部直接调用构造函数在栈上创建对象。向外部提供一个获取对象的static接口,该接口在堆上创建一个对象并返回。将拷贝构造函数设置为私有,并且…

webrtc QOS方法二.4(flexfec 实现可优化点)

一、冗余报文和媒体报文组织结构优化点 以单帧10个媒体报文,冗余度20%为例。这里webrtc输出要有10个媒体包2个冗余包。webrtc输出的报文序列如下: 代码实现如下: UlpfecGenerator::AddPacketAndGenerateFec:攒够足够的帧 Forwar…

【Kafka源码走读】Admin接口的客户端与服务端的连接流程

注:本文对应的kafka的源码的版本是trunk分支。写这篇文章的主要目的是当作自己阅读源码之后的笔记,写的有点凌乱,还望大佬们海涵,多谢! 最近在写一个Web版的kafka客户端工具,然后查看Kafka官网,…

Android 屏幕适配各种宽高比的手机

由于android 手机的屏幕宽高比样式太多了,在设计UI时,很多时候,会因为宽高比,分辨率不同会有展示上的差异。 我是这样解决的 在activity的onCreate方法前,调用: fun screenFit(context: Context) {val me…