MMPose姿态估计+人体关键点识别效果演示

这篇具有很好参考价值的文章主要介绍了MMPose姿态估计+人体关键点识别效果演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MMPose——开源姿态估计算法库(附人体关键点识别效果演示)

一、简介

1.1 背景

首先姿态估计属于计算机视觉领域的一个基础研究方向。MMPose是基于Pytorch的姿态估计开源算法库,功能全,涵盖的算法多。

1.2 姿态估计的任务分类

  • 维度:预测的是2D还是3D姿态。

  • 输入格式:图片 or 视频

  • 姿态的表示形式:关键点 or 形状等

  • 目标类型:全身 or 人脸 or 人手 or 动物 or 服饰

1.3 关于人体姿态估计任务

Human Pose Estimation是关键点检测任务中最热门的任务,即进行人体骨架和关节的关键点检测。

  • 人体姿态估计任务的扩展:包括基于骨架的、基于表面的、基于三维空间立体的。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

例如:facebook提出的Dense pose。将整个人体表面进行包络。(伪3D),并没有将3维坐标还原出来。如果要做3D,用三维人体重建的库MMHuman3D。

关于视频理解(MMAction2)与人体姿态估计的关系:视频动作理解的基础就是人体姿态估计。先得把骨骼关键点构建出来,才能根据这些特征判断动作。MMAction2可以参考这篇:关于MMAction2

论文链接:DensePose

1.4 MMPose的相关贡献

(1)2D Human Pose(包括body+hand+face一共133个关键点)

(2)3D Human Pose(先检测人体,再检测2D Human Pose,再检测3D Human Pose)

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

(3)3D Human Pose(人体网格重建任务——从image中恢复人体网格)

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

(4)3D Hand Pose(基于RGB图像的2D和3D手势联合估计)

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

(5)其他还包括脸部关键点,animal pose,目标跟踪等等。

二、MMPose所涉及的算法

★这里先解释一下Regression和Heatmap

  • Regression:直接用模型回归预测得到每一个关键点的坐标
  • Heatmap: 不直接回归关键点本身的像素坐标,而是生成一张图,表示图中不同区域是该关键点的置信度。例如,人身上有14个关键点,就会生成14张heatmap,每个关键点处就会存在概率分布。
    mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

2.1 基于关键点坐标回归(Regression based)

DeepPose就是这一类方法的经典代表。直接回归关键点坐标的方法思路比较简单,预测速度快,但直接预测坐标的精度会受到一定影响。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测
论文链接:DeepPose

2.2 基于空间概率分布(Heatmap Based)

基于heatmap的方式逐渐成为主流。该方法会去每个位置预测一个分数,来表征该位置是关键点的置信度。根据预测到的heatmap,可以进一步去提取关键点的位置。由于该方法可以更好地保留空间信息,更符合CNN的设计特性,精度也比坐标直接回归更高。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测
论文链接:Stacked Hourglass

2.3 人体姿态估计算法(2D)

主要分为两种方法:自顶向下、自底向上

  • 自顶向下(TopDown):先检测处图片中的人体,再对每一个人体单独预测关键点。该方法的计算量会随着人数的增多而上升,但对不同尺寸的人体更加鲁棒,精度更高。通俗来说,该方法更准确

  • 自底向上(BottomUp):先去检测到所有的关键点,再进行关键点聚类,组合成人体。该方法的计算量不会随着人数的增多而上升。通俗来说,该方法更快(人更多的时候越明显)。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

2.4 人体姿态估计算法(3D)

​ 主要在3维空间里去预测人的位置,根据输入不同,可以分为以下3种方法

  • 基于单目图像从2D Pose预测3D Pose

这种方法的经典代表:SimpleBaseline3D。根据2Dpose和原始图像的特征,直接估计3D Pose。但是基于单目图像会存在遮挡问题。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测
论文链接:SimpleBaseline3D

  • 基于多视角信息

