基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT

2024-04-07 03:20

本文主要是介绍基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT
    • 1、研究背景
    • 2、提出方法
    • 3、模块详细
      • 3.1、什么是HoT
      • 3.2、HoT 框架
      • 3.3、Token 剪枝聚类模块
      • 3.4、Token 恢复注意力模块
      • 3.5、模块应用
    • 4、实验
      • 4.1、消融实验
      • 4.2、与SOTA对比
    • 5、总结
  • 简单Transformer的实现
  • 总结


摘要

本周主要阅读了CVPR文章,Hourglass Tokenizer for Effcient Transformer-Based 3D Human Pose Estimation。这是一种即插即用的 Token 剪枝和恢复框架,用于从视频中高效地进行基于 Transformer 的 3D 人体姿势估计。大量实验验证了本方法的高度兼容性和广泛适用性。它可以轻松集成至各种常见的 VPT 模型中,不论是基于 seq2seq 还是 seq2frame 的 VPT,并且能够有效地适应多种 Token 剪枝与恢复策略,展示出其巨大潜力。除此之外,还学习学习了简单的Transformer代码的学习。

Abstract

This week, I mainly read the CVPR article, Hourglass Tokenizer for Effcient Transformer-Based 3D Human Pose Estimation. This is a plug-and-play Token pruning and recovery framework for efficient Transformer-based 3D human pose estimation from video. A large number of experiments have verified the high compatibility and wide applicability of this method. It can be easily integrated into various common VPT models, whether based on seq2seq or seq2frame VPT, and can effectively adapt to multiple Token pruning and recovery strategies, demonstrating its great potential. In addition, I also learned how to write simple Transformer code.


文献阅读:基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT

Title: Hourglass Tokenizer for Effcient Transformer-Based 3D Human Pose Estimation
Author:Wenhao Li , Mengyuan Liu, Hong Liu,Pichao Wang,Jialun Cail Nicu Sebet
From:2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

1、研究背景

在 VPT 模型中,通常每一帧视频都被处理成一个独立的 Pose Token,通过处理长达数百帧的视频序列(通常是 243 帧乃至 351 帧)来实现卓越的性能表现,并且在 Transformer 的所有层中维持全长的序列表示。然而,由于 VPT 中自注意力机制的计算复杂度与 Token 数量(即视频帧数)的平方成正比关系,当处理具有较高时序分辨率的视频输入时,这些模型不可避免地带来了巨大的计算开销,使得它们难以被广泛部署到计算资源有限的实际应用中。此外,这种对整个序列的处理方式没有有效考虑到视频序列内部帧之间的冗余性,尤其是在视觉变化不明显的连续帧中。这种信息的重复不仅增加了不必要的计算负担,而且在很大程度上并没有对模型性能的提升做出实质性的贡献。

2、提出方法

作者提出了一种基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT,用来解决现有视频姿态 Transformer(Video Pose Transformer,VPT)高计算需求的问题。基于对实现高效VPT要解决时间感受野要打、视频冗余得去除的问题,作者提出对深层 Transformer 的 Pose Token 进行剪枝,以减少视频帧的冗余性,同时提高 VPT 的整体效率。该框架可以即插即用无缝地集成到 MHFormer,MixSTE,MotionBERT 等模型中,降低模型近 40% 的计算量而不损失精度。

3、模块详细

3.1、什么是HoT

HoT是第一个基于 Transformer 的高效三维人体姿态估计的即插即用框架。如下图所示,传统的 VPT 采用了一个 “矩形” 的范式,即在模型的所有层中维持完整长度的 Pose Token,这带来了高昂的计算成本及特征冗余。与传统的 VPT 不同,HoT 先剪枝去除冗余的 Token,再恢复整个序列的 Token(看起来像一个 “沙漏”),使得 Transformer 的中间层中仅保留少量的 Token,从而有效地提升了模型的效率。HoT 还展现了极高的通用性,它不仅可以无缝集成到常规的 VPT 模型中,不论是基于 seq2seq 还是 seq2frame 的 VPT,同时也能够适配各种 Token 剪枝和恢复策略。
在这里插入图片描述

3.2、HoT 框架

