OpenPose学习笔记

目录

1.摘要

2.论文解读

2.1. 多人的2D姿态估计难点:

2.2. 算法原理:

2.3. 损失函数:

2.3.1. CMP(confidence maps for part):

2.3.2. PAF(part affinity fields):

2.3.3. 使用PAFs进行多人解析:

3. Openpose环境搭建及demo测试

3.1. 遇到的问题:

3.2. demo测试结果:

4. OpenPose输出定义



1.摘要

       本文重点解读openpose开源项目的论文之一openpose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields,并搭建openpose环境,测试openpose demo。

2.论文解读

        论文讲述了多人图像中2D姿态检测方法PAF(Part Affinity Fields),即部分亲和力字段。采用bottom-up的方式,先检测出各个关节点,再将它们与个体联系起来,实现了对多人的实时检测。

2.1. 多人的2D姿态估计难点:

(1)人数规模及人的位置不确定;

(2)人与人之间存在干扰,使关节关联变得困难;

(3)人数越多复杂度越高,实时性能越差。

        Top-down方式先检测出单人,再做姿态估计,这种方式实时性差,且姿态估计的准确性依赖于人员检测器。而bottom-up方式在最终解析时成本高,难度大。文中提到的PAF是一组对位置和图像上肢体方向进行编码的2D矢量场。

2.2. 算法原理

                              

图1  openpose原理图

        输入原始图,由VGG-19的前10层初始化并进行微调,生成一组特征映射F作为第一阶段的输入。在此阶段,网络产生一组PAFs,即像素点在骨架中的走向(肢体),上图中蓝色部分,,其中为第1阶段推理的CNNs。在随后的每一阶段,将前一阶段的预测与原始图像特征F串联起来,用于产生精细的预测,迭代次后进行置信度S:关键点(人体关节)的循环,上图橙色部分。

        此图是在论文(CVPR, 2017)的基础上的更新(IEEE,2019)(目前网上介绍的都是以前的结构),将每个7x7卷积核替换为3个连续的3x3卷积核,在减少计算量的同时保留了接收域。前者的操作数为2 x -1=97,而后者仅为51。该网络的非线性层数增加了两倍,既能保持较低的层次特征,又能保持较高的层次特征。2017paper在每个阶段都对PAF和置信度图分支进行了细化。但是PAF提高了置信度图的结果,反之不成立。即查看PAF通道输出,就可以猜测出身体部位的位置,但是通过一堆没有其他信息的身体部位把它们解析成不同的人。因此,现在每个阶段的计算量减少了一半。

2.3. 损失函数:

                

                

                

        其中L*为groundtruth PAF, S*为groundtruth置信度图,W为像素p处注释缺失时W(p)=0的二元掩码, 如果某个关键点标注缺失则不计算该点。该掩码用于避免在训练过程中惩罚真实的正向预测。

2.3.1. CMP(confidence maps for part):

        关键点检测。通过图像中标注的2D点xj,k计算S的groundtruth(S*),其中xj,k表示图片中第k个人的第 j 种关节。计算方法:Sj*符合正态分布,当像素点P接近注释点xj,k时,达到正态曲线的峰值,则每张图像中第j种关节的S,为图像中k个人的正态分布峰值。

2.3.2. PAF(part affinity fields):

        关节连接。

,其中

2.3.3. 使用PAFs进行多人解析

        多人检测问题转化为二分图匹配问题,并用匈牙利算法求得相连关键点最有匹配。

3. Openpose环境搭建及demo测试

        Win10系统下环境搭建流程如下:

                                                          

图2 环境搭建流程

3.1. 遇到的问题:

(1)根据网上教程装CUDA时,运行CUDA smples出错,VS2019无法加载项目。原因是自定义安装过程中去掉了VS Integration。重新安装,组件默认勾选。其他步骤按照CUDA官网教程即可。

(2)OpenPose模型库下载的时候速度特别慢,每秒3k/s,而且经常中断。耗时了两天时间,最后利用多线程下载解决了问题。

(3)Cmake时出现以下问题:

                                 

图3  cmake时的报错信息

        原因查看下图,发现Caffe的目录与我下载解压目录不一致,解压时选择了到caffe下一级目录,导致找不到文件。此处直接下载了github上openpose提供的对应版本caffe(20190516),没有使用之前anaconda3中下载的。

图4  错误解决后的信息状态

3.2. demo测试结果:

(a)
(b)
(c)

  

        默认开启电脑自带摄像头(a)(没有外接摄像头,截不到全身截图,尴尬。。。),(b)为本地视频(mp4格式),(c)为openpose中提供的视频(avi格式)。更改方法是更改openposedemo的外部依赖项中的flags.hpp文件中第36行video值,如下:

图5  更改数据源方式

        如果要更改视频源为图片,保存结果,保存json等设置,也均在此文件中设置。具体设置方法参考对应的属性说明进行设置。

4. OpenPose输出定义

关键点定义官方文档

  • 26
    点赞
  • 262
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值