论文《Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose》阅读,基于openpose的轻量级cup实时运行实现

论文原地址:https://arxiv.org/pdf/1811.12004.pdf

原openpose分析

作者一开始就分析原openpose的网络算法,原openpose的backbone是VGG-19。原openpose的refinement stage有5个阶段。并且坐着把5个refinement stage的正确率测试了一下,发现从第一个refinement stage1之后,正确率没有提升多少,但是运算量就加大了。并且坐着还发现了refinement stage网络的关键点定位(heatmap)和关键点组合(pafs)两部分的两条分支运算,有不少操作是一样的,造成运算冗余。

所以,作者作了以下改进:

优化部分

①新的网络设计。作者通过分析,觉得第一个refinement stage1之后的其他refinement stage,正确率没有提升多少,运算量却加大了不少,所以只采用initial stage+refinement stage两个阶段网络。(此处,我觉得到refinement stage2阶段的性价比比较高,refinement stage1的正确率还是有点低,尽管运算量不大。但是refinement stage2再加了约19GFLOPs的同时正确率就提高了3%左右,性价比更好。)

②更换backbone。用MobileNet替换,并用dilated conv空洞卷积优化网络。并且进行了一系列对比实验,发现MoblieNet v1比MobileNet v2效果居然更好。

③refinement stage中的关键点定位(heatmap)和关键点组合(pafs)部分的网络权值共享,减少操作计算量。最后两个卷积层才分出两个分支分别用来预测关键点的定位(heatmap)和关键点组合(pafs)。

④原openpose的refinement stage中都是使用7x7的卷积核。作者却使用了三个连续的1x1, 3x3, 3x3的卷积核来代替7x7,并且最后的3x3是使用了空洞卷积, dilation=2。另外由于用3个卷积核代替原来的一个卷积核,网络层数变得很深,所以作者又加上了一个residual连接。

⑤作者分析了原openpose代码并删除了额外的内存分配,使用OpenCV的例程并行化了关键点提取,这大大加快了代码的速度。

优化对比

作者使用CPU Intel core i7-6850K实验,可以看出,在正确率下降不多的情况下速度却提高了很多,这对于人体姿态估计实时性的贡献还是很大的。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值