赞
踩
Transformer架构已经成为自然语言处理的首选模型,目前正被引入到图像分类、目标检测、语义分割等计算机视觉任务中。此前,在人体姿态估计领域,卷积架构仍然占主导地位。
针对视频3D人体姿态估计,作者提出一种纯粹基于transformer的方法(不包含卷积结构设计)——PoseFormer。
具体来讲,针对一段帧序列,作者设计了一种spatial-temporal(时空联合) transformer结构,来对视频序列每一帧中人体关节点之间的联系(空间角度)+帧之间的时间相关性(时间角度),进行综合建模,最后输出center frame的精确三维人体姿态。
什么是Human pose estimation(HPE)?
- HPE aims to localize joints and build a body representation (e.g. skeleton position) from input data such as images and videos.
- HPE提供了人体的几何和运动信息,可以应用于多种(人机交互、运动分析、医疗保健等)领域。
HPE当前的工作大致可分为两类:
Transformer 由于其高效性、可扩展性和强大的建模能力,已经成为自然语言处理的标准。得益于Transformer的自注意力机制,长输入序列之间的全局相关性可以被清晰地捕获。这使得它成为序列数据问题的一个特别合适的架构,因此自然地扩展到3D HPE。
- transformer在视觉任务中的应用并不容易:需要特定设计才能比肩CNN的性能,需要大规模数据集或数据增强+正则化的小规模数据集,且现有transformer主要用于图像分类,目标检测,分割。怎么用到3D HPE还不好说。
- 于是有了作者后续的介绍。
如何在3D HPE中采用Transformer?

将图像序列中每一帧的2D pose视为一个token,如Fig1(a)所示:共f帧,每帧中有J个关节点,J个关节点数据作为一个token代表该帧的2D pose信息。
这样做忽视了空间上关节点之间的区别与联系:it ignores the natural distinction of spatial relations (joint-to-joint), leaving potential improvements on the table.后半句leave… on the table应该就是这样设计考虑不到潜在改善信息的意思吧。
将每一帧的每一个关节点坐标视为一个token,如Fig1(b)所示:token太多,内存需求太大,不合理。
所以,需要对每一帧的关节点进行巧妙地编码来保存其空间上的位置关系,同时对视频序列编码后不能生成太多的tokens。
作者说:先前的一些工作只是通过简单的操作将关节点坐标投影到一个潜在的空间,而没有考虑人体关节的运动学相关性。
作者提出的PoseFormer狠好克服了上面方案的缺陷:
PoseFormer:先利用现成的2D姿态估计器得到二维姿态序列,再进一步输出中心帧的3D姿态。其包含:
我把这部分介绍精要地融到了introduction部分。
作者通过现成的2D位姿检测器(作者实验用的是这个:cascaded pyramid network (CPN))获得每一帧的2D位姿,然后将连续帧的2D位姿序列作为输入来估计中心帧的3D位姿。

如何理解这一步?查阅!!
原文对这两块知识当然介绍的比较精简,这里我也只列出关键公式,详细内容
可以参考上述链接。
在讲完上述的Temporal Transformer Baseline后,将原本的patch embedding部分具体实现为spatial tansformer方法,组合成最终的poseformer。
PoseFormer由3个模块组成:spatial transformer module, temporal transformer module, regression head module
前一部分的时序transformer baseline主要关注于输入序列(帧与帧)之间的全局依赖性,但是并没有很好的关注到具体某一帧中各个关节点之间的运动关系,因为我们的baseline在初始部分(patch embedding),如果只使用一个简单的线性投影,很难学到一帧图片中joints之间的运动学关系。
为解决这个难题,可能直观会想到如Fig1(b)所示:将每一帧每一个joint的二维坐标作为一个单独的patch。但很明显这样干patches暴增,直接从
f
f
f变成
f
×
J
f \times J
f×J了,且模型计算复杂度也变为了
O
(
(
f
∗
J
)
2
)
O((f * J)^2)
O((f∗J)2)(这怎么算的,算的是整个模型的计算复杂度吗?需要验证一下)。于是作者提出了他的解决方案:patch embedding也用transformer方法。
作者用两个transformer分别提取时域(全局)信息和空域(局部)信息,如下图:

该模块从单帧中提取高维特征。但是我觉得还需要我们理论计算验证一下,这样做的模型计算复杂度相较于之前的 O ( ( f ∗ J ) 2 ) O((f * J)^2) O((f∗J)2)如何。
一些参数的设定,消融实验等等…
在数学上,“trivial”这个词译为“平凡”是贴切的,正如其义,就是很简单的,显而易见,不重要的,或者说不是我们特别感兴趣的,意义不大的。反之,就称为非平凡的(nontrivial),我们感兴趣的,具有一定意义的。 ↩︎
https://blog.csdn.net/qq_33331451/article/details/104810419 膨胀技术本身具有有限的时间连通性 ↩︎
RNN架构对于特别长序列的依赖关系,实践中还是不容易捕获的?原文说:recurrent networks are mainly constrained to simply sequential correlation.不知道是不是我这个意思。 ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。