MHFormer 论文解读

目录​​​​​​​

Multi-Hypothesis Transformer 结果

Introduction & Related work

多假设

为什么作者提出这个模型?

3.Multi-Hypothesis Transformer

3.1 Preliminary

3.2 MultiHypothesis Generation

3.3 Temporal Embedding 

3.4. SelfHypothesis Refinement 

3.5. CrossHypothesis Interaction

3.6 Regression Head

3.7 Loss Function

4. Experiments

4.2. Implementation Details

4.+ results

5. Qualitative Results

6. Conclusion


Multi-Hypothesis Transformer 结果

MHFormer在Human3.6M 和 MPI-INF-3DHP两个数据集上实现了SOTA效果,比之前最好的效果提升了3%。

Introduction & Related work

多假设

多假设的原因:很多3d姿态都能映射到2d姿态,从2d推断3d姿态时,会有很多个解,这里就称为多假设。

为什么作者提出这个模型?

参考:https://www.cnblogs.com/Nothing-is-easy/p/16006064.html

在视频中的2D到3D的姿态评估,之前的工作要么使用时空图(spatio-tempral graph),要么使用纯粹的基于Transformer的模型,这些方法的共性就是提取2D pose sequence中的时空信息。但是都忽略了一个重要的事实,2D->3D的过程是一个可逆问题,存在多个可行解,即一个2D pose投影到3D上,符合要求的投影可能有多个,这些方法忽略了这个问题,只估计了一个单一的解决方案,这样得到的结果就不够精确。如下图,带一定的自遮挡,以前的方法只预测一个结果,而作者提出的方法预测了多个可行解,这也是作者为什么要提出这个方法的原因。

如图Figure 2 是作者提出的三阶段框架。从生成多个初始化的表示开始,通过作者称之为的self-communication以合成一个更为准确的预测。

第一阶段引入了称之为Multi-Hypothesis Generation(MHG)的模块,对人体关节的内在结构信息进行建模,在空间域生成多个多层次的特征,这些特征包含了从浅到深的不同深度的不同语义信息,可以视为多个假设的初始表征形式。

接下来,作者提出了两个新的模块对时间一致性进行建模,并增强了时序上的coase representations。第二阶段,一个作者称之为Self-Hypothesis Refinement (SHR)的模块用于微调每个单假设的特征,SHR由两个块组成。第一个块是一个多假设自注意块(multi-hypothesis self-attention,MH-SA),对单个假设构建self-hypothesis communication,使信息在每个假设中传递以增强特征。第二个块是hypothesis-mixing multi-layer perceptron (MLP),多假设混合的多层感知器(十分拗口),用于交换每个假设之间的信息。第二阶段的工作是将多个假设聚合成一个中间表示后,又将其分割成几个不同的假设。

虽然SHR对这些假设进行了微调(refine),但是不同假设之间的联系依然不够强,因为MH-SA模块只传递了各自假设的信息,没有实现跨假设信息交互,为了解决这个问题,作者提出了第三个阶段Cross-Hypothesis Interaction (CHI),跨假设交互模块,对多个假设的的特征进行交互。CHI的关键模块是multi-hypothesis cross-attention(MH-CA),多假设的注意力交互模块,该模块捕获多假设之间的相互关系,构建跨假设的信息交互(cross-hypothesis communication),以实现假设之间的信息传递,从而更好地进行交互建模。然后,利用hypothesis-mixing MLP对多个假设进行聚合得到最终地结果。

本文贡献:

(1)提出了一个基于Transformer的新方法MHFormer,用于单目视频的3D HPE。该模型能够以端到端的方式有效学习多个姿态假设的时空表征。

(2)提出了多假设特征之间的信息交互,既能够实现自假设信息微调,也能够跨假设进行信息交互。

(3)在两个数据集上实现了最先进的效果,比之前好了3%。

3.Multi-Hypothesis Transformer

MHFormer整体图如Fig3所示,2D pose sequence由现成的2D pose detector生成。方法目标是通过充分利用多假设特征的时空信息来构建3D pose,方法实现包括三个关键模块:MHG、SHR和CHI,以及两个辅助模块:时序嵌入和回归头。

3.1 Preliminary

本文中,作者使用的架构是基于Transformer的,因为其在长期依赖建模中具有良好表现。本文Transformer的基本组件包含:多头注意力(MSA)和一个多层感知器(MLP)。

MSA 采用点积方式计算注意力分数:

