人体姿态估计:BlazePose

论文连接:https://arxiv.org/pdf/2006.10204.pdf
论文代码:https://google.github.io/mediapipe/solutions/pose.html
论文出处:2020CVPR Workshop
研发团队:google research

1. 概述

  • BlazePose是一个轻量化的,可用于移动设备上的人体姿态估计网络。

  • 网络提供人体的33个body keypoints,在Pixel2手机上速度超过30fps

  • 本文贡献主要2点:(1)新型的人体姿态跟踪方案;(2)轻量化人体姿态估计网络。

  • body pose estimation分为:heatmap-based方法和regression-based方法。
    heatmap-based方法是先生成热图,再根据热图算出关键点;
    regression-based方法是直接回归(decode)出关键点。

  • 本文的idea是:使用一个encoder-decoder网络结构预测所有关节点的热图,然后再用另外一个encoder直接回归出所有关节点的坐标。
    其中,热图分支只用于训练,不出现在inference中。

2. 模型构架和pipeline设计

2.1 推理流程(Inference pipeline)

在这里插入图片描述

  • 推理过程使用一个detector-tracker的设置,如上图所示。
  • pipeline包括一个轻量化的body pose detector,跟一个pose tracker network
  • 跟踪器tracker用于预测关键点坐标当前帧是否有人当前帧感兴趣区域的微调
  • 当tracker预测到当前帧没有人时,在下一帧重新运行detector。

2.2 Person detector

  • 大部分目标检测器在后处理部分都依赖于Non-Maximum Suppression (NMS)算法。该算法对于具有少自由度刚体来说效果很好,但对于多自由度(人体,人手)姿态效果不好。因为多个boxes满足满足NMS算法的IoU阈值。
  • 因此,本文采用相对刚性的人脸(face)的检测(用Blazeface网络)来代替人体的检测,作为person detector。
  • 该face detector除了检测人脸,还预测额外的人体特定参数:臀部中点、环绕整个人的原的大小、倾斜度(连接两个肩中点和臀中点的线之间的角度)。如下图:
    在这里插入图片描述

2.3 拓扑结构(Topology)

33个关键点。只在脸部、手和脚上使用最少数量的关键点来估计后续模型感兴趣区域的旋转、大小和位置。
在这里插入图片描述

2.4 数据集

为了确保模型支持数据集中不存在的严重遮挡,作者使用了大量的遮挡模拟增强。

数据集的训练数据集包含60K幅图像,场景中有一个人或少数人以常见的姿势,以及25K幅图像,场景中有一个人进行健身锻炼。

2.5 网络结构

使用上面提到的人体检测器中的人体对齐方案,之后进行姿态检测,姿态检测网络如下:

在这里插入图片描述
采用heatmapoffset坐标回归方法,如图4,heatmap和offset只用于训练,在推理时会删除对应的输出层。

因此,我们有效地利用热图来监督轻量级的嵌入,然后回归编码器网络利用轻量级的嵌入。

我们积极利用网络所有阶段之间的skip-connections,以达到高层次和低层次特征之间的平衡。

然而,从回归编码器的梯度不会传播回热图训练的特征。我们发现这不仅改善了热图预测,而且大大提高了坐标回归精度。

2.6 对齐和遮挡增强

姿态的先验是解决方案的重要部分,增强训练时的数据准备期间,作者选择故意限制角度(angle)、尺度(scale)和平移(translation)的支持范围。

基于检测或前一帧关键点,作者对人进行对其,使臀部中间的点作为神经网络输入的正方形图像的中心。

姿态的旋转angle):为臀部中间与肩部中间的点的直线L,并旋转图像,使得L与y轴平行。

尺度进行估计(scale):使所有身体点都在一个包围身体的方形边界框中。如图2。此外,应用了10%的缩放和移位增强,以确保跟踪器处理帧之间的身体扭动和扭曲的对齐。

对不可见点的预测:我们在训练过程中模拟遮挡(用各种颜色填充的随机矩形),并引入逐点可见性分类器,以表明某个特定点是否被遮挡,以及位置预测是否被认为不准确。这可以实现持续跟踪一个人,即使是在严重遮挡的情况下,如仅上半身或当大部分人的身体不在场景中,如图5所示。
在这里插入图片描述

3. 实验

测试集为手动标注的两个1000张图片。每张图片有一到几个人。第一个数据集,成为AR数据集,有大量野外的人体姿态。第二个数据集,只包含瑜伽和健身的姿态(Yoga Dataset)。

对比对象为openPose,为了保持一致性,只使用COCO的拓扑结构,用17个点进行评估。这是blazePose和openPose的一个公共子集。评价标准为PCK@0.2(如果2D欧几里得误差小于相应人躯干尺寸的20%,我们就会假设这个点能被正确检测到)。

本文训练了两个不同容量的模型,BlazePose Full(6.9MFlop,3.5M Params)和BlazePose Lite(2.7MFlop,1.3M Params)。在AR数据集上,blazePose稍微不如OpenPose。但blazePose Full在瑜伽和健身数据集上比OpenPose好。但需要注意的是,与在20核的桌面CPU的OpenPose相比,BlazePose在单个中级的手机cpu上比OpenPose要快25到75倍。
在这里插入图片描述

效果展示:
在这里插入图片描述

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人体姿态估计是计算机视觉领域的一项研究任务,旨在通过图像或视频数据来估计人体的关节位置和姿态信息。Python作为一种功能强大且易于使用的编程语言,被广泛应用于人体姿态估计的开发和实践中。 在Python中,我们可以使用开源的人体姿态估计库,例如OpenPose、HRNet等。这些库提供了一系列预训练的神经网络模型,能够从输入图像中准确地检测和定位人体的关节位置。 具体而言,我们可以通过以下步骤来实现人体姿态估计: 1. 数据准备:收集训练数据集,包括带有关节标注的人体图像或视频数据。 2. 模型选择:选择适合任务的预训练模型,如OpenPose或HRNet。 3. 模型加载:使用Python中的相应库加载选定的模型。 4. 图像处理:对输入图像进行预处理,包括尺度调整、图像归一化等。 5. 姿态估计:将预处理后的图像输入到模型中,获取关节位置信息。 6. 可视化:将估计的关节位置信息可视化到原始图像上,以便于人眼观察和分析。 除了库中提供的现成模型,我们还可以使用Python自带的机器学习和深度学习框架,如TensorFlow、PyTorch等,从头开始训练自定义的人体姿态估计模型。 总之,人体姿态估计的Python实现非常便捷,借助丰富的开源库和框架,我们可以快速搭建和部署人体姿态估计系统,为各种应用提供准确的人体姿态信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值