论文阅读|Lightweight OpenPose

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

原文链接:1811.12004.pdf (arxiv.org)

目录

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

Abstract

Introduction

Related Work

Analysis of the Original OpenPose

Inference Pipeline

Complexity Analysis

Optimization

Network design

Lightweight Backbone

 Lightweight Refinement Stage

Fast Post-processing

Inference

Conclusion


Abstract

在这项工作中,我们调整了多人姿势估计架构以在边缘设备上使用它。 我们遵循 COCO 2016 关键点挑战赛的获胜者 OpenPose的自下而上方法,因为它具有良好的质量和对框架内人数的鲁棒性。 通过提议的网络设计和优化的后处理代码,完整的解决方案在 Intel®NUC 6i7KYB 迷你 PC 上以每秒 28 帧 (fps) 的速度运行,在 Core i7-6850K CPU 上以 26 fps 的速度运行。 网络模型具有 410 万个参数和 90 亿次浮点运算 (GFLOP) 复杂性,仅是基线 2 阶段 OpenPose 的 15%,质量几乎相同。代码和模型作为英特尔® 的一部分提供 OpenVINOTM 工具包。

Introduction

多人姿态估计是一项重要的任务,可应用于动作识别、运动捕捉、体育运动等不同领域,其任务是预测图像中每个人的姿态骨架。骨骼由关键点(或关节)组成:踝部、膝盖、髋部、肘部等。

在卷积神经网络 (CNN) 的帮助下,人体姿态估计精度大大提高。 然而,关于紧凑但有效的姿态估计方法的研究很少。 在 [9] 中,作者在手机上展示了一个简化的 Mask R-CNN 关键点检测器演示,以 10 fps 运行,但没有提供实现细节和准确度特征。 我们还发现了带有人体姿态估计网络的开源存储库。作者报告的推理速度在 2.8GHz 四核 CPU 上为 4.2 fps,在 Jetson TX2board 上为 10 fps。

在我们的工作中,我们对流行的OpenPose方法进行了优化,并展示了如何将现代的CNNs设计技术用于姿态估计任务。因此,我们的解决方案在小型PC英特尔®NUC上的运行速度为:

  • 8 fps on mini PC Intel® NUC, which consumes little power and has 45 watt CPU TDP.
  • 26 fps on a usual CPU without the need of a graphic card.

优化版本的精度几乎与基准相符:平均精度(AP)下降不到1%。

Related Work

多人姿态估计问题通常可以通过两种方式解决。 第一个,称为自上而下,应用单人检测器,然后为每个检测到的人运行一个姿势估计算法。 因此,姿态估计问题被解耦为两个子问题,并且可以利用这两个领域的最新成果。 这种方法的推理速度很大程度上取决于图像内检测到的人的数量

第二种,称为自下而上,对人数更为稳健。 首先在给定图像中检测所有关键点,然后将它们按人类实例分组。 这种方法通常比以前更快,因为它只找到一次关键点并且不会为每个人重新运行姿势估计。

在[11]中,作者提出了自下而上方法中最快的具有最先进质量的方法,它在一块GTX 1080Ti显卡上对3个人的图像运行23fps。他们指出,对于20个人的图像,性能将下降到15fps。我们的工作基于流行的自底向上方法OpenPose,其推理时间几乎不随人数变化。

Analysis of the Original OpenPose

Inference Pipeline

Openpose由两部分组成:

  • 神经网络推理提供两个张量:关键点热图及其成对关系(部分亲和场,PAFs)。 此输出被下采样 8 次。
  • 按人员实例对关键点进行分组。 它包括将张量上采样到原始图像大小、热图峰值处的关键点提取以及它们按实例分组。

网络首先提取特征,然后执行热图和PAF的初始估计,之后执行5个细化阶段。 它能够找到18种类型的关键点。 然后分组程序从预定义的关键点对列表中搜索每个关键点的最佳对(按亲和力),例如左肘和左手腕、右髋和右膝、左眼和左耳等,总共19对。

 流水线如图1所示。在推理过程中,根据高度调整输入图像的大小以匹配网络输入,缩放宽度以保持图像的纵横比,然后填充到8的倍数。

Complexity Analysis

