1. 前言

人体姿态估计是MSCOCO数据集(http://cocodataset.org/)上面的一项比赛,人体关键点检测,目前主流的做法都是深度学习来做。可以分为两个大的方向:

(1)top-down方向:自顶向下的方法,目前的主流,像cpn,hourglass,cpm,alpha pose等都是top-down。主要分为两个阶段,行人检测和单人姿态估计,行人检测对后面的单人姿态估计影响很大,通常会使用性能较好的检测器(比如faster rcnn,fpn之类的),然后把检测到的行人框(bbox)作为单人姿态估计的输入,所以把行人准确无误的检测出来非常重要。

(2)bottom-up方向:自底向上方法,典型就是COCO2016年人体关键点检测冠军open pose。主要分为两个阶段:检测出输入图片中左右的人体关键点,根据某种策略对关键点之间进行连线,这时候就容易出现把a的关键点和b的关键点连接起来,open pose里面的策略是提出PAFs,让网络学习人体关节的矢量场信息,相当于得到了一个方向信息,结合前面的坐标点,可以确定连线。

2.构建网络

CPN网络整体结构非常的直观明了,包含两个部分GlobalNet和RefineNet,顾名思义,GlobalNet是一个全局的初步的检测,相当于一个粗检测,会得到一个不错的结果;而RefineNet是一个微调网络,在GlobalNet的输出基础上做进一步的精细检测,会得到更加精确的结果。

GlobalNet相当于是一个FPN结构,假设使用ResNet50作为backbone(全文都是以ResNet50作为backbone),左边的四个实心方块就是ResN50的res2- res5(包含[3,4,6,3]个Residual block),右边的虚线方块就是特征融合的过程,不断通过上采样和elem-sum的过程做特征融合。共有4个层次,这样就会得到4个不同的结果,都需要计算loss,不同的层次对应groundtruth的heatmap使用的sigma大小不一样,根据实验来选择,通常使用7-15之间的奇数。

RefineNet就更简单了,把GlobalNet提取到的4个层次特征分别经过一些bottleneck(也是使用Residual block)和一些不同倍数的上采样,然后在特征层上进行concat进行特征融合,最后再经过一个bottleneck,输出最后的结果,最后的结果是outputsize[0]*ouputsize[1]*num_points的形式,对于COCO数据集,num_points=17,output_size=[64,48](如果输入是256*192),共有17个feature map,每一个表示一个关键点信息。在feature map上的heatmap中热力值最大的点就表示对应的关键点。

3.LOSS的设计

GlobalNet和RefineNet都是使用L2 loss,只是在RefineNet里面略有点不同,作者设计了一个类似ohem的策略进行loss回传,ohkm(Online Hard Keypoints Mining)在线困难关键点挖掘,ohkm更关注与高层次的信息,而ohem更关注与困难样本。

Ohkm原理很简单,在loss回传的时候,只回传那些loss值比较大的loss,比如说只回传最大的8个loss(一共有17个点,相当于有17个loss),相当于是让网络更针对比较难学的关键点,从而会有更精细的结果。

关于loss的设计作者做了不少实验,关于到底使用L2 loss还是ohkm版的L2 loss,以及GlobalNet到底使用还是不使用loss。实验结果表明,前面使用普通L2 loss,后面使用ohkm的L2 loss效果最好。

4.Ablation Experiment

消融实验作者也做了很多,

  1. 关于行人检测以及里面的一些处理,比如nms和softnms等等
  2. 关于网络的设计主要和hourglas对比,
  3. 关于RefineNet的设计,作者尝试过不加bottleneck直接上采样和concat,加一个bottleneck,提取GlobalNet输出4层的哪几层(C2-C5)

最终得到图1的RefineNet结构,4个不同层次加不同个数的bottleneck,效果最好。

5.源码和结果

作者提供了TensorFlow版本的源码(https://github.com/chenyilun95/tf-cpn),质量不错,能达到论文的效果

Github上有很多其他版本,有一个PyTorch版本(https://github.com/GengDavid/pytorch-cpn

)复现作者的tf代码,效果不错,代码也很整洁。

6. 结论

  1. 分析多人姿态估计的影响因素,提出一种新的网络结果CPN,由GlobalNet和RefineNet组成
  2. 对RefineNet的精心设计和提出ohkm
  3. 主要是遭不住人家效果好,拿了冠军呀

做了一些实验,效果确实很不错。下次写上

参考文献

[1] Chen Y, Wang Z, Peng Y, et al. Cascaded Pyramid Network for Multi-Person Pose Estimation[J]. 2017.

[2] Cao Z, Simon T, Wei S E, et al. Realtime Multi-person 2D Pose Estimation Using Part Affinity Fields[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2017:1302-1310.

[3] https://github.com/chenyilun95/tf-cpn

[4] https://github.com/GengDavid/pytorch-cpn

Paperreading 之二  多人人体姿态估计COCO2017冠军—CPN相关推荐

  1. Paperreading 之二 多人人体姿态估计COCO2017冠军—CPN(含TF和torch实现)

    版权声明:遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/baolinq/article/details/839934 ...

  2. 报名 | 旷视研究院解读COCO2017人体姿态估计竞赛冠军论文

    昨天,量子位·吃瓜社联合Face++推出了线上论文分享系列第一期,旷视研究院研究员.论文一作彭超解读了COCO 2017物体检测夺冠算法论文<MegDet: A Large Mini-Batch ...

  3. CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介、案例应用之详细攻略

    CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介.案例应用之详细攻略 目录 Pose E ...

  4. 基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了

    作者 | 站长 pursueYfuture 来源 | AI专栏(ID: pursue-Y-future) 计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等.在最近的CV ...

  5. 深度学习人体姿态估计算法综述

    https://www.infoq.cn/article/6Btg0-1crfmb7svRGa6H 人体骨架是以图形形式对一个人的方位所进行的描述.本质上,骨架是一组坐标点,可以连接起来以描述该人的位 ...

  6. 人工智能 信道估计 深度学习_深度学习人体姿态估计算法综述

    作者 | Bharath Raj 译者 | 李志 编辑 | Vincent AI 前线导读:人体姿态估计的任务是从包含人体的图片中检测出人体关键点,并恢复人体位姿.随着深度学习的发展,越来越多的深度学 ...

  7. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计

    点击蓝色"AI专栏"关注我哟 重磅干货,第一时间送达 这是站长的第 41 篇原创优质长文 前几天站长写的一篇的文章[基于深度学习算法和传统立体匹配算法的双目立体视觉]大受好评.这次 ...

  8. 【人体姿态估计综述(2D、3D)】

    人体姿态估计综述(2D.3D) 一.任务描述 二.2D人体姿态估计 2.1 2D单人姿态估计 2.1.1 回归方法 2.1.2 heatmap方法 2.2 2D多人姿态估计 2.2.1 自顶向下 2. ...

  9. 融合人体姿态估计和目标检测的学生课堂行为识别

    融合人体姿态估计和目标检测的学生课堂行为识别_参考网 摘要: 在課堂教学中 , 人工智能技术可以帮助实现学生行为分析自动化 , 让教师能够高效且直观地掌握学生学习行为投入的情况 , 为后续优化教学设计 ...

  10. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计...

    点击蓝色"AI专栏"关注我哟 重磅干货,第一时间送达 这是站长的第 41 篇原创优质长文 前几天站长写的一篇的文章[基于深度学习算法和传统立体匹配算法的双目立体视觉]大受好评.这次 ...

最新文章

  1. Pycharm那些隐藏的实用小技巧,太强了
  2. 一个“扛住100亿次请求”的春晚红包系统
  3. Java后台开发Tomcat添加https支持小程序开发过程
  4. var模型的matlab实现_Eviews中VAR模型的操作、脉冲响应分析和方差分解的实现
  5. HihoCoder - 1483 区间最值
  6. U盘启动盘恢复为普通盘
  7. linux 火狐浏览器插件,Linux系统Firefox(火狐浏览器)插件挂机
  8. 我是做Java的,刚入职了,月薪20k,面试题还是很管用的
  9. en55032最新标准下载_欧盟新EMC标准EN55032强制实施
  10. java 分布式 定时任务_Java中实现分布式定时任务的方法
  11. 如何实现镜像网站内容的同步
  12. 游戏排行榜实现mysql_游戏中百万用户排行设计与实现
  13. 戴尔微型计算机7050配置,小巧彪悍 戴尔 OptiPlex 7050 微型机评测
  14. 如何提高测试用例评审效率?
  15. Doc2Vec模型的介绍与gensim中Doc2Vec的使用
  16. 深入浅出零知识证明(二):zkSNARKs基本原理
  17. Autosar MCAL-GTM之定时输入TIM
  18. Matlab模拟蒲丰投针实验计算Π值
  19. 中国数字油画网 数字油画软件 照片转数字油画 ai制作数字油画
  20. LT9211产品概述

热门文章

  1. 十个前端UI优秀框架
  2. android usb 摄像头 驱动开发,自制USB摄像头硬件的驱动编写_修改UVC
  3. java 简繁体转换库_java简体字繁体字互相转换(附jar包下载资源~)
  4. iexplore.exe命令行参数解释
  5. 文献阅读: 基因组选择技术在农业动物育种中的应用
  6. android amr转换mp3格式文件,安卓批量amr转mp3 微信amr批量转换
  7. 如何将一个向量投影到一个平面上_数学一轮复习32,平面向量数量积及其应用,三角形‘四心’模型...
  8. 28 | 机器学习:如何教会机器识别黑灰产?
  9. 计算机文件夹加密文件,如何加密计算机文件夹4种加密文件夹的方法
  10. Java读取证书报错:java.io.IOException: Unknown named curve: 1.2.156.10197.1.301