MSA将queries,keys和values分为h个平行输入,输出是将h个注意力头又结合在一起。

MLP 包含两个线性层,分别用于非线性化(GELU激活函数)和特征转换

3.2 MultiHypothesis Generation

在空间域,作者通过设计一个基于transformer的级联结构来解决可逆问题,这个级联结构能够输出不同潜在空间的多个特征。具体就是引进MHG对人体关节关系进行建模,以及初始化多假设表示。

给定一个2D pose sequence,将每一帧的每个关节的坐标作为一个patch,在此基础上加上spatial position embedding,用于保留身体关节的空间信息,之后将这个embedded features 作为MHG的输入,为了梯度传播,这边也应用了残差结构。以上过程可用公式表示为:

LN()表示LayerNorm。图中可以看到是输出了三个不同的假设表示(presentation),每一个表示经历过的Transformer Encoder层数不一样,即深度不一样,因此包含的信息不一样,也就是三个特征表示是不一样,即作者所谓的在不同潜在空间中包含不同深度的多个假设。

3.3 Temporal Embedding 

MHG更多是在空间上提取信息,时间上的联系是不足的,因此作者在每一帧之间加入了一个Temporal embedding,为后面模块提取时间联系时提供一个强的参考信息。

3.4. SelfHypothesis Refinement 

在时间域上,作者首先构造了SHR来对单个假设特征表示进行细化/微调(refine),每个SHR层由一个多假设自注意力块(multi-hypothesis self-attention, MH-SA)和一个hypothesis-mixing MLP块。

MH-SA Transformer模型的核心时MSA,任意两个元素(这里我理解为输入的patch)都可以通过它进行信息交互,进而产生长期依赖。而MH-SA是捕捉单假设中独立的依赖关系,以进行自假设信息交互,也就是说这部分的微调,只和自己有关,从自己身上提取信息后进行微调。公式上可以如下表达:

Hypothesis-Mixing MLP(HM-MLP) 在MH-SA中,多假设被单独处理,而假设之间是没有进行信息交换的,因此在MH-SA之后,作者添加了这个HM-MLP模块。在MH-SA之后,多个假设的特征被连接起来,fed到HM-MLP中进行信息融合,之后将特征沿通道维数均匀划分为不重叠的块,形成(经过多假设信息交互后的)更精细化的假设表示,公式表示为:

Concat()表示连接操作。经过以上操作,得到的多个假设就包含了其他假设的交互信息了。这边有点不清楚连接后的划分依据是什么?按照个人理解是多个假设特征只是被简单的串联,那么经过MLP层后就发生了信息交互,只需要按照原来连接的地方将一个特征重新拆分成多个假设特征就行了,这样拆分的几个假设特征也就实现了作者所说的假设混合。

3.5. CrossHypothesis Interaction

然后利用CHI对多假设特征之间的交互进行建模,CHI包括两个模块:multi-hypothesis cross-attention (MH-CA) 和 hypothesis-mixing MLP(HM-MLP)。

MH-CA  MH-SA缺少跨假设之间的连接,这会限制其交互建模。为了捕捉多假设之间的相关性,进行交叉假设交互,作者提出了MH-CA,MH-CA由多个平行的multi-head cross attention(MCA)组成。

MCA用于衡量多个假设特征之间的相关性,与MSA有着相似的结构。下图右侧为MCA的结构图。在MCA中,如果使用相同的keys和values作为输入,会导致更多的块,此处作者采用了一种更有效的策略,通过使用不同的输入来减少参数的数量。对比下图可知,在MSA中是采用相同参数的输入,输入一个特征,输出一个特征,MCA中输入三个不同特征,输出一个特征。

以上实现可表示为公式:

Hypothesis-Mixing MLP(HM-MLP) 这部分操作和3.4HM-MLP基本一致

在最后一层的HM-MLP中,不再进行分配操作,最终将所有假设的特征进行聚合,合成一个单一的假设特征表示ZM。

3.6 Regression Head

经过MHG、temporal embedding、SHR和CHI,输入关节帧X变成了唯一的特征表示ZM,然后在先行输出层上进行回归生成3D pose sequence X~, X~中选择中间帧X^作为最终的预测结果。

3.7 Loss Function

使用标准的平均关节位置误差(MPJPE)损失以端到端方式对整个网络进行训练

4. Experiments

这里就贴一下效果,实现细节翻译一下。

4.2. Implementation Details

