姿态估计的目标是在RGB图像或视频中描绘出人体的形状,这是一种多方面任务,其中包含了目标检测、姿态估计、分割等等。有些需要在非水平表面进行定位的应用可能也会用到姿态估计,例如图形、增强现实或者人机交互。姿态估计同样包含许多基于3D物体的辨认。

在这篇文章中,Model Zoo的作者汇总了几种开源的深度学习模型以及针对姿态估计的代码,论智对其进行了编译,如有遗漏请在评论中补充。

DensePose

创作这篇文章的初衷就来源于Facebook研究所的DensePose,上周,Facebook公布了这一框架的代码、模型和数据集,同时发布了DensePose-COCO,这是一个为了估计人类姿态的大型真实数据集,其中包括了对5万张COCO图像手动标注的由图像到表面的对应。这对深度学习研究者来说是非常详细的资源,它对姿态估计、身体部位分割等任务提供了良好的数据源。

DensePose的论文中提出了DensePose-RCNN,这是Mask-RCNN的一种变体,可以以每秒多帧的速度在每个人体区域内密集地回归特定部位的UV坐标。它基于一种能将图像像素通过卷积网络映射到密集网格的系统——DenseReg。模型的目标是决定每个像素在表面的位置以及它所在部分相对应的2D参数。

DensePose借用了Mask-RCNN的架构,同时带有Feature Pyramid Network(FPN)的特征,以及ROI-Align池化。除此之外,他们在ROI池化的顶层搭建了一个全卷积网络。想了解DensePose更多的技术细节,请阅读原论文。

论文地址:arxiv.org/abs/1802.00434

GitHub地址:github.com/facebookresearch/Densepose

数据集地址:github.com/facebookresearch/DensePose/blob/master/INSTALL.md#fetch-densepose-data

OpenPose

OpenPose是由卡内基梅隆大学认知计算研究室提出的一种对多人身体、面部和手部形态进行实时估计的框架。

OpenPose同时提供2D和3D的多人关键点检测,同时还有针对估计具体区域参数的校准工具箱。OpenPose可接受的输入有很多种,可以是图片、视频、网络摄像头等。同样,它的输出也是多种多样,可以是PNG、JPG、AVI,也可以是JSON、XML和YML。输入和输出的参数同样可以针对不同需要进行调整。

OpenPose提供C++API,以及可以在CPU和GPU上工作(包括可与AMD显卡兼容的版本)。

GitHub地址:github.com/CMU-Perceptual-Computing-Lab/openpose

数据集地址:domedb.perception.cs.cmu.edu/

Realtime Multi-Person Pose Estimation

这一模型和上面的OpenPose高度相关,同时特征模型能与多种框架相关联。论文的作者提供了一种自下而上的方法,对多人的姿态进行实时估计,不需要用任何人物探测器。

这种方法运用了一种非参数表示,我们称为Part Affinity Fields(PAFs),用它可以学习将图中人物和其身体部位联系到一起。有关该技术的具体细节和理论,可以阅读原文。

另外,这一方法最棒的特征之一就是它可以在多种不同的框架中实现,针对不同框架,已经公开了相关代码和模型:

OpenPose C++:github.com/CMU-Perceptual-Computing-Lab/openpose
TensorFlow:github.com/ZheC/Realtime_Multi-Person_Pose_Estimation
Keras(1):modelzoo.co/model/keras-realtime-multi-person-pose-estimation
Keras(2):github.com/michalfaber/keras_Realtime_Multi-Person_Pose_Estimation
PyTorch(1):github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation
PyTorch(2):github.com/DavexPro/pytorch-pose-estimation
PyTorch(3):github.com/MVIG-SJTU/AlphaPose/tree/pytorch
MXNet:github.com/dragonfly90/mxnet_Realtime_Multi-Person_Pose_Estimation
论文地址:arxiv.org/abs/1611.08050

GitHub地址:github.com/ZheC/Realtime_Multi-Person_Pose_Estimation

AlphaPose

AlphaPose是一款精准的多人姿态评估工具,并声称是第一款开源系统。AlphaPose既可以在图片、视频或多图中进行姿态估计,也能在画面中对动作进行追踪。它的输出形式非常广泛,包括PNG、JPG和AVI等具有关键点的图片形式,也有JSON格式的输出,这一特点也使其成为众多应用受欢迎的工具。

目前,这一工具支持TensorFlow和PyTorch两种实现。AlphaPose利用一种区域性的多人动作估计框架将不精准的人类边界框该进程精确的动作估计。这里有三种元素:对称空间转换网络(SSTN)、参数化姿态非极大抑制(NMS)以及姿态导向的生成器(PGPG)。更多技术细节请查看原论文。

论文地址:arxiv.org/abs/1612.00137

GitHub地址:github.com/MVIG-SJTU/AlphaPose

Human Body Pose Estimation

该模型利用MPII人类姿势数据集进行训练,这是一个内容十分丰富的数据集,专门针对人类姿态估计。目前只有TensorFlow的实现。

这项研究将人类姿态估计的任务应用到真实的图片中,他们的方法既解决了动作识别,也能进行估计,与之前先检测人类动作在对此进行推测的技术有所区分。在实施过程中用到了基于CNN的探测器和整数线性规划法。

ArtTracker论文:arxiv.org/abs/1612.01465

DeeperCut论文:arxiv.org/abs/1605.03170

网站地址:pose.mpi-inf.mpg.de/

GitHub地址:github.com/eldar/pose-tensorflow

DeepPose

相比于前面几种方法来说,DeepPose算是比较“古老”的了,论文发布与2014年,提出了一种基于深度神经网络的姿态估计方法,是基于DNN向身体关节回归的问题。它以一种整体的方式估计姿态,并且表述起来非常简洁强大。

目前网上还没有官方实现过程。但是有人做出了复现结果:

Chainer:github.com/mitmul/deeppose
TensorFlow:github.com/asanakoy/deeppose_tf
DeepPose是第一个将深度学习应用到人类姿态估计上的应用,并且取得了当时顶尖的结果,成为了其他方法的baseline。

论文地址:static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/42237.pdf

小结
姿态估计是计算机视觉领域一个非常热门的话题,Facebook最近发布的DensePose让人越来越多地关注这个问题。进行姿态估计有很多方法,现有的资源一定可以对你有所启发。如果你有其他的好方法,请在下面留言分享!