【写在前边】
本文是对论文《OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》学习时所做的记录和总结.
论文:
https://arxiv.org/abs/1611.08050
时间:2016.11.24
作者团队:CMU
分类:计算机视觉--人体关键点检测--2D bottom-up
项目:
https://github.com/ZheC/Realtime_Multi-Person_Pose_Estimation
参考:
本文目录:
一.论文翻译
二.论文总结
三.论文创新
本文声明:
1.写该总结的初衷在于学习和记录,如有侵权,私聊我修改。
2.水平有限,不足之处感谢指出。
3.如有想法,欢迎讨论;如有收获,感谢收藏点赞;没有时间看的同学欢迎收藏mark;欢迎关注专栏,我将持续更新~~
一.论文翻译
暂不翻译,有同学需要的话评论一下我抽时间翻译~
二.论文总结
1.动机
作者其实就是想结合他们之前做的CPM来做一个bottom-up的姿态估计算法,这样就可能又快又好。
2.思想
(1)以bottom-up的方式把多人姿态估计问题表示为 检测所有关键点+关键点关联 (2)使用全卷积的方式来提取特征,整个网络包含两个平行分支: 分支1 与CPM的第一阶段一样预测所有人的所有关键点的heatmaps w×h×(J×1),J表示关键点个数; 分支2 预测part affinity fields用于关键点的关联(所谓的PAFs其实也是个类似heatmap的东西,表示每个像素点所处肢体的方向向量(2维的),整个PAFs的形状为w×h×(C×2),其中C是肢体的个数。(3)和CPM类似,整个网络仍然是多阶段地不断细化预测结果,并在每个阶段使用中间监督。
3.pipeline
如上图2所示,整个pipeline包含4步: (1)输入图像 (2)两分支多阶段的CNN网络同时预测maps(预测关键点)和fields(预测肢体) (3)根据maps和fields做二分匹配 (4)形成最终的姿态 其中第(2)步的网络结构示意图如下图3所示:
在这个结构中,每阶段的输出都包含maps和fields两部分,公式表示如下:
其中S是part maps,L是affinity fields,ρ和φ分别代表两个分支的CNN结构。
4.损失函数
整个CNN网络包含多个阶段,每个阶段都有两个分支,所以每个阶段的每个分支都有对应的损失函数,公式如下所示:
其中W(p)是二元mask,主要是为了防止系统惩罚那些没有标注信息的TP的点(标注不是完善的,有的位置可能是关键点或者肢体的TP,但是没有标注出来,这时候W(p)=0,不对该点进行惩罚)。
所有阶段所有分支的总的损失函数就是简单的相加:
5.GT的标注
标注分为两部分,一个是关键点的标注,一个是肢体的标注:
(1)关键点的标注和CPM以及其他论文的一样都是关键点的高斯撒点;如下公式6所示
(2)肢体的标注
对于图上的一个点p而言,如果这个点属于第k个人,先确定这个点对应的肢体可能是什么(比如下图的p可能是属于右小臂,右小臂就是右手肘xj1,k和右手腕xj2,k构成的),然后使用如下公式8进行标注。(这里其实有两个问题:一个是怎么判断点p属于哪个人?另一个是怎么判断点p属于哪个肢体?这里我不展开说明,具体的判断详见论文2.3)
其中向量v是对应方向的单位向量:
这个标注直白的说就是:如果点p在肢体上,那就标注为这个肢体的单位向量,否则就标为(0,0)。
三.论文创新
一句话来说就是使用类似CPM的多阶段CNN架构,分出两个分支同时预测关键点part heatmaps和关键点关联的亲和度part affinity fields,得到了又好又快的down-up姿态估计模型,斩获2016COCO关键点估计冠军。
看到这就点个赞在走吧~
这篇论文我没有太详细地翻译和总结,一是因为没时间,二是因为看一下原论文其实写的很清楚,比较容易理解。如果有哪里不清楚的欢迎评论提出来一起讨论~
如果希望我详细地翻译并总结一下 评论一下然后点个赞,我有空的时候来做。