【人体姿态估计】(一)原理介绍

news2024/11/24 22:39:17

【人体姿态估计】(一)原理介绍

一、背景

人体姿态估计本质上是一个关键点检测的项目;

关键点检测在生活中的应用十分广泛,包括人脸识别、手势识别,而人体姿态估计则是对身体的关键点进行检测;

本文将介绍一些常见的数据集、评价指标以及比较经典的算法;

二、数据集和评估指标

首先关键点的评估指标参考以下文章:

COCO数据集评价指标 —— Keypoints - 简书 (jianshu.com)

COCO官方评价指标

其本质是通过点之间的欧式距离关系进行指标评估的;

其中要重点注意一个参数:

v = 0 : 未标注点
v = 1 : 标注了但是图像中不可见(例如遮挡)
v = 2 : 标注了并图像可见

最常见的人体姿态数据集为MPII和COCO数据集,其中COCO数据集如下图所示:

标注文件中需要重点关注categories部分;

其中keypoints代表种类,skeleton代表的是连线的规则;

三、Top Down算法

简介:一种自顶向下的方法,本质是先找人后找点;

其中最经典的网络为Mask RCNN,其步骤为先找人——实例分割——关键点检测;

下面看一下Mask RCNN和传统二阶段检测算法的区别:

从上图中可以看出,相比于传统二阶段检测网络,增加了mask branch的模块;

详细如下图所示:

对检测到的图像ROI进行降维特征提取,输出的通道数为需要检测的关键点数量;

单独将每一通道的图取出,可以看出是一个Heatmap,又称为热力图;

四、Bottom Up算法

简介:一种自底向上的方法,先找点后进行归纳;

其中最经典的算法为OpenPose;

源码:https://github.com/CMU-Perceptual-Computing-Lab/openpose

论文:[1812.08008] OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (arxiv.org)

原理:

主要分为两个步骤,Parts Detection(点的预测)和Parts Association(点的连接)

其中先通过特征提取网络得到特征图,转换得到每个关键点的热力图;

其次关键在于通过PAF计算两个点的关联度;

上图表示了两个点之间的得分如何计算,首先通过点是否在真实连线的区间范围内来判断两点的关联性,其次计算得分;

想了解算法细节的可以看后续的代码讲解部分;

五、前沿算法

1、MSPN

论文地址:https://arxiv.org/pdf/1901.00148.pdf

上图为主要的结构模块;

从结构上看,优化了单个stage的结构,采用了降采样到上采样的两个过程(类似于U-Net);

具体看其中的关键结构:

在降采样和上采样的过程中会造成大量的特征信息丢失,因此采用上图所示的相邻阶段的特征聚合,以增强特征信息传播降低训练难度;对于一个降采样过程,输入包括三个部分:上阶段中相同size的降采样特征经过1*1卷积编码后的特征、上个阶段中相同size的升采样特征经过1 * 1卷积编码后的特征,以及当前stage的降采样特征;

下面是对每个stage输出的优化策略:

采用了由粗到细的多分支监督的方式来优化stage的能力,如上图所示,对于每个stage的特点,采用不同的kernel-size的高斯核制作标签;

2、HRNet

参考:刷新三项COCO纪录!姿态估计模型HRNet开源了,中科大微软出品 | CVPR (qq.com)

简介:高分辨率网络(High-Resolution Net)的缩写,在表征学习的整个过程中,都能够保持高分辨率表征,因此为模型设计了并联结构,把不同分辨率的子网络,用新的方式连在一起;

上图是现有的一些方法:

  • (a)对称结构,先下采样,再上采样,同时使用跳层连接恢复下采样丢失的信息;
  • (b)级联金字塔;
  • (c)先下采样,转置卷积上采样,不使用跳层连接进行数据融合;
  • (d)扩张卷积,减少下采样次数,不使用跳层连接进行数据融合;

上图是HRNet的结构,主要有两个特点,并行连接高分辨率子网和重复的多尺度融合;

相比于传统的下采样特征提取,该网络通过上采样和下采样,并且在特征提取过程中融合不同形状的特征;

补充信息

对于关键点的开源代码和论文,可以参考这个地址:Keypoint Detection | Papers With Code

几种IOU的总结:一文读懂目标检测中的各种IoU损失函数 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习中更适合中国宝宝的报错整理~

