专栏首页素质云笔记关键点定位︱四款人体姿势关键点估计论文笔记

关键点定位︱四款人体姿势关键点估计论文笔记

版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/79704097

一、三款模型

几款模型目前来看的精度:CPM < DeeperCut < CMU OpenPose < AlphaPose

模型

大体框架

多人估计的应对措施

CPM

CPM是一个cascaded网络,多个stage反复去定位、修正响应图

center map,为一个高斯响应,因为cpm处理的是单人pose的问题,如果图片中有多人,那么center map可以告诉网络,目前要处理的那个人的位置。

DeeperCut

采用了自顶向下的方法针对多人进行姿态估计,所谓自顶向下的方法就是先使用CNN检测人体,即body part candidates,再判断这些关节点属于哪一个人。最后使用ILP优化模型进行姿态估计

DeepCut是利用自适应的Fast R-CNN来进行人体部分的检测

CMU OpenPose

两条线,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields ,得到这两个信息后,我们使用图论中的 Bipartite Matching 将同一个人的关节点连接起来得到最终的结果

AlphaPose

跟deeperCut比较像:对称空间变换网络(Symmetric STN)找人体位置; detection proposal用于训练姿态估计网络,从而获得大量符合真实测试场景数据分布的训练数据;第三个组成部件为参数化的姿态非极大值抑制器(Parametric Pose NMS),通过使用新的姿态距离度量来比较姿态相似性,来消除冗余姿态


1、CPM

timctho/convolutional-pose-machines-tensorflow cpm是CMU开源项目OpenPose的前身,整个framework还是比较清晰的,Pose estimation任务属于FCN的一种,输入是一张人体姿势图,输出n张热力图,代表n个关节的响应。

  • (1)级联网络,CPM是一个cascaded网络,但是CPM是一个交互的sequence framework,即上一个FCN的上下文(contextual)会作为下一个FCN的输入。
  • (2)分阶段,每个阶段都能输出各个部件的响应图(蓝色score),使用时以最后一个阶段的响应图输出为准。
  • (3)为了多人预测的center map,为一个高斯响应,因为cpm处理的是单人pose的问题,如果图片中有多人,那么center map可以告诉网络,目前要处理的那个人的位置。 因为这样的设置,cpm也可以自底向上地处理多人pose的问题。

参考:Convolutional Pose Machinesconvolutional pose machines, CVPR 2016【人体姿态】Convolutional Pose Machines

2、 CMU OpenPose (Part Affinity Fields )

github: ZheC/Realtime_Multi-Person_Pose_Estimation ildoonet/tf-pose-estimation 一些调整:mattzheng/tf-pose-estimation-applied

用Part Affinity Fields来学习如何将身体关键和个人匹配起来。主要思想是利用贪心算法自下而上的解析步骤从而达到高准确率和实时性。身体部位定位和关联是在两个分支上同时进行的。该方法获得了COCO2016 keypoints challenge中夺得第一名。 文章代码总共分为两条线,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields ,得到这两个信息后,我们使用图论中的 Bipartite Matching 将同一个人的关节点连接起来得到最终的结果。

第一条线:求所有的关键点(头,肩膀,手肘,手腕 … )

  • 1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种关键点)
  • 2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。

循环直至收敛

第二条线:求所有关节区域

  • 1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种连接(可以简单理解为骨头)区域),其实它们是一整片区域,不过每个地方的概率大小不同。
  • 2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。

循环直至收敛

根据前边两个阶段得到的两个热图,计算哪两个点连接比较好。这就要根据关节区域和点的位置来计算每个像素的小法向。生成一个法向图。

参考: 行人姿态估计–Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields姿态估计论文思路整理 – Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields基于部分亲和字段PAF(Part Affinity Field)的2D图像姿态估计Paper reading: Realtime Multi-person 2D Pose estimation using Part Affinity Fields(1)

3、DeeperCut

github:eldar/pose-tensorflow 一些调整:mattzheng/pose-tensorflow-detailed

首先使用CNN提取body part candidates,每一个候选区域对应的是一个关节点, 每一个关节点作为图中的一个节点,所有的这些候选关节点组成代表的节点组成一副完整的图,正如上图dense graph所示。节点之间的关联性作为图中的节点之间的权重。这时,可以将其看作是一个优化问题,将属于同一个人的关节点(图中的节点)归为一类,每一个人作为一个单独的类。同时,另一条分支,需要对检测出来的节点进行标记,确定他们属于人体的哪一个部分。最后,使用分类的人结合标记的部分构成最终的每个人的姿态估计。 前一个版本DeepCut: 具有以下几个优势:

  • 1)可以解决未知个数人的图像,通过归类得到有多少个人
  • 2)通过图论节点的聚类,有效的进行了非极大值抑制
  • 3)优化问题表示为 Integer Linear Program (ILP),可以有效求解

不过同样地,因为使用了自适应的Fast R-CNN来进行人体部分的检测,又使用ILP来进行多人的人体姿态估计,导致DeepCut的计算复杂度比较高。

DeeperCut 改进了:

  • (1)采用了Resnet来提高body part的检测,更加的有效,精度更高;
  • (2)使用了image-conditioned pairwise terms可以将得到足够丰富的候选区域节点压缩到一定数量的节点,而这也是整个论文的核心部分,也是stronger & faster的主要原因。如下图所示,即通过候选区域节点之间的距离来判断是否为不同的重要关节点。

参考: DeepCut及DeeperCut:基于Tensorflow的人体姿态估计 论文阅读:Deepcut&Deepercut:Joint Subset Partition and Labeling for Multi Person Pose Estimation


