当前位置: 首页 > news >正文

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卓越的性能是以高计算成本为代价的。

相关文章:

MHFormer 论文解读

目录​​​​​​​ Multi-Hypothesis Transformer 结果 Introduction & Related work 多假设 为什么作者提出这个模型? 3.Multi-Hypothesis Transformer 3.1 Preliminary 3.2 MultiHypothesis Generation 3.3 Temporal Embedding 3.4. SelfHypothesi…...

Python列表append()函数使用详解

在Python中,列表是一种可变序列类型,可以用来存储多个元素。列表的append()函数是用于在列表末尾添加新元素的内置方法。本文将详细介绍Python列表的append()函数及其使用方法。 一、append()函数的基本语法 append()函数的语法非常简单,只…...

第08章_面向对象编程(高级)拓展练习(关键字:static,代码块,关键字:final,抽象类和抽象方法,接口,内部类,枚举类,注解,包装类)

文章目录 第08章_面向对象编程(高级)拓展练习01-关键字:static1、银行账户类2、图形类3、数组工具类4、二分查找5、二分查找6、素数7、阅读代码,分析运行结果8、阅读代码,分析运行结果 02-代码块9、阅读代码&#xff0…...

分布式光伏运维平台在提高光伏电站发电效率解决方案

摘要:伴随着能源危机和环境恶化问题的日益加重,科技工作者进一步加大对新能源的开发和利用。太阳能光伏发电作为新型清洁能源的主力军,在实际生产生活中得到了广泛的应用。然而,光伏发电效率偏低,成为制约光伏发电发展…...

2024.1.14~1.20 周内刷题总结

2024.1.14~1.20 周内刷题总结 [ABC158F] Removing Robots 题解[ABC145F] Laminate 题解[ABC254G] Elevators 题解(坑点总结)[ARC160C] Power Up 题解[ABC203F] Weed 题解Shopping时代的眼泪 [ABC158F] Removing Robots 题解 \qquad 题面 \qquad 本题的连…...

徐州数字孪生元宇宙赋能工业智能制造,助力传统制造业数字化转型

徐州数字孪生元宇宙赋能工业智能制造,助力传统制造业数字化转型。在徐州市制造业企业数字化转型的过程中,数字孪生技术的应用已经取得了显著成效。一方面,企业的生产效率得到了显著提高,产品质量也得到了有效保障。另一方面&#…...

智云谷再获资本市场青睐,完成数千万元A+轮融资

近日,深圳前海智云谷科技有限公司(以下简称“智云谷”)完成数千万元A轮融资,本轮融资由青松基金独家投资,多维资本担任独家融资财务顾问。本轮融资资金将用于扩大新技术研发投入、智能工厂扩产、加速产品交付&#xff…...

ACM论文LaTeX模板解析(三)| 文章顶部信息(Top matter))Part 1

本文收录于专栏:ACM 论文 LaTeX模板解析,本专栏将会围绕ACM 论文 LaTeX模板解析持续更新。欢迎点赞收藏关注! 文章目录 有许多命令可以设置文章的顶部信息或(计算机科学术语)元数据。它们建立了出版物名称、文章标题、…...

[GDOUCTF 2023]受不了一点

[GDOUCTF 2023]受不了一点 wp 题目代码&#xff1a; <?php error_reporting(0); header("Content-type:text/html;charsetutf-8"); if(isset($_POST[gdou])&&isset($_POST[ctf])){$b$_POST[ctf];$a$_POST[gdou];if($_POST[gdou]!$_POST[ctf] &&…...

精心挑选免费好用的api,推荐给大家

企业基本信息&#xff1a;通过公司名称/公司ID/注册号或社会统一信用代码获取企业基本信息&#xff0c;企业基本信息包括公司名称或ID、类型、成立日期、经营状态、注册资本、法人、工商注册号、统一社会信用代码、组织机构代码、纳税人识别号等字段信息。 AI绘画-Stable Diff…...

(001)window 使用 OpenObserve

文章目录 安装上传数据报错附录 安装 1.下载安装包&#xff1a; 2. window 设置环境变量&#xff1a; ZO_ETCD_COMMAND_TIMEOUT 600 ZO_ETCD_CONNECT_TIMEOUT 600 ZO_ETCD_LOCK_WAIT_TIMEOUT 600 ZO_INGEST_ALLOWED_UPTO 10000 ZO_ROOT_USER_EMAIL 422615924qq.com ZO_…...

linux发送http请求命令

一、http get请求 1、curl命令不带参 curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i “http://www.baidu.com” 显示全部信息 curl -l “http://www.baidu.com” 只显示头部信息 curl -v “http://www.baidu.com”…...

JVM实战(19)——JVM调优工具概述

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…...

Windows10无法访问github

亲测有效 1、修改hosts文件 如果电脑是Windows系统&#xff1a;打开 C:\Windows\System32\drivers\etc 找到hosts文件&#xff0c;将对应的Host地址修改为&#xff1a; #github 140.82.112.4 github.com 199.232.69.194 github.global.ssl.fastly.net 如果在保存hosts时遇到…...

GIT 分支管理办法(二)

GIT 分支管理办法&#xff08;二&#xff09; 一. 大型项目分支管理中存在的痛点 大型项目中需求的上线存在很大的不确定性&#xff0c;而且往往存在多版本、多团队、多开发并行的情况。尤其是大型企业对上线分支中编号的管理十分严苛&#xff0c;严禁夹带上线。这时对于开发…...

Vue面试之Mixins

Vue面试之Mixins 定义Mixins使用Mixins全局MixinsMixins合并策略注意事项命名冲突&#xff1a;过度使用 最近在整理一些前端面试中经常被问到的问题&#xff0c;分为vue相关、react相关、js相关、react相关等等专题&#xff0c;可持续关注后续内容&#xff0c;会不断进行整理~ …...

YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是主干网络&#xff0c;一个名字EfficientViT的特征提取网络(和之前发布的只是同名但不是同一个)&#xff0c;其基本原理是提升视觉变换器在高效处理高分辨率视觉任务的能力。它采用了创新的建筑模块设计&#xff0c;包括三明治布局和级联…...

分布式限流要注意的问题

本文已收录至我的个人网站&#xff1a;程序员波特&#xff0c;主要记录Java相关技术系列教程&#xff0c;共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源&#xff0c;让想要学习的你&#xff0c;不再迷茫。 为什么需要匀速限流 同学们回想一下在Guava小节里…...

git将一个远程分支的部分修改提交到另一个远程分支

将一个远程分支的部分修改提交到另一个远程分支 将一个远程分支的部分修改提交到另一个远程分支&#xff0c;可以使用 git cherry-pick 命令。这个命令可以选择特定的提交&#xff08;commit&#xff09;从一个分支应用到另一个分支。 切换到目标本地分支&#xff1a; 首先&am…...

promise是什么怎么使用

Promise 是一种 JavaScript 中的对象&#xff0c;用于处理异步操作。它表示一个最终可能完成&#xff08;解析&#xff09;或失败&#xff08;拒绝&#xff09;的操作&#xff0c;以及其结果值。 Promise 有三种状态&#xff1a; Pending&#xff08;待定&#xff09;&#x…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示&#xff1a;在用tensordoard的时候一定一定要用绝对位置&#xff0c;例如&#xff1a;tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾&#xff1a; tensorboard的发展历史和原理tens…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...