| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Real-time 2D Multi-Person Pose Estimation on CPU:Lightweight OpenPose 个人整理 -> 正文阅读 |
|
[人工智能]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所示。我们在比较中将网络输入分辨率设置为368x368,并使用与原始论文相同的 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。 图二 初始阶段的原始两个预测分支和建议的单个预测分支。 我们也将此方案应用于细化阶段。 然后每个具有 7x7 内核大小的卷积都被一个具有相同感受野的卷积块替换,以捕获远程空间依赖关系[15]。我们用这个块设计进行了一系列实验,并观察到有1x1、3x3和3x3内核大小的三个连续卷积就足够了,后者的膨胀参数等于2,以保留初始感受野。因为网络变得更深,我们为每个这样的块添加了残差连接 [5]。 图三 在细化阶段设计用于替换卷积的卷积块,具有 7x7 内核大小 图 3 中可视化的最终设计,它的复杂度比使用 7x7 内核的卷积低 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 )。 网络输入大小设置为 456x256,类似于 368x368,但宽高比为 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个关键点 网络结构 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:44:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |