Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose

Lightweight OpenPose:
(附上个人github实现: 地址)
OpenPose很好,目前在多人目标关键点检测方面基本已经成为一个baseline. 但原始的openpose需要很好的显卡参与计算,或者说目前大部分关键点检测网络都是依赖于GPU的.这篇文章就提出如何基于OpenPose的设计思路,设计一个可以在纯CPU上实时跑的多人关键点检测网络,作者命名为"Lightweight OpenPose".

首先简单介绍下OpenPose,这篇文章我也没有细看,只是大概了解其中的内容.OpenPose是一个bottom-up的方法,先检测出图像上的所有人体关键点,然后根据paf(part affinity fields)将关键点进行聚类,使得任何人之间能够区分开来. OpenPose整体的pipeline如下:
在这里插入图片描述
Backbone使用的是VGG-19, 之后接连续6个stage. 每个stage都有两个分支,一个用来预测heatmap,一个用来预测paf. 本文作者沿用这个结构,但改变了一些网络结构,使其成为"Lightweight OpenPose":

  1. 原始的6个stage太多. 作者发现从第3个stage,即第二个refinement stage开始(第一个stage称之为 initial stage),AP值结果提升很少,但GFLOPs增加很大.(下表所示)所以作者砍掉了后面的四个stage,只保留了第一个initial stage和第一个refinement stage. 在这里插入图片描述
  2. 原来的stage都是双路并行,其实很多操作都是一样的,作者发现这些操作之间应该可以权值共享.因此对于剩下的stage,将其改为一路操作,只有在最后才分开出两个branch,分别用来预测heatmap和paf. 另外,原来的branch中都是使用7x7的卷积核,作者使用了三个连续的1x1, 3x3, 3x3的卷积核来代替7x7,并且最后的3x3是使用了空洞卷积, dilation=2. 另外由于用3个卷积核代替原来的一个卷积核,网络层数变得很深,所以作者又加上了一个residual连接. 最终的设计如下:
    在这里插入图片描述在这里插入图片描述
  3. stage方面修改完了,最后就是backbone方面.原来的openpose是VGG-19,作者测试了最近两年新出的网络结构,例如PVANet, MobileNet V1, MobileNet V2, 以及 Dilated residual Network. 最终测试发现dilated + MobileNet V1 结果最好.(不知道为什么MobileNet V2反而结果更差). 另外对于原openpose在VGG-19后面新加的两个conv4_3, conv4_4,使用3个depthwise separable conv代替,channel数从256降为128. 最后的网络设计及精度如下表所示:
    在这里插入图片描述

总结
这是一个很好的实现,在降低原始openpose map值不到%1的情况下做到了在cpu上的实时操作,并且加入了最近很火的MobileNet, dilated conv, residual(这个应该算老的)等结构,很具有工业参考价值. Idea和Practice都很不错.

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值