siMLPe:Human Motion Prediction

Back to MLP: A Simple Baseline for Human Motion Prediction解析

  • 摘要
  • 1. 简介
  • 2. Related Work
    • 2.1 基于RNN的人体运动预测
    • 2.2 基于GCN的人体运动预测
    • 2.3 基于 Attention 的人类运动预测
    • 2.4 总结
  • 3. siMLPe
    • 3.1 离散余弦变换(Discrete Cosine Transform (DCT))
    • 3.2 网络架构
    • 3.3 Losses
      • 目标函数
  • 4. 实验
    • 4.1 数据集
    • 4.2 评价指标

论文地址:Back to MLP: A Simple Baseline for Human Motion Prediction
论文代码:https://github.com/dulucas/simlpe
论文出处:IEEE/CVF Winter Conference on Applications of Computer Vision (WACV),2023
论文单位:Grenoble INP,France

摘要

  • 本文解决了人体运动预测的问题,包括从历史上观察到的序列预测未来的身体姿势。
  • 然而,最先进的方法提供了良好的结果,它们依赖于任意复杂性的深度学习架构,例如RNN,Transformers或GCN,通常需要多个训练阶段和超过200万个参数。
  • 在本文中,我们表明,结合一系列标准实践,如应用离散余弦变换(DCT),预测关节的残余位移和优化速度作为辅助损失,基于多层感知器(mlp)的轻量级网络只有14万个参数可以超越最先进的性能。
  • Human3.6MAMASS3DPW数据集进行了验证,显示了我们的方法(siMLPe)始终优于所有其他方法。
  • 我们希望我们的简单方法可以为社区提供一个强有力的基线,并允许重新思考人体运动预测问题。

1. 简介

  • 给定一个三维人体姿态序列,人体运动预测任务的目的是预测姿态序列的后续动作
  • 预测未来人体运动是许多应用的核心,包括自动驾驶中的事故预防、跟踪人或人机交互。
  • 由于人体运动的时空性质,文献中常见的趋势是设计能够融合时空信息的模型。
  • 传统方法主要依赖于隐马尔可夫模型或高斯过程潜变量模型。
  • 然而,虽然这些方法在简单和周期性运动模式下表现良好,但在复杂运动下却明显失败。
  • 近年来,随着深度学习的成功,基于不同类型的神经网络开发了各种能够处理序列数据的方法。
  • 例如,一些工作使用 RNN 来建模人体运动,一些工作基于 GCN,一些工作基于Transformers,融合跨越人体关节和时间的运动序列的时空信息。
  • 然而,这些新方法的体系结构通常并不简单,其中一些方法需要额外的先验,这使得它们的网络难以分析和修改。
  • 因此,一个问题自然出现了:“我们可以用一个简单的网络来解决人类运动预测问题吗?
  • 为了回答这个问题,我们首先尝试了一个简单的解决方案,即重复最后一个输入姿势并将其用作输出预测。 如图1所示,这种朴素的解决方案已经可以获得合理的结果,这意味着最后一个输入姿势与未来的姿势“接近” (Repeating Last-Frame)。
    在这里插入图片描述
  • 受此启发,我们进一步只训练一个全连接层来预测未来姿势和最后一个输入姿势之间的残差,并获得更好的性能,这显示了建立在像全连接层这样的基础层上的简单网络用于人体运动预测的潜力 (One-FC)。
  • 基于上述观察,我们回到多层感知器(MLPs),并构建一个简单而有效的网络,称为siMLPe,只有三个组成部分: fully connected layers, layer normalization, and transpose operations. 网络体系结构如图2所示。
    在这里插入图片描述
  • 值得注意的是,我们发现即使是常用的激活层(如ReLU)也不需要,这使得我们的网络除了层归一化之外完全是线性模型。
  • 尽管简单,但当与三个简单的做法适当结合时,siMLPe可以实现强大的性能。这三个简单的做法分别为:应用离散余弦变换(DCT),预测关节的残余位移,优化速度作为辅助损失。
  • SIMLPE在几个标准数据集上产生了SOAT性能,包括Human3.6M,AMASS,和3DPW。
  • 同时,siMLPe是轻量级的,需要的参数比以前最先进的方法少20到60倍。
  • SIMLPE和以前的方法的比较可以在图1显示了不同网络在Human3.6M上1000 ms时的平均每个关节位置误差(MPJPE)与网络复杂性的关系。siMLPe以高效率达到最佳性能。
  • 综上所述,我们的贡献如下:
    (1)我们表明,人类运动预测可以以一种简单的方式建模,而无需明确融合空间和时间信息。作为一个极端的例子,单个全连接层已经可以达到合理的性能。
    (2)我们提出siMLPe,一个简单而有效的人体运动预测网络,只有三个组成部分: 全连接层、层归一化和转置操作,在多个基准测试(如Human3.6M,AMASS和3DPW数据集)上,以远少于现有方法的参数实现了最先进的性能。

