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帧,并使用左填充和右填充
。然后,我们获得顺序的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地面实况作为输入取得了最先进的结果。
相关文章:
LGFormer:LOCAL TO GLOBAL TRANSFORMER FOR VIDEO BASED 3D HUMAN POSE ESTIMATION
基于视频的三维人体姿态估计的局部到全局Transformer 作者:马海峰 *,陆克 * †,薛健 *,牛泽海 *,高鹏程† * 中国科学院大学工程学院,北京100049 鹏程实验室,深圳518055 来源:202…...
数据结构零基础入门篇(C语言实现)
前言:数据结构属于C学习中较难的一部分,对应学习者的要求较高,如基础不扎实,建议着重学习C语言中的指针和结构体,万丈高楼平地起。 目录: 一,链表 1)单链表的大致结构实现 2&…...
Hugging News #0904: 登陆 AWS Marketplace
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息࿰…...
Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令
目录 Redis的数据结构: Redis命令: 通用命令:(通用指令是部分数据类型的,都可以使用的指令) KEYS查询命令: DEL删除命令: EXISTS判断命令: EXPIPE有效期设置命令&…...
vue中的几种name属性
vue中的几种name属性 组件名name name选项 export default{name:xxx } // 获取组件的name属性 this.$options.namevue-devtools调试工具里显示的组件名称; 未配置name选项,就是组件的文件名; vue3配置name通过defineOptions()函数 de…...
论文《面向大规模日志数据分析的自动化日志解析》翻译
论文《Towards Automated Log Parsing for Large-Scale Log Data Analysis》翻译 面向大规模日志数据分析的自动化日志解析翻译...
element-ui dialog弹窗 设置点击空白处不关闭
根据官网提供方法 场景:vue实现的网站有两个弹窗同时出现时,关闭报警,批量进度条弹窗也关闭了, 1、每一个页面都有可能出现的报警弹窗, 2、页面a批量操控硬件添加操作的进度条弹窗 开始以为是因为点击报警弹窗&#…...
第16节-PhotoShop基础课程-修复工具组-去水印
文章目录 前言1.污点修复画笔1.功能原理2.调整1.调整大小 Alt 右键 左右2.调整软硬 Alt 右键 上下 2.修复画笔工具 Alt 选取源1.常规2.选择图案 3.修补工具1.类型1.源2.目标 2.扩展 4.内容感知移动工具5.红眼工具 前言 去水印等 1.污点修复画笔 比如把下面的土豆(…...
conda的使用教程
conda的介绍 简单来说,conda软件就是来管理包的软件。以Python为例,在实际生活中,我们要处理多个不同的项目,因此,要安装不同的项目所需要的包,为了管理方便,conda就是用来打理不同项目的包&…...
客户端发现pod并与之通信
客户端发现pod并与之通信 pod需要一种寻找其他pod的方法来使用其他pod提供的服务,不像在没有Kubernetes的世界,系统管理员要在用户端配置文件中明确指出服务的精确IP地址 或者主机名来配置每个客户端应用,但同样的方法在Kubernetes中不适用 …...
Powershell模拟实现Linux下的tree命令
Powershell模拟实现Linux下的tree命令 代码 环境: P o w e r s h e l l 7 Powershell\ 7 Powershell 7 function Get-Tree {param([string]$directory ".",[int]$d 1,[switch]$f)$absolutePath Resolve-Path -Relative $directoryWrite-Host $absol…...
嵌入式基础-电路
目录 1、电流 1.1电流方向 1.2交流电和直流电 2、电压 3、电阻 4、欧姆定律 1、电流 电流是指单位时间内通过导体的电荷量,用符号I表示,单位是安培(A)。电流是电磁学中的基本量纲之一,是七个基本量纲之一。电流的…...
【JS面试题】如何通过闭包漏洞在外部修改函数中的变量
✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 前端面试题 文章目录 什么是闭包例 如何在函数外部修改闭包中变量 什么是闭包 闭包这个东西对新…...
【华为OD机试】按身高和体重排队【2023 B卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列, 对身高相同的人,按体重由轻到重排列; 对于身高体重都相同的人,维持原有的编号顺序关系。请输…...
TCP原理(全网最详细)
一、确认应答(可靠性机制) TCP诞生的初衷就是可靠传输 可靠传输是TCP最核心的部分,TCP内部很多机制都是在保证可靠传输(可以理解为发一条消息,上面显示已读未读,可靠传输就是发一条消息我知道对方是否收到…...
react 初级基础
react基本使用 项目创建 项目的创建命令 npx create-react-app react-basic创建一个基本元素进行渲染 // 1 导入react 和 react-dom import React from "react"; import ReactDOM from "react-dom";// 2 创建 react 元素 React提供了创建元素的api Rea…...
linux学习书籍推荐
《Linux程序设计(第4版)》,Neil Matthew和Richard Stones编写。这本书是Linux/UNIX专家编写的,详细介绍了Linux系统以及其他UNIX风格的操作系统上的程序开发,包括标准Linux C语言函数库和各种由Linux或UNIX标准指定的工…...
LeetCode 428. Serialize and Deserialize N-ary Tree【树,BFS,DFS】困难
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
javascript | 变量、函数、属性的命名规则
javascript标识符的命名规则 变量、函数、属性的名字、或者函数的参数,都可称为标识符。标识符可以是按照下列格式规则组合起来的一个或者多个字符。 第一个字符必须是一个字母、下划线_、或美元符号$。数字不可以作为标识符的首字符。其他字符可以是数字、字母、…...
手写Ribbon基本原理
本文已收录于专栏 《中间件合集》 目录 概念说明什么是RibbonRibbon和Nginx负载均衡的区别 工作流程代码实现RibbonSDK发送请求端引入RibbonSDK和Nacos的依赖配置文件中填写负载均衡策略调用代码 接收请求端执行效果发送请求端接收请求端 总结提升 概念说明 什么是Ribbon Ribb…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
