PoseFormer:基于视频的2D-to-3D单人姿态估计

3D Human Pose Estimation with Spatial and Temporal Transformers论文解析

  • 摘要
  • 1. 简介
  • 2. Related Works
    • 2.1 2D-to-3D Lifting HPE
    • 2.2 GNNs in 3D HPE
    • 2.3 Vision Transformers
  • 3. Method
    • 3.1 Temporal Transformer Baseline
    • 3.2 PoseFormer: Spatial-Temporal Transformer
      • Spatial Transformer Module
      • Temporal Transformer Module
      • Regression Head
      • Loss Function
  • 4. 数据集
    • 4.1 [Human3.6M](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6682899)
    • 4.2 [MPI-INF-3DHP](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8374605)
  • 5. 评测指标

论文链接:3D Human Pose Estimation with Spatial and Temporal Transformers
论文代码:https://github.com/zczcwh/PoseFormer
论文出处:2021 ICCV
论文单位:University of Central Florida, USA

摘要

  • Transformer架构已经成为自然语言处理中的首选模型,现在正被引入到计算机视觉任务中,例如图像分类、对象检测和语义分割。
  • 然而,在人体姿态估计领域,卷积架构仍然占主导地位。
  • 在这项工作中,我们呈现PoseFormer一种纯粹基于Transformer的方法,用于视频中的3D人体姿势估计,不涉及卷积架构
  • 受视觉Transformer最新发展的启发,我们设计了一个时空Transformer结构,以全面建模每帧内的人体关节关系以及帧间的时间相关性,然后输出中心帧的精确三维人体姿态。
  • 我们在两个流行的和标准的基准数据集:Human3.6MMPI-INF-3DHP上定量和定性地评估了我们的方法。大量的实验表明,PoseFormer在两个数据集上都达到了最先进的性能。

1. 简介

  • 人体姿态估计(HPE) 旨在从图像和视频等输入数据中定位关节并构建身体表示(例如骨骼位置)。
  • HPE提供人体的几何和运动信息,可以应用于广泛的应用(如人机交互,运动分析,医疗保健)。
  • 目前的工作大致可以分为两类: (1)直接估算方法,(2)2D-to-3D提升方法
  • 直接估计方法从2D图像或视频帧中推断出3D人体姿势,而无需中间估计2D姿势表示。
  • 2D-to-3D提升方法从中间估计的2D姿势推断出3D人体姿势。
  • 得益于最先进的2D姿态检测器的优异性能,2D-to-3D提升方法通常优于直接估计方法。
  • 然而,这些2D姿势到3D的映射是non-trivial; 由于深度模糊和遮挡,相同的2D姿态可以生成各种潜在的3D姿态。
  • 为了缓解这些问题并保持自然的连贯性,许多最近的作品将来自视频的时间信息整合到他们的方法中。然而,基于cnn的方法通常依赖于固有的有限时间连通性的扩张技术,而循环网络主要受限于简单的顺序相关性。
  • 最近,Transformer 由于其效率、可扩展性和强大的建模能力,已经成为自然语言处理(NLP)事实上的模型。由于Transformer 的self-attention 机制,可以清楚地捕获跨长输入序列的全局相关性。这使得它特别适合序列数据问题的架构,因此可以自然地扩展到3D HPE。
  • 凭借其全面的连通性和表达,Transformer 提供了一个跨帧学习更强的时间表示的机会。
  • 然而,最近的研究表明,Transformer 需要特定的设计才能在视觉任务中达到与CNN同类产品相当的性能。具体来说,它们通常需要非常大规模的训练数据集,或者如果应用于较小的数据集,则增强数据增强和正则化。
  • 此外,现有的视觉变压器主要局限于图像分类、目标检测和分割,但如何利用变压器的力量进行3D HPE仍然不清楚。
  • 为了回答这个问题,我们首先将变压器直接应用于2D-to-3D lifting HPE。在这种情况下,我们将给定序列中每帧的整个2D姿态视为一个标记( token)(图1(a))。 虽然这种基线方法在一定程度上是有效的,但它忽略了空间关系(关节对关节)的自然区别。
    在这里插入图片描述
  • 对该基线的自然扩展是将每个2D关节坐标视为一个token,提供由序列所有帧中的这些关节组成的输入(图1(b))。然而,在这种情况下,当使用长帧序列时,token的数量变得越来越大(在3D HPE中,每帧最多243帧,17个关节是常见的,token的数量将为243×17=4131)。由于Transformer计算每个token对另一个token的直接关注,因此模型的内存需求接近不合理的水平。
  • 因此,作为应对这些挑战的有效解决方案,我们提出了PoseFormer,这是第一个用于视频中2d到3d提升HPE的纯Transformer网络
  • PoseFormer使用两个维度的不同Transformer模块直接对空间和时间方面进行建模
  • PoseFormer不仅在空间和时间元素之间产生强大的表示,而且不会对长输入序列产生大量的token计数。
  • 在高层次上,PoseFormer只是从现成的2D姿态估计器中提取一系列检测到的2D姿态,并输出中心帧的3D姿态。
  • 更具体地说,我们建立了一个空间Transformer模块来编码每个帧中二维关节之间的局部关系。 空间self-attention层考虑二维关节的位置信息,并返回该帧的潜在特征表示。接下来,我们的时间Transformer模块分析每个空间特征表示之间的全局依赖关系,并生成准确的3D姿态估计。
  • 在两种流行的3D HPE基准(Human3.6M和MPI-INF-3DHP)上的实验评估表明,PoseFormer在这两个数据集上都达到了最先进的性能。我们将我们估计的3D姿态与SOAT方法进行比较,并发现
    PoseFormer产生更平滑、更可靠的结果。此外,消融研究中还提供了PoseFormer注意力图的可视化和分析,以了解模型的内部工作原理并证明其有效性。
  • 我们的贡献有三方面:
    (1)我们提出了第一个纯基于Transformer的模型PoseFormer,用于3D HPE的2d到3D lifting。
    (2)我们设计了一个有效的时空Transformer模型,其中空间Transformer模块编码人体关节之间的局部关系,而时间Transformer模块捕获整个序列中跨帧的全局依赖关系。
    (3)我们的PoseFormer模型在Human3.6M和MPI-INF-3DHP数据集上取得了SOAT效果。

