mmaction 、mmpose、rtmo和rtmpose

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.jpgimg_00002.jpg等,然后通过修改推理命令中的参数来进行多帧图的推理1.
  • 视频分析应用:除了简单的动作识别,MMAction2 还可以应用于更复杂的视频分析任务,如时序动作检测、时空动作检测等。通过对视频中动作的时间和空间信息进行分析,可以实现对视频内容的更深入理解,例如在智能监控领域,可以实时检测异常行为的发生时间和位置,提高监控系统的智能化水平124

用 MMPose 来辅助 MMAction 进行动作分析

使用 MMPose 来辅助 MMAction 进行动作分析,主要可以通过以下几个步骤实现:

  1. 人体检测与姿态估计

    • 首先,使用 MMPose 进行人体检测和姿态估计。MMPose 提供了多种预训练模型,可以检测图像或视频中的人体,并估计人体的骨骼关键点。这些关键点信息可以用来识别人体的姿态和动作。
  2. 动作识别

    • 接着,将 MMPose 输出的骨骼关键点数据作为输入,使用 MMAction 进行动作识别。MMAction 支持基于骨骼的动作识别,可以识别视频中的特定动作。
  3. 时空动作检测

    • MMAction 还支持时空动作检测,这可以通过结合 MMPose 提供的骨骼关键点信息和 MMAction 的时空动作检测模型来实现,从而识别视频中的动作发生的时间点和空间位置。
  4. 数据流水线集成

    • 在 MMAction2 的数据流水线中,可以集成 MMPose 的预处理步骤,包括视频解码、视频尺寸调整、视频裁剪和视频打包等,以便将视频数据转换为适合动作分析的格式。
  5. 模型训练与推理

    • 使用 MMPose 和 MMAction 提供的预训练模型进行推理,或者在自定义数据集上训练模型。MMAction2 提供了丰富的预训练模型和训练脚本,可以方便地进行模型训练和推理。
  6. 视频结构化

    • 通过结合 MMPose 和 MMAction,可以对视频进行结构化分析,提取视频中的关键动作信息,例如使用 Faster RCNN 作为人体检测器,HRNetw32 作为人体姿态估计模型,PoseC3D 作为基于人体姿态的动作识别模型。
  7. 代码实现

    • 在实际应用中,可以通过编写代码来实现上述步骤。例如,使用 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478707.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript】JavaScript开篇基础(7)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

JavaScript的基础数据类型

一、JavaScript中的数组 定义 数组是一种特殊的对象,用于存储多个值。在JavaScript中,数组可以包含不同的数据类型,如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式: 字面量表示法:let fruits [apple…

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议: webSocket协议: 1.2WebSocket协议: 1.3客户端(浏览器)实现 1.3.2 WebSocket对象的相关事宜: 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程

1、打开pycharm 没有pycharm的,在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目,Python版本中选择Python39。如果没有该版本,选择下面的Python 3.9下载并安装。 4、打开软件包,搜索“deep-forest”软件包&am…

ES 和Kibana-v2 带用户登录验证

1. 前言 ElasticSearch、可视化操作工具Kibana。如果你是Linux centos系统的话,下面的指令可以一路CV完成服务的部署。 2. 服务搭建 2.1. 部署ElasticSearch 拉取docker镜像 docker pull elasticsearch:7.17.21 创建挂载卷目录 mkdir /**/es-data -p mkdir /**/…

分布式kettle调度平台v6.4.0新功能介绍

介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

力扣hot100-->排序

排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输…

.net 8使用hangfire实现库存同步任务

C# 使用HangFire 第一章:.net Framework 4.6 WebAPI 使用Hangfire 第二章:net 8使用hangfire实现库存同步任务 文章目录 C# 使用HangFire前言项目源码一、项目架构二、项目服务介绍HangFire服务结构解析HangfireCollectionExtensions 类ModelHangfireSettingsHttpAuthInfoUs…

滑动窗口最大值(java)

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7]…

springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后,第三方jar会被打包进去吗? 答案是肯定的。做了实验如下: 第三方jar的项目结构及jar包结构如下:(该第三方jar采用的是maven工程,打包为普通jar&#xf…

常用Rust日志处理工具教程

在本文中,我想讨论Rust中的日志。通过一些背景信息,我将带您了解两个日志库:env_logger和log4rs。最后,我将分享我的建议和github的片段。 Rust log介绍 log包是Rust中日志API的事实标准,共有五个日志级别&#xff1…

嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点

目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…

时间请求参数、响应

(7)时间请求参数 1.默认格式转换 控制器 RequestMapping("/commonDate") ResponseBody public String commonDate(Date date){System.out.println("默认格式时间参数 date > "date);return "{module : commonDate}"; }…

SpringBoot(9)-Dubbo+Zookeeper

目录 一、了解分布式系统 二、RPC 三、Dubbo 四、SpringBootDubboZookeeper 4.1 框架搭建 4.2 实现RPC 一、了解分布式系统 分布式系统:由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统 二、RPC RPC:远程…

单片机学习笔记 8. 矩阵键盘按键检测

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘 目录 0、实现的…

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中,科技的力量正日益凸显。其中,移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能,成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式,更为农业生产带来了高效、精…

android 音效可视化--Visualizer

Visualizer 是使应用程序能够检索当前播放音频的一部分以进行可视化。它不是录音接口,仅返回部分低质量的音频内容。但是,为了保护某些音频数据的隐私,使用 Visualizer 需要 android.permission.RECORD_AUDIO权限。传递给构造函数的音频会话 …

计算机网络八股整理(一)

计算机网络八股文整理 一:网络模型 1:网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型,它由七层组成,从上到下分别是:应用层,表示层,会话层,传输层,…

利用Python爬虫获得1688按关键字搜索商品:技术解析

在电商领域,1688作为中国领先的B2B电商平台,其商品搜索功能对于商家来说具有极高的价值。通过获取搜索结果,商家可以更好地了解市场趋势,优化产品标题,提高搜索排名。本文将介绍如何使用Python编写爬虫,以获…

Spring Boot集成MyBatis-Plus:自定义拦截器实现动态表名切换

Spring Boot集成MyBatis-Plus:自定义拦截器实现动态表名切换 一、引言 介绍动态表名的场景需求,比如多租户系统、分表分库,或者不同业务模块共用一套代码但操作不同表。说明 MyBatis-Plus 默认绑定固定表名的问题。 二、项目配置 1. 集成 M…