2. Related Work

  • 人体运动预测是一种序列到序列的任务,将过去观察到的运动作为预测未来运动序列的输入。
  • 传统的运动预测方法都是非线性的,如马尔可夫模型、高斯过程动力学模型,和受限玻尔兹曼机。
  • 这些方法已被证明可以有效地预测简单的运动,但最终难以预测复杂和长期的运动。
  • 随着深度学习时代的到来,使用深度网络进行人体运动预测取得了巨大的成功,其中包括递归神经网络(Recurrent Neural networks, RNN),图卷积网络(Graph Convolutional networks, GCNs)和Transformers,这是本节的主要重点。

2.1 基于RNN的人体运动预测

  • 由于人体运动固有的顺序结构,一些工作解决了三维人体运动预测的循环模型。
  • 然而,该类方法受到RNN的多重固有限制。
  • 首先,RNN作为一个序列模型,在训练和推理过程中很难并行化。
  • 其次,内存约束阻止RNN从更远的帧探索信息。
  • 一些研究通过使用RNN变体、滑动窗口、卷积模型或对抗性训练来缓解这一问题。但是它们的网络仍然是复杂的,并且有大量的参数。

2.2 基于GCN的人体运动预测

  • 为了更好地编码人体关节的空间连通性,最近的工作通常是构建人体姿态为图(graph),采用图卷积网络(graph Convolutional Networks, GCNs)进行人体运动预测。

2.3 基于 Attention 的人类运动预测

  • 随着transformers的发展,一些作品试图用 Attention 机制来处理这一任务。

2.4 总结

  • 综上所述,随着近年来人体运动预测的发展,基于RNN/GCN/Transformer 的结构得到了很好的探索,结果得到了显著改善。
  • 虽然这些方法提供了良好的效果,但它们的架构变得越来越复杂和难以训练。
  • 在本文中,我们坚持简单的架构,并提出了一个基于MLP的网络
  • 我们希望我们的简单方法可以作为一个baseline,让社区重新思考人体运动预测的问题。

3. siMLPe

  • 在本节中,我们将阐述问题,并在3.1节中给出DCT变换的公式,在3.2节中给出网络架构的细节,在3.3节中给出我们用于训练的损失。
  • 给定过去的3D人体姿势序列,我们的目标是预测未来的姿势序列。
  • 我们将观察到的三维人体姿势表示为 x_1:T ∈ RT×C,由 T 个连续的人体姿势组成,其中第 t 帧 x_t 处的姿势用 C 维向量表示,即:x_t∈ RC
  • 在本工作中,与之前的工作相似,x_t 为第 t 帧节点的三维坐标,C = 3 × K,其中 K 为节点个数。
  • 我们的任务是预测未来 N 个运动帧: x_T +1:T +N ∈RN×C

