3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记

一.概述

3D人体姿态估计的方法主要分为两类:直接估计(Direct estimation)和 2D 到 3D (2D to 3D lifting) 。

其中 2D 到 3D 的方法先利用 SOTA 2D 人体姿态估计算法得到 2D 关键点,再通过神经网络估计 3D 人体姿态。基于其优异的表现,2D 到 3D 已成为主流方法。


与从单张图片中估计 3D 人体姿态相比,从视频中估计 3D 人体姿态能利用时序信息进行更准确的预测。然而主流方法大多利用时序卷积(Temporal convolutional network)来学习视频的时序信息,其表现往往受制于感受野的大小。


得益于 self-attention 机制,Transformer 能捕捉长时序输入的内在关联,且不受制于其距离。受此启发,我们设计了一种不含卷积的时空 Transformer 的网络结构。


针对多帧输入,其中 spatial transformer 能提取每帧 2D 骨架中的人体关节联系,temporal transformer 能捕捉多帧信息的时间相关性,最后输出中间帧的准确3D人体姿态。

二.模型

如何将transformer运用在视频流中的3D人体姿态估计中是本文的一大创新

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第1张图片

 上图是文中提到的两种设想的baseline,也是最容易想到的使用transformer进行人体姿态估计的方法,(a)是将每一帧图像中的17个关节坐标作为一个token,然后将给定帧数的图像送入transformer中,这样的方法将注意力集中在了不同帧之间,也就是时间维度,对于空间维度(关节点与关节点之间的联系)并没有考虑到注意力机制。

于是自然地想到可以将每一帧的每个关节坐标作为一个token,这样就既考虑到了空间上的注意力也考虑到了事件维度上的注意力的关系,如(b)所示,但是带来的问题就是token过多,这会需求极大的内存,显然是不合理的,于是本文将空间和时间的注意力提取分开,设计了一种新的结构:

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第2张图片

 与VIT中的结构类似,理解起来也较为容易,其中先进行Spatial transformer,token为一帧中的每个关节点坐标,经过encoder后可以得到一个feature,然后将给定的帧数的每一帧经过Spatial transformer分别得到一个feature,然后将feature送入temporal transformer中,在经过类似的操作最终得到3D的姿态。

三.细节部分

Spatial transformer和temporal transformer都使用了位置向量进行嵌入

不同于VIT额外学习一个用于分类的token,本文中是将得到的feature通过求均值将其变为一维向量,然后通过MLP层进行回归得到3D pose

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第3张图片

 使用了多头注意力机制

损失函数使用MPJPE损失

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第4张图片

 四.结果

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第5张图片

红色数据表示最好,蓝色数据表示次好,MPJPE指标越小表示与groundtrue的差距越小

消融实验:

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第6张图片

 

注意力的可视化结果:

3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第7张图片

 3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记_第8张图片

 五.总结

本文将transformer分别用在事件维度和空间维度上,在从2D视频中估计3D姿势的工作上得到了sota的效果,一方面依赖于2D姿态检测的技术较为成熟,另一方面依赖于引入的注意力机制,但是对于有遮挡的姿态估计还是会出现预测的错误,这往往是由于2D姿态估计是产生错误导致的,也就导致后续的3D姿态估计工作出现错误。

你可能感兴趣的:(姿态估计,3d,transformer,深度学习)