RTMW:实时多人2D和3D 全人体姿态估计
单位:上海AI实验室
代码:mmpose/tree/main/projects/rtmpose
系列文章目录
RTMO: 面向高性能单阶段的实时多人姿态估计
目录
- 系列文章目录
- 摘要
- 一、背景
- 二、相关工作
- 2.1 自上而下的方法。
- 2.2 坐标分类。
- 2.3 3D Pose
- 3 实验方法
- 3.1.1 任务限制
- 3.1.3训练技术
摘要
全身姿势估计是一项具有挑战性的任务,它需要同时预测身体、手、脸和脚的关键点。全身姿态估计旨在预测人体的细粒度姿态信息,包括面部、躯干、手和脚,这在以人为中心的感知和生成的研究以及各种应用中发挥着重要作用。
在这项工作中,我们提出了RTMW(实时多人全身姿态估计模型),一系列高性能的二维/三维全身姿态估计模型。我们将RTMPose模型架构与FPN和HEM(层次编码模块)相结合,以更好地捕获从不同尺度的不同身体部位的姿态信息。该模型使用丰富的开源人类关键点数据集进行训练,并使用手动对齐的注释,并通过两阶段蒸馏策略进一步增强。 RTMW在多个全身姿态估计基准上表现出了良好的性能,同时保持了高推理效率和部署友好性。
一、背景
全身姿态估计是推进以人为中心的人工智能系统能力的重要组成部分。它可用于人机交互、虚拟角色动画和电影产业。尝试在AIGC(AI生成的内容)应用程序中,全身姿态估计的结果也被用来控制角色的生成。
随着全身姿态估计支持的下游任务和工业应用的出现,设计一个高精度、低延迟、易于部署的模型是非常有价值的。在早期的人体姿态估计研究中,由于任务的复杂性和计算能力和数据的限制,研究人员将人体分成不同的部分进行独立的姿态估计研究。在前辈们的不懈努力下,在这些单独的、部分特定的二维姿态估计任务中取得了显著的成果。
之前的工作,如OpenPose [3],可以通过结合这些单独部分的结果来获得全身姿态估计结果。然而,这种简单的组合方法面临着很高的计算成本和显著的性能限制。虽然像MediaPipe [22]这样的轻量级工具提供了高实时性能和易于部署,但它们的准确性并不完全令人满意。我们的MMPose [5]团队去年发布了RTMPose [10]模型,它在准确性和实时性能之间取得了极好的平衡。随后,在此基础上,DWPose [40]通过集成一个两阶段蒸馏技术和集成一个新的数据集UBody [17],进一步提高了RTMPose在全身姿态估计任务中的性能。
RTMPose [10]的结构设计最初只考虑了身体姿势。然而,在全身姿态估计任务中,特征分辨率对面部、手和脚姿态估计的准确性至关重要。因此,我们引入了PAFPN(部分聚合特征金字塔网络)和HEM(高效多尺度特征融合)两种技术来提高特征分辨率。实验结果证实,这两个模块显著提高了细粒度体部位的定位精度。
与此同时,开源的全体姿态估计数据集的稀缺极大地限制了开源模型。为了充分利用聚焦于不同身体部位的数据集,我们手动对齐了14个开源数据集的关键点定义(3个全身关键点,6个身体关键点,4个面部关键点,1个手部关键点),这些数据集共同用于训练RTMW。在三维全身姿势估计领域,学术界主要采用了两种主要的方法:提升[26,29,42]方法和回归[28,32]方法。对基于SimCC [16]技术的方法的学术研究明显缺乏。我们的研究努力通过将RTMW架构应用到三维全身姿态估计任务中,冒险进入了未知的领域。我们的实验结果表明,SimCC [16]方法有自己的特性,并且在这一领域具有值得称赞的性能。
二、相关工作
2.1 自上而下的方法。
自顶向下的算法使用现成的探测器来提供边界盒,并将人体裁剪到一个统一的尺度,以进行姿态估计。自上而下范式的算法[2,18,31,37,39]已经主导了公共基准测试。两阶段推理范式允许人类检测器和姿态估计器使用相对较小的输入分辨率,允许它们在非极端场景下(即当图像中的人数不超过6人时),在速度和精度上优于自底而上的算法。此外,以前的大多数工作都集中在在公共数据集上实现最先进的性能。相比之下,我们的工作旨在设计具有更好的速度-精度权衡的模型,以满足工业应用的需求。
2.2 坐标分类。
以前的姿态估计方法通常将关键点定位视为坐标回归(如[14,25,33])或热图回归(如[8,37,39,41])。SimCC [16]引入了一种新的方案,将关键点预测分别从水平坐标和垂直坐标的亚像素箱中进行分类,这带来了几个优点。
首先,SimCC摆脱了对高分辨率热图的依赖,因此允许一个非常紧凑的架构,既不需要高分辨率的中间表示[31],也不需要昂贵的升级层[37]。其次,SimCC将最终的特征图扁平化以进行分类,而不是涉及全局池化[33],从而避免了空间信息的丢失。第三,通过在亚像素尺度上的坐标分类,可以有效地缓解量化误差,而不需要额外的细化后处理[41]。
这些特性使得SimCC在构建轻量级姿态估计模型方面具有吸引力。RTMO [21]将坐标分类方法引入到单阶段姿态估计中,取得了显著的性能提高,也证实了SimCC方法在姿态估计任务中的巨大潜力。在这项工作中,我们进一步利用坐标分类方案,优化模型架构和训练策略。
2.3 3D Pose
三维姿态估计是一个活跃的研究领域,具有广泛的工业应用。当代方法的景观主要由两种主要方法所主导:利用二维关键点的提升方法[26,29,42]和基于图像分析的回归方法。提升方法将二维坐标输入神经网络,直接预测其空间坐标,其计算速度快。然而,这种效率是以牺牲场景信息为代价的,因为这些算法缺乏图像输入,导致它们依赖于对训练数据的注释来确定其预测结果的范围。
相反,基于图像的回归方法[28,32]在结合丰富的视觉数据的同时,面临着推理速度缓慢和任务复杂性增加的挑战。这些因素导致了难以训练模型和实现高精度。我们提出的方法RTMW3D与传统方法不同,它采用了基于Simcc技术[16]的分类策略,通过后处理来细化最终的空间坐标。我们的实验结果强调了这种创新方法的有效性。
3 实验方法
虽然我们之前提出的RTMPose并没有针对全身关键点估计任务的特殊设计,但经过实验,我们发现它的性能可以与目前最先进的方法ZoomNas [38]相媲美。然而,在实验过程中,我们发现RTMPose在全身姿态估计任务中存在一定的性能瓶颈。随着参数规模的增加,模型的性能并不随着参数数量的增加而提高。另一方面,与其他研究团队的研究,如DWPose团队,虽然他们添加了新的数据集在训练RTMPose和采用更有效的两阶段蒸馏训练技术,有效地提高了RTMPose的准确性,他们仍然不能避免问题的固有性能瓶颈RTMPose参数数量的增加。
3.1.1 任务限制
我们首先分析了全身姿态估计任务中一些未解决的问题。RTMW旨在解决这些挑战。
第一个问题是局部区域的解决限制。 在图像中,人体的某些部分,如脸、手和脚,只占人体和图像的很小的比例。对于一个模型,这些区域的输入分辨率将直接影响模型对这些部分中的关键点的预测精度。
第二个问题是,从人体不同部位学习关键点的难度是不同的。例如,面部上的关键点可以看作是附着在面部上的一些关键点,一个刚体,由于面部的变形很小,模型会发现更容易学习预测这些面部关键点。相反,由于手指和手腕的旋转和运动,手的关键点具有更高的自由度,使它们更难以预测。
第三个问题在于损失函数。常用的损失函数,如KL散度和回归误差,都是逐点计算的。因此,它们往往是由具有更多关键点和更大的空间比例的身体部位所主导的,如躯干和面部,而不太关注小而复杂的部位,如手和脚。这通常导致了不平衡收敛,这意味着模型对较低的平均误差较低,但在复杂的身体部位表现出较差的准确性。最后一点是,开源的全身姿态估计数据集很少,这极大地限制了我们对该模型能力的研究。针对上述限制,我们为RTMPose设计了一套目标优化解决方案,并提出了我们的RTMW模型。
3.1.3训练技术
由于缺乏开源的全身姿态估计数据集,我们手动对齐了14个开源数据集,其中包括全身、躯干、手和面部的姿态估计关键点。我们使用这14个数据集进行联合训练。同时,为了使模型的性能最大化,我们采用了DWPose在模型训练过程中使用的两阶段蒸馏技术来进一步提高模型的性能。
相关文章:
RTMW:实时多人2D和3D 全人体姿态估计
单位:上海AI实验室 代码:mmpose/tree/main/projects/rtmpose 系列文章目录 RTMO: 面向高性能单阶段的实时多人姿态估计 目录 系列文章目录摘要一、背景二、相关工作2.1 自上而下的方法。2.2 坐标分类。2.3 3D Pose 3 实验方法3.1.1 任务限制3.1.3训练技…...
《Java源力物语》-3.空值猎手
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” \quad 夜色渐深,在一处偏僻小径上,月光透过浓密的源力云层,在地面上投下斑驳的光影。String正独自练习着刚从…...
macrodroid通过http请求控制手机运行宏
macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…...
Redis分片集群+MQ处理高并发
Redis的三大集群模式:主从复制、哨兵模式和Cluster模式。每种模式都有其特点和应用场景,具体如下: 主从复制模式:适用于数据备份和读写分离场景,配置简单,但在主节点故障时需要手动切换。哨兵模式ÿ…...
Linux内核 -- UIO (User-space I/O) 简介与使用笔记
UIO (User-space I/O) 简介 UIO (User-space I/O) 是 Linux 内核提供的一种机制,用于简化设备驱动的开发。它将设备的硬件资源(如内存映射、中断等)通过简单的接口暴露给用户空间程序,从而使用户可以在用户空间编写复杂的设备逻辑…...
《计算机组成及汇编语言原理》阅读笔记:p86-p115
《计算机组成及汇编语言原理》学习第 6 天,p86-p115 总结,总计 20 页。 一、技术总结 1.if statement 2.loop 在许多编程语言中,有类种循环:一种是在程序开头检测条件(test the condition),另一种是在程序末尾检测条件。 3.C…...
Python爬虫实战(保姆级登网页信息爬取教程)
此blog为爬虫实战教学,代码已附上,可以复制运行。若要直接看实战代码翻到博客后半部分。 本文使用selenium库进行爬虫,实现爬取数据操作,此库是通过模仿用户的操作进行对页面的处理。了解了这个思维模式,可以对代码进…...
探索CSDN博客数据:使用Python爬虫技术
探索CSDN博客数据:使用Python爬虫技术 在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和py…...
PPT画图——如何设置导致图片为600dpi
winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…...
uniapp——APP读取bin文件,解析文件的数据内容(二)
文章目录 读取bin文件内容,发送给蓝牙设备;上传文件返回数据格式通过URL路径获取文件对象,读取文件的数据内容file对象返回数据格式 读取bin文件内容,发送给蓝牙设备; 上传文件,根据返回路径,解…...
Paddler负载均衡器
Paddler负载均衡器 Paddler本身是用Go语言编写的,没有直接的Python接口,但可以通过以下方式在Python中使用: 执行命令行调用 在Python中可以使用 subprocess 模块来调用Paddler的命令行工具,实现负载均衡功能 。例如: import subprocessdef start_paddler_agent():com…...
`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别
文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…...
clicbot可立宝编程 易错归纳笔记
1、屏幕播放表情模块和等待时间 易错点1: (1)等待时间: (a)不是等上一个代码执行完,再执行等待时间,这是错误的。 (b)等待时间上面的代码1刚开始执行,上面的代码2也刚开始执行,不是等到代码1执行完…...
MySQL 数据”丢失”事件之 binlog 解析应用
事件背景 客户反馈在晚间数据跑批后,查询相关表的数据时,发现该表的部分数据在数据库中不存在 从应用跑批的日志来看,跑批未报错,且可查到日志中明确显示当时那批数据已插入到数据库中 需要帮忙分析这批数据丢失的原因。 备注:考虑信息敏感性,以下分析场景测试环境模拟,相关数据…...
基于人工智能时代政务智慧转型的实现前景初探
去年6月,我有幸聆听了由华政公共管理与政治学院精心组织的2019年MPA研究生高端论坛,上午场:由董海军(中共上海市委机构编制委员会办公室处长)主讲的深化机构改革的探索与实践,以及下午场:由束金…...
【论文笔记】Visual Alignment Pre-training for Sign Language Translation
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Alignment Pre-tra…...
一起学Git【第五节:git版本回退】
git reset 是 Git 版本控制系统中一个非常强大的命令,它可以用来重置当前分支到指定的状态,即执行撤销操作或者回退至之前的某一版本,他可以回退至之前的某一个提交状态。有三种主要的用法:git reset --soft;git reset --hard;git reset --mixed; 对比如图: 1.git res…...
金蝶V10中间件的使用
目录 环境准备搭建过程配置修改应用部署 环境准备 Linux内核服务器JDK1.8安装包:AAS-V10.zip程序包:***.war 搭建过程 将安装包上传至服务器opt目录下,官方给定的默认服务主目录为“/opt/AAS-V10/ApusicAS/aas/”;解压安装包(解…...
hi168大数据离线项目环境搭建
hi168大数据离线项目环境搭建 ## **1. 服务器准备**##### 1.1 创建集群应用节点 集群服务器使用“我的应用“中的Ubuntu22.04集群模版创建三个节点应用,并且进入“我的应用”中去修改一下节点名称(node1对应master,node2对应hadoop1…...
Ubuntu 22.04安装Docker
陈拓 2024/10/19-2024/12/26 0. 概述 docker是容器(Container),有点像一个轻量级的虚拟机。 容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起…...
穿山甲等广告联盟依据哪些维度给APP、小程序结算广告变现收益
媒体在开展广告变现商业化时,最关心的是变现收益问题,所运营的不同体量的APP、小程序能产生多少广告变现收益。#广告联盟# 广告变现的价格、收益不是一成不变的,广告转化是影响广告收益的重要因素之一。广告平台针对整个变现链路上的各环节&…...
【ES6复习笔记】迭代器(10)
什么是迭代器? 迭代器(Iterator)是一种对象,它能够遍历并访问一个集合中的元素。在 JavaScript 中,迭代器提供了一种统一的方式来处理各种集合,如数组、字符串、Map、Set 等。通过迭代器,我们可…...
ROS1入门教程6:复杂行为处理
一、新建项目 # 创建工作空间 mkdir -p demo6/src && cd demo6# 创建功能包 catkin_create_pkg demo roscpp rosmsg actionlib_msgs message_generation tf二、创建行为 # 创建行为文件夹 mkdir action && cd action# 创建行为文件 vim Move.action# 定义行为…...
【 Copilot】云开发 Copilot 实战教程:从入门到精通,掌握云开发核心技能
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 云开发 Copilot 作为一款革新性的开发辅助工具,利用先进的人工智能技术,为开发者在云开发的征程中点亮…...
DataCap MongoDB Driver: 全面解析MongoDB在DataCap中的使用指南
在大数据时代,MongoDB作为一款广受欢迎的NoSQL数据库,其灵活的文档存储模型和强大的查询能力使其成为许多现代应用的首选数据存储方案。今天,我们将深入探讨DataCap MongoDB Driver,这是一个强大的工具,它让在DataCap环…...
[x86 ubuntu22.04]双触摸屏的触摸事件都响应在同一个触摸屏上
1 问题描述 CPU:G6900E OS:ubuntu22.04 Kernel:6.8.0-49-generic 系统下有两个一样的 edp 触摸屏,两个触摸屏的触摸事件都响应在同一个 edp 屏幕上。 2 解决过程 使用“xinput”命令查看输入设备,可以看到只有一个 to…...
Linux:SystemV通信
目录 一、System V通信 二、共享内存 代码板块 总结 一、System V通信 System V IPC(inter-process communication),是一种进程间通信方式。其实现的方法有共享内存、消息队列、信号量这三种机制。 本文着重介绍共享内存这种方式。 二、共…...
全面Kafka监控方案:从配置到指标
文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口:kafka基本分为broker、producer、consumer三个子项,每一项的启动都需要…...
Springboot项目Druid运行时动态连接多数据源的功能
项目支持多数据库连接是个很常见的需求,这不仅是要在编译前连已经知道的多个数据库,有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...
【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)
免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...
中间件xxl-job安装
拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.2 创建xxl-job-admin容器 docker create --name xxl-job-admin -p 9099:8080 -e PARAMS"--spring.datasource.urljdbc:mysql://192.168.96.57:3306/xxl_job2Unicodetrue&characterEncodingUTF-8 --spring.dataso…...
Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…...
论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMsÿ…...
破解海外业务困局:新加坡服务器托管与跨境组网策略
在当今全球化商业蓬勃发展的浪潮之下,众多企业将目光投向海外市场,力求拓展业务版图、抢占发展先机。而新加坡,凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境,已然成为企业海外布局的热门之选。此时…...
win系统B站播放8k视频启用HEVC编码
下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads,根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent ”项目中的“家电控制设计”中的“空调控制”子项目,最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…...
springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目
springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库ÿ…...
【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
问题描述 从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。 这条SQL长这样,default_sql是要在odps上执行的sql语句,提…...
利用 Python 编写一个 VIP 音乐下载脚本
在这篇博客中,我们将介绍如何使用 Python 编写一个简单的 VIP 音乐下载脚本,利用网页爬虫技术从一个音乐网站下载歌曲。通过解析网页,获取歌曲的真实下载链接,并将音乐文件保存到本地。我们将使用 requests 和 BeautifulSoup 库来实现这个过程。 目标 本脚本的主要功能是…...
Sashulin升级啦,开箱即用!
经过多年的不断投入,升级为了Sashulin基础软件系列,本系列包含: 1、Sashulin IDE 2025全域通用开发工具 通用型Java开发工具,并可以进行业务流可视化开发。 2、发布Sashulin Webserver 2025 将Html等网页文件发布成网站…...
Java圣诞树
目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…...
在Python如何用Type创建类
文章目录 一,如何创建类1:创建一个简单类2:添加属性和方法3:动态继承父类4:结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...
04软件测试需求分析案例-用户登录
通读文档,提取信息,提出问题,整理为需求。 从需求规格说明、设计说明、配置说明等文档获取原始需求,通读原始需求,分析有哪些功能,每种功能要完成什么业务,业务该如何实现,业务逻辑…...
替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!
信息技术的快速进步让大数据成为了企业决策的关键支撑,但同时也带来了巨大的挑战。企业在运营过程中产生的数据量急剧增加,这对数据传输的速度、安全性和效率提出了更高的要求。然而,传统的FTP传输方式在处理大规模数据时显得力不从心&#x…...
SpringMVC学习(一)——请求与响应处理
目录 一、SpringMVC简介 二、RequestMapping:请求路径映射 三、RestController 四、请求限定 五、请求处理 1.使用普通变量,收集请求参数 2.使用RequestParam明确指定获取参数 3.目标方法参数是一个pojo 4.RequestHeader:获取请求…...
大语言模型学习工具及资源总结和落地应用
当前,随着人工智能技术的迅猛发展,大语言模型(Large Language Models, LLMs)在各个领域的应用日益广泛。以下是国内外常见的大语言模型工具、已经落地部署的应用以及学习相关的网站和资源的详细介绍。 一、国内外常见的大语言模型…...
深度学习使用Anaconda打开Jupyter Notebook编码
新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包,但是很慢,不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本,支持windows,linux系统 下载完之后自行…...