1,RTMO 与 RTMPose
RTMO 与 RTMPose 都是基于 MMPose 框架开发的人体姿态估计算法 ,MMPose 为二者提供了基础架构、数据处理工具、训练和评估等一系列支持,使得它们能够更高效地实现人体姿态估计任务
- 性能对比与互补:
- 精度方面:在多人密集场景下,RTMO 在 CrowdPose 数据集上取得了 83.8 的 AP,较以往最佳模型提升 5.3 AP,达到了和 RTMPose 差不多的精度,在 OCHuman 数据集上同样取得了当前最高的精度,在精度上展现出了很强的竞争力,能够很好地满足对姿态估计精度要求较高的场景12.
- 速度方面:RTMO 是单阶段模型,其速度受画面中的人数的影响可以忽略不计,相比之下,RTMPose 作为二阶段 top-down 架构的模型,随着画面中人数的增加,速度会有所下降。在相同精度要求下,当画面中人数超过 4 (CPU)/2 (GPU) 时,RTMO 的推理速度就已经超越了 RTMPose,在实时性要求高且人数较多的场景中,RTMO 更具优势12.
- 应用集成:在 OpenXLab 应用平台上的 RTMPose 应用集成了 RTMO,用户无需本地安装,在浏览器中就能在线使用 RTMO 处理图像、视频,这种集成方式丰富了 RTMPose 应用的功能,同时也为用户提供了更便捷的使用体验,能够一站式地满足用户对于不同人体姿态估计算法的需求12.
- 推理库支持:rtmlib 作为一个轻量推理库,同时支持 RTMPose 全系列官方及衍生模型,包括 RTMO 等。这意味着开发者可以使用 rtmlib 轻松地对 RTMO 和 RTMPose 等模型进行推理和部署,无需安装 mmcv、mmengine、mmpose 等一系列训练库,只需有 opencv 即可进行推理,大大简化了开发流程,降低了使用门槛126.
- RTMO和RTMPose都适用于需要实时姿态估计的应用场景,如体育分析、增强现实等。RTMO由于其高效性和高精度,特别适合于需要快速响应的多人密集场景。
MMAction2 进行动作识别与视频分析主要包括以下几个方面:
环境搭建
- 首先需要确保已经安装了 Python 和 Git,然后通过 pip 安装依赖项,如
conda create -n mmaction2 python=3.7
创建虚拟环境并激活,再执行pip install -r requirements.txt
安装相关依赖3 。 - 也可以选择使用 Docker 镜像的方式搭建环境,在 docker 目录下执行
docker build -t mmaction2.
创建镜像,解决可能出现的 GPG error 等问题后,即可通过镜像启动容器来使用 MMAction21.
数据准备
- 标注数据:对于动作识别任务,需要准备带有动作类别标注的视频数据或图像帧数据。例如,Kinetics、Something-Something 等常用数据集都可以作为训练和测试数据,并且 MMAction2 提供了对这些数据集的支持,方便用户直接使用147.
- 数据预处理:MMAction2 提供了丰富的数据预处理工具,包括视频的裁剪、缩放、归一化等操作,以及对图像帧的采样、增强等方法,以提高数据的质量和多样性,增强模型的泛化能力7.
模型选择与配置
- 选择预训练模型:MMAction2 提供了超过 200 个预训练模型,涵盖了多种经典和先进的网络架构,如 C3D、TSN、I3D、VideoSwin、VideoMAE 等 。用户可以根据具体的任务需求和数据特点选择合适的预训练模型,如对于较小的数据集,可以选择相对简单的模型如 TSM 作为预训练模型,然后在自己的数据集上进行微调,以加快训练速度并提高性能149.
- 模型配置文件修改:根据选择的模型和具体任务,需要对相应的配置文件进行修改。配置文件中包含了模型的结构参数、训练参数、数据路径等信息,用户可以根据自己的数据集和硬件环境进行调整,如修改数据的输入尺寸、批量大小、学习率、训练轮数等145.
模型训练
- 执行训练脚本:通过运行
tools/train.py
脚本开始训练模型,在该脚本的main()
函数中会调用train_model()
函数来生成 runner,并执行runner.run()
开始训练过程5. - 训练过程监控:在训练过程中,可以通过配置文件中的日志设置来监控训练的进度和性能指标,如损失值、准确率等。MMAction2 支持使用多种日志记录工具,如 TensorBoard 等,方便用户直观地查看训练过程中的变化趋势,并根据这些信息及时调整训练参数57.
动作识别与视频分析推理
- 单视频推理:对于单个视频的动作识别,可以使用
demo/demo.py
脚本进行推理。首先需要下载对应的模型配置文件和权重文件,然后指定测试视频和标签文件,即可得到视频中动作的识别结果。例如,执行命令python demo/demo.py tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb.py tsn_imagenet-pretrained-r50_8xb32-1x1x8-100e_kinetics400-rgb_20220906-2692d16c.pth demo/demo.mp4 tools/data/kinetics/label_map_k400.txt
,即可对demo.mp4
视频进行动作识别,并返回 TOP5 的结果1. - 多视频帧图推理:如果是多视频帧图的推理,需要选用支持该功能的版本,如 v0.24.1,并按照固定的命名格式准备好图片数据,如
img_00001.jpg
、img_00002.jpg
等,然后通过修改推理命令中的参数来进行多帧图的推理1. - 视频分析应用:除了简单的动作识别,MMAction2 还可以应用于更复杂的视频分析任务,如时序动作检测、时空动作检测等。通过对视频中动作的时间和空间信息进行分析,可以实现对视频内容的更深入理解,例如在智能监控领域,可以实时检测异常行为的发生时间和位置,提高监控系统的智能化水平124
用 MMPose 来辅助 MMAction 进行动作分析
使用 MMPose 来辅助 MMAction 进行动作分析,主要可以通过以下几个步骤实现:
-
人体检测与姿态估计:
- 首先,使用 MMPose 进行人体检测和姿态估计。MMPose 提供了多种预训练模型,可以检测图像或视频中的人体,并估计人体的骨骼关键点。这些关键点信息可以用来识别人体的姿态和动作。
-
动作识别:
- 接着,将 MMPose 输出的骨骼关键点数据作为输入,使用 MMAction 进行动作识别。MMAction 支持基于骨骼的动作识别,可以识别视频中的特定动作。
-
时空动作检测:
- MMAction 还支持时空动作检测,这可以通过结合 MMPose 提供的骨骼关键点信息和 MMAction 的时空动作检测模型来实现,从而识别视频中的动作发生的时间点和空间位置。
-
数据流水线集成:
- 在 MMAction2 的数据流水线中,可以集成 MMPose 的预处理步骤,包括视频解码、视频尺寸调整、视频裁剪和视频打包等,以便将视频数据转换为适合动作分析的格式。
-
模型训练与推理:
- 使用 MMPose 和 MMAction 提供的预训练模型进行推理,或者在自定义数据集上训练模型。MMAction2 提供了丰富的预训练模型和训练脚本,可以方便地进行模型训练和推理。
-
视频结构化:
- 通过结合 MMPose 和 MMAction,可以对视频进行结构化分析,提取视频中的关键动作信息,例如使用 Faster RCNN 作为人体检测器,HRNetw32 作为人体姿态估计模型,PoseC3D 作为基于人体姿态的动作识别模型。
-
代码实现:
- 在实际应用中,可以通过编写代码来实现上述步骤。例如,使用 MMPose 检测视频中的人体并估计骨骼关键点,然后将这些信息输入到 MMAction 中进行动作识别。
通过这些步骤,MMPose 和 MMAction 可以协同工作,提供强大的视频理解和动作分析能力。这种结合使用 MMPose 和 MMAction 的方法,可以提高动作识别的准确性,并为视频内容分析提供更丰富的信息。
MMPose和RTMPose的关系
MMPose和RTMPose的关系是OpenMMLab开发的两个不同的姿态估计算法库,它们在功能和应用场景上有所不同。
MMPose是OpenMMLab开发的一个开源库,集成了多种先进的人体姿态估计算法,支持单人/多人、2D/3D场景。其模块化设计易于扩展,提供预训练模型和丰富的工具,适用于运动分析、健康监控等领域1。
RTMPose是MMPose的一种实时版本,专门用于在视频流中实时估计多个人的身体姿势。RTMPose采用了一种称为MoCo v2的无监督学习方法,以提高姿态估计的准确性和速度。其主要特点包括实时性、支持多人、鲁棒性和可扩展性。RTMPose适用于需要实时分析的应用场景,如体育分析、游戏开发和虚拟现实等2。
实际应用场景
- 体育分析:RTMPose可以在体育比赛中实时监控运动员的姿势,确保比赛的公平性和安全性。
- 游戏开发:在游戏开发中,RTMPose可以用于创建更真实的角色动画和交互体验。
- 虚拟现实:在虚拟现实应用中,RTMPose能够提供实时的多人姿态估计,增强用户体验
openmmlab 03 RTMDet、RTMPose
安装MMDetection和MMPose两个OpenMMLab开源计算机视觉算法库。
MMDetection用于训练目标检测算法。MMPose用于训练姿态估计和关键点检测算法,包括RTMPose。
采用自顶向上的方法,识别精度更高,最终效果更好
步骤总结起来就是
通过 MMDetection 训练 RTMDet 检测需要分析关键点的目标, 例如三角板和人耳
通过 MMPose 训练 RTMPose 分析关键点
rtmo和rtmpose是什么关系
RTMO和RTMPose是MMPose项目中的两个不同的姿态估计模型,它们之间的关系主要体现在技术改进和功能扩展上。
RTMPose是一个基于二阶段架构的实时多人姿态估计模型,尽管它在速度和精度之间取得了较好的平衡,但在多人场景下,其推理时间会随着画面中人数增加而延长,难以实现实时推理1。为了解决这一问题,MMPose团队推出了RTMO,这是一个基于YOLO架构的单阶段姿态估计框架。RTMO通过使用双一维Heatmap来表示关键点,实现了与自顶向下方法相当的准确度,同时保持了高速度。RTMO在单阶段姿态估计器中超过了最先进的方法,在COCO数据集上实现了更高的AP,并且在多人密集场景中表现优异23。
技术特点和应用场景
- RTMPose:基于二阶段架构,适用于需要高精度但处理速度受限于人数增加的场景。
- RTMO:基于单阶段架构,适用于需要高速且高精度的多人密集场景,能够在多人场景下稳定地进行实时推理12。
性能对比
- 速度:RTMO在COCO val2017数据集上达到了74.8%的AP,并在单个V100 GPU上实现了141 FPS,显示出其高效性2。
- 精度:RTMO在COCO数据集上实现了更高的AP,证明了其在速度和精度上的优越性23。