【论文阅读】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 压缩通过…...

Vue:使用IDEA开发Vue的相关配置
一、IDEA无法识别.vue文件 1、IDEA 添加Vue插件 2、添加Vue配置 File | Settings | Editor | File Types 找到 HTML 文件 在下面点号 输入*.vue 二、IDEA无法创建.vue文件 1、问题 在开发过程中,发现创建文件的界面,没有vue模板 2、相关配置 Fi…...

黑马程序员SSM框架-SpringBoot
视频连接:SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili SpringBoot简介 入门程序 也可以基于官网创建项目。 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中,并将入口程序指定。 Spri…...

Javascript细节、经验锦集
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/135311084 出自【进步*于辰的博客】 纯文字阐述,内容比较干。并且,由于考…...

git的使用基础教程
最近项目在搞自动化测试,需要将各种测试脚本集成到自动化框架里边,这个就需要用到版本管理系统了,下面简单价绍一下git的使用。 首先从官网下载并安装git工具,下面以wins系统为例子说明 https://git-scm.com/downloads wins安装好后ÿ…...

Springboot整合Elasticsearch 7.X 复杂查询
这里使用Springboot 2.7.12版本,Elasticsearch为7.15.0。 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> yaml文件配置…...

第5课 使用openCV捕获摄像头并实现预览功能
这节课我们开始利用ffmpeg和opencv来实现一个rtmp推流端。推流端的最基本功能其实就两个:预览画面并将画面和声音合并后推送到rtmp服务器。 一、FFmpeg API 推流的一般过程 1.引入ffmpeg库:在代码中引入ffmpeg库,以便使用其提供的功能。 2.捕获摄像头…...

Python3操作Json文件碰到的几个问题
文章目录 小结问题及解决byte数组与str字符串之间不兼容没有Index属性JSON.DUMP(S) & JSON.LOAD(S) 参考 小结 使用Python3操作Json文件碰到的几个问题,进行了解决。 问题及解决 byte数组与str字符串之间不兼容 以下的几个问题都是由于字节数组和字符串之间…...

Java中的自定义异常处理:业务异常类的创建与使用
文章内容 引言 在Java编程中,异常处理是一项重要的技术,它允许程序在遇到错误或特殊情况时能够优雅地处理,而不是直接崩溃。Java提供了丰富的内置异常类,但在实际业务开发中,我们往往需要根据具体的业务需求定义自己的…...

微信小程序有几个文件
微信小程序通常由多个文件组成,主要包括以下几种类型的文件: JSON 配置文件: app.json: 整个小程序的全局配置,包括页面路径、窗口样式、网络超时时间等。 page.json: 单个页面的配置,用于指定该页面的窗口样式、导航…...

计算机网络:知识回顾
0 本节主要内容 问题描述 解决思路 1 问题描述 通过一个应用场景来回顾计算机网络涉及到的协议(所有层)。如下图所示场景: 学生Bob将笔记本电脑用一根以太网电缆连接到学校的以太网交换机;交换机又与学校的路由器相连…...