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

openpose学习相关推荐

  1. 人体姿态估计openpose学习与应用

    前言 2021年时,就有做人体姿态估计的想法,具体应用场景是想去把这个姿态估计与工厂操作工的动作结合起来,搭建一套能够监控和规范产线操作工装配动作的基于视觉的人体姿态估计系统.因为一系列的各种原因就搁 ...

  2. 【OpenPose 学习笔记-01】OpenPose下examples的使用与解读

    OpenPose 安装请参看:https://blog.csdn.net/caicaiatnbu/article/details/88531486 首先查看一下OpenPose这个开源工具包里边到底有 ...

  3. OpenCV3与深度学习实例-使用OpenPose进行人体姿态估算

    为什么80%的码农都做不了架构师?>>>    import cv2 import time import numpy as np import matplotlib.pyplot ...

  4. Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)

    目录 1.人体姿态估计简介 2.人体姿态估计数据集 3.OpenPose库 4.实现原理 5.实现神经网络 6.实现代码 1.人体姿态估计简介 人体姿态估计(Human Posture Estimat ...

  5. 从0开始,基于Python探究深度学习神经网络

    来源 |  Data Science from Scratch, Second Edition 作者 | Joel Grus 全文共6778字,预计阅读时间50分钟. 深度学习 1.  张量 2.  ...

  6. Openpose+Tensorflow 这样实现人体姿态估计 | 代码干货

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 人体姿态估计指从单个 RGB 图像中精确地估计出人体的位置以及检测骨骼关键点的位置.人体姿态估计是计算机视觉领域的研究热点,是诸 ...

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

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

  8. 如何通过深度学习,完成计算机视觉中的所有工作?

    Mask-RCNN做对象检测和实例分割 作者 | George Seif 译者 | 天道酬勤,责编 | Carol 出品 | AI科技大本营(ID:rgznai100) Mask-RCNN做对象检测和 ...

  9. 深度学习笔记之《解析卷积神经网络》附下载地址

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 <解析卷积神经网络>是 @魏秀参 博士撰写的深度学习实践手册,主要以卷积神 ...

  10. 2020年最具潜力44个顶级开源项目,涵盖11类 AI 学习框架、平台

    转自 | AI开发者 工欲善其事必先利其器,这也是大部分开发者在日常工作中最重要开发原则.选择与开发内容相匹配的工具,常常会使我们事半功倍.但面对人工智能的多个领域,如:机器学习.深度学习.计算机视觉 ...

最新文章

  1. linux虚拟机启动网卡命令,命令行下无法联网怎么办,vmware下安装archlinux实现网络连接,实机grub引导启动linux...
  2. 跟小博老师一起学JSP ——连接数据库
  3. 第十三届全国大学生智能汽车竞赛获奖名单
  4. stl的set,multiset, map, multimap, deque, list, stack, queue, priority_queue
  5. android点击事件禁用,android-禁用所有视图的触摸事件
  6. IDC关于使用JBoss Fuse的商业价值的报告(与Apache Camel一起使用)
  7. 前端学习(1856)vue之电商管理系统电商系统之安装mysql出现mysql报错:Can’t start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址
  8. python图像线条提取_python3 图像细化(提取骨架线)
  9. jmeter java性能_使用JMeter进行性能测试(Java请求)
  10. sparkstreaming自定义kafka
  11. java post加密_使用Java和PHP的BCrypt,发送加密的密码并对其进行解码 - java
  12. 《Photoshop修饰与合成专业技法》—第1章快速选择工具和调整边缘
  13. svn图文教程-宋正河整理
  14. 亚马逊向GuardDuty服务添加三种新的威胁检测规则
  15. python得语言编程模式_一图看懂编程语言迁移模式:终点站是Python、Go、JS!
  16. 韦东山freeRTOS系列教程之【第八章】事件组(event group)
  17. 设计师必备,素材网站如千图包图免费下载的方法
  18. 纯电动整车控制器-基于模型的开发
  19. 色环电阻阻值如何识别
  20. python模拟登录163邮箱_python模拟登陆163邮箱并下载邮件内容(第三版代码片段)

热门文章

  1. Java+mysql毕业设计,网上订餐系统
  2. 17素材网手动免费下载素材
  3. 面试官问我Python日历模块,我直接用Flask开发Web版日历应用给他
  4. c语言二fseek从文件头移动_C语言fseek函数
  5. VAR模型Stata实例操作
  6. 按键精灵不成熟的大漠游戏自动加血保护代码 大漠字库使用案例
  7. 中国互联网二十四年红黑史
  8. ubuntu下使用dos2unix
  9. 什么是组播?让我们一起解密组播协议(IGMP、PIM)
  10. 摄影师伴侣——ON1系列摄影后期图像处理软件合集