BlazePose

article/2025/9/13 12:54:48

 摘要

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

 

1.引言

    从图像或视频中估计人体姿态在健康跟踪、手语识别和手势控制等各种应用中起着核心作用。这个任务是具有挑战性的,由于各种姿态,无数的自由度,和遮挡。最近的研究[10][7]在姿态估计方面取得了显著进展。常见的方法是为每个关节生成热图,同时细化每个坐标的偏移。虽然这种热图的选择可以以最小的开销适用于多人,但它使一个人的模型比适用于移动电话上的实时推断要大得多(换句话说就是模型太大了,不适合用于移动设备)在本文中,我们讨论了这个特别的使用情况(指用于移动电话上),并演示了模型的加速效果,质量几乎没有下降。

    与基于热图的技术相比,基于回归的方法虽然对计算的要求更少,可扩展性更高,但试图预测平均坐标值,往往无法解决潜在的模糊性。Newell等人的[9]研究表明,堆叠沙漏结构显著提高了预测的质量,即使使用了更少的参数。我们在我们的工作中扩展了这一想法,并使用一个编码-解码网络架构来预测所有关节的热图,然后使用另一个编码器直接回归到所有关节坐标的。我们工作的关键理解是,可以在推理过程中丢弃热图分支,使其足够轻,可以在移动电话上运行

 

    2. 模型体系结构和通道设计

    2.1 推理通道

    在推理过程中,我们采用了一个检测-跟踪设置(见图1),该设置在各种任务上显示了出色的实时性,例如手部地标预测[3]和密集人脸地标预测[6]。我们的通道由一个轻便的身体姿势检测器和一个姿势跟踪网络组成。跟踪器预测关键点坐标、当前帧上的人的存在,以及当前帧的感兴趣区域。当跟踪器指示没有人存在时,我们在下一帧上重新运行检测器网络。

    图一:推理通道。见文本

 2.2 人检测器

    大多数现代目标检测解决方案都依赖于非最大抑制(NMS)算法进行最后的后处理步骤。这对于自由度很少的刚性物体很有效。然而,这种算法对于包括像人类那样的高度关节化(链接)姿势的场景是不适用的,例如人们挥手或拥抱。这是因为多个不明确的框满足NMS算法的交并集(IoU)阈值。

    为了克服这个限制,我们着重于检测相对刚性的身体部分的边界框,如人脸或躯干。我们观察到,在许多情况下,神经网络关于躯干位置的最强信号是人的脸(因为它具有高对比度的特征,并且外观变化较少)。为了使这样一个人检测器快速和轻量级,我们做了一个强有力的,但对于增强现实应用有效的假设,即人的头部对于我们的单人用例应该总是可见的。因此,我们使用一个快速的设备上的人脸检测器[2]作为一个人检测器的代理。这个面部检测器预测额外的特定于个人的对齐参数:人臀部之间的中点,环绕整个人的圆的大小,以及倾斜度(连接两个中间肩点和中间臀点的线之间的角度)。

 

    (本段大致意思是后处理NMS对应一些高度依赖关节节点的场景不适合,例如挥手,拥抱,使用NMS可能会保留很多个框。因此,采用检测人脸和躯干,因为脸部和躯干通常具有很高的对比度,在一些具体算法中的现象就是人的面部关键点会很容易检测出来。)

 

    图2。维特鲁威人通过我们的检测器和人脸检测边界框对齐。详情请参见文本。

 

    2.3 拓扑

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

    与OpenPose[4]和Kinect[1]拓扑相比,我们只在面部、手和脚上使用了最少数量的关键点来估计后续模型感兴趣区域的旋转、大小和位置。我们使用的拓扑如图3所示。如需更多信息,请参见附录A。

 图3. 33个关键点

2.4  数据集

    与大多数现有的使用热图检测关键点的姿态估计解决方案相比,我们的基于跟踪的解决方案需要一个初始姿态对齐。我们将数据集限制在可以看到整个人的情况下,或者臀部和肩膀关键点可以被自信地标注的情况下。为了确保模型支持数据集中不存在的严重遮挡,我们使用了大量的遮挡模拟增强。我们的训练数据集由60K图像和25K图像组成,60K图像是场景中一个人或几个人以共同的姿势出现,25K图像是场景中一个人进行健身锻炼。所有这些图像都是由人类注释的。

 

    2.5.神经网络体系结构

    我们系统的姿态估计组件预测了所有33人关键点的位置,并使用了通道第一阶段(2.1节)提供的人员对齐建议。

                                         图4。网络体系结构。详情见正文

    我们采用热图、偏移量和回归相结合的方法,如图4所示。我们只在训练阶段使用热图和偏移损失,并在运行推理之前从模型中删除相应的输出层。因此,我们有效地使用热图来监督轻量级嵌入,然后由回归编码器网络来利用。这种方法部分受到Newell等人[9]的堆叠沙漏方法的启发,但在我们的例子中,我们堆叠了一个小型的基于编码器-解码器热图的网络和随后的回归编码器网络。

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

 

    2.6 对齐和遮挡增强

    相关姿态先验是提出的解决方案的重要部分。在训练时的增强和数据准备期间,我们有意地限制了角度、比例和转换的支持范围。这允许我们降低网络容量,使网络更快,同时需要更少的计算和主机设备上的能源。

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

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

  图5  上身的BlazePose结果

3.实验

    为了评估模型的质量,我们选择了OpenPose[4]作为基线。为此,我们手动标注了两个包含1000幅图像的内部数据集,每个场景中有1-2人。第一个数据集,称为AR数据集,包括各种各样的人类姿势在野外,而第二个仅是由瑜伽/健身姿势组成。为了一致性,我们只使用MS Coco[8]拓扑,它有17个点,是OpenPose和BlazePose的一个公共子集。作为一个评估指标,我们使用20%公差的正确点百分比(PCK@0.2)(我们假设二维欧氏误差小于相应人躯干尺寸的20%,该点将被正确检测)。为了验证人类基线,我们要求两个注释者独立地重新注释AR数据集,获得平均PCK@0.2为97.2。

    我们训练了两个具有不同能力的模型:BlazePose Full (6.9 mflops, 3.5M Params)和BlazePose Lite (2.7 mflops, 1.3M Params)。尽管我们的模型在AR数据集上的性能略低于OpenPose模型,但BlazePose Full在 瑜伽/健身用例上的性能优于OpenPose。与此同时,根据要求的质量,BlazePose在单个中层手机CPU上的执行速度要比OpenPose在20核桌面CPU[5]上快25-75倍。

 

4.应用

    我们开发了这种新的、设备上的、针对单个人的人体姿态估计模型,以实现各种性能要求的用例,如手语、瑜伽/健身跟踪和增强现实。这个模型在移动CPU上近乎实时地工作,在移动GPU上可以加速到超实时延迟。因为它的33关键点拓扑与BlazeFace[2]和BlazePalm[3]一致,所以它可以作为后续的手部姿态[3]和面部几何估计[6]模型的主干。

    我们的方法本身可扩展到更多的关键点、3D支持和附加关键点属性,因为它不基于热图/偏移图,因此不需要每个新要素类型都有额外的全分辨率图层。

 

Appendix A. BlazePose keypoint names

0. Nose

1. Left eye inner

2. Left eye

3. Left eye outer

4. Right eye inner

5. Right eye

6. Right eye outer

7. Left ear

8. Right ear

9. Mouth left

10. Mouth right

11. Left shoulder

12. Right shoulder

13. Left elbow

14. Right elbow

15. Left wrist

16. Right wrist

17. Left pinky #1 knuckle

18. Right pinky #1 knuckle

19. Left index #1 knuckle

20. Right index #1 knuckle

21. Left thumb #2 knuckle

22. Right thumb #2 knuckle

23. Left hip

24. Right hip

25. Left knee

26. Right knee

27. Left ankle

28. Right ankle

29. Left heel

30. Right heel

31. Left foot index

32. Right foot index


http://chatgpt.dhexx.cn/article/ApgVwuq9.shtml

相关文章

BlazeDS介绍

概况 BlazeDS是用来处理J2EE服务器与远程客户端之间远程通信的组件,它以Servlet的形式部署在J2EE容器里,专门负责处理通信。一般而言,远程客户端采用Flex编写,因为Flex组件中对通信细节进行了良好的封装,使得Flex程序员不必关心通信细节。 图1 BlazeDS概况 BlazeDS应用程…

初探blazeDS

blazeDS是一套面向actionscript的前后台通信框架。 在服务器端,blazeDS以servlet的方式存在于java应用服务器上。它默认提供3中服务,远程调用(在remoting-config.xml中配置)、访问代理(proxy-config.xml)、…

BlazeDS详解

一、Blazeds初步 客户端应用 Blazeds包括客户端和服务端应用。客户端应用是典型的Adobe flex或者AIR应用。Flex和AIR应用使用flex组件和blazeds服务通信,包括Remote Object、HTTPService、WebService、Produce和Consumer。其中的HTTPService、WebService、Produce和…

MySQL配置Amoeba中间件

MySQL配置Amoeba中间件 Amoeba介绍环境配置安装Amoeba配置Amoeba配置文件配置dbServers.xml,设置数据库,登录MySQL的账号和密码 启动Amoeba注意事项 Amoeba介绍 Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中…

MySQL主从复制和基于Amoeba的读写分离部署

