openpose学习

47 篇文章 4 订阅
1 篇文章 0 订阅

openpose过程分析

Openpose是一种botton-up的方法,就是对于一张图片,首先找到图像中的所有人的所有点,然后再对这些点进行匹配连接,让同一个人的点进行相连,具体过程如下图:

在这里插入图片描述

OpenPose的pipeline主要有两个部分:

**** 在inference阶段,输入图像,输出两个tensor,分别是关键点的heatmap和关键对应的连接关系(part affinity field, paf),这些输出的heatmap都是只有原图的8分之一。
****根据keypoint和paf的heatmap,提取所有的keypoint点,并将这些keypoint点进行分组,将同一个人的所有关键点分配到当前人上。
在OpenPose中,backbone就是使用的VGG19前4个block,然后在后面添加两个额外的卷积。backbone提取特征后,紧接着一个initial stage,这部分有两个branch,分别对应生成keypoint heatmap和PAF heatmap,再后面就跟着5个refinement stage,目的是为了进一步生成更加精确的heatmap。

在这里插入图片描述

上表描述的不同个数的refinement stage对精度AP和运算量的影响,观察可以发现,其实在使用一个refinement stage后,性能就已经达到了43.6,使用5个stage性能为48.6,性能提升并不显著,但运算量却增加了一倍,因此lightweight openpose的作者就只使用了一个refinement stage。
LightWeight openpose
backbone:
作者并没有使用VGG作为backbone了,而是使用MobileNet。但是作者发现单纯的直接使用MobileNet效果并不好,效果不好的原因是MobileNet网络结构不够深,所以感受野不够大。为什么感受野不大就会影响性能,个人分析主要有两个方面原因:一是我们在回归一个骨骼点时,不仅仅要关注骨骼点附近的情况,还应该关注更大的范围,这样才能较少误报;二是因为本身骨骼点的回归,肯定是能够学到一定的骨骼连接结构信息的,这也是为什么有时候明明骨骼点被遮挡了,但是网络仍旧能够定位到这个点的原因。为了解决因为感受野太小而造成的效果不好,作者通过使用空洞卷积(dilated convolution)来提升感受野。
refinement stage:
在openpose中,为了生成keypoint heatmaps和paf,其构造了两个branch,一个branch用来生成keypoint heatmap,一个用来生成PAF,并将这个生成heatmap的步骤称为refinement stage。
在本文的lightweight openpose,也有refinement stage,但在实现上又有两点改进:

在这里插入图片描述
1.如上图左,为原始openpose有两个prediction branch,两个branch的结构是一样,只是在输出阶段,获得不同的数量的输出结果,在lightweight openpose中(如上图右),其将两个branch合并成一个,只是在输出阶段才使用11的卷积分支出两个branch,从而获得两个结果输出。
在这里插入图片描述
2.如上图,将原来的7
7卷积替换成11,33,33的卷积级联,为了让这个级联结构与77的卷积核有同样的感受野,在最后一个3*3的卷积中,使用dilation=2的空洞卷积,另外,对与上图中的每个block,还使用了residual connection结构。

问题:OpenPose在refinement阶段的输出,会将两个branch的结果进行channel stack,为何不直接在开始的时候就只使用一个branch呢?对于7×7的卷积,我们都知道越大的卷积核,计算量也就越大,就感受野的大小来看,3个33的卷积等价于一个77的卷积,但是计算量却少了很多,因此使用小的卷积核代替大的理所当然。

总结:

lightweight openpose具体改进的有三点:

  1. 特征backbone部分使用带空洞卷积的mobilenet结构代替原来的VGG结构
  2. 将openpose的两个branch合并成一个branch,只在输出再分叉出两个输出
    3.使用作者提出的带空洞卷积的block结构代替7*7卷积
转载:https://zhuanlan.zhihu.com/p/56010675
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liiiiiiiiiiiiike

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值