Advertisement

《Real-time 2D Multi-Person Pose Estimation on CPU:Lightweight OpenPose》论文笔记

阅读量:

这篇文章提出了一种基于轻量化改进的Human Pose Estimation模型,在OpenPose的基础上进行了优化以适应Intel CPU环境运行。该模型采用了MobileNet-V1作为主干网络,并通过减少计算量的技术(如替换77卷积为33卷积)实现了更高效的推理速度。此外,在Refinement阶段进行了结构优化和计算量缩减。实验结果显示该方法在保持较高精度的同时显著提升了推理速度,在测试集上的Average Precision(AP)提升了5个点以上。

代码示例:lightweight human pose estimation.pytorch

1. 概述

该文章基于OpenPose实现了轻量化优化, 从而实现了整体网络在Intel CPU上的实时运行效果。其中, 该文章所涉及的算法同样较为轻量化, 拥有410万参数及90亿浮点运算, 其规模相当于两阶段优化后的OpenPose含量为15%。然而, 其平均精度AP值较基准模型下降了约一个点。自然地, 该文章在原有OpenPose的基础上进行了进一步优化, 从而提升了运行速度表现。

2. 方法设计

OpenPose是一种基于自底向上的关键点检测模型;其主要流程可划分为两个核心阶段;具体流程如图所示。

在这里插入图片描述
  • 1)CNN网络生成两个特征图:包括关键点热图和运动向量场(PAMaps),其中各特征图的空间采样间隔均为8倍像素;
    • 2)通过将关键点按照人体类别进行聚合操作,最终确定属于该个人的关键点位置;

2.1 OpenPose计算复杂性分析

在OpenPose框架中,默认采用VGG-19作为其核心模块后,在原有conv4_3/conv4_4卷积层的基础上进一步增加了两个新的卷积层。随后经过辅助网络引入了五个串联的Refinement stage模块,在每个Refinement stage中均包含了两个功能独立的子模块用于分别预测关键点位置及反向梯度场(PAFs)。这些网络结构的具体组成架构以及Refinement stage所带来的性能提升情况如表1至表2所示:

在这里插入图片描述

观察表2可知,在stage数量增加的过程中,所带来的增益相对有限。具体而言,在这五个阶段中(即从stage1到stage5),性能指标提升了5个百分点(即增加了约4.8%),然而计算资源的需求却翻了一番(增加了约100%)。因此,在追求系统效率的同时也可以根据实际需求灵活选择。

2.2 轻量化Backbone

从轻量化网络的角度来看,在文章中采用了MobileNet-V1替代了原OpenPose的VGG-19结构,并维持了网络中间部分的空间尺度不变。通过膨胀卷积扩大感受野范围的同时加入conv5_6层能够提高精度但会带来计算量的增加。值得注意的是,并未采用MobileNet-V2模型。

在这里插入图片描述

2.3 轻量化的Refinement Stage

OpenPose中的优化网包含可优化的部分,在文章中对部分网络进行了整合,其结构变化趋势如图2所示。

在这里插入图片描述

此外文章使用多个3*3的卷积去替换7*7的卷积从而减少计算量:

在这里插入图片描述

2.4 最后的网络结构

在这里插入图片描述

该系统不仅完成了大量后期预处理工作,在网络和数据预处理方面也进行了优化工作以提升网络inference速度。具体而言,在最终特征图从压缩尺寸恢复至原始尺寸的方法中发现直接恢复并不能带来更好的效果反而适得其反因此将其改为进行四倍上采样操作。此外该系统对方法论部分进行了深入研究这部分内容已在Git上有详细的描述。

3. 实验结果

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~