【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields
OpenPose:使用PAF的实时多人2D姿势估计。
code:GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR'17 (Oral)
paper:[1611.08050] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (arxiv.org)
0 摘要
一种检测图像中多人的2D姿态的方法。 使用非参数表示(关节亲和力场PAF)学习将身体部位与图像中的人体相关联。对全局上下文进行编码,允许自下而上的解析步骤,在保持高精度的同时实现实时性。该架构旨在共同学习关节位置和它们通过同一顺序预测过程的两个分支进行关联。 在COCO 2016关键点挑战中排名第一。
1 介绍
人体2D姿势估计的问题,主要集中在寻找个体的身体部位上。 推断图像中的多个人的姿势,困难在于:首先,每个图像可能包含未知数量的人;其次,人与人互动导致遮挡,空间干扰,部位的关联困难。 第三,运行时复杂度随人数而增加,给实时性带来了挑战。
常用的方法是:自上而下的单人姿势估计,但缺点很多。自下而上的方法:联合标记了部位检测的候选对象,并将其与单个人体相关联。但是,在完全连接的图上求解整数线性规划问题是一个NP难题,平均处理时间约为几小时。
本文提出了一种有效的方法,进行多人姿势估计:通过部分亲和力字段(PAF),展示了关联分数的自下而上的表示形式,该部分是一组2D矢量场,可对肢体在图像域上的位置和方向进行编码。 同时推断出检测和关联的这些自下而上的表示方式,可以很好地编码全局上下文,从而可以实现贪心解析高质量的结果,而计算成本少。
图1 顶部: 多人姿势估计。 属于同一个人的身体部位被链接。 左下:部位亲和力场(PAF)对应于连接右肘和右肢的肢体腕。 颜色编码方向。 右下:放大预测PAF的视图。 在场中的每个像素处,一个2D向量编码肢体的位置和方向。
2 方法
图2 总体流程。将整个图像作为两分支CNN的输入,以共同预测(b)中所示的身体部位检测,以及(c)中所示的部位关联的部位亲和力场(PAF)。 解析步骤执行一组二分匹配以关联身体部位候选者(d)。 最终组装成图像中所有人的全身姿势(e)。
将大小为w×h的彩色图像作为输入(图2a)。并为图像中的每个人生成解剖学关键点的二维位置(图2e)。首先,前馈网络同时预测身体部位位置的一组2D置信度图S(图2b)和部位亲和力的一组2D矢量场L,它们编码各个部位之间的关联度(图2c)。集合有J个置信图,每个关键点部位一个,
。集合
有C个向量场,每个肢体一个,
。 Lc中的每个图像位置都编码一个2D向量(如图1所示)。最后,通过贪心推断来解析置信度图和亲和力场(图2d),以输出图像中所有人的2D关键点。
2.1 同时检测和关联
图3 两个分支的多级CNN。第一个分支中的每个stage预测置信度图S,第二个分支中的每个stage预测PAF。在每个stage之后,S和L以及图片的feature拼接在一起传入到下一个stage中。
同时预测检测置信度图和PAF。网络分为两个分支:顶部分支预测置信度图,底部分支预测PAF。首先通过卷积网络分析图像(由VGG-19的前10层初始化并微调),生成一组输入到每个分支的第一阶段的特征图F。在第一阶段,网络产生一组检测置信度图和一组PAF
,其中 ρ1 和 φ1 是在第1阶段进行推理的CNN。在每个后续阶段中,前一阶段中两个分支的预测以及原始图像特征F被拼接(concat)起来产生精确的预测。
ρt 和 φt 是在第t阶段进行推理的CNN。
图4 右手腕(第一行)和PAF的置信度图跨阶段的右前臂(第二行)。 尽管在早期阶段左右身体部位和四肢之间存在混淆,但如在突出显示的区域中所示,通过后期的全局推断,估算值将越来越完善。
图4显示了跨阶段的置信度图和PAF的细化。 为了指导网络迭代地预测第一分支中的身体部位和第二分支中的PAF的置信度图,在每个阶段的末尾应用两个损失函数,分别在每个分支处应用一个损失函数。 在估计的预测与GT map和PAF之间使用L2损失。 对损失函数进行空间加权,以解决一个实际问题,即某些数据集不能完全标记所有人。 具体而言,在阶段t的两个分支处的损失函数为:
是GT置信度图,
是GT PAF,W是一个二进制掩码,当在图像位置p缺少注释时,W(p)= 0。Mask是用来避免惩罚训练期间的真实积极预测。每个阶段的中级监督都通过定期补充梯度来解决了消失的梯度问题。整体目标函数是:
2.2 用于部位检测的置信度图
评估方程式(5)中的 fs 。在训练过程中,从带注释的2D关键点中生成GT置信度图。每个置信度图是出现在每个像素上位置的特定身体部位的2D表示。如果有多个人出现,对于每个人 k,都有对应于每个可见部分 j 的峰。
首先为人体目标k生成单独的置信度图 。令
为图片中人物k的第j个部位的GT位置。
中位置
的价值定义为:
σ控制峰的扩展。网络要预测的GT置信度图是通过max运算符汇总的各个置信度图,
用置信度图的最大值代替平均值,以使峰值接近的精度仍然保持不同。在测试时,我们预测置信度图(如图4的第一行所示),并通过执行非最大抑制来获得候选的身体部位。
图5.部位关联策略。(a)身体部位检测两个身体部位类型的候选者(红色和蓝色圆点)候选连接(灰线)。(b)使用中点(黄点)表示的连接结果:正确的连接(黑线)和不正确的连接(绿线)也能满足入射约束。(c)使用PAF的结果(黄色箭头)。 通过编码位置和方向的支持PAF消除了假肢。
2.3 用于部位关联的PAF
给定一组检测到的身体部位(图5a中红色和蓝色),如何组装它们以形成未知人数的全身姿势?需要每对身体部位检测的关联的置信度测量,即它们属于同一部位人。衡量关联的一种可能方法是检测肢体上每对部位之间的附加中点,并检查其在候选对象部位检测的发生率,如图5b所示。但是当人们聚集,这些中点可能支持虚假关联(图5b中绿线)。原因是表示形式有两个限制:(1)仅对位置进行编码,而不是每个肢体的方向;(2)将肢体的支撑区域减少到单个点。
为了解决这些限制,我们提出了部位亲和力场,它同时保留肢体区域的位置和方向信息 (如图5c)。部位相似性是每个肢体的2D矢量场,也如图1d所示:对于属于特定肢体的区域中的每个像素,一个2D矢量编码从肢体一个部位指向另一部位的方向。每种类型的肢体都有一个对应的亲和力场,将其两个相关的身体部位连接在一起。如下图一个单独肢体。
人物k的肢体c的部位 j1 和 j2 的真实位置表示为 。如果一个点p在肢体上,
是一个由 j1 指向 j2的联合向量。其他的所有点,值是0。
PAF简单来说就是描述PCM热力点之间的亲和力,使用2D向量建模骨骼。
按照前文所述Part confidence map和PAF结合,按照原理说可以很好的模拟二维人体的各种效果,按照亲和力高的pcm点,属于同一个人,按理说就能够实现目标效果了,但是实际上并非如此。看到这篇文章中的大佬这样解释:DL-Practise:[多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络
大体表述意思是是很多时候亲和力接近,无法完全根据此配对成功。单单依靠亲和力最大值匹配会出现不想要的结果。
转化为二分图匹配问题,解决方法是使用匈牙利算法。
通过采样和对u的等距值求和来估算积分。
图6.图的匹配。(a)带有部位检测的原始图像; (b)K部分图; (c)树结构; (d)一组二部图
参考:深度学习论文翻译(12)——OpenPose - 知乎 (zhihu.com)
论文阅读笔记(1)OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields - 知乎 (zhihu.com) [多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络 - 知乎 (zhihu.com)
相关文章:

【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields
OpenPose:使用PAF的实时多人2D姿势估计。 code:GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR17 (Oral) paper:[1611.08050] Realtime Multi-Person 2D Pose Estima…...

图像分割实战-系列教程9:U2NET显著性检测实战1
🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 1、任务概述...

RK3568平台 Android13 GKI架构开发方式
一.GKI简介 GKI:Generic Kernel Image 通用内核映像。 Android13 GMS和EDLA认证的一个难点是google强制要求要支持GKI。GKI通用内核映像,是google为了解决内核碎片化的问题,而设计的通过提供统一核心内核并将SoC和板级驱动从核心内核移至可加…...
阿里云服务器节省计划价格便宜_成本优化全解析
阿里云服务器付费模式节省计划怎么收费?为什么说节省计划更节省成本?节省计划是一种折扣权益计划,可以抵扣按量付费实例(不含抢占式实例)的账单。相比包年包月实例,以及预留实例券和按量付费实例的组合&…...
3种依赖管理工具实现requirements.txt文件生成
1.pip 实现方式 要使用 pip 生成 requirements.txt 文件,可以使用以下命令: pip freeze > requirements.txt这个命令会将当前环境中所有已安装的 Python 包及其版本信息输出到 requirements.txt 文件中。这个文件可以用于共享项目的依赖信息…...
超图iClient3DforCesium地形、影像、模型、在线影像交互示例
超图iClient3DforCesium地形、影像、模型、在线影像交互示例 描述示例代码 描述 数据源:基于iserver发布的三维场景(地形、影像、BIM模型) 在线arcgis影像 应用:目录树展示源数据列表、目录树控制源数据可视化结果显隐、BIM模型点选查询关联属性 示例代…...

【解决】电脑上的WIFI图标不见了咋整?
相信不少同学都遇到过这种情况:电脑上的wifi图标莫名不见了,甚至有时候还是在使用的中途突然断网消失的。 遇到这种情况一般有两种解决方案: 1. 在开机状态下长按电源键30秒以上 这种办法应该是给主板放电,一般应用在wifi6上面。…...

2 - 表结构 | MySQL键值
表结构 | MySQL键值 表管理1. 库的操作2. 表的操作表的创建与删除表的修改复制表 3. 管理表记录 数据类型数值类型字符类型(汉字或者英文字母)日期时间类型 表头存储与日期时间格式的数据枚举类型 数据批量处理 表管理 客户端把数据存储到数据库服务器上…...

Redis(Linux版本7.2.3)
1、停止Redis服务器 [roottssvr1-c1 sysconfig]# ps -ef | grep redis root 322 1 0 10月30 ? 02:58:53 ./bin/redis-server 0.0.0.0:6379 root 32664 12498 0 14:45 pts/0 00:00:00 grep --colorauto redis [roottssvr1-c1 sysconfig]# [roottssvr…...
八股文打卡day18——操作系统(1)
面试题:进程和线程的区别? 我的回答: 1.概念上。进程是系统进行资源分配和调度的基本单位。线程是系统进行运算调度的最小单位。线程是进程的子任务,一个进程至少包含一个线程,一个进程可以运行多个线程,…...

设计模式—行为型模式之模板方法模式
设计模式—行为型模式之模板方法模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 模板方法(Template Metho…...

机器学习的分类与经典算法
机器学习算法按照学习方式分类,可以分为有监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)、半监督学习(Semi-supervised Learning)、强化学习(Reinforcement Le…...

2.3物理层下面的传输媒体
目录 2.3物理层下面的传输媒体2.3.1导引型传输媒体1.双绞线2.同轴电缆3.光纤 2.3.2非导引型传输媒体无线电微波通信 2.3物理层下面的传输媒体 传输媒体是数据传输系统中在发送器和接收器之间的物理通路 两大类: 导引型传输媒体:电磁波被导引沿着固体媒体…...
笙默考试管理系统-MyExamTest----codemirror(57)
笙默考试管理系统-MyExamTest----codemirror(57) 目录 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管理系统-MyExamTest----codemirror 四、 笙默考试管理系统-MyExamTest---…...

Qt高质量的开源项目合集
文章目录 1.Qt官网下载/文档2.第三方开源 1.Qt官网下载/文档 Qt Downloads Qt 清华大学开源软件镜像站 Qt 官方博客 2.第三方开源 记录了平常项目开发中用到的第三方库,以及一些值得参考的项目! Qt AV 基于Qt和FFmpeg的跨平台高性能音视频播放框…...
HarmonyOS ARKUI深度解析:图像组件及权限配置实战指南
文章目录 深入学习RKUI中的图片组件及权限配置图片组件简介图片源的三种格式Image : 图片显示组件图片组件属性及样式控制图片权限配置文章总结问题总结深入学习RKUI中的图片组件及权限配置 在本文中,我们将深入学习ArkUI(HarmonyOS UI框架)中的图片组件及其相关属性,同时…...

萨姆·奥尔特曼的预言
Sam Altman(萨姆奥尔特曼)是 OpenAI 的首席执行官,这家初创公司开发了众所周知的 ChatGPT。2023年11月,他突然被董事会解雇,并短暂调往微软。在 OpenAI 的每个人都威胁要辞职后,他又回来了。 新的商业模式…...

iPhone 13 Pro 更换『移植电芯』和『超容电池』体验
文章目录 考虑换电池Ⅰ 方案一Ⅱ 方案二 总结危险 Note系列地址 简 述: 首发买的iPhone 13P (2021.09),随性使用一年出头,容量就暴跌 85%,对比朋友一起买的同款,还是95%。这已经基本得一天两充 >_<&a…...
JavaScript 常用事件演示
Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在在JavaScript 常用事件演示以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区…...

gzip引入后node_modules中.cache compression-webpack-plugin占用内存过多
1.Gzip Gzip(GNU zip)是一种常见的文件压缩格式和压缩算法,通常用于在 Web 服务器上对静态资源文件进行压缩,以减小文件大小并加快文件传输速度。在前端开发中,经常会使用 Gzip 压缩来优化网站的性能。 Gzip 压缩通过…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...