提出的 HoT 整体框架如下图所示。为了更有效地执行 Token 的剪枝和恢复,本文提出了 Token 剪枝聚类(Token Pruning Cluster,TPC)和 Token 恢复注意力(Token Recovering Attention,TRA)两个模块。其中,TPC 模块动态地选择少量具有高语义多样性的代表性 Token,同时减轻视频帧的冗余。TRA 模块根据所选的 Token 来恢复详细的时空信息,从而将网络输出扩展到原始的全长时序分辨率,以进行快速推理。
在这里插入图片描述

3.3、Token 剪枝聚类模块

Token 剪枝聚类(Token Pruning Cluster,TPC)模块的核心在于鉴别并去除掉那些在语义上贡献较小的 Token,并聚焦于那些能够为最终的三维人体姿态估计提供关键信息的 Token。通过采用聚类算法,TPC 动态地选择聚类中心作为代表性 Token,借此利用聚类中心的特性来保留原始数据的丰富语义。TPC 的结构如下图所示,它先对输入的 Pose Token 在空间维度上进行池化处理,随后利用池化后 Token 的特征相似性对输入 Token 进行聚类,并选取聚类中心作为代表性 Token。
在这里插入图片描述

3.4、Token 恢复注意力模块

Token 恢复注意力(Token Recovering Attention,TRA)模块,它能够基于选定的 Token 恢复详细的时空信息。通过这种方式,由剪枝操作引起的低时间分辨率得到了有效扩展,达到了原始完整序列的时间分辨率,使得网络能够一次性估计出所有帧的三维人体姿态序列,从而实现 seq2seq 的快速推理。TRA 模块的结构如下图所示,其利用最后一层 Transformer 中的代表性 Token 和初始化为零的可学习 Token,通过一个简单的交叉注意力机制来恢复完整的 Token 序列。
在这里插入图片描述

3.5、模块应用

VPT 架构主要由三个组成部分构成:一个姿态嵌入模块用于编码姿态序列的空间与时间信息,多层 Transformer 用于学习全局时空表征,以及一个回归头模块用于回归输出三维人体姿态结果。根据输出的帧数不同,现有的 VPT 可分为两种推理流程:seq2frame 和 seq2seq。在 seq2seq 流程中,输出是输入视频的所有帧,因此需要恢复原始的全长时序分辨率。如 HoT 框架图所示的,TPC 和 TRA 两个模块都被嵌入到 VPT 中。在 seq2frame 流程中,输出是视频中心帧的三维姿态。因此,在该流程下,TRA 模块是不必要的,只需在 VPT 中集成 TPC 模块即可。其框架如下图所示。
在这里插入图片描述

4、实验

4.1、消融实验

在下表,论文给出了在 seq2seq(*)和 seq2frame(†)推理流程下的对比。结果表明,通过在现有 VPT 上应用所提出的方法,本方法能够在保持模型参数量几乎不变的同时,显著减少 FLOPs,并且大幅提高了 FPS。此外,相比原始模型,所提出的方法在性能上基本持平或者能取得更好的性能。
在这里插入图片描述

4.2、与SOTA对比

当前,在 Human3.6M 数据集上,三维人体姿态估计的领先方法均采用了基于 Transformer 的架构。为了验证本方法的有效性,作者将其应用于三个最新的 VPT 模型:MHForme,MixSTE 和 MotionBERT,并与它们在参数量、FLOPs 和 MPJPE 上进行了比较。如下表所示,本方法在保持原有精度的前提下,显著降低了 SOTA VPT 模型的计算量。这些结果不仅验证了本方法的有效性和高效率,还揭示了现有 VPT 模型中存在着计算冗余,并且这些冗余对最终的估计性能贡献甚小,甚至可能导致性能下降。此外,本方法可以剔除掉这些不必要的计算量,同时达到了高度竞争力甚至更优的性能。
在这里插入图片描述

5、总结

本文针对现有 Video Pose Transforme(VPT)计算成本高的问题,提出了沙漏 Tokenizer(Hourglass Tokenizer,HoT),这是一种即插即用的 Token 剪枝和恢复框架,用于从视频中高效地进行基于 Transformer 的 3D 人体姿势估计。研究发现,在 VPT 中维持全长姿态序列是不必要的,使用少量代表性帧的 Pose Token 即可同时实现高精度和高效率。大量实验验证了本方法的高度兼容性和广泛适用性。它可以轻松集成至各种常见的 VPT 模型中,不论是基于 seq2seq 还是 seq2frame 的 VPT,并且能够有效地适应多种 Token 剪枝与恢复策略,展示出其巨大潜力。作者期望 HoT 能够推动开发更强、更快的 VPT。