2. Related Works

  • 在这里,我们具体总结了3D单人单视图HPE方法
  • 直接估计方法: 从二维图像中推断三维人体姿态,而不需要中间估计二维姿态表示。
  • 2D-to-3D lifting 方法: 利用2D姿态作为输入来生成相应的3D姿态,这在该领域的最新方法中较为流行。任何现成的2D姿态估计器都可以有效地与这些方法兼容。

2.1 2D-to-3D Lifting HPE

  • 2D到3d提升方法利用从输入图像或视频帧估计的2D姿势。
  • OpenPose、CPN、AlphaPose和HRNet被广泛用作2D姿态检测器。
  • 基于这种中间表示,可以使用多种方法生成3D姿态。
  • 然而,以前最先进的方法依赖于扩展的时间卷积(dilated temporal convolutions)来捕获全局依赖关系,这在时间连接上是有限的。
  • 此外,这些工作中的大多数使用简单的操作将关节坐标投影到潜在空间,而没有考虑人体关节的运动学相关性。

2.2 GNNs in 3D HPE

  • 自然地,人体姿势可以表示为一个graph,其中关节是nodes ,骨骼是 edges。
  • 图神经网络(GNNs)也被应用于 2D-to-3D pose lifting 问题,并提供了很好的表现。
  • 对于我们的PoseFormer,transformer可以被视为一种具有独特且通常有利的图操作的GNN。
  • 具体来说,一个transformer编码器模块本质上形成了一个全连接图,其中边缘权重是使用输入条件,多头self-attention计算的。
  • 该操作还包括节点特征的规范化,跨注意头输出的前馈聚合器,以及使其能够有效地扩展堆叠层的剩余连接。
  • 与其他图操作相比,这样的操作是有利的。例如,节点之间连接的强度由transformer的self-attention机制决定,而不是像典型的那样通过邻接矩阵预定义。
  • 本任务中使用的基于gcn的配方。 这使得模型能够灵活地根据每个输入姿势调整关节的相对重要性。
  • 此外,transformer的综合缩放和归一化组件可能有利于减轻当多层堆叠在一起时困扰许多GNN操作变体的过度平滑效应。