这种方法的经典代表:VoxelPose。解决遮挡问题,例如一个场景有很多人,可以融合多视角的信息去重建3D Pose。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

论文链接:VoxelPose

  • 基于视频(多帧)信息

在以上两种方法的基础上,引入时间维度,相邻的上下文信息可以辅助更好的预测。例如之前看的ViPNAS就是用上下文信息来辅助更好的预测。

这种方法的经典代表:VideoPose3D。用2D关键点序列(多了时间维度,就是有好几帧)作为输入,然后通过时序的卷积网络去处理信息,最后输出3DPose。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

论文链接:VideoPose3D

三、MMPose所用的数据集

3.1 姿态估计关键点数据集(2D)

基于图像:COCO

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

基于视频:PoseTrack18

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

3.2 姿态估计关键点数据集(3D)

基于单人:Human3.6M(360万个人体pose的标注)

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

基于多视角:CMU Panoptic

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

基于手部:InterHand2.6M

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

四、MMPose的总体框架

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

4.1 采用模块化设计

将深度学习拆分成data(数据集)、model(模型)、optimizer(优化器)等组件,先把每一个小模块做好,再注册到registry(注册器)里,注册器里包含了很多功能类似的模块。在需要启动任务时,通过config配置系统,代码就会调用builder,从而构造一整套流程。减少了代码的耦合。

4.2 用户接口

在架构上,mmpose使用了mmcv提供的底层的接口,通过runner去管理模型的训练、测试、推理等。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

4.3 核心组件

(1)Dataloader:sample定义 + pipline

(Dataloader文件所在位置:Dataloader)

在dataloader方面,mmpose提供了一些数据集的接口,里面定义了sample和需要经过的pipline

  • datasets文件夹完成数据加载,准备pipline的输入,在evaluate函数里计算metric
  • piplines文件夹:pipline是数据预处理的流水线,由一系列的transform组成,每个transform的输入和输出都是字典。例如,LoadImageFromFile就是从文件中读取图像,ToTensor就是将读取的图像转化为pytorch的tensor。
  • samplers文件夹sampler就是采样器。sampler提供dataset里数据的索引,然后dataloader根据索引从dataset里提取出对应的data。然后将data输给网络进行training。

(2)Model:backbone + (neck) + head

(Model文件所在位置:models)

在模型层面,会把模型 分为backbone,neck,head三个部分

  • detectors文件夹:pose的检测器。通常由backbone,neck,head组成。例如TopDown。
  • backbones文件夹:主干网络。例如ResNet,HRNet,HRFormer等就在这里定义。
  • necks文件夹:处理backbone得到的特征
  • heads文件夹:预测头,输出最终预测结果。(loss定义在head中)

4.4 其他文件夹

