当前位置: 首页 > news >正文

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)和对关键点坐标的回归。

(2)基于堆叠沙漏结构(the stacked hourglass architecture),并使用编码器-解码器网络架构来预测所有关节的热图,然后使用另一个编码器直接回归到所有关节的坐标。

(3)在推断过程中可以丢弃热图分支,使其足够轻便,可以在手机上运行,FPS达到30+。

目录

一、摘要

二、介绍

三、模型架构和管道(Pipeline)设计

(1)推理管道

(2)人员探测器

(3)Topology

(4)数据集

(5)神经网络架构

(6)对齐和遮挡增强

四、实验

五、应用


一、摘要

我们提出了BlazePose,一种用于人体姿态估计的轻量级卷积神经网络架构,用于在移动设备上进行实时推理。在推理过程中,该网络为单个人生成33个身体关键点,并在Pixel2手机上以每秒30帧以上的速度运行。这使得它特别适合实时用例图,如健身跟踪和手语识别。我们的主要贡献包括一个新颖的身体姿态跟踪解决方案和一个轻量级的身体姿态估计神经网络,它同时使用了热图(heatmap)和对关键点坐标的回归。

二、介绍

从图像或视频中进行人体姿态估计在各种应用中起着核心作用,如健康跟踪、手语识别和手势控制。这项任务是具有挑战性的,由于各种各样的姿势,许多自由度和遮挡。最近的工作《Deephigh-resolution representation learning for human pose estimation》《Pifpaf:Composite fields for human pose estimation》在位姿估计方面取得了显著的进展。常用的方法是为每个关节生成热图,同时为每个坐标细化偏移量。虽然这种热图的选择以最小的开销扩展到多个人,但它使单个人的模型比适用于手机上的实时推断大得多。在本文中,我们解决了这个特殊的用例,并展示了模型在几乎没有质量下降的情况下的显著加速。

与基于热图的技术相比,基于回归的方法虽然计算量较小,可扩展性强,但试图预测平均坐标值,往往无法解决潜在的歧义。《Stacked hour-glass networks for human pose estimation》的研究表明,堆叠沙漏结构(the stacked hourglass architecture)可以显著提高预测的质量,即使参数数量较少。在我们的工作中扩展这个想法,并使用编码器-解码器网络架构来预测所有关节的热图,然后使用另一个编码器直接回归到所有关节的坐标。我们工作背后的关键见解是,在推断过程中可以丢弃热图分支,使其足够轻便,可以在手机上运行。

三、模型架构和管道(Pipeline)设计

(1)推理管道

图1 推理管道

在推理过程中,我们使用了一个检测器跟踪器setup(见图1),它在各种任务上表现出优异的实时性能,例如 hand landmark pre-diction《On-device, real-timehand tracking with mediapipe》AND dense face landmark prediction《Real-time facial surface ge-ometry from monocular video on mobile gpus》。我们的管道由一个轻量级的身体姿态探测器和一个姿态跟踪器网络组成。跟踪器预测关键点坐标、当前帧中人物的存在以及当前帧的细化感兴趣区域。当跟踪器指示没有人类在场时,我们在下一帧重新运行检测器网络。

(2)人员探测器

大多数现代目标检测解决方案的最后一个后处理步骤都依赖于非极大值抑制( NMS )算法。这对于自由度较少的刚性物体效果较好。然而,该算法适用于像人类那样包含高度关节化姿态的场景,例如人们挥手或拥抱。这是因为对于NMS算法,多个模糊框满足交并比( IoU )阈值。为了克服这一限制,我们专注于检测一个相对僵硬的身体部分,如人体面部或躯干的边界框。我们观察到,在很多情况下,神经网络关于躯干位置的最强信号是人的面部(因为它具有高对比度的特征和较少的外观变化)。为了使这样的人物检测器快速轻量级,我们使强而有效的AR(增强现实)应用程序,假设在我们的单人用例中,人物的头部应该始终可见。因此,我们使用快速的设备上人脸检测器《Blaze-face: Sub-millisecond neural face detection on mobile gpus》作为人员检测器的代理。

 图2 维特鲁威人通过我们的检测器与人脸检测边界框进行对齐