最初的实现使用 VGG-19 主干切割到 conv4_2 层作为特征提取器。 然后添加了两个额外的卷积层 conv4_3 和 conv4_4。之后进行初始阶段和 5 个细化阶段。每个阶段由两个并行分支组成:一个用于热图估计,一个用于PAFs。 这两个分支具有相同的设计,如表 1 所示。我们在比较中将网络输入分辨率设置为 368x368,并使用与原始论文相同的 COCO 验证子集,执行单尺度测试。 测试 CPU 为 Intel® CoreTM i7-6850K, 3.6GHz。 表 2 显示了精度和细化阶段数量之间的权衡。

 可以看出,后期阶段对每个 GFLOP 的改进较少,因此对于优化版本,我们将仅保留前两个阶段:初始阶段和单个细化阶段。后处理部分的配置文件总结在表中 3.通过运行代码获得,该代码是用OpenCV用C++编写的。 尽管分组本身是轻量级的,但其他部分需要优化。

Optimization

Network design

所有实验均使用原始论文中的默认训练参数进行,并使用COCO数据集进行训练。 如上所述,我们只保留初始和第一个细化阶段。 然而,其余阶段可以提供正则化效果,因此最终的网络通过额外的阶段进行了重新训练,但使用了前两个阶段。 这样的程序提供了1%的AP改进。

Lightweight Backbone

自从提出 VGG 网络以来,几乎没有设计出具有相似甚至更好分类精度的轻量级网络拓扑。 我们评估了 MobileNet 系列的网络以替换 VGG 特征提取器,并从 MobileNet v1.1 开始。

如果把所有的层都保留到与输出张量分辨率相匹配的最深处,就会导致精度显著下降,这是一种幼稚的做法。这可能是由于特征表示较浅和较弱所致。为了节省空间分辨率和重复使用骨干权重,我们使用扩张卷积(dilated convolution)。删除了conv4_2/dw 层的步幅,并将扩张参数值设置为 2,以便后续的 conv5_1/dw层保留感受野。 所以我们使用所有层直到 conv5_5 块。 添加 conv5_6块提高了准确性,但以性能为代价。 我们还尝试了更轻量级的主干MobileNet v2,但效果不佳,见表4。

 Lightweight Refinement Stage

为了产生对关键点热图和PAF的新估计,细化阶段(refinement stage)从主干中获取特征,并与之前对关键点热图和 paf 的估计相连接。 基于这一事实,我们决定在热图和 paf 之间共享大部分计算,并在初始和细化阶段使用单预测分支。 我们共享除了最后两个层之外的所有层,它们直接产生关键点热图和 paf,见图 2。

然后每个具有 7x7 内核大小的卷积都被一个具有相同感受野的卷积块替换,以捕获远程空间依赖关系。 我们对这种块设计进行了一系列实验,并观察到具有 1x1、3x3 和 3x3 内核大小的三个连续卷积就足够了,后者的膨胀参数等于 2,以保留初始感受野。 因为网络变得更深,我们为每个这样的块添加了残差连接

最终的设计如图3所示,其复杂度比7x7内核卷积的∼低2.5倍。我们还用3个深度可分离的卷积代替Conv4_3,通道数从256个减少到128个。表5显示了建议网络设计的复杂性和准确性。

Fast Post-processing

我们分析了代码并删除了额外的内存分配,使用 OpenCV 的例程并行提取关键点。 这使得代码明显更快,最后一个瓶颈是将特征图调整为输入图像大小。

我们决定跳过调整大小的步骤,直接在网络输出上进行分组,但准确率显着下降。 因此无法避免对特征图进行上采样的步骤,但输入图像大小没有必要这样做。 我们的实验表明,上采样因子为 8 时,准确度是相同的,就像调整大小以适应输入图像大小一样。 我们出于演示目的使用了上采样因子 4。

Inference

对于网络推理,我们使用英特尔®OpenVINOTM工具包R4,该工具包提供跨不同硬件(如CPU、GPU、FPGA等)的优化推理。表6所示的最终性能数字是针对具有20多个估计姿势的挑战性视频进行测量的。

Conclusion

在这项工作中,我们处理了人体姿态估计网络的问题,适用于边缘设备上的实时性能。 我们提出了基于 OpenPose 方法的解决方案,具有高度优化的网络设计和后处理代码。 由于使用了具有深度可分离卷积的扩张型 MobileNet v1 特征提取器带有残差连接的轻量级细化阶段的设计,精度与网络复杂度的比值提高了 6.5 倍以上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值