Real-time 2D Multi-Person Pose Estimation on CPU:Lightweight OpenPose 个人整理

CPU上的实时2D多人姿势估计:轻量级OpenPose

摘要

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

1 简介

多人姿态估计是一项重要的任务,可以用于不同的领域,例如动作识别、动作捕捉、运动等。任务是预测图像中每个人的姿态骨架。 骨骼由关键点(或关节)组成:脚踝、膝盖、臀部、肘部等。在卷积神经网络 (CNN) [6]、[4]、[16] 的帮助下,人体姿态估计精度大大提高。 然而,关于体积小准确率高的姿态估计方法的研究很少。在 [9] 中,作者在手机上展示了一个简化的 Mask R-CNN 关键点检测器演示,以 10 fps 运行,但没有提供实现细节和准确度特征。我们还发现了带有人体姿态估计网络的开源存储库 [10]。作者报告在 2.8GHz 四核 CPU 上的推理速度为 4.2 fps,在 Jetson TX2 板上为 10 fps。

在我们的工作中,我们优化了流行的方法 OpenPose,并展示了 CNN 的现代设计技术如何用于姿势估计任务。 因此,我们的解决方案运行在:

28 fps 在mini PC 英特尔® NUC 上,这个板子功耗低,功率为 45 瓦 CPU TDP.

26 fps 在普通 CPU 上,无需显卡。

优化版本的准确率几乎与基线匹配:平均精度(AP)下降小于 1%。

2 相关工作

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

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

在 [11] 中,作者提出了迄今为止自下而上方法中质量最好的最快方法,该方法在单个 GTX 1080Ti 显卡上运行 23 fps,用于 3 个人的图像。 他们指出,对于 20 人的图像,性能将下降到 15 fps。 我们的工作基于流行的自下而上方法 OpenPose,它几乎不受人数推断时间的影响。

3 原始OpenPose分析

3.1 推理流程

与所有自下而上的方法类似,OpenPose 由两部分组成:

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

图一 OpenPose 流程

网络首先提取特征,然后执行热力图和 pafs 的初始估计,之后执行 5 个细化阶段。它能够找到 18 种类型的关键点。然后分组程序从预定义的关键点对列表中搜索每个关键点的最佳对(按相关性),例如:左肘和左手腕,右臀部和右膝盖,左眼和左耳,等等,总共19对。流程如图 1 所示。在推理过程中,输入图像的大小被调整以匹配网络输入大小的高度,宽度被缩放以保持图像纵横比,然后填充为 8 的倍数。

3.2 复杂度分析

最初的实现使用 VGG-19 主干 [14] 切到 conv4_2 层作为特征提取器。 然后添加了两个额外的卷积层 conv4_3 和 conv4_4。之后进行初始和5个细化阶段。

每个阶段由两个并行分支组成:一个用于热图估计,一个用于pafs。两个分支具有相同的设计,如表1所示。我们在比较中将网络输入分辨率设置为368×368,并使用与原始论文相同的 COCO 验证子集,进行单尺度测试。测试 CPU 为 Intel ® Core TM i7-6850K, 3.6GHz。表2显示了精度和细化阶段数量之间的权衡。

可以看出,后期阶段对 GFLOP 的改进较少,因此对于优化版本,我们将仅保留前两个阶段:初始阶段和单个细化阶段。

表 3 总结了后处理部分的配置文件。它是通过运行代码获得的,该代码是用 C++ 和 OpenCV [2] 编写的。 尽管分组本身是轻量级的,但其他部分需要优化。

表1:OpenPose 阶段设计。每个阶段有2个平行分支

表 2:COCO 验证集上 OpenPose 的准确性与复杂性

表 3:后处理和分组的初始性能

4 优化

4.1 网络设计

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

4.1.1 轻量级骨干网

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

以一种天真的方式,如果我们将所有层保持到最深,以匹配输出张量分辨率,则会导致精度显着下降。 这可能是由于浅层和弱特征表示。为了节省空间分辨率和重用主干权重,我们使用空洞卷积[17]。conv4_2/dw 层的步长被移除,dilation 参数值被设置为 2,以便后续的 conv5_1/dw 层保留感受野。 所以我们使用所有层直到 conv5_5 块。 添加 conv5_6 块提高了准确性,但以性能为代价。 我们还尝试了更轻量级的主干 MobileNet v2,但效果不佳,见表 4。

表4 轻量级骨干选择研究(初始和细化阶段具有原始 OpenPose 设计)

4.1.2 轻量化细化阶段

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

图二 初始阶段的原始两个预测分支和建议的单个预测分支。 我们也将此方案应用于细化阶段。

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

图三 在细化阶段设计用于替换卷积的卷积块,具有 7×7 内核大小

图 3 中可视化的最终设计,它的复杂度比使用 7×7 内核的卷积低 2.5 倍。 我们还将 conv4_3 替换为 3 个深度可分离卷积,通道数从 256 减少到 128。所提出的网络设计的复杂性和准确性如表 5 所示。

表5 COCO 验证集上提出的网络的准确性与复杂性。

4.2 快速后处理

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

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

4.3 推理

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

我们使用了两个设备:Intel NUC6i7KYB,它在集成 GPU Iris Pro Graphics P580 上以半精度浮点格式 (FP16) 执行推理,以及 6 核 Core i7-6850K CPU,它以单精度浮点格式 (FP32 )。 网络输入大小设置为 456×256,类似于 368×368,但宽高比为 16:9,适合处理视频流。

表6 具有超过 20 个估计姿势的视频的最终推理 fps。 大括号中的数字是网络推理和后处理 fps

相关总结

论文下载地址:

https://arxiv.org/pdf/1811.12004.pdf

pytorch复现:

https://github.com/Daniil-Osokin/lightweight-human-pose-estimation.pytorch

论文讲解:

轻量级OpenPose, Lightweight OpenPose – 知乎

论文中的16个关键点

网络结构

Real-time 2D Multi-Person Pose Estimation on CPU:Lightweight OpenPose 个人整理

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年5月11日
下一篇 2022年5月11日

相关推荐