这个人脸检测器预测额外的个人特异性对齐参数:人的臀部之间的中点,环绕整个人的圆的大小,以及倾斜的(两肩中点和臀中点连线之间的夹角)。

 (3)Topology

图3 33个关键点拓扑

我们提出了一种新的拓扑结构,使用人体上的33个点,采用了BlazeFace、BlazePalm和Coco使用的超集。这使得我们能够与各自的数据集和推理网络保持一致。

与OpenPose和Kinect的Topologies不同,我们仅使用面部、手部和脚部的最少数量的关键点来估计后续模型感兴趣区域的旋转、大小和位置。我们使用的拓扑结构如图3所示。其他信息见附录A。

Appendix A. BlazePose keypoint names

0. Nose11. Left shoulder22. Right thumb #2 knuckle
1. Left eye inner12. Right shoulder

23. Left hip

2. Left eye13. Left elbow24. Right hip
3. Left eye outer14. Right elbow25. Left knee
4. Right eye inner15. Left wrist26. Right knee
5. Right eye16. Right wrist27. Left ankle
6. Right eye outer17. Left pinky #1 knuckle28. Right ankle
7. Left ear18. Right pinky #1 knuckle29. Left heel
8. Right ear19. Left index #1 knuckle30. Right heel
9. Mouth left20. Right index #1 knuckle31. Left foot index
10. Mouth right21. Left thumb #2 knuckle32. Right foot index

(4)数据集

基于解决方案需要初始位姿对齐。我们将我们的数据集限制在整个人都可见的情况下,或者在臀部和肩部关键点可以自信地注释的情况下。为了确保模型支持数据集中不存在的严重遮挡,我们使用大量的遮挡模拟增强。我们的训练数据集由60K张单人或少人在场景中常见姿势的图像和25K张单人在场景中进行健身练习的图像组成。这些图像均由人类标注。 

(5)神经网络架构

本系统的姿态估计组件预测所有33个行人关键点的位置,并使用流水线第一阶段提供的行人对齐建议( 3.1节)。

图4 网络架构

我们采用了热图、偏移和回归相结合的方法,如图4所示。我们只在训练阶段使用heatmap和offset loss,并在运行推断之前从模型中删除相应的输出层。因此,我们有效地使用热图来监督轻量级嵌入,然后由回归编码器网络使用。该方法部分受到了Stacked Hourglass方法的启发,但在我们的案例中,我们堆叠了一个微小的基于编码器-解码器热图的网络和一个后续的回归编码器网络。

我们积极利用网络所有阶段之间的跳跃连接,以实现高级和低级功能之间的平衡。然而,来自回归编码器的梯度并没有传播回热图训练的特征(注意图4 中的渐变停止连接)。我们发现这不仅改善了热图的预测,而且大大提高了坐标回归的精度。

(6)对齐和遮挡增强

相关的位姿先验是所提解决方案的重要部分。在增强和训练时的数据准备过程中,我们特意限制了角度、尺度和平移的支持范围。这允许我们降低网络容量,使网络更快,同时需要更少的计算和主机设备上的能量资源。

基于检测阶段或前一帧关键点,我们对齐人,使臀部之间的点位于通过的正方形图像的中心作为神经网络输入。我们估计旋转作为中间臀部和中间肩点之间的直线L,并旋转图像,使L平行于y轴。缩放比例是这样估计的,这样所有的身体点都适合于一个围绕身体的正方形包围盒,如图2所示。除此之外,我们还应用了10%的比例和移位增强,以确保跟踪器处理帧之间的身体运动和扭曲的调整。

图5 上半身情况的结果

为了支持不可见点的预测,我们在训练过程中模拟遮挡(填充不同颜色的随机矩形),并引入一个点可见性分类器,该分类器指示特定点是否被遮挡以及位置预测是否被认为不准确。这允许跟踪一个人,即使是在重要的遮挡情况下,如上半身,或者当大多数人的身体不在场景中时,如图5所示。

四、实验