人生苦短,我用python 最近有很多小伙伴说实在是看不懂报错的类型, 这次就给大家整理好了基本上玩python会遇到的报错问题 更适合中国宝宝体制喔~ python 安装包资料:点击此处跳转文末名片获取 在python中不同的异常可以用不同的类型 (pyt…

【Python小技巧】使用Gradio构建基于ChatGPT的 Web 应用(附源码)

文章目录 前言一、Gradio是什么?二、使用Gradio构建基于ChatGPT的 Web 应用1. 安装gradio库2. 安装openai库(ChatGPT的python库)3. Web 应用示例(源代码) 总结 前言 随着人工智能的不断发展,各种智能算法越…

爆料一家互联网中厂的年终奖,真香。

前不久刷到宇宙条32岁员工14万的月薪截图,突然想起来已经快四月底了,正是各大互联网公司年终奖开奖的时候,但相比以往,今年互联网圈好像安静了很多。各种“凡尔赛”的年终奖金额刷屏的情况不复存在。 各家大厂都暗戳戳地分完了奖…

js实现iframe框架的面包屑功能

js实现iframe框架的面包屑功能 什么是iframe框架什么是面包屑面包屑的js实现思路代码实现小结 什么是iframe框架 iFrame全称Inline Frame是HTML中的一个标签,用于在一个HTML文档中嵌入另一个HTML文档。iFrame框架可以将一个HTML文档嵌入到另一个HTML文档中的一个独…

后代选择器

知识点&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name"viewport" c…

深度学习入门到实践:相关基础概述

绪论 深度学习&#xff08;Deep Learning&#xff09;是近年来发展十分迅速的研究领域&#xff0c;并且在人工智能的很多子领域都取得了巨大的成功。从根源来讲&#xff0c;深度学习是机器学习的一个分支&#xff0c;是指一类问题以及解决这类问题的方法。     深度学习问题…

【Arduino SD卡和数据记录教程】

【Arduino SD卡和数据记录教程】 1. 前言2. 工作原理3. Arduino SD 卡模块代码4. Arduino SD卡数据记录1. 前言 在本Arduino教程中,我们将学习如何将SD卡模块与Arduino板一起使用。此外,结合DS3231实时时钟模块,我们将制作一个数据记录示例,将温度传感器的数据存储到SD卡中…

分布式消息队列Kafka(一)

一.kafka基础架构 &#xff08;1&#xff09;Producer&#xff1a;消息生产者&#xff0c;就是向 Kafka broker 发消息的客户端。 &#xff08;2&#xff09;Consumer&#xff1a;消息消费者&#xff0c;向 Kafka broker 取消息的客户端。 &#xff08;3&#xff09;Consumer…

每日一个小技巧:1分钟告诉你截图翻译软件哪个好用

随着互联网的发展&#xff0c;我们对各种语言文字的翻译需求越来越高。在翻译时&#xff0c;大家经常会遇到一些生词或专业术语&#xff0c;这时候我们就需要使用翻译软件来帮助理解。但是&#xff0c;有些时候大家需要翻译的内容并不是一段文本&#xff0c;而是一张图片或截图…

《前端bug齁逼多,真假开发说》2023/4/10-2023/4/18问题汇总

1 高德地图 运行抱错 INVALID_USER_SCODE 这里是错误信息对应原因 错误信息列表-参考手册-地图 JS API | 高德地图API 这里是高德地图api设置说明 准备-入门-教程-地图 JS API | 高德地图API 如果你自己能排查出错误 那不用看我的&#xff0c;如果都写的对还是抱错…

最常用的从A到Z的Linux命令,真的很好记,三分钟刷完!

Linux的命令行是一个非常强大的工具。如果你知道如何利用Linux命令&#xff0c;你可以轻松地在Linux系统中执行各种任务。在这篇文章中&#xff0c;我们将介绍从A到Z的Linux命令。 alias alias命令允许你为常用的命令设置一个短的别名&#xff0c;以节省时间和减少敲击。例如&…

界面开发框架Qt新手入门 - 自定义排序/筛选模型示例(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 自定义排序/筛选模型…

IBL-镜面反射(LUT篇)

1. LUT需要求解什么 首先我们将镜面反射部分的积分分割为两个部分。 L o ( p , ω o ) ∫ Ω L i ( p , ω i ) d ω i ∗ ∫ Ω f r ( p , ω i , ω o ) n ⋅ ω i d ω i L_{o}\left(p, \omega_{o}\right)\int_{\Omega} L_{i}\left(p, \omega_{i}\right) d \omega_{i} * …

基于异常值鲁棒性问题的极限学习机的回归问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

外贸软件解决玩具行业管理难点,提升业务效率

在玩具外贸市场&#xff0c;中国显而易见是玩具的生产大国&#xff0c;但却不是玩具生产强国。与发达国家相比&#xff0c;我国玩具行业市场集中度较低&#xff0c;对于国外玩具采购商来说&#xff0c;他们对于采购费用都是相对固定的&#xff0c;连对采购的需求也不会有多少变…

解决在vue中使用elementUI自定义校验及点击提交不生效问题

前言&#xff1a; 本章讲述的主要是对身份证号码的校验 及 为何校验了但提交不生效问题。 拓展小知识&#xff1a; &#x1f340; 1、身份证号码&#xff08;二代18位身份证&#xff09;的含义&#xff1a; 1️⃣ 1-2位&#xff1a;代表所属省级政府的代码&#xff1b; 2️⃣ 3…

【前端】原型和原型链

最近面试的时候&#xff0c;面试官有问到这个&#xff0c;答得很简单&#xff0c;感觉了解得不深&#xff0c;下来之后自己又搜索了一下动手看了看相关的内容。 a. 每个函数都有prototype属性&#xff0c;称之为原型&#xff1b;因为这个属性的值有时候是一个对象&#xff0c;…

2023-04-04 2016天梯赛决赛练习题L2

7-11 互评成绩 学生互评作业的简单规则是这样定的&#xff1a;每个人的作业会被k个同学评审&#xff0c;得到k个成绩。系统需要去掉一个最高分和一个最低分&#xff0c;将剩下的分数取平均&#xff0c;就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输…

JUC概述

1. JUC是什么&#xff1f; 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包&#xff0c;在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架&#xff0c;并提供一些功能实用的类&#xff0c;没有这些类&#xff0c;一些功能会很难实现或…

【JavaEE】SpringBoot配置文件的设置及其读取

目录 配置文件作用 配置文件注意事项 properties 用法 修改字符集 优缺点 yml 用法 优缺点 读取配置文件 使用 Value注解 读properties配置文件 读yml配置文件 使用 ConfigurationProperties 注解 读properties配置文件 读yml配置文件 配置文件作用 SpringBoot的…