作者的实验中,参数采用L1=4 MHG, L2=2 SHR, 和 L3=1 CHI layers。使用pytorch框架在3090单GPU训练20个epochs,优化器为Amsgrad。初始学习率为0.05,每个epoch后收缩系数为0.95,每5个epoch后收缩系数为0.5。2D pose sequence在Human3.6M上采用CPN,MPI-INF-3DHP上使用ground truth。

4.+ results

Human3.6M上的实验效果,protocol1为CPN生成的2D pose sequence作为输入, protocol2为ground truth作为输入,效果都比之前的好:

关于多个假设的对比实验:

MPI-INF-3DHP上的实验效果对比:

Human3.6M上做的消融实验对比,其实就是2D pose sequence输入的不同,以及输入帧数不同时的影响:

消融实验,改变MHG层数和假设数量后的实验结果对比,显示MHG层数最好为4,假设数量最好为3:

消融实验,改变SHR和CHI层数后的实验结果:

消融实验,对比没有多个假设生成对比,以及部分模块有无的对比,说明每个模块都时必要的:

消融实验做了非常多,说明非常重要,不仅仅提出一个新模型就够了,还要实验证明提出的模型不可缺少。

5. Qualitative Results

作者的方法并没有产生多个3D预测结果,但是中间添加了回归层后,可以使中间假设可视化。下图展示了几个定性的结果,作者的方法能够生成不同的貌似合理的3D姿态解,特别是对于具有深度模糊、自遮挡和2D检测器不确定性的模糊身体部位。通过多假设信息聚合得到的最终三维位姿更合理、更准确。

6. Conclusion

贡献:

(1)提出了一个基于Transformer的新方法MHFormer,用于单目视频的3D HPE。该模型能够以端到端的方式有效学习多个姿态假设的时空表征。

(2)提出了多假设特征之间的信息交互,既能够实现自假设信息微调,也能够跨假设进行信息交互。

(3)在两个数据集上实现了最先进的效果,比之前好了3%。

Limitation:要求相对较大的计算复杂度,因为Transformer卓越的性能是以高计算成本为代价的。

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

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

相关文章

Kubernetes (K8S) 3 小时快速上手 + 实践

1. Kubernetes 简介 k8s即Kubernetes。其为google开发来被用于容器管理的开源应用程序,可帮助创建和管理应用程序的容器化。用一个的例子来描述:"当虚拟化容器Docker有太多要管理的时候,手动管理就会很麻烦,于是我们便可以通…

网络安全的威胁PPT

建议的PPT免费模板网站:http://www.51pptmoban.com/ppt/ 此PPT模板下载地址:https://file.51pptmoban.com/d/file/2023/03/20/1ae84aa8a9b666d2103f19be20249b38.zip 内容截图:

2.3 数据链路层03

2.3 数据链路层03 2.3.7 以太网交换机 1、以太网交换机的基本功能 以太网交换机是基于以太网传输数据的交换机,以太网交换机通常都有多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连,一般都工作在全双工方式。 以太网交换…

个性化定制的知识付费小程序,为用户提供个性化的知识服务

明理信息科技知识付费saas租户平台 随着知识经济的兴起,越来越多的人开始重视知识付费,并希望通过打造自己的知识付费平台来实现自己的知识变现。本文将介绍如何打造自己的知识付费平台,并从定位、内容制作、渠道推广、运营维护四个方面进行…

C语言自学之运算符3

1、算术运算符 加减乘除 2、取模运算 3、递增递减运算符 4、赋值运算符 5、比较运算符 6、逻辑非运算符 7、逻辑与运算符 8、逻辑或运算符 9、运算符优先级

Ansible Filter滤波器的使用(二)

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西,但是想来ansible不太可能有什么滤波操作,所以这个东西本质是一个数值筛选器,内置函数,本质是一个为了做区别化的工具…

JVM内存模型/运行时数据区域