为了评估模型的质量,我们选择OpenPose《Openpose: Realtime multi-person 2d pose estimation using part affinity fields》作为基线。为此,我们手动注释了两个内部数据集的1000幅图像,每个数据集都有1 - 2人在现场。第一个数据集,称为AR数据集,由各种各样的人类在野外的姿势组成,而第二个数据集只包括瑜伽/健身姿势。对于一致性,我们只使用了MS Coco [ 8 ]拓扑中的17个点进行评估,它是OpenPose和BlazePose的共同子集。作为评价指标,我们使用具有20 %容忍度的正确点百分比( PCK @ 0.2 ) (其中,如果2D Eu - clidean误差小于误差小于相应的每个子的躯干尺寸的20 % ,则要正确检测的点)。为了验证人类基线,我们要求两个注释器独立地重新注释AR数据集,并获得了97.2的平均PCK @ 0.2。

我们训练了两个不同能力的模型:BlazePose Full ( 6.9 MFlop , 3.5M Params)和BlazePoseLite ( 2.7 MFlop , 1.3M Params)。尽管我们的模型在AR数据集上表现出略差于OpenPose模型的性能,但在Yoga / Fitness用例上,BlazePose Full优于OpenPose。同时,BlazePose在单个中间层手机CPU上的执行速度是OpenPose在20个核心桌面CPU上执行速度的25 - 75倍,具体取决于所请求的质量。

 表1 BlazePose vs OpenPose

1. Desktop CPU with 20 cores (Intel i9-7900X)

2. Pixel 2 Single Core via XNNPACK backend

五、应用

我们开发了这个新的、设备上的、单一的个人特异性人体姿态估计模型,以启用各种性能要求的用例,如手语、瑜伽/健身跟踪和AR。此模型可在移动CPU上近实时工作,并可在移动GPU上加速到超实时延迟。由于其33个关键点拓扑与BlazeFace《Blaze-face: Sub-millisecond neural face detection on mobile gpus》和BlazePalm《On-device, real-timehand tracking with mediapipe》一致,因此它可以作为后续手部姿态和面部几何估计《Real-time facial surface ge-ometry from monocular video on mobile gpus.》模型的基础

我们的方法原生地扩展到更多的关键点、3D支持和额外的关键点属性,因为它不是基于热图/偏移图,因此不需要为每个新特性类型添加额外的全分辨率层。

>>> 如有疑问,欢迎评论区一起探讨!

相关文章:

MediaPipe之人体关键点检测>>>BlazePose论文精度

BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决…...

CSS从入门到精通专栏简介

先让我们来欣赏几个精美的网站: Matt Brett - Freelance Web Designer and WordPress Expert ‎2022 Year in Review • Letterboxd NIO蔚来汽车官方网站 小米官网 Silk – Interactive Generative Art 大屏数据可视化 你是否也有过这样的“烦恼”: * …...

day01常用DOS命令

day01课堂笔记(第一章 Java开发环境的搭建) 1、常用的DOS命令 1.1、怎么打开DOS命令窗口 win键 r (组合键):可以打开“运行”窗口 在运行窗口文本框中输入: cmd 然后回车 1.2、什么是DOS命令呢? 在DOS命令…...

Java设计模式-生成器模式(建造模式)

1.1定义 维基百科定义 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象…...

ansible的常用模块介绍

ansible 常用命令/usr/bin/ansible  #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy  #下载/上传优秀代码或Roles模块 的官网平台,基于网络的/usr/bin/ansible-playbo…...

你不会还不知道如何监测用户的网络是否在线吧?

我最近遇到一个需求,要给网站添加一个用户网络离线提醒。要求我们要实时监测用户的网络状态,当用户断网了,我们要立马给用户弹出一个断网提醒。 那你可能会问,为什么要做这么一个需求呢?用户断网了,网页不…...

ASM Quorum FailGroup RAC on Extended Distance Clusters

法定容错组,和它失去联系也不影响集群运行 参考: How to Manually Add NFS voting disk to an Extended Cluster using ASM in 11.2 (Doc ID 1421588.1) Mount Options for Oracle files when used with NFS on NAS devices (Doc ID 359515.1) RAC: Fre…...

VHDL语言基础-时序逻辑电路-触发器

目录 触发器: D触发器: 触发器的VHDL描述: 触发器的仿真波形如下:​编辑 时钟边沿检测的三种方法: 方法一: 方法二: 方法三: 带有Q非的D触发器: 带有Q非的D触发器的描述&am…...

也许你应该学学 postman了

