[论文阅读笔记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. 实验

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[JavaScript游戏开发] 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 文章目录 系列文章目录前言一、本章节效果图二、介绍2.1、准备地图素材2.2、封装地图上…

前端食堂技术周刊第 91 期:2023 npm 状态、TC39 会议回顾、浏览器中的 Sass、React 18 如何提高应用程序性能

美味值:🌟🌟🌟🌟🌟 口味:茶椰生花 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…

Spring核心概念、IoC和DI的认识、Spring中bean的配置及实例化、bean的生命周期

初始Spring 一、Spring核心概念1.1IoC(Inversion of Contral):控制反转1.2IoC代码实现1.2DI代码实现 二、bean的相关操作2.1bean的配置2.1.1bean的基础配置2.1.2bean的别名配置2.1.3bean的作用范围配置 2.2bean的实例化 - - 构造方法2.3bean的实例化 - - 实例工厂与…

【软件测试】webdriver常用API演示(Java+IDEA+chrome浏览器)

1.元素定位方法 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名&#xf…

粘包处理的方式

为什么出现粘包: 发送端在发送的时候由于 Nagel 算法的存在会将字节数较小的数据整合到一起发送,导致粘包;接收端不知道发送端数据的长度,导致接收时无法区分数据; 粘包处理的方式: 通过在数据前面加上报…

flask 实现简单的登录系统demo

你提供的代码是一个基本的Flask应用程序,实现了一个简单的登录系统。以下是代码的详细解释: 1. 导入必要的模块:os 用于生成密钥,Flask 用于创建Web应用程序。 2. 创建Flask应用程序的实例,并为会话管理设置一个密钥。…

如何提高自动化测试覆盖率

实施自动化测试最重要的就是要保证其可用性,而不少同学写了不少自动化测试用例,但感觉到其可用性不高。究其原因,不是自动化测试本身的问题,是实施自动化测试的时候没有考虑周全。 第一,不合事宜地引入自动化测试 在公…

C++ | 红黑树以及map与set的封装

目录 前言 一、红黑树 1、红黑树的基本概念 2、红黑树相关特性 3、红黑树结点的定义 4、红黑树的查找 5、红黑树的插入 6、二叉树的拷贝构造与析构 7、红黑树的检测 8、红黑树总结 二、map与set的封装 1、红黑树的结点 2、红黑树迭代器 3、set的封装 4、map的封…

一、前端高德地图注册、项目中引入、渲染标记(Marker)and覆盖物(Circle)

首先说明一下,下面的流程只是个人摸索and看文档梳理出来的,并不作为完全正确的流程。 首先,注册 高德开放平台 没有注册的可以点击右上角点击注册; 我们点个人的就ok; 信息完善之后我们到控制台,点击 应…

使用Feign出现空指针异常

说明:本文记录一次偶然出现的空指针异常,在微服务架构中,一个服务在调用另一个服务时,出现了空指针异常。 业务描述:在做订单超时功能时,大家都知道,可以使用RabbitMQ延迟队列,下单…

二、SQL-6.DCL-2).权限控制

*是数据库和表的通配符,出现在数据库位置上表示所有数据库,出现在表名位置上,表示所有表 %是主机名的通配符,表示所有主机。 e.g.所有数据库(*)的所有表(*)的所有权限(a…

关于Docker的基本概念和使用

关于Docker的基本概念和使用 一、Docker 概述1、Dcker的概念2、容器的优势3、Docker与虚拟机的区别4、容器在内核中支持2种重要技术5、Docker核心概念 二、安装 Docker1、安装依赖包2、设置阿里云镜像源3、安装 Docker-CE并设置为开机自动启动3、查看 docker 版本信息4、docker…

程序员,必须要知道的热门开源项目!

🏆 文章目标:了解热门开源项目 🍀 入门篇:程序员,必须要知道的热门开源项目! ✅ 创作者:熊猫Jay ✨ 个人公众号: 熊猫Jay字节之旅 (文末有链接) 🍁 展望:若本篇讲解内容帮助到您,请帮…

Java并发编程面试题

Author 郑金维 并发编程面试题1 一、原子性高频问题: 1.1 Java中如何实现线程安全? 多线程操作共享数据出现的问题。 锁: 悲观锁:synchronized,lock乐观锁:CAS 可以根据业务情况,选择ThreadLocal&am…

PHP 3des加解密新旧方法可对接加密

一、旧3des加解密方法 <?php class Encrypt_3DES {//加密秘钥&#xff0c;private $_key;private $_iv;public function __construct($key, $iv){$this->_key $key;$this->_iv $iv;}/*** 对字符串进行3DES加密* param string 要加密的字符串* return mixed 加密成…

配置IPv4 over IPv6隧道示例

IPv4 over IPv6隧道&#xff1a; 在IPv4 Internet向IPv6 Internet过渡后期&#xff0c;IPv6网络被大量部署后&#xff0c;而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道&#xff0c;从而实现IPv4孤岛的互联&#xff0c;IPv4孤岛能通过IPv6公…

基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

文章目录 前言1. 电路原理图理解2. 基本定时器2.1 STM32定时器中断的流程&#xff1a;2.2 部分参数详解2.2.1 时钟源2.2.2 预分频系数2.2.3 自动重装载值 3. STM32CubeMX参数配置3.1GPIO配置3.2 时钟配置3.2 配置定时器相关参数3.3 Debug配置3.4 中断配置3.5 代码生成 4. keil代…

关于Java中的Lambda变量捕获

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 目录 一、Lambda表达式语法 二、Lambda中变量捕获 一、Lambda表达式语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } Lambda表达式由三部分组成&a…

小米新专利曝光:解决升降摄像头痛点,隐藏式摄像头指日可待

根据国家知识产权局官方网站的最新消息&#xff0c;小米移动软件公司的“摄像头隐藏式电子设备及隐藏式摄像头”的专利申请在今天获得了授权。 这款电子设备的主要组成部分包括壳体、摄像模组和可伸缩的反射组件。壳体上设有一个开口&#xff0c;可以让反射组件向外伸出。反射组…

美容店预约小程序制作教程详解

现在&#xff0c;制作一个专属于美容店的预约小程序不再需要编程经验&#xff0c;通过乔拓云网提供的后台管理系统&#xff0c;你可以轻松地完成整个制作过程。下面&#xff0c;我将为你详细介绍如何DIY一个美容店预约小程序。 首先&#xff0c;登录乔拓云网的后台管理系统&…