3.1 离散余弦变换(Discrete Cosine Transform (DCT))

  • 我们采用DCT变换对时间信息进行编码
  • 更精确地说,给定 T 帧的输入运动序列,DCT矩阵 D∈RT×T可以计算为:
    在这里插入图片描述
    其中δ_i,j表示Kronecker函数, δ_i,j 为:
    在这里插入图片描述
  • 离散余弦变换后的输入是:D(x_1:T) = Dx_1:T。
  • 我们应用**反向离散余弦变换(IDCT)**将网络的输出转换回原始姿态表示,表示为D-1和D的逆。

3.2 网络架构

  • 图2显示了我们网络的体系结构。我们的网络只包含三个组成部分: 全连接层、转置操作、层归一化
  • 对于所有的全连通层,它们的输入维数等于输出维数。
  • 形式上,给定一个三维人体姿势的输入序列 x_1:T ∈RT×C,我们的网络预测一个未来的姿势序列x_T+1:T+N ∈ RN×C:
    在这里插入图片描述
    F 表示我们的网络。
  • DCT变换后,我们应用一个全连接层,只对变换后的运动序列 D(x_1:T)∈RT×C空间维度进行操作:
    在这里插入图片描述
    其中z0∈RT×C为全连通层的输出。W0∈RC×C, b0∈RC表示全连通层的可学习参数。
  • 在实践中,这相当于对一个全连接层应用转置操作,然后将输出特征转置回去,如图2所示。
  • 然后,引入一系列 m 块,仅在时间维度上操作,即仅跨帧合并信息。
  • 每个块由一个全连接层组成,然后进行层规范化,表示为:
    在这里插入图片描述
    式中,zi∈RT×C, i∈[1,…, m] 表示第 i 个MLP块的输出。
    LN表示层归一化操作。
    Wi∈RT×T和 bi∈RT是第 i 个MLP块中全连通层的可学习参数。
  • 最后,与第一个全连接层类似,我们在MLP块之后再添加一个全连接层,只对特征的空间维度进行操作,然后应用IDCT变换得到预测结果:
    在这里插入图片描述
    其中W_m+1和 b_m+1是最后一个全连接层的可学习参数。
  • 注意长度 T 和 N 不需要相等当T > N时,我们只取预测的N个前帧,在T < N的情况下,我们可以通过重复最后一帧将输入序列填充到N。

3.3 Losses

  • 正如第1节中提到的,如图1所示,最后一个输入姿势与未来的姿势 “接近”。
  • 通过这种观察,我们让网络预测未来姿态 x_T+t 和最后输入姿态 x_T 之间的残差,而不是从头开始预测绝对3D姿态。 这简化了学习并提高了性能。

目标函数

  • 我们的目标函数 L 包括两项 Lre 和 Lv:
    在这里插入图片描述
  • Lre的目标是最小化预测运动 x_T+1:T+N 和真实运动x_T+1:T+N 之间的 L2 范数:
    在这里插入图片描述
  • Lv 的目的是最小化预测运动速度 v_T+1:T+N 与地面真实速度 vT+1:T+N之间的 L2 范数:
    在这里插入图片描述
    式中 v_T+1:T+N ∈RN×C, v_T表示第 t 帧的速度,用时间差计算: v_T = x_t+1−x_t。

4. 实验

4.1 数据集

  • Human3.6M
    Human3.6M包含7个演员表演15个动作,每个姿势标记32个关节。
    我们遵循测试协议,使用S5作为测试集,S11作为验证集,其他作为训练集。
    以前的工作使用了不同的测试采样策略,包括每个动作8个样本,每个动作256个样本或测试集中的所有样本。
    由于8个样本太少,取所有的测试样本无法平衡不同序列长度的不同动作,因此我们每个动作取256个样本进行测试,并在22个关节上进行评估。
  • AMASS
    AMASS是多个动作捕捉数据集的集合,使用统一的SMPL参数化。
    我们使用AMASS- bmlrub作为测试集,并将AMASS数据集的其余部分分成训练集和验证集。
    模型在18个关节上进行了验证。
  • 3DPW
    3DPW是一个包含室内和室外场景的数据集。
    一个姿势由26个关节表示,我们使用在AMASS上训练的模型评估18个关节来评估泛化。