使用 最简单的方法就是直接在浏览器中复制 Copy as cURL ,然后把数据导入 postman,然后 send ,收工。 我们这里拿 知乎首页 举例 在对应的请求下复制 cURL 打开 postman , 点击左上角的 Import , 选择Paste Raw Tex…...

VHDL语言基础-状态机设计-ASM图法状态机设计

目录 有限状态机的描述方法: ASM图: 状态转移图: 状态转移列表: MDS图: ASM图法状态机设计: ASM图的组成: 状态框: 判断框: 条件框: 状态框与条件框…...

Python文件的属性获取,重命名,目录的创建,显示和改变

1. 文件的属性获取 os.stat()函数可以获取文件的属性,该函数会返回一个和系统平台有关的stat_result对象, 具备一组可访问的属性,可以通过 stat_result.attribute 这样的格式来访问各个属性的值。 字 段描 述st_modeinode 保护模式st_inoin…...

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…...

Linux搭建redis集群6.x版本【超简单】

Linux搭建redis集群6.x版本【超简单】::::本文主要展示如何在一台服务器上搭建集群,核心思想就是复制实例,修改启动端口,实际上跟在几台服务器的操作都是一样的。一.安装redis wget http://dow…...

双重检查锁是如何避免缓存雪崩的,代码例子说明

双重检查锁是如何避免缓存雪崩的什么是缓存雪崩解决方案双重检查锁是如何工作的什么是缓存雪崩 缓存雪崩是指缓存同时失效,造成大量的缓存请求都请求到后端数据库,导致后端系统压力过大而瘫痪的情况。 解决方案 设置缓存的失效时间为随机值&#xff0…...

【成为架构师课程系列】架构设计中的核心思维方法

架构设计中的核心思维方法 目录 前言 #一、抽象思维 #二、分层思维 #三、分治思维 #四、演化思维 #五、如何培养架构设计思维...

Apollo/Nacos配置动态刷新原理及优劣

一. 配置方式 这里只说与Spring集成后的配置方式,这也是项目中主要使用的方式 Apollo 在属性上直接加value注解,这个属性就会随着配置的更改动态更新类实现ConfigChangeListener,在类中方法上ApolloConfigChangeListener注解,注解…...

docker的基本管理

Docker的概念云计算三层架构服务说明应用IAAS基础设施及服务硬件(服务器、网络设置、防火墙等)虚拟化网络虚拟化(大二层)例:openstackPAAS平台及服务环境例:数据库、 docker 、kubernetesSAAS应用及服务应用…...

2023年房地产投资-租金和IRR研究报告

第一章 概况 房地产投资租赁是指置业投资者在购买到物业后,首先对该物业进行适当整饰与装修,之后以出租人的身份,以口头协议或签订合同的形式,将房屋交付承租人占有、使用与收益,由承租人向出租人交付租金的行为。通过…...

2023-2-10刷题情况

青蛙过河 题目描述 小青蛙住在一条河边, 它想到河对岸的学校去学习。小青蛙打算经过河里 的石头跳到对岸。 河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上。 不过, 每块石头有一个高度, 每次小青蛙从一块石头起跳, 这块石头的高度就 会下降 1 , 当石头…...

Python学习-----无序序列2.0(集合的创建、添加、删除以及运算)

目录 前言: 什么是集合 集合的三大特性 1.集合的创建 (1)直接创建 (2)强制转换 2.集合的添加 (1)add()函数 (2)update() 函数 3.集合元…...

2023最详细的接口测试用例设计教程