java虚拟机管理这块内存,所以我们也叫运行时数据区域 总览 这里按线程是否共享来分类,所谓线程不共享就是每个线程里面都会配一套 程序计数器 栈, 互相不干涉。 而方法区和堆是线程所有共享 意味着只有一个(这里注意堆是实际概念…

自动化的自动化(1)--OPCUA2HTML5

现在的自动化工程师是令人沮丧的,他们努力地实现各个行业的自动化系统,自己却停留在敲键盘的手工劳作的阶段,该解放自己了。这就是“自动化实现自动化”的话题。 OPC 统一架构(简称 OPC UA)是现代工厂自动化中用于机器…

Jenkins之pipeline

安装插件 Pipeline Pipeline: Stage View Plugin 创建任务 配置 demo 开始实践 拉取git仓库代码 checkout scmGit(branches: [[name: */main]], extensions: [], userRemoteConfigs: [[url: http://178.119.30.133:8929/root/mytest.git]])通过SonarQube做质量检测 sh …

在 Linux 本地部署 stable diffusion

由于工作站安装的是 ubuntu,卡也在上面,就只能在 ubuntu 上部署安装 stable diffusion 了。另外,Linux 上使用 stable diffusion 也会方便很多。 1 准备工作 NVIDIA 官网下载驱动,主要是为了规避多卡驱动不同的问题。由于本机是…

C语言中的浮点数存储

首先明确一个概念:C语言中整形是按照二进制存储在内存中,浮点型是按科学计数法存储在内存中(本质上存储的还是二进制数据0和1)。 如果没看懂这句话,没关系!看完以下正文,你就会豁然开朗&#x…

Codeforces Round 114 (Div. 1) C. Wizards and Numbers(思维题 辗转相除+博弈 巴什博弈)

题目 t(t<1e4)组询问&#xff0c;每次询问(a,b)&#xff08;0<a,b<1e18&#xff09;&#xff0c; 不妨a<b&#xff08;a>b时需要交换两个数考虑&#xff09; ①令b减去a的k次方&#xff08;k>1&#xff09;&#xff0c;要求减完之后b非负 ②令bb%a 当a和…

MATLAB - 使用 TOPP-RA 求解器生成带约束条件的时间最优轨迹

系列文章目录 前言 本例演示如何生成满足速度和加速度限制的轨迹。该示例使用了 contopptraj 函数&#xff0c;该函数使用可达性分析 (RA) 求解受约束的时间最优路径参数化 (TOPP) 轨迹。 一、示例背景 本例解决的是 TOPP 问题&#xff0c;这是一个机器人问题&#xff0c;其目…

Vue知识总结-下

VUE-组件间通信 组件的自定义事件 概述&#xff1a;是一种组件间通信的方式,适用于&#xff1a;子组件>父组件使用场景&#xff1a;A是父组件,B是子组件,B给A传递数据,那么需要在A组件中绑定自定义事件(事件的回调也在A中)使用步骤 绑定自定义事件&#xff1a; 第一种方式…

【Java SE语法篇】10.String类

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ 文章目录 前言1. String类1.1 字符串的构造1.2 String对象的比…

将Sqoop与Hive集成无缝的数据分析

将Sqoop与Hive集成是实现无缝数据分析的重要一步&#xff0c;它可以将关系型数据库中的数据导入到Hive中进行高级数据处理和查询。本文将深入探讨如何实现Sqoop与Hive的集成&#xff0c;并提供详细的示例代码和全面的内容&#xff0c;以帮助大家更好地了解和应用这一技术。 为…

GIT SourceTree 回滚提交

步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; 在终端输入命令&#xff08;位置是项目目录下&#xff09; git push origin feature_mo2.1_r3_zhanx653 -f

任务15:使用Hive进行全国气象数据分析

任务描述 知识点&#xff1a; 使用Hive进行数据分析 重 点&#xff1a; 掌握Hive基本语句熟练使用Hive对天气数据进行分析 内 容&#xff1a; 使用Hive创建外部表使用Hive对数据进行统计分析 任务指导 1. 使用Hive创建基础表 将China_stn_city.csv文件上传到HDFS的/…

数学建模day16-预测模型

本讲首先将介绍灰色预测模型&#xff0c;然后将简要介绍神经网络在数据预测中的应用&#xff0c;在本讲的最 后&#xff0c;我将谈谈清风大佬对于数据预测的一些看法。 注&#xff1a;本文源于数学建模学习交流相关公众号观看学习视频后所作 目录 灰色系统 GM(1,1)…

C# 面向切面编程之AspectCore初探

写在前面 AspectCore 是Lemon名下的一个国产Aop框架&#xff0c;提供了一个全新的轻量级和模块化的Aop解决方案。面向切面也可以叫做代码拦截&#xff0c;分为静态和动态两种模式&#xff0c;AspectCore 可以实现动态代理&#xff0c;支持程序运行时在内存中“临时”生成 AOP 动…