End-to-end 3D Human Pose Estimation with Transformer

基于Transformer的端到端三维人体姿态估计

摘要

基于Transformer的架构已经成为自然语言处理中的常见选择,并且现在正在计算机视觉任务中实现SOTA性能,例如图像分类,对象检测。然而,卷积方法在3D人体姿态估计的许多方法中仍然保持SOTA性能。受视觉变换器最近发展的启发,我们设计了一个无热图结构,使用标准的变换器架构和可学习的对象查询来建模每个帧内的人体关节关系,然后输出准确的关节位置和类型,我们还提出了一个基于变换器的姿势识别架构,没有任何贪婪算法来在运行时对预测的骨骼进行后处理。在实验中,我们实现了最佳的性能之间的方法,直接回归3D关节位置从一个单一的RGB图像,并报告与许多2D到3D提升方法的竞争结果。

我们模型的整体架构。遵循DETR的模式,我们使用CNN主干来提取多尺度特征,然后使用位置编码和可学习的层编码来补充扁平化的多尺度特征,然后使用3D直接方法人体姿势Transformer从输入特征中回归3D人体姿势。为了突出集合预测和对3D HPE上的Transformer器的从粗到细训练的重要性,我们设计了两种类型的变换器,其细节将在后面描述。

我们的方法的贡献如下:

·我们提出了一个单级端到端3D人体姿态估计网络。在此基础上,验证了DETR算法对三维关键点检测的有效性。

·为了降低模型直接学习3D空间中人体关键点表示的难度,我们提出了一种基于由粗到细中间监督的解码器连接结构。

通过比较强制对齐Transformer检测网络和我们提出的网络,我们研究了可学习的联合查询和二分匹配损失对最终效果的影响。

方法

Transformer 3D HPE基线
联合检测Transformer架构

Transformer 3D HPE baseline由三部分组成:具有可变形注意力以利用多尺度特征的Transformer编码器,具有固定查询大小和类型的Transformer解码器,以及多层感知。基于基线架构,联合检测Transformer在解码器中增加了中间训练和集合预测,并且还增加了后处理阶段以完成可能不完整的骨架。


三个要素对于解释直接估计和2D到3D提升方法之间的性能差距至关重要:

(1)多尺度输入图像特征

(2)捕捉图像特征与关节位置之间的关系,这导致遮挡下的巨大性能下降;

(3)有先验知识的由粗到精的培训;

我们还发现,Transformer中的自注意机制可以代替一般检测网络中的检测头,捕获联合查询之间的联合关系,该机制可以解释为细化输入特征向量(Q)、特征到结果映射向量(K)、结果向量(V)的隐藏表示,该过程可以用公式表示(√ dk是缩放参数):

多尺度可变形注意力[18]解决了Transformer架构在计算机视觉任务中只能使用单层特征,并且需要很长的训练时间才能专注于部分图像特征的问题。

其中,Aqk是关注值,φl(Φ pq)是特征层l的归一化参考点,Δ pq是可学习参考点偏移。

整体架构如图2所示。我们首先介绍我们的姿势识别基线网络与forcealigned Transformer和多层变形注意,然后我们介绍我们的联合检测变压器,最后一个联合细化网络,以填补不完整的预测骨架。

A. Transformer 3D HPE baseline

我们实现了我们的基线模型与标准的Transformer为基础的架构。基线模型使用固定的联合查询大小,并且仅利用Resnet输出的最后一层特征(见图2(a)),我们还将Transformer编码器中的自注意层和变换器解码器中的交叉注意层替换为多尺度可变形注意。在编码器阶段,由Resnet生成的图像特征被展平并馈送到Transformer编码器中以产生上下文敏感的图像特征。编码器还利用位置嵌入和尺度级嵌入来保留原始图像的位置和层信息。该过程可以被公式化为:

通过主干网络进行特征提取后,对特征图进行E ∈ R1 × 1 × C卷积,然后将特征图的空间维数折叠成一维d × HW。为了显示可学习的联合查询在3D姿态估计任务中的有效性,我们的基线网络将每个查询与相应的联合对齐。对于输入序列X ∈ RJ×h,J表示地面真值节点的个数,h是Transformer的隐维数,xi ∈ R1 ×(h)|i = 1,2,…J指示每个查询的输入向量。然后将输出序列Xdec ∈ Rf×3馈送到可选的关键点完成网络中,以重建丢失的关键点并细化预测的姿态。

B.联合检测Transformer

基于上述基线模型,我们做了一些改进,解码器现在将N个查询的固定大小集合作为输入,其中N显著大于大多数人体姿势估计数据集中的典型关节数,在我们的情况下,我们将N设置为100。并且在解码器层的末端,分类头在J种类型的关节和背景之间进行预测,并且3通道回归头输出每个关键点的基于根的3d坐标。参见图2(B)。由于解码器预测的关节数量大于地面真实骨架,因此我们应用二分损失函数来训练我们的网络,以找到预测(表示为P的量)和地面真实对象(表示为G的量)之间的最佳匹配,我们模型的优化目标是以最低成本找到函数σ ∈ [P] → [G]。