一、接口测试流程 1、需求讨论 2、需求评审 3、场景设计 4、数据准备 5、测试执行 二、分析接口文档元素 1、接口名称 2、接口地址 3、支持格式 4、请求方式 5、请求参数(参数名称、类型、是否必填、参数说明等) 6、返回参数(返回…...

【数据库】 数据库的理论基础详解

目录 一, 什么是数据库 二, 数据库管理系统(DBMS) 三,数据库与文件系统的区别 1,对比区别: 2,优缺点总结: 四,数据库的发展史 五,常见数据库 1, 关系型…...

Linux环境运行Maven 生成的hadoop jar包

运行命令: hadoop jar ./jar包名字 class对象路径 输入路径 输出路径 linux内部jar包测试 cd 到以下目录,创建以下文件夹 [rootreagan180 ~]# cd /opt/soft/hadoop313/share/hadoop/mapreduce/ 创建文件夹(读取路径) [roo…...

ThreadPoolExecutor原理解析

1. 工作原理1.1 流程图1.2 执行示意图从上图得知如果当前运行的线程数小于corePoolSize(核心线程数),则会创建新线程作为核心线程来执行任务(注意,执行这一步需要获取全局锁)。如果运行的线程等于或多于corePoolSize,则将任务加入BlockingQue…...

谷粒学苑第二章前端框架-2.2前端框架开发过程

一、前端框架开发过程 第一步:添加路由 src/router模块用来管理路由。 第二步:点击某个路由,显示路由对应页面内容 component: () > import(/views/table/index), 表示路由对应的页面,是views/table/index.vue页面 第三步&a…...

权限管理实现的两种方式(详解)

登录的接口请求的三个内容:1. token2. 用户信息、角色信息3. 菜单信息第一种:基于角色Role的动态路由管理 (不推荐,但市场用的比较多)首先列出枚举每个角色对应几个路由,然后根据用户登录的角色遍历枚举出来的角色动态注册对应的路…...

【C++】智能指针思路解析和模拟实现

此篇文章就从以下几个方面出发,带你了解智能指针的方方面面1.为什么需要智能指针当我们开辟内存并使用的时候,我们的顺序应该是这样:开辟内存-》使用内存-》释放内存问题就出现在第三步,开辟好了,也使用了,…...

SpringCloud(18):Sentinel流控降级入门

Sentinel本地应用流控降级实现分为三步: 创建本地应用搭建本地Sentinel控制台本地应用接入本地Sentinel控制台1 本地应用创建 整体流程分析 创建springboot项目在项目的pom.xml文件中引入sentinel-core的依赖坐标创建TestController,定义使用限流规则运行测试具体流程 1.创…...

C++【多态】

文章目录1、多态的概念2、多态的定义及实现2-1、多态的构成条件2-2、虚函数2-3、虚函数的重写2-4 多态样例2-5、协变2-6、 析构函数与virtual2-7、函数重载、函数隐藏(重定义)与虚函数重写(覆盖)的对比2-8、override 和 final&…...

缓存预热、缓存雪崩、缓存击穿、缓存穿透,你真的了解吗?

缓存穿透、缓存击穿、缓存雪崩有什么区别,该如何解决? 1.缓存预热 1.1 问题描述 请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有,此时从数据库中查找数据然后将数据再存入缓存&#xf…...

网站怎么做英语和中文的/迅雷磁力

//case 1 forkjoin none wait fork//case 2 forkjoin区别???...

如何在文本上做网站链接符号/企业网络营销策略案例

题目链接:https://vjudge.net/contest/338207#problem/C 翻译: 给定一个整数n,接下来n个数,第i个人的书可以给第ai的人,求每本书回到自己手里需要经过几次。 比如n5时,1 2 3 4 5每本书都在自己手里&#…...

公司关于网站建设的通知/营销策划师

原子性 (Atomicity) 原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做。 隔离性 (Isolation) 隔离性是指多个事务并发执行的时候,事务内部的操作与其他事务是隔离的,并发执行的…...

哪里有做网站企业/网店推广的方式

返回:贺老师课程教学链接 画出实现下面求解任务的流程图 1、简单循环的流程图(提示:m是一个变量,在程序中输入)(1)求1到m的倒数和,即  (2)求1到m的平方和&…...

企业门户网站开发平台的设计/子域名网址查询

事件通知 当一个系统发送了事件消息通知其它系统在自身域中做改变时,会发生事件通知。事件通知的一个关键因素是源系统并不真正十分关心响应。通常源系统根本就不希望得到应答,或者如果有一个源系统关心的响应,这也是间接的。发送事件的逻辑…...

大宗商品交易平台上市公司/seo是什么意思广东话

引言 前面已经学习了celeryredis的异步和定时任务,下面介绍如何结合django来使用。 环境配置 在动手之前,一定要准备好的是环境,celery版本有很多,在使用过程中如何版本与django和redis版本不配套,将会很麻烦。 我这里…...