4.2 评价指标

  • 本文使用三维关节坐标上的平均关节位置误差(Mean Per Joint Position Error,MPJPE)作为评价指标。这是评估3D姿态误差最广泛使用的指标。
  • 该度量计算预测和真实之间不同节点的平均L2 -范数。
  • 与之前的工作相似,我们忽略了姿态的全局旋转和平移,保持采样率为 25 FPS 的所有数据集。

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

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

相关文章

国产芯力特SIT1024QHG四通道本地互联网络(LIN)收发器,可替代TJA1024HG

SIT1024Q 是一款四通道本地互联网络&#xff08;LIN&#xff09;物理层收发器&#xff0c;符合 LIN 2.0、LIN 2.1、LIN 2.2、 LIN 2.2A 、 ISO 17987-4:2016 (12V) 和 SAE J2602 标准。主要适用于使用 1kbps 至 20kbps 传输速 率的车载网络。 SIT1024Q 通过 TXDx 引…

【LeetCode】打家劫舍||

打家劫舍|| 题目描述算法分析编程代码 链接: 打家劫舍|| 在做这个题之前&#xff0c;建议大家做一下这个链接: 按摩师 我的博客里也有这个题的讲解&#xff0c;名字是按摩师 题目描述 算法分析 编程代码 class Solution { public:int maxrob(vector<int>nums,int left,…

【C++】C语言基础部分知识点总结 (指针,函数,内存,关键字,预处理等)(秋招篇)

文章目录 前言讲一下32位系统常用数据类型的字节大小&#xff08;stm32f103为例&#xff09;讲一些C/C中常见的库什么是易变变量&#xff1f;代码的转化和构建通常会经历哪几个步骤&#xff1a;&#xff08;预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接&#xff09…

Elastic Stack 8.9:更快的跨集群搜索和指标聚合

作者&#xff1a;Tyler Perkins, Gilad Gal, Teresa Soler, Shani Sagiv, Bernhard Suhm, George Kobar Elastic Stack 8.9 在多个方面实现了显着的性能改进&#xff1a;Kibana 中更快的跨集群搜索、Elasticsearch 更快的聚合&#xff0c;以及更快、更相关的向量搜索&#xff0…

Android Studio实现刮刮卡效果

代码和刮刮乐图片参考网络 实现效果 MainActivity import android.app.Activity; import android.os.Bundle;public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVi…

【Java可执行程序命令】学习路线攻略,史诗级别全汇总 ~

Java可执行程序命令学习路线攻略 &#x1f4d7;文章指路Java可执行命令1、编译工具 javac2、程序启动工具 java3、API文档生成 javadoc4、反编译工具 javap5、打包部署工具 jar6、调试工具 jdb7、C头文件创建 javah8、JWS应用程序启动 javaws9、安装包创建 javapackager10、JAR…

Vue3状态管理库Pinia——自定义持久化插件

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

PostgreSQL和MySQL多维度对比

文章目录 0.前言1. 基础对比2.PostgreSQL和MySQL语法对比3. 特性4. 参考文档 0.前言 在当今的软件开发和数据管理领域&#xff0c;数据库是至关重要的基础设施之一。选择正确的数据库管理系统&#xff08;DBMS&#xff09;对于应用程序的性能、可扩展性和数据完整性至关重要。…

SpringBoot集成Logback日志

SpringBoot集成Logback日志 文章目录 SpringBoot集成Logback日志一、什么是日志二、Logback简单介绍三、SpringBoot项目中使用Logback四、概念介绍一、日志记录器Logger1.1、日志记录器对象生成1.2、记录器的层级结构1.3、过滤器1.4、logger设置日志级别1.5、java代码演示1.6、…