2.3 Vision Transformers

  • 最近,有一个新兴的兴趣将 Transformer 应用于视觉任务。
  • DEtection TRansformer (DETR) 用于目标检测与全景分割。
  • Vision Transformer (ViT) ,纯Transformer 构架,在图像分类方面达到了SOAT的性能。
  • Transpose,基于Transformer 构架,从图像中估计3D姿态。
  • MEsh TRansfOrmer,将cnn与Transformer 网络结合起来,从单个图像重建3D pose 和 mesh vertices。
  • 本文方法的时空Transformer 架构利用了每帧中的关键点相关性,并保留了视频中的自然时间一致性。

3. Method

  • Pipeline:通过现成的2D姿态检测器获得每帧的2D姿态,使用连续帧的二维姿态序列作为输入,估计中心帧的三维姿态。

3.1 Temporal Transformer Baseline

  • 作为 2D-to-3D lifting 的基线应用,我们将每个2D姿态视为输入token,并使用Transformer 来捕获输入之间的全局依赖关系,如图2(a)所示。
    在这里插入图片描述
  • 我们将把每个输入token称为一个patch,在术语上类似于ViT.
  • 对于输入序列X∈R^(f×(J·2)),f 为输入序列的帧数,J为每帧的关节数2D位姿,2表示关节在2D空间中的坐标。
  • patch embedding 是一个可训练的线性投影层,将每个patch 嵌入到高维特征中。
  • Transformer 网络利用位置嵌入来保留序列的位置信息。
  • self-attention是Transformer 的核心功能,它将输入序列的不同位置与嵌入特征联系起来。
  • 我们的Transformer 编码器由多头自注意块和多层感知器(MLP)块组成。LayerNorm在每个块之前应用,剩余连接在每个块之后应用。
  • 为了预测中心帧的三维姿态,编码器输出Y∈Rf×C通过在帧维中取平均值,收缩为向量y∈R1×C。最后,一个MLP块将输出回归到 y∈R1×(J*3),即中心框架的3D姿态。

3.2 PoseFormer: Spatial-Temporal Transformer

  • 我们观察到,时间Transformer基线主要关注输入序列中帧之间的全局依赖关系。利用线性变换patch embedding将关节坐标投影到隐维上。
  • 然而,由于简单的线性投影层无法学习到attention信息,局部关节坐标之间的运动信息在时序Transformer基线中没有得到强有力的表示。
  • 一个潜在的解决方案是将每个关节坐标视为一个单独的patch,并将所有帧的关节作为输入馈送到Transformer(见图1(b))。
  • 然而,patch的数量会迅速增加(帧数 f 乘以关节数 J),导致模型的计算复杂度为O((f·J)2)。
  • 为了有效地学习局部联合相关性,我们分别对空间和时间信息使用了两个分离的Transformer
  • 如图2(b)所示,PoseFormer由三个模块组成: spatial transformer module, temporal transformer module, and regression head module

Spatial Transformer Module

  • Spatial Transformer Module是从单个帧中提取高维特征嵌入。给定一个具有 J 个关节的二维姿态,我们将每个关节(即两个坐标)视为一个patch,并按照通用视觉变换pipeline在所有patch之间进行特征提取。
  • 首先,我们用可训练的线性投影将每个关节的坐标映射到高维空间,这被称为spatial patch embedding。

Temporal Transformer Module

  • 由于Spatial Transformer Module为每个单独的帧编码高维特征,因此Temporal Transformer Module的目标是跨帧序列建模依赖关系。
  • 在Temporal Transformer Module之前,我们加入了可学习的时序位置嵌入来保留帧的位置信息。
  • 对于Temporal Transformer Module编码器,我们采用与Spatial Transformer Module编码器相同的架构,该架构由多头self-attention块和MLP块组成。
  • 时序变压器模块的输出为 Y∈Rf*(J*c)