其中LHungarian旨在以最低成本找到预测集和地面实况集之间的匹配。将σ(i)定义为对应于地面实况关节i的预测指数,将(pσ(i)(ci)定义为Lmatch的类别ci的概率,并且将(bσ(i),bi)定义为预测关节位置和地面实况关节位置。当配对的地面实况对象是时,我们手动定义配对成本Lmatch = 0,并且当配对的地面实况对象是真实的关节(即,不是)时,预测的关节类型与地面实况对象匹配的概率越大,或者两者之间的关节损失越小,配对成本Lmatch越小。在推理阶段,我们不能使用地面真值密钥,所以我们只使用分类概率来匹配N个预测与J个类型的关节。在我们的实现中,我们使用分类概率和联合位置误差的加权混合来匹配我们的对象查询,损失被定义为λclsLcls(bi,bσ(i))+ λregLreg(bi,bσ(i)),其中λcls和λreg是控制给定预测联合及其最佳匹配的联合类型分类损失和联合位置损失的权重的2个超参数。

为了减轻模型学习在3D HPE任务中常见的高度非线性三维坐标的难度,我们在解码器阶段采用了由粗到精的训练,我们希望解码器能够逐渐学习到关节点的位置信息(如图3所示),

所以我们设计关节位置回归损失Ljoint如下:

 

其中,θ(i)给出地面实况联合i的最佳匹配,xdl是对应解码器层的阈值,γydl是衰减系数。我们将分类损失Lcls定义为:

我们对每个解码器层应用上述损耗计算,并且逐层地将xdl减小到最后一层处的0。此外,我们不仅使用由粗到精的训练方法来训练我们的模型,以逐层细化关节点的预测,我们还特别设计了一种连接方法,以便后一层的解码器可以使用前一层的预测。

C.关节点细化网络

虽然对象查询机制可以减少遮挡的影响,但由于严重遮挡或训练期间空关节和其他关节类型的比例不平衡,仍然可能存在未检测到的关节。为了解决这个问题,我们设计了一个网络来完成不完整的骨架,我们将这个网络命名为联合点精化网络。受BERT的掩模机制的启发,对于每个不完整的预测关节集vi =(xj,yj,zj)J,j=1(地面实况定义的关节大小捐赠J),我们选择预测关节集的20%。如果选择了预测骨架的第i个关节点,则将其替换为(1)骨架树中其父节点和子节点的中点(如果所选节点是叶节点,则直接设置为父节点位置)80%的时间(2)第i个关节位置在20%的时间内不变,然后与其非空的父关节和子关节连接,并将掩蔽集输入到多层感知器中以生成相应的完整关节集,并使用回归头来回归最终的骨架输出,我们期望模型学习预测骨架的内部关系并使用现有的关节位置来完成骨架。对于训练,我们仅计算掩蔽关节的损失,我们应用损失函数Lc如下:

 其中,B是关节点细化网络的输出关节,p是真实关节点,M是所选关节的数量。与普通的三维人体姿态估计相比,关节点精化网络的训练数据更容易获得。训练这个网络只需要骨架数据,这些数据可以从多个来源收集。

结论

本文提出了一种基于Transformer的端到端人体姿态估计方法。Transformer编码器使用可变形多尺度注意力来接收由骨干网络产生的多尺度特征图输出作为输入。然后将增强的联合查询和编码的图像特征用作Transformer解码器的输入,与二分图像匹配损失相结合以获得3D人体姿势。我们的方法降低了学习三维人体姿势表示的模型的难度。在多个数据集上的实验定性和定量地验证了该方法的有效性。

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

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

相关文章

el-table自适应列宽实现

【背景小记】 el-table的el-table-column如果不指定width的话,会自动设定一个宽度,表格内容会自动换行,对强迫症用户来说非常不友好,为了追求完美用户体验,所以这里需要实现两个效果: 1. 强制表格内容不换…

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…

PHP教学质量评估系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码

一、源码特点 PHP教学质量评估系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 代码 https://download.csdn.net/download/qq_41221322/88301983 论文 https://down…

Pinyin4j介绍和简单使用

前言 Pinyin4j是一个Java库,用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中,以便在需要时将汉字转换为拼音。例如,它可以用于中文输入法、文本…

【牛客刷题】反转固定区间链表、每k个节点一组反转

链表内指定区间反转_牛客题霸_牛客网 ListNode* reverseList(ListNode* head, ListNode* tail) {ListNode* pre nullptr;ListNode* cur head;while (cur ! tail) { 最后cur就是tailListNode* temp cur->next;cur->next pre;pre cur;cur temp;}return pre;}ListNode…

AR工业远程巡查系统:实时监控设备状态,及时发现潜在问题

随着工业4.0的到来,先进的技术和创新的解决方案正在改变着工业生产的方式。其中,增强现实(AR)技术带来的工业巡检系统就是一个典型的例子。这种系统通过在现实世界中添加虚拟信息,使得操作人员能够更有效地进行检查和维…

2023 IntelliJ IDEA下载、安装教程, 附详细图解

文章目录 下载与安装IDEA推荐阅读 下载与安装IDEA 首先先到官网下载最新版的IntelliJ IDEA, 下载后傻瓜式安装就好了 官网下载地址:https://www.jetbrains.com/ 1、下载完后在本地找到该文件,双击运行 idea 安装程序 2、点击 Next 3、选择安装路径&…

UMA 2 - Unity Multipurpose Avatar☀️五.如何使用别人的Recipe和创建自己的服饰Recipe

文章目录 🟥 使用别人的Recipe1️⃣ 导入UMA资源效果展示2️⃣ 更新Library3️⃣ 试一下吧🟧 创建自己的服饰Recipe1️⃣ 创建自己的服饰Recipe2️⃣ 选择应用到的Base Recipe3️⃣ 指定显示名 / 佩戴位置 / 隐藏部位4️⃣ 给该服饰Recipe指定Slot / Overlay🚩 赋予Slot�…

Nginx 解析漏洞

文章目录 Nginx 解析漏洞1. 空字节漏洞1.1 漏洞描述1.2 漏洞复现1.3 修复方案 2. Nginx 解析漏洞复现2.1 漏洞描述2.2 漏洞复现2.3 获取GetShell2.4 修复方案 3. Nginx 文件名逻辑漏洞3.1 漏洞描述3.2 漏洞原理3.3 漏洞复现3.3.1 环境启动3.3.2 漏洞验证 3.4 漏洞利用3.5 修复方…

【C++杂货铺】探索stack和queue的底层实现

文章目录 一、stack的介绍和使用1.1 stack的介绍1.2 stack的使用1.2.1 最小栈1.2.2 栈的压入、弹出序列1.2.3 逆波兰表达式求值1.2.4 用栈实现队列 二、queue的介绍和使用2.1 queue的介绍2.2 queue的使用2.2.1 二叉树的层序遍历 三、模拟实现3.1 stack模拟实现3.2 queue模拟实现…

CUDA小白 - NPP(4) 图像处理 Data Exchange and Initialization(1)

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

二叉树(上)

“路虽远,行则将至” ❤️主页:小赛毛 目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示(树的存储) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树 2.3 特殊的二叉树: 2.4 二叉树的性质 3.二叉树的顺…

java 整合 swagger-ui 步骤

1.在xml 中添加Swagger 相关依赖 <!-- springfox-swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><!-- springfox-swa…

【Python从入门到进阶】35、selenium基本语法学习

接上篇《34、selenium基本概念及安装流程》 上一篇我们介绍了selenium技术的基础概念以及安装和调用的流程&#xff0c;本篇我们来学习selenium的基本语法&#xff0c;包括元素定位以及访问元素信息的操作。 一、元素定位 Selenium元素定位是指通过特定的方法在网页中准确定位…

Canape使用中遇到问题的解决办法

问题一、canape绘制目标时&#xff0c;二维结构体变量只能录制16个的解决办法 打开ASAP2 Studio 2.6 -Expert 软件。 把该软件中的设置项如下图进行修改。 然后用ASAP2 Studio 2.6 -Expert 软件 打开elf文件导出成A2L文件。 最后关闭该软件。 再在canape工程中重新加载刚才…

振弦采集仪应用地铁隧道安全监测详细解决方案

振弦采集仪应用地铁隧道安全监测详细解决方案 随着城市化进程的不断加快&#xff0c;地铁作为一种高效、便捷、环保的交通方式已经成为现代城市不可或缺的一部分。因此&#xff0c;对地铁的安全性也越来越重视&#xff0c;一般二三线以上的城市在不断发展中&#xff0c;地铁做…

c语言 2.0

1.数据类型 数据类型介绍 数据类型&#xff1a;c语言中数据类型有3种&#xff0c;分别是基本数据类型、构造数据类型、指针数据类型。 数据类型的作用&#xff1a;编译器预算数据分配的内存空间大小。 ps&#xff1a;可以通俗理解为&#xff1a;数据类型是用来规范内存的开销…

初识docker

目录 docker解决的问题1. 开发、测试和运维人员之间的矛盾2. 更轻量的虚拟化&#xff0c;节省了虚拟机的性能损耗 虚拟机与容器的区别1. 虚拟机2. 容器 Docker 系统架构 docker解决的问题 1. 开发、测试和运维人员之间的矛盾 “程序在我这跑得好好的&#xff0c;在你那怎么就…

C++之红黑树

红黑树 红黑树的概念红黑树的性质红黑树结点的定义红黑树的插入红黑树的验证红黑树与AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上…

uniapp 在 onLoad 事件中 this.$refs 娶不到的问题

现象 本人想在主页面加载的时候调用子组件的方法。示例代码如下&#xff1a; 运行&#xff0c;发现 this.$refs 取不到。如下图所示&#xff1a; 解决方法&#xff0c;把onLoad 换为 onReady 就可以了。