(1)apis(https://github.com/open-mmlab/mmpose/tree/master/mmpose/apis)

封装训练,测试和推理等流程

train.py:准备数据加载,把模型加载到GPU,构建optimizer和runner,注册hooks等

test.py:模型测试。需要输入模型和dataloader,测试模型精度

inference.py:模型推理,进行可视化等工作。

Webcam API:调用MMpose及其他算法,实现基于摄像头输入视频的交互式应用。

(2)cores:(https://github.com/open-mmlab/mmpose/tree/master/mmpose/core)

前后处理,可视化,定制工具等

(3)tools:(https://github.com/open-mmlab/mmpose/tree/master/tools)

  • train.py:启动训练任务的入口,读入config,初始化训练环境,创建模型及数据集等,调用apis/train.py
  • test.py:模型推理测试的接口,数据集开启test_mode,加载checkpoint,调用apis/test.py运行测试
  • 分布式训练的启动脚本:dist_train.sh——通过pytorch启动分布式 slurm_train.sh——通过slrum(一种集群式管理系统)启动分布式

五、MMPose相关效果演示

5.1 安装配置

本机环境:GPU RTX 2060、CUDA v11.1

Pytorch版本:1.8.0

torchvision版本:0.9.0

编译器版本:MSVC 192930137

mmtracking

mmpose:0.28.1

5.2 对图像中人体的关键点检测

(1)TopDown

  • 这里使用TopDown方法对图像进行预测

  • 先用目标检测把人的框检测出来:faster_rcnn网络

  • 再做框里的人的姿态估计与关键点检测:hrnet网络

  • 效果展示

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

(2)BottomUp

  • 这里不需要目标检测模型,只需要bottom up人体姿态估计模型
  • 人体关键点检测模型:hrnet
  • 效果精度并不如TopDown,会存在部分关键点之间的错误连接。但是在人更多的情况下速度会比TopDown快。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

5.3 对视频中人体的关键点检测

(1)单帧输入模型的视频预测

  • 这里使用TopDown方法对视频进行预测

  • 目标检测与关键点识别的网络依然是faster_rcnn和hrnet

  • 效果展示

MMPose——单帧输入视频预测

  • 关于多帧输入模型的视频预测,就是将视频前后多帧画面输入模型用于姿态预测。相比于单帧输入,检测到的会更细,例如橱窗里的模特,广告牌上的人也会被检测到。但是同样,计算量也会大很多。

(2)全图输入模型的视频预测

  • 不提取人体检测框,直接将全图输入至姿态估计模型中。仅适用于单人,并且单人的效果并不好

  • 这里使用TopDown的全图输入方法对视频进行预测

  • 没有目标检测模型

  • 人体关键点检测网络:vipnas

  • 效果展示

MMPose——全图输入模型的视频预测

(3)BottomUp算法的视频预测

  • 同样,精度效果不如TopDown

  • 人体姿态估计模型:hrnet

MMPose——BottomUp算法的视频预测

5.4 对图像和视频中手掌的关键点检测

  • Topdown算法
  • 目标检测模型:cascade_rcnn
  • 手部关键点检测模型:res50
  • 效果展示:

在存在少部分遮挡的情况下,会存在部分关键点的误识别,但基本上手部关键点都检测正确

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

在没有遮挡的情况下,手部关键点全都准确识别。

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

视频中的手部关键点识别效果也不错

MMPose——手掌关键点检测

5.5 对图像和视频中全身的关键点检测

  • Topdown算法
  • 目标检测模型:faster_rcnn
  • 全身关键点检测模型:hrnet
  • 效果展示

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测

视频中关键点检测效果也不错

MMPose——全身关键点检测(人脸+手+肢体)

5.6 MMPose摄像头实时效果

实时的效果一般,目标检测的fps为20左右,人体姿态估计的fps为10左右

mmpose,OpenMMlab,计算机视觉,深度学习,人工智能,神经网络,目标检测文章来源地址https://www.toymoban.com/news/detail-807311.html

六、相关参考链接

  1. DensePose论文链接:DensePose
  2. DeepPose论文链接:DeepPose
  3. Stacked Hourglass论文链接:Stacked Hourglass
  4. SimpleBaseline3D论文链接:SimpleBaseline3D
  5. VoxelPose论文链接:VoxelPose
  6. VideoPose3D论文链接:VideoPose3D
  7. MMPose中Dataloader位置:Dataloader
  8. MMPose中Model位置:models
  9. 项目地址:MMPose
  10. MMPose官方中文文档:MMPose中文文档
  11. 数据集的md文档:数据集文档
  12. 参考视频教程:同济子豪兄MMPose代码实战
  13. MMPose效果演示的相关参考文档:
    2D人体关键点检测
    在自己的数据集上训练2D人体关键点检测模型
    2D手掌关键点检测
    手掌检测模型
    摄像头实时webcam

到了这里,关于MMPose姿态估计+人体关键点识别效果演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MediaPipe人体姿态、手指关键点检测

    Mediapipe是google的一个开源项目,用于构建机器学习管道 提供了16个预训练模型的案例:人脸检测、Face Mesh、虹膜、手、姿态、人体、人物分割、头发分割、目标检测、Box Tracking、Instant Motion Tracking、3D目标检测、特征匹配、AutoFlip、MediaSequence、YouTube-8M 肢体识别本质上还是分类

    2024年02月08日
    浏览(38)
  • OpenMMLab-AI实战营第二期——2-1.人体关键点检测与MMPose

    视频链接:B站-人体关键点检测与MMPose 关键点提取,属于模式识别 人体姿态估计的下游任务:行为识别(比如:拥抱。。) 下游任务:CG和动画,这个是最常见的应用 下游任务:人机交互(手势识别,依据收拾做出不同的响应,比如:HoloLens会对五指手势(3D)做出不同的反

    2024年02月11日
    浏览(27)
  • WinUI(WASDK)使用MediaPipe检查人体姿态关键点

    之前有用这个MediaPipe.NET .NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了,于是就开始整活了,来体验了一把人体姿态关键点检测。 这个框架是微软最新的应用开发框架,我是用来开发程

    2024年02月15日
    浏览(35)
  • 在 PyTorch 中使用关键点 RCNN 进行人体姿势估计--附源码

    人体姿态估计是计算机视觉领域的一个重要研究领域。它涉及估计人体上的独特点,也称为 关键点 。在这篇博文中,我们将讨论一种在包含人类的图像上查找关键点的算法,称为 Keypoint-RCNN 。该代码是使用 Pytorch 使用 Torchvision 库编写的。 假设您想要建立一名私人健身教练,

    2024年02月12日
    浏览(26)
  • mmpose关键点(四):优化关键点模型(原理与代码讲解,持续更新)

    在工程中,模型的运行速度与精度是同样重要的,本文中,我会运用不同的方法去优化比较模型的性能,希望能给大家带来一些实用的trick与经验。 有关键点检测相关经验的同学应该知道,关键点主流方法分为Heatmap-based与Regression-based。 其主要区别在于监督信息的不同,Hea

    2024年02月08日
    浏览(47)
  • mmpose关键点(一):评价指标(PCK,OKS,mAP)

    由于,近期项目需要引入关键点做一些方向逻辑的判断,在此记录一些实验与经典论文方法。首先,我们先了解一下关键点估计的评价指标。 PCK表示关键点正确估计的比例 计算检测的关键点与其对应的groundtruth间的归一化距离小于设定阈值的比例。在MPII 中是以头部长度(he

    2024年02月04日
    浏览(20)
  • 2D人脸关键点转3D人脸关键点的映射~头部姿态笔记

    对通过相机参数计算图像上的二维坐标到三维坐标的映射进行简单探讨。         学习的话直接看他们的就好,我仅是拾人牙慧,拿GPT写给自己看的,图也是直接搬运的别人画的,以下链接有很完善的理论研究和代码提供。 https://medium.com/@susanne.thierfelder/head-pose-estimation

    2024年02月04日
    浏览(34)
  • Pytorch+Python实现人体关键点检测

    用Python+Pytorch工程代码对人体进行关键点检测和骨架提取,并实现可视化。 物体检测为许多视觉任务提供动力,如实例分割、姿态估计、跟踪和动作识别。它在监控、自动驾驶和视觉答疑中有下游应用。当前的对象检测器通过紧密包围对象的轴向包围框来表示每个对象。然后

    2024年02月09日
    浏览(32)
  • MediaPipe之人体关键点检测>>>BlazePose论文精度

    BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决方案和一个轻量级的身体姿态估计神经网络,同时使用了热图(heatmap)和对关键点坐标

    2024年02月06日
    浏览(43)
  • 基于mediapipe的人体33个关键点坐标(BlazePose)

    BlazePose是一种轻量化的卷积神级网络架构,适用于单人的关键点检测,在人体身上标注33个关键点,在单个中层手机CPU上的执行速度要比OpenPose在20核桌面CPU[5]上快25-75倍。 33个关键点如下图所示 导入库 导入模型 读入图像 关键点检测结果 此时会输出关键点检测结果,如下图所

    2024年02月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包