Regression Head

  • 由于我们使用一组帧序列来预测中心帧的三维姿态,因此Temporal Transformer Module Y∈Rf*(J·c)的输出需要简化为 y∈R1*(J·c)
  • 我们在帧维度上应用加权平均操作(使用学习到的权重)来实现这一点。
  • 最后,一个具有Layer范数和一个线性层的简单MLP块返回输出 y∈R1*(J·3),这是中心帧的预测三维姿态。

Loss Function

  • 为了训练我们的时空转换模型,我们使用了标准的MPJPE (Mean Per Joint Position Error)损失以最小化预测值与ground truth姿态之间的误差为
    在这里插入图片描述

4. 数据集

4.1 Human3.6M

  • Human3.6M是3D单人HPE使用最广泛的室内数据集。
  • 由11名专业演员表演坐、走、打电话等17种动作。
  • 每个受试者在室内环境中从4个不同的角度拍摄视频。
  • 该数据集包含360万视频帧,其中包含基于精确标记的动作捕捉系统捕获的3D地面真相注释。
  • 根据之前的工作,我们采用相同的实验设置: 所有15个动作都用于训练和测试,模型训练在5个sections(S1, S5,S6, S7, S8)和测试在 2个sections(S9和S11)。

4.2 MPI-INF-3DHP

  • MPI-INF-3DHP是一个更具挑战性的三维姿态数据集。
  • 它既包含受限的室内场景,也包含复杂的室外场景。
  • 有8个演员表演8个动作,从14个摄像机视图,涵盖了更大的多样性的姿势。
  • MPI-INF-3DHP提供了6个不同场景的测试集。

5. 评测指标

  • MPJPE :Mean Per Joint Position Error,平均每个关节位置误差,估计关节与地面真值之间的平均欧几里得距离,单位为毫米。
  • P-MPJPE: P-MPJPE是估计的三维姿态与ground truth经过后处理后的刚性对准后的MPJPE,对单个关节预测失败具有更强的鲁棒性。
  • PCK:Percentage of Correct Keypoint,在150mm范围内的正确关节点的百分比。
  • AUC:Area Under Curve,曲线下面积。

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

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

相关文章

redis缓存雪崩和缓存击穿

目录 缓存雪崩 解决方案: 缓存击穿 ​解决方案 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 解决方案: u 给不同的 Key 的 TTL 添加随机值 u 利用 Redis …

MongoDB SQL

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin> C:\MongoDB\Server\3.4\bin>net start MongoDB 请求的…

ArcGIS Pro简介下载安装地址

ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统(GIS)软件,由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程,使用户能够更好地利用地理信…

Linux下安装VMware虚拟机

目录 1. 简介 2. 工具/原料 2.1. 下载VMware 2.2. 安装 1. 简介 ​ VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 …

自监督去噪:Noise2Void原理和调用(Tensorflow)

文章原文: https://arxiv.org/abs/1811.10980 N2V源代码: https://github.com/juglab/n2v 参考博客: https://zhuanlan.zhihu.com/p/445840211https://zhuanlan.zhihu.com/p/133961768https://zhuanlan.zhihu.com/p/563746026 文章目录 1. 方法原理1.1 Noise2Noise回…

Android google admob Timeout for show call succeed 问题解决