【论文阅读】Deep Instance Segmentation With Automotive Radar Detection Points

基于汽车雷达检测点的深度实例分割 一个区别&#xff1a; automotive radar 汽车雷达 &#xff1a; 分辨率低&#xff0c;点云稀疏&#xff0c;语义上模糊&#xff0c;不适合直接使用用于密集LiDAR点开发的方法 &#xff1b; 返回的物体图像不如LIDAR精确&#xff0c;可以…

API 测试 | 了解 API 接口概念|电商平台 API 接口测试指南

什么是 API&#xff1f; API 是一个缩写&#xff0c;它代表了一个 pplication P AGC 软件覆盖整个房间。API 是用于构建软件应用程序的一组例程&#xff0c;协议和工具。API 指定一个软件程序应如何与其他软件程序进行交互。 例行程序&#xff1a;执行特定任务的程序。例程也称…

Matlab滤波、频谱分析

Matlab滤波、频谱分析 滤波&#xff1a; 某目标信号是由5、15、30Hz正弦波混合而成的混合信号&#xff0c;现需要设计一个滤波器滤掉5、30Hz两种频率。 分析&#xff1a;显然我们应该设计一个带通滤波器&#xff0c;通带频率落在15Hz附近。 % 滤波 % 某目标信号是由5、15、3…

LVS工作环境配置

一、LVS-DR工作模式配置 模拟环境如下&#xff1a; 1台客户机 1台LVS负载调度器 2台web服务器 1、环境部署 &#xff08;1&#xff09;LVS负载调度器 yum install -y ipvsadm # 在LVS负载调度器上进行环境安装 ifconfig ens33:200 192.168.134.200/24 # 配置LVS的VIP…

Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器

导读Canonical 公司最近发布了 Mir 2.14&#xff0c;这是该项目的最新版本。 Mir 2.14 在 Wayland 方面通过 ext-session-lock-v1 协议增加了对屏幕锁定器 (screen lockers) 的支持&#xff0c;并最终支持 Wayland 拖放。此外还整合了渲染平台的实现&#xff0c;放弃了之前在 R…

嵌入式领域:人才供需失衡,发展潜力巨大

嵌入式技术正快速发展&#xff0c;ARM处理器、嵌入式操作系统、LINUX等技术助力嵌入式领域崛起。然而&#xff0c;行业新颖且门槛高&#xff0c;缺乏专业指导。因此&#xff0c;嵌入式人才稀缺&#xff0c;身价水涨船高。 未来几年&#xff0c;嵌入式系统将在信息化、智能化、…

【位操作符的几种题型】

位操作符的几种题型 目录 题型一&#xff1a;寻找“单身狗”。 题型二&#xff1a;计算一个数在二进制中1的个数 题型三&#xff1a;不允许创建临时变量&#xff0c;交换两个整数的内容 题型一&#xff1a;寻找“单身狗”。 1.1题目解析 在一个整型数组中&#xff0c;只有…

【数据结构】‘双向链表’冲冲冲

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Vue脚手架安装

安装包下载 安装包可以去官网下载&#xff08;官网地址&#xff09;&#xff0c;建议下载稳定版。 2. 选择安装目录 选择安装到一个&#xff0c;没有中文&#xff0c;没有空格的目录下&#xff08;新建一个文件夹NodeJS&#xff09; 3. 验证NodeJS环境变量 NodeJS 安装完…

AIGC大模型ChatGLM2-6B:国产版chatgpt本地部署及体验

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自然语言任务…

CNN的特性

1、位移不变性 它指的是无论物体在图像中的什么位置&#xff0c;卷积神经网络的识别结果都应该是一样的。 因为CNN就是利用一个kernel在整张图像上不断步进来完成卷积操作的&#xff0c;而且在这个过程中kernel的参数是共享的。换句话说&#xff0c;它其实就是拿了同一张“通…