4、AlphaPose

——来源:姿态估计相比Mask-RCNN提高8.2%,上海交大卢策吾团队开源AlphaPose 上海交通大学卢策吾团队,今日开源AlphaPose系统。该系统在姿态估计(pose estimation)的标准测试集COCO上较现有最好姿态估计开源系统Mask-RCNN相对提高8.2%,较另一个常用开源系统OpenPose(CMU)相对提高17%。同时,卢策吾团队也开源了两个基于AlphaPose的工作:

  • (1)一个高效率的视频姿态跟踪器(pose tracker),目前姿态跟踪准确率第一。
  • (2)一个新的应用“视觉副词识别“(Visual Adverb Recognition)。

开源github:https://github.com/MVIG-SJTU/AlphaPose 训练框架:torch 预测框架:tf+torch

交大MVIG组提出RMPE的两步法框架(ICCV 2017论文),并基于此开发了AlphaPose这一人体关键点检测系统。

RMPE框架采用自顶向下的方法,先检测人,再去做姿态估计。该框架有三个主要组成部分:

  • 首先是对称空间变换网络(Symmetric STN),用于解决传统两步法中的主要问题,即imperfect proposal的问题。对于质量较差的人体检测结果,symmetric STN能够自动调整proposal的位置,将refine过后的结果输入单人姿态估计网络,并将输出映射回原空间,从而使得在人体检测框不准确的情况下,姿态估计网络依然能够有良好的效果。
  • 第二个组成部件为由姿态引导的样本生成器(Pose-guided Proposals Generator),该部件能够根据不同人体姿态生成额外的detection proposal用于训练姿态估计网络,从而获得大量符合真实测试场景数据分布的训练数据。
  • 第三个组成部件为参数化的姿态非极大值抑制器(Parametric Pose NMS)。传统的两步法中,人体定位框会有较多的冗余检测。作者通过使用新的姿态距离度量来比较姿态相似性,来消除冗余姿态。
拓展:视觉副词识别(Visual Adverb Recognition)

利用了姿势(pose)信息的,使用表情信息, RGB 和光流信息。同时,他们构建了对应的数据集:ADHA,这一数据集标注了视频中人物的位置、动作和可以描述这一动作的副词,我们还为数据用户提供了人物的 tracking 结果。 主页(包括代码):http://mvig.sjtu.edu.cn/research/adha.html

数据:http://mvig.sjtu.edu.cn/research/adha/adha.html


二、几款相关比赛:

Multi-person

Single person


三、如何训练

笔者这边用的是:mattzheng/pose-tensorflow-detailed,还算好,原作中写了用自己数据做训练的方式, 但是,mattzheng/tf-pose-estimation-applied 这个方法,原作用的是coco,封装的太好。 mattzheng/convolutional-pose-machines-tensorflow,别人用过,貌似也不错的样子。

这大兄弟在玩 AI challenger人体骨骼关节点赛题的时候,同样自己训练并开源出来。 但是,该比赛的关键点只有:14个(参考:赛题与数据),该作者在生成时候(ai2coco_art_neckhead_json.py),拼凑成17个点,与coco一致,然后就可以完全使用coco框架训练(多人模式),同时共享pairwise stat。 该作者在比赛数据上当时迭代了60W次,最终的得分为:0.36,而原来的coco数据集,多人关键点定位需要180W次。

笔者自己fork的几个项目,只玩了两个:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教你在Windows环境下升级R

    在Windows环境下,我们可以使用installr包自动将R升级到最新版本。并且可以安装软件。下面主要演示如何在Windows环境下升级R,并将旧版本安装的...

    素质
  • 学习笔记︱深度学习以及R中并行算法的应用(GPU)

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! ...

    素质
  • keras系列︱keras是如何指定显卡且限制显存用量

    keras在使用GPU的时候有个特点,就是默认全部占满显存。 若单核GPU也无所谓,若是服务器GPU较多,性能较好,全部占满就太浪费了。 于是乎有以下三...

    素质
  • 谷歌工智能开源项目Tensorflow预示着硬件领域的重大变革

    谷歌宣布将其最重要的创新项目之一 —— 人工智能引擎 ——作为开源项目发布到网上供大家免费使用,这展示了计算机软件行业正进行着什么样的变革。 最近,互联网巨头们...

    CSDN技术头条
  • 谷歌工智能开源项目Tensorflow预示着硬件领域的重大变革

    用户1737318
  • Rust Search Extension得到vercel.com的赞助

    大家好,我是Rust Search Extension的作者,将近两年的时间里我一直在不断优化和改进这款插件,希望能够把它打造成所有rust开发者(包括我自己)...

    MikeLoveRust
  • css布局 - 两栏自适应布局的几种实现方法汇总

    这种两列布局的样式是我们在平时工作中非常常见的设计,同时也是面试中要求实现的高频题。很有必要掌握以备不时之需:

    xing.org1^
  • 数据库之MySQL函数(二)

    时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 5、转换时间戳的函数

    小手冰凉
  • Flutter Widgets 之 Wrap

    Wrap可以为子控件进行水平或者垂直方向布局,且当空间用完时,Wrap会自动换行,也是常说的流式布局。

    老孟Flutter
  • Linux系列教程(二十)——Linux的shell概述以及如何执行脚本

      从这篇博客开始,我们将进入Linux的shell脚本的学习,这对于Linux学习爱好者而言是特别重要的一节,也是特别有意思的一节,shell 脚本就像我们知...

    IT可乐

扫码关注云+社区

领取腾讯云代金券