项目场景: 项目中需要接入 google admob sdk 实现广告商业化 问题描述 在接入Institial ad 时,onAdLoaded 成功回调,但是onAdFailedToShowFullScreenContent 也回调了错误信息 “Timeout for show call succeed.” InterstitialAd.load(act…

MySQL5.7源码编译Debug版本

编译环境Ubuntu22.04LTS 1 官方下载MySQL源码 https://dev.mysql.com/downloads/mysql/?spma2c6h.12873639.article-detail.4.68e61a14ghILh5 2 安装基础软件 cmakeclangpkg-configperl 参考:https://dev.mysql.com/doc/refman/5.7/en/source-installation-prere…

命令行快捷键Mac Iterm2

原文:Jump forwards, backwards and delete a word in iTerm2 on Mac OS iTerm2并不允许你使用 ⌥← 或 ⌥→ 来跳过单词。 你也不能使用 ⌥backspace 来删除整个单词。 下面是在Mac OS上如何配置iTerm2以便能做到这一点的方法。 退格键 首先,你需要将你的左侧 ⌥…

第5章 运算符、表达式和语句

本章介绍以下内容: 关键字:while、typedef 运算符:、-、*、/、%、、--、(类型名) C语言的各种运算符,包括用于普通数学运算的运算符 运算符优先级以及语句、表达式的含义 while循环 复合语句、自动类型转换和强制类型转换 如何编写…

MyCat配置文件schema.xml讲解

1.MyCat配置 1.1 schema标签 如果checkSQLschema配置的为false,那么执行DB01.TB_ORDER时就会报错,必须用use切换逻辑库以后才能进行查询。 sqlMaxLimit如果未指定limit进行查询,列表查询模式默认为100,最多只查询100条。因为用mycat后默认数…

计算机网络(4) --- 协议定制

计算机网络(3) --- 网络套接字TCP_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/132035757?spm1001.2014.3001.5501 目录 1. 协议的基础知识 TCP协议通讯流程 ​编辑 2.协议 1.介绍 2.手写协议 1.内容 2.接口 …

yolo-v5学习(使用yolo-v5进行安全帽检测错误记录)

常见错误 跑YOLOv5遇到的问题_runtimeerror: a view of a leaf variable that requi_Pysonmi的博客-CSDN博客 python train.py --img 640 --batch 16 --epochs 10 --data ./data/custom_data.yaml --cfg ./models/custom_yolov5.yaml --weights ./weights/yolov5s.pt 1、梯度…

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot(x,y,kind,data) #lineplot(x,y,data) #直方图 #displot(data,rug) #条形图 #barplot&…

接口测试——python接口开发(二)

目录 1. python接口开发框架Flask简介与安装 2. 使用Flask开发一个Get接口 3. 使用Flask开发一个Post接口 4. Flask结合PyMySQL接口与数据库的交互 1. python接口开发框架Flask简介与安装 Flask接口测试框架的简介与安装Flask是轻量级的web开发框架相比于其他框架&#xff…

C++ Primer(第5版) 全书重点学习笔记

目录 第12章 动态内存 12.1 动态内存与智能指针 12.1.6 weak_ptr 12.2 动态数组 12.2.1 new和数组 12.2.2 allocator类 第12章 动态内存 12.1 动态内存与智能指针 12.1.6 weak_ptr weak_ptr是一种不控制所指向对象生存期的智能指针,它指向由一个shared_pt…

《Zookeeper》从零开始学Zookeeper源码(二)之数据序列化与通信协议

目录 序列化与反序列化通信协议请求头的数据结构响应头的数据结构 序列化与反序列化 zookeeper的客户端与服务端、服务端与服务端之间会进行一系列的网络通信,在进行数据的传输过程中就涉及到序列化与反序列化,zookeeper使用Jute作为它的序列化组件&…

【雕爷学编程】Arduino动手做(187)---1.3寸OLED液晶屏模块3

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

LangChain+ChatGLM整合LLaMa模型(二)

开源大模型语言LLaMa LLaMa模型GitHub地址添加LLaMa模型配置启用LLaMa模型 LangChainChatGLM大模型应用落地实践(一) LLaMa模型GitHub地址 git lfs clone https://huggingface.co/huggyllama/llama-7b添加LLaMa模型配置 在Langchain-ChatGLM/configs/m…

C++入门之stl六大组件--List源码深度剖析及模拟实现

文章目录 前言 一、List源码阅读 二、List常用接口模拟实现 1.定义一个list节点 2.实现一个迭代器 2.2const迭代器 3.定义一个链表,以及实现链表的常用接口 三、List和Vector 总结 前言 本文中出现的模拟实现经过本地vs测试无误,文件已上传gite…

Word中如何断开表格中线段

Word中如何断开表格中线段_word表格断线怎么弄_仰望星空_LiDAR的博客-CSDN博客有时候为了美观,需要实现如下的效果,即第2条线段被断开成3段步骤如下:选中需要断开的格网,如下,再选择段落、针对下框标即可。_word表格断…