简单Transformer的实现

# 定义多头注意力机制模块  
class MultiHeadAttention(nn.Module):  def __init__(self, d_model, num_heads):  super(MultiHeadAttention, self).__init__() # 调用父类(nn.Module)的构造函数  self.num_heads = num_heads  # 设置多头注意力的头数  self.d_model = d_model  # 输入特征的维度  # 确保d_model可以被num_heads整除  assert d_model % self.num_heads == 0  # 计算每个头的维度  self.depth = d_model // self.num_heads  # 定义线性变换层,用于计算查询、键和值的表示  self.wq = nn.Linear(d_model, d_model)  self.wk = nn.Linear(d_model, d_model)  self.wv = nn.Linear(d_model, d_model)  # 定义线性变换层,用于最后的输出变换  self.dense = nn.Linear(d_model, d_model)  # 将输入张量分割成多个头  def split_heads(self, x, batch_size):  # 重塑张量以准备分割  x = x.reshape(batch_size, -1, self.num_heads, self.depth)  # 置换张量的维度,以便后续的矩阵乘法  return x.permute(0, 2, 1, 3)  # 前向传播函数  def forward(self, v, k, q, mask):  batch_size = q.shape[0]  # 获取批次大小  # 通过线性变换层计算查询、键和值的表示  q = self.wq(q)  # 查询(batch_size, seq_len, d_model)  k = self.wk(k)  # 键(batch_size, seq_len, d_model)  v = self.wv(v)  # 值(batch_size, seq_len, d_model)  # 将查询、键和值分割成多个头  q = self.split_heads(q, batch_size)  # (batch_size, num_heads, seq_len_q, depth)  k = self.split_heads(k, batch_size)  # (batch_size, num_heads, seq_len_k, depth)  v = self.split_heads(v, batch_size)  # (batch_size, num_heads, seq_len_v, depth)  # 计算缩放点积注意力  scaled_attention, attention_weights = self.scaled_dot_product_attention(q, k, v, mask)  # 将注意力输出的维度重新排列并合并回原始维度  scaled_attention = scaled_attention.permute(0, 2, 1, 3).contiguous()  new_context_layer_shape = scaled_attention.shape[:-2] + (self.d_model,)  scaled_attention = scaled_attention.reshape(new_context_layer_shape)  # 通过线性变换层得到最终的输出  output = self.dense(scaled_attention)  return output, attention_weights  # 计算缩放点积注意力  def scaled_dot_product_attention(self, q, k, v, mask):  # 计算查询和键的点积  matmul_qk = torch.matmul(q, k.transpose(-2, -1))  # (batch_size, num_heads, seq_len_q, seq_len_k)  dk = torch.tensor(self.depth, dtype=torch.float32).to(q.device)  # 获取每个头的维度  # 缩放点积注意力分数  scaled_attention_logits = matmul_qk / dk  # 如果提供了掩码,则将其应用于注意力分数  if mask is not None:  scaled_attention_logits += (mask * -1e9)  # 将掩码位置的值设置为一个非常小的负数  # 应用softmax函数得到注意力权重  attention_weights = F.softmax(scaled_attention_logits, dim=-1)  # (batch_size, num_heads

总结

本周主要阅读了CVPR文章,Hourglass Tokenizer for Effcient Transformer-Based 3D Human Pose Estimation。这是一种即插即用的 Token 剪枝和恢复框架,用于从视频中高效地进行基于 Transformer 的 3D 人体姿势估计。大量实验验证了本方法的高度兼容性和广泛适用性。它可以轻松集成至各种常见的 VPT 模型中,不论是基于 seq2seq 还是 seq2frame 的 VPT,并且能够有效地适应多种 Token 剪枝与恢复策略,展示出其巨大潜力。除此之外,还学习学习了简单的Transformer代码的学习。

这篇关于基于沙漏 Tokenizer 的高效三维人体姿态估计框架HoT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881517

相关文章

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

hdu4826(三维DP)

这是一个百度之星的资格赛第四题 题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=500 题意:从左上角的点到右上角的点,每个点只能走一遍,走的方向有三个:向上,向下,向右,求最大值。 咋一看像搜索题,先暴搜,TLE,然后剪枝,还是TLE.然后我就改方法,用DP来做,这题和普通dp相比,多个个向上

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地