LGFormer:LOCAL TO GLOBAL TRANSFORMER FOR VIDEO BASED 3D HUMAN POSE ESTIMATION

基于视频的三维人体姿态估计的局部到全局Transformer

作者:马海峰 *,陆克 * †,薛健 *,牛泽海 *,高鹏程† *

           中国科学院大学工程学院,北京100049 

           鹏程实验室,深圳518055

来源:2022 IEEE International Conference on Multimedia and Expo (IEEE ICME)

摘要

基于Transformer的体系结构在序列到序列任务和视觉任务(包括三维人体姿态估计)中取得了很好的效果。然而,基于Transformer的3D人体姿态估计方法在局部信息获取方面不如RNN和CNN强。另外,局部信息在获得3D位置关系中起主要作用。在本文中,我们提出了一种方法,结合局部人体部位和全球骨骼关节使用时间Transformer精细跟踪人体部位的时间运动。首先,我们编码的位置和时间信息,然后我们使用一个局部到全局的时间Transformer,以获得局部和全局信息,最后我们得到的目标三维人体姿态。为了评估我们的方法的有效性,我们在两个流行的标准基准数据集上定量和定性地评估了我们的方法:Human3.6M和HumanEva-I。大量的实验表明,我们在Human3.6M上实现了最先进的性能,并将2D地面实况作为输入。

引言

在本文中,我们使用基于变换的架构,以获得时间信息的2D-3D骨架序列提升。然而,Transformer是薄弱的,在其获取的本地位置信息,并未能联合收割机本地位置和全球位置信息很好地使用现有的方法。受[12]的启发,我们认为将局部、全局和时间信息相结合是有益的;因此,我们创建了一种新颖的方法,使用称为LGFormer的时间Transformer编码器来联合收割机局部和全局信息。LGFormer从现成的2D人体姿势估计器(即,2D人体姿势估计器)接收2D人体姿势序列。CPN [13])。然后,我们使用位置和时间编码将人体骨骼分成五个身体部分。局部Transformer考虑身体部位的局部位置信息并返回潜在特征表示。然后我们融合本地信息。接下来,我们的全球Transformer捕获潜在特征表示的全球依赖关系,并生成3D人体姿势。我们的贡献概述如下:1)提出了一种新的基于变换器的3D HPE框架,称为LGFormer,其可以用于将2D人体关节提升到3D姿态。2)为了缓解3D HPE的问题,设计了一种局部到全局的Transformer网络架构,该架构能够学习人体部位的局部信息以捕获细微的运动,并捕获人体关节中的远程依赖性。3)所提出的方法在具有2D地面真实输入的Human3.6M上实现了最先进的结果。我们在Human3.6M和HumanEva-I数据集上进行了全面的实验。实验结果表明,我们提出的方法在这两个任务上都取得了很好的性能。

方法

概述我们提出的框架LGFormer,其中包含一个部分划分和位置时间增强层,补丁嵌入层,局部姿势时间Transformer层,全局姿势时间转换层,和回归头。

在本文中,我们使用基于变换的架构,以获得时间信息的2D-3D骨架序列提升。然而,Transformer是薄弱的,在其获取的本地位置信息,并未能联合收割机本地位置和全球位置信息很好地使用现有的方法。受[12]的启发,我们认为将局部、全局和时间信息相结合是有益的;因此,我们创建了一种新颖的方法,使用称为LGFormer的时间Transformer编码器来联合收割机局部和全局信息。LGFormer从现成的2D人体姿势估计器(即,2D人体姿势估计器)接收2D人体姿势序列。CPN [13])。然后,我们使用位置和时间编码将人体骨骼分成五个身体部分。局部Transformer考虑身体部位的局部位置信息并返回潜在特征表示。然后我们融合本地信息。接下来,我们的全球Transformer捕获潜在特征表示的全球依赖关系,并生成3D人体姿势。

我们的贡献概述如下:

1)提出了一种新的基于变换器的3D HPE框架,称为LGFormer,其可以用于将2D人体关节提升到3D姿态。

2)为了缓解3D HPE的问题,设计了一种局部到全局的Transformer网络架构,该架构能够学习人体部位的局部信息以捕获细微的运动,并捕获人体关节中的远程依赖性。

3)所提出的方法在具有2D地面真实输入的Human3.6M上实现了最先进的结果。

我们在Human3.6M和HumanEva-I数据集上进行了全面的实验。实验结果表明,我们提出的方法在这两个任务上都取得了很好的性能。

METHOD

我们的局部到全局姿态估计器的概述在图1中示出。我们继承了近年来2D-to-3D提升方法的主要架构,首先利用CPN等现成的2D人体位姿估计器估计2D位姿,然后将这些2D位姿序列放入我们的局部到全局位姿提升网中估计中心帧的3D位姿,最后得到目标3D人体位姿T ∈ RJ×3。