文章目录 MySQL主从复制和基于Amoeba读写分离什么是主从复制?为什么要有MySQL主从复制?什么是读写分离?一、MySQL主从复制原理二、主从复制的工作过程三、主从复制方式1、异步复制方式2、半同步复制/增强半同步复制3、全同步复制4、多线程复制…

amoeba mysql下载_amoeba数据库中间件透明实现MYSQL读写分离

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(…

mysql amoeba_MySQL基于Amoeba实现读写分离

读写分离应用分析: 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作。解决方法: 配置多台数据库服务器以实现主从复制读写分离。 1、基于程序代码内部实现 在代码中根据select、 insert 进行路由分类,这种方法…

mysql amoeba 配置_Amoeba新版本MYSQL读写分离配置

官方简介 Amoeba的中文意思是变型虫 主要解决: • 降低 数据切分带来的复杂多数据库结构 • 提供切分规则并降低 数据切分规则 给应用带来的影响 • 降低db 与客户端的连接数 • 读写分离 个人简单描述 可能你还没明白Amoebla这鬼东西主要干麻的呢!比方说…

amoeba mysql_Mysql 基于 Amoeba 的 读写分离

首先说明一下amoeba 跟 MySQL proxy在读写分离的使用上面的区别: 在MySQL proxy 6.0版本 上面如果想要读写分离并且 读集群、写集群 机器比较多情况下,用mysql proxy 需要相当大的工作量,目前mysql proxy没有现成的 lua脚本。mysql proxy根本…

amoeba mysql binary_amoeba安装与实现amoeba for mysql读写分离

运行环境 l CentOS6.3 l Jdk1.6.0_30 l amoeba-mysql-binary-2.2.0 l amoeba:192.168.88.17 l master1:192.168.88.10 l slave1:192.168.88.11 一: 安装jdk1.5以上版本 1.1 卸载centos服务器自带版本jdk 1.1.1 …

amoeba-mysql主从复制配置

amoeba-mysql主从复制配置 主mysql192.168.8.186 1. 同步时间ntpdate ntp.org.cn 2. 打开mysql配置文件/etc/my.cnf,在mysqld下添加 a) log-binmaster-bin ---------启动二进制日志系统 b) server-id1 ---------服务id,主服务器server-id比从服务器serv…

mysql amoeba 事务_MySQL-Amoeba

Amoeba 变形虫 Amoeba 变形虫服务默认端口号8066 该软件能识别读写请求,把读写请求分配到不同的后端MySQL服务器 不用像MySQL-router用端口进行区分读写。 实验: 为了查看读写分离效果 本实验就不配置主从复制 1、 首先IP规划 amoeba:192.168.1.76 master:192.168.1…

amoeba mysql proxy_mysql-proxy和amoeba 分别实现Mariadb读写分离

内容概览: 1、mysql-proxy实现Mariadb读写分离 1、1 拓扑图和环境介绍 1、2 mysql-proxy安装 1、3 设置mysql-proxy 1、4 主节点添加mysql-proxy可访问用户 1、5 读写分离验证 2、amoeba 2、1 amoeba工作原理图 2、2 环境拓扑 2、3 配置JAVA环境 2、4 安装配置amoeb…

amoeba mysql_使用Amoeba 实现MySQL DB 读写分离

Amoeba(变形虫)项目是一个开源框架,于2008年开始发布一款 Amoeba for MySQL软件; 这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发&am…

amoeba mysql_mysql中间件-amoeba

中间件:一种提供在不同技术、不同的软件之间共享资源的程序,更大化了利用了数据库的性能,可以无限扩展(注:真实环境中并非如此) 数据库的中间件: mysql proxy (官方版本)性能低,需要lua 脚本 atlas 性能低&…

Amoeba

1.介绍 Amoeba是mysql代理,增强mysql。类似的产品还有MyCat (mysql代理) 2.资源:点击打开链接c82k 3.准备:amoeba是基于java的所以必须有jdk 4.上传amoeba 5.解压tar包 6.配置文件 amoeba配置文件两个 dbServer…

Mysql基于Amoeba_读写分离搭架

一、Amoeba简介 Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求&#xff0…

mysql基于Amoeba(变形虫)实现读写分离

一,Amoeba介绍 1、什么是amoeba? ​ Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据…

Amoeba:开源的分布式数据库Porxy解决方案

什么是Amoeba? Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database …

findbugs html报告,利用findBugs插件来扫描代码,并用ant生成报告

最近项目要用findbugs插件来生成报告,总结了一下用法和如何生成报告 1, 把下载的压缩包解压后,把 copy到eclipse的plugin目录中去; 2, 重新启动eclipse 3, 打开eclipse->window->Preferences&#xf…