1.概述

我们的局部到全局姿态估计器的概述如图1所示。整体框架包含部分分割和位置时间增强层、补丁嵌入层、局部姿态时间Transformer层、全局姿态时间变换器层和回归头。在应用现成的2D人体姿态估计器后,我们获得完整的2D人体骨架序列。然后,我们将完整序列分割成f帧,并使用左填充\frac{f-1}{c}和右填充\frac{f-1}{c}。然后,我们获得顺序的2D骨架输入S ∈ Rf×J×2,其中f表示输入帧的长度,J表示输入关节的长度,对于2D姿势,2表示关节的2D坐标,对于3D姿势,第三个参数是3,表示关节的3D坐标。我们得到的2D骨架,然后我们输入这些2D骨架序列到我们的本地到全球的姿势提升网络。最后,我们得到的目标三维人体姿势。

2.位置和时间信息编码

为了增强不同帧之间的运动的小变化和末端关节的变化,我们遵循[12]中的位置和时间信息编码。我们的编码方法的概述如图所示。对于输入2D骨架S ∈ Rf×J×2,如图2所示。在图2(a)中,我们首先使用生理结构将2D骨架分成五个身体组,即躯干、左臂、右臂、左腿和右腿。然后,我们增强这些身体部位使用位置和时间信息独立。如图2(B)中,我们首先使用位置和时间信息增强人体骨架,然后通过补丁嵌入重塑矩阵并生成更高维的数据,如[9]中所做的那样。

(a)2D骨架序列的身体部位划分。(b)一个部位的位置和时间信息编码的整体过程

位置信息编码用SP ∈ Rf×J×2表示,时间位置信息编码用ST ∈ Rf×J×2表示。计算公式如下:

其中j = 1,2,...,J,J是我们接收到的关节编号,X和Y是骨架向量的坐标,x和y是骨架向量中每个关键点的坐标。作为Human3.6M中包含17个关节的示例,我们将骨骼分为:躯干-5个关节、左臂-3个关节、右臂-3个关节、左腿-3个关节和右腿-3个关节。(x0,y 0)指示根关节坐标(即Human3.6M髋关节坐标;因此SP表示每个帧的关节j和根关节之间的相对位置坐标。(Xm,Ym)指示输入序列的中间帧关节坐标;因此ST表示运动变化。我们获得2D骨架输入SE ∈ Rf×J×6:

它使用位置和时间信息增强。然后,我们重塑特征,并将其放入补丁嵌入。最后,我们得到了5个人体部位的Xe ∈ Rf×CHid,其中CHid是我们设置的隐维数参数。

3.局部到全局时间Transformer编码器

在编码之后,我们获得五个身体部位的特征Xie,其中i ∈ {躯干,左臂,右臂,左腿,右腿}。如图3,将这些部分的特征分别输入到五个局部位姿时域编码器中。在这项研究中,我们使用了一个四层八头的Transformer编码器。然后,我们融合到一个全局特征,并将其输入到全局姿态时间Transformer。我们按照ViT [9]设计Transformer编码器。如图3,Transformer编码器包含两大部分:多头自注意(MSA)和前馈网络。我们将特征线性地投影到Q、K和V中。接下来我们计算自我注意力,然后,将它们输入到层范数和前馈网络中。对于我们的局部时间Transformer,上述方法计算一个变压器头。在本文中,我们连接八个头部的自我注意和获得局部姿态的时间特征。

3.1.多头自我注意

在MSA中,我们将输入x ∈ Rf×d线性投影成查询Q ∈ Rf×d,关键字K ∈ Rf×d,值V ∈ Rf×d,其中f是输入帧序列长度; d是输入x的维数;对于局部时间Transformer器,d是CHid,并且对于全局时间变换器,d是5CHid。按比例缩放的点积注意力为:

因此,我们获得了一个注意力头。当我们的头数为n时,我们需要并行重复这个过程n次,并将结果串联起来,MSA计算为:

其中WQi ∈ Rd×d,WKi ∈ Rd×d,WVi ∈ Rd×d,WO ∈ Rhd×d,i = 1,2,...,n.

3.2.前馈网络

前馈网络使用MLP的两层作为目标框架。对于来自MSA的输入,局部时间Transformer和全局时间变换器的输入维度分别为CHid和5CHid。MLP可以计算为:

其中σ表示GELU激活函数[14]。与ViT [9]类似,我们选择4d作为MLP隐维,使用一个激活函数,使得W1 ∈ Rd×4d,W2 ∈ R4d×d,b1 ∈ R4d,b2 ∈ Rd。

4.损失函数

我们使用在3D HPE中最广泛使用的平均每关节位置误差(MPJPE [11])损失来最小化预测和地面实况姿态之间的误差。MPJPE计算为:

其中pk和pk分别是第k个关节的地面实况和估计的3D关节位置。

实验

1.数据集

我们在Human3.6M和HumanEva-I [15]数据集上评估了我们的方法,这些数据集在3D HPE中很受欢迎,并取得了良好的结果。Human3.6M是最受欢迎的3D HPE数据集,包含由运动捕捉系统捕捉的360万张图像。Human3.6M提供了四个视频视图,由11个演员和17个室内动作组成。我们的方法像以前的研究一样划分这些行为:我们使用五个动作(S1、S5、S6、S7、S8)用于训练,并且使用两个动作(S9、S11)用于测试。3D HPE中的主要指标是MPJPE,前面已经介绍过。HumanEva-I数据集包含来自运动捕捉系统的七个校准视频序列。该数据库包含四个受试者执行六种常见动作。HumanEva-I比Human3.6M小得多。我们测试了步行和慢跑行动的方法。

2.实验细节

在我们的实现中,所提出的LGFormer包含五个局部姿态时间变换器和一个全局姿态时间变换器,其中局部姿态时间变换器包含四个变换器编码器层,其具有81的输入序列长度f和256的隐藏维度CHid。全局姿态时间Transformer包含四个变换器编码器层,输入序列长度f为81,隐藏维度CHid为1280。LGFormer在PyTorch框架上实现,并在两个GeForce RTX 3090 GPU上运行。

3.实验结果

表1显示了我们的方法与以前的研究的比较。在我们的实验中,我们使用主要度量MPJPE计算了Human3.6M和HumanEva-I的结果。表1显示,我们的方法在Human3.6M上实现了2D地面实况输入的最新结果,CPN输入的MPJPE为46.3mm。显然,我们的方法比基于变压器的方法高出4.8%[10]。图4显示了我们在Human3.6M上的视觉结果,我们可以看到,通过我们的方法重建的骨架非常接近3D地面真实。表2还显示了我们在HumanEva-I上的结果。

 

4.消融实验

为了验证我们提出的模型中每个组件和设计的效果,我们根据方案1使用MPJPE对Human3.6M进行了广泛的消融实验,如表3所示。我们构建了一个全局时间Transformer作为我们的基线模型。为了公平比较,我们将模型的编码维度和帧长度设置为相等。我们通过移除或更换LGFormer的组件设计了3个模型。通过将位置和时间编码添加到基线,MPJPE误差减少了4.0%。采用局部和全局时域Transformer,MPJPE损耗降低了13.3%。对于我们的LGFormer,与基线模型相比,MPJPE误差降低了18.8%(从37.7降低到30.6)。正如我们所看到的,局部Transformer为模型提供了很大的贡献,它专注于人体部位的运动。

4.1.输入序列长度

对于基于视频的3D HPE,序列长度对性能有显著影响。表4显示了不同输入帧9、27、81的结果以及我们模型的复杂性。它表明,随着输入帧的增加,我们的模型的性能提高,这证实了我们的模型的能力,远程特征捕获。从接收序列长度9到81,误差减少了17.5%,编码隐藏维度CHid为128。

4.2.编码维度长度

表5示出了不同编码维度长度64、128、256的结果,其中输入序列长度为81。结果表明,随着局部姿态时域Transformer输入维数的增加,我们的模型的误差减小。编码隐藏维数CHid从64增加到256,误差降低了16.9%。但模型的参数和FLOPS增加了许多倍;因此,作为折衷,我们使用编码维度长度128。 

结论

在本文中,我们提出了一种基于2D-3D骨架提升的三维HPE方法,并结合Transformer编码器和位置和时间先验。局部Transformer编码器编码解剖结构中不同人体部位的空间和时间关系,全局变换器编码所有人体关节之间的空间和时间关系。大量的实验表明,我们的模型在两个流行的3D姿势数据集上取得了很好的性能,并在Human3.6M上以2D地面实况作为输入取得了最先进的结果。 

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

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

相关文章

Django05_反向解析

Django05_反向解析 5.1 反向解析概述 随着功能的不断扩展,路由层的 url 发生变化,就需要去更改对应的视图层和模板层的 url,非常麻烦,不便维护。这个时候我们可以通过反向解析,将 url解析成对应的 试图函数 通过 path…

【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作

文章目录 一、多线程1.1 概述1.2 体会多线程1.3 多线程中数据传递和接收 二、事件推送2.1 概述2.2 onmessage 事件 三、history 一、多线程 1.1 概述 前端JS默认按照单线程去执行,一段时间内只能执行一件事情。举个栗子:比方说古代攻城游戏&#xff0c…

<C++>类和对象-中

目录 前言 一、类的6个默认成员函数 二、构造函数 2.1 概念 2.2 特性 三、析构函数 1. 概念 2. 特性 四、拷贝构造函数 1. 概念 2. 特征 五、赋值运算符重载 1. 运算符重载 2. 赋值运算符重载 六、实现一个完整的日期类 Date.h Date.cpp 总结 前言 上一节,我们…

C++面试/笔试准备,资料汇总

文章目录 后端太卷,建议往嵌入式,qt,测试,音视频,C一些细分领域投简历。有任何疑问评论区聊,我看到了回复 C面试/笔试准备,资料汇总自我介绍项目实习尽可能有1.编程语言:一.熟悉C语言…

Linux学习笔记-Ubuntu系统用户、群组、权限管理

一、概述 本文记录Ubuntu系统下通过命令操作用户账户进行管理。 Ubuntu系统版本: Linux ubuntu 5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux 注:查看系统版本号的指令如下 uname -…

PTA作业笔记——简单的计算

PTA作业笔记——简单的计算 7-10 整数算术运算7-11 猫是液体7-11 猫是液体7-13 计算4个整数的平均值7-14 公元前后日期格式化7-15 A除以B7-18 出租车计价 7-10 整数算术运算 本题要求编写程序,计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在…

过拟合和欠拟合:机器学习模型中的两个重要概念

文章目录 🍋引言🍋过拟合和欠拟合的概念🍋过拟合和欠拟合的影响与危害🍋过拟合和欠拟合的原因与解决方法🍋过拟合和欠拟合的研究现状与发展趋势🍋过拟合&欠拟合---案例🍋总结 🍋…

【基本数据结构 三】线性数据结构:栈

学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。 栈的定义 我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也…

Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素

Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素 引言什么是 Tkinter 的网格布局?步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口步骤3:创建网格步骤4:将元素放置在…

【学习笔记】元学习如何解决计算机视觉少样本学习的问题?

目录 1 计算机视觉少样本学习 2 元学习 3 寻找最优初始参数值方法:MAML 3.1 算法步骤 3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification 4 距离度量方法:Siamese Network,ProtoNet,RN 4.1 孪生网络(Sia…

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…

驱动开发,stm32mp157a开发板的led灯控制实验(再优化),使用ioctl函数,通过字符设备驱动分步注册方式编写LED驱动,完成设备文件和设备的绑定

1.实验目的 编写LED灯的驱动,在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制; 2. LED灯相关寄存器分析 LED1->PE10 LED1亮灭: RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&…

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前,先了解一下显示屏的分类,按照目前市场上存在的各种屏幕材质,主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏,在F429的开发板上,…

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头(1)HTTP的请求报头结构(2)HTTP的请求方法 3.HTTP应答报头(1)HTTP的应答报头结构(2) HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

Unity3D之动态生成指定数量带间隔的地面

文章目录 准备代码实现实现效果 准备 空物体生成脚本地面预制体 代码实现 using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine;public class CreateGround : MonoBehaviour {[SerializeField]public i…

Java版的数据结构——栈和队列

目录 1. 栈(Stack) 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.4.1 改变元素的序列 1.4.2 将递归转化为循环 2. 队列(Queue) 2.1 概念 2.2 队列的使用 2.3 队列模拟实现 2.4 循环队列 3. 双端队列&…

Navicat15 /16 已连接数据库密码解密

前言 相信你会遇到使用navicat忘记已连接数据密码的问题吧!实在是,密码太多容易忘记!!! 感谢大佬as_dmy的文章如何查看navicat已连接数据库密码,然后才有了此文! 1.0版本需要手动查看导出的co…

垃圾收集算法

1.如何判断对象是否存活? 1.1引用计数算法 基本思路: 在对象中添加一个引用计数器每当有一个地方引用它的时候,计数器就加1每当有一个引用失效的时候,计数器就减-1当计数器的值为0的时候,那么该对象就是可被GC回收的…

vue基础知识八:为什么data属性是一个函数而不是一个对象?

一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象,也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:"foo"},// 函数格式data(){return {foo:"foo"}} })组件中定义data属性&#xff…

网站文章生成技术-网站文章生成工具免费

大家好,今天我想和大家分享一些关于网站文章生成的疑虑和期待。作为一个常常需要在网站上发布文章的人,我对这项技术的发展充满了好奇和担忧。在这篇文章中,我将坦率地表达我的想法,希望能引发一些思考。 让我谈一谈我的疑虑。网站…