人体姿态估计算法

人体姿态估计算法

  • 1 什么是人体姿态估计
  • 2 基于经典传统和基于深度学习的方法
    • 2.1 基于经典传统的人体姿态估计算法
    • 2.2 基于深度学习的人体姿态估计算法
      • OpenPose
      • AlphaPose (RMPE)
  • 3 算法应用
  • 4 Paper

人体姿态估计在现实中的应用场景很丰富,如下

动作捕捉:三维特效场景
人机交互:动作控制、手势控制
VR, AR:元宇宙数字人、抖音尬舞机、3D试衣、虚拟主播
肢体语言理解:机场、交警警察手势翻译、手语翻译
摔倒检测、健身、跳舞、球类、武术运动指导、穴位定位
步态分析、识别身份、异常动作识别

其中关键点检测是最开始的一步,本文主要对第一步的关键点检测进行一个概述,方便大家更快速的了解这里面涉及到的算法原理,属于科普文章。

1 什么是人体姿态估计

人体姿态估计(Human Pose Estimation, HPE) 是一种识别和分类人体关节的方法。本质上,它是一种捕获每个关节(手臂、头部、躯干等)的一组坐标的方法,该坐标被称为可以描述人的姿势的关键点(keypoint)。
在这里插入图片描述

人体姿势估计模型主要有三种类型: 这三种类型是随着应用逐步发展出来的,先检测关键点,类似于火柴人,进一步的检测出人的轮廓,再根据轮廓进一步的把人体进行3D重建。

  1. 基于骨架的模型(Skeleton-based model): 也称为运动学模型,该模型包括一组关键点(关节),例如脚踝、膝盖、肩膀、肘部、手腕和肢体方向,主要用于 3D 和 2D 姿势估计。

    这种灵活直观的人体模型包含人体的骨骼结构,经常用于捕捉不同身体部位之间的关系。

  2. 基于轮廓的模型(Contour-based model): 也称为平面模型,用于二维姿态估计,由身体、躯干和四肢的轮廓和粗略宽度组成。 基本上,它代表人体的外观和形状,其中身体部位用人的轮廓的边界和矩形显示。

    一个著名的例子是主动形状模型(ASM),它采用主成分分析(PCA)技术捕获整个人体图形和轮廓变形。

  3. 基于体积的模型(Volume-based model): 也称为体积模型,用于 3D 姿态估计。 它由多个流行的 3D 人体模型和由人体几何网格和形状表示的姿势组成,通常用于基于深度学习的 3D 人体姿势估计。

在这里插入图片描述

2 基于经典传统和基于深度学习的方法

2.1 基于经典传统的人体姿态估计算法

早期人体姿态估计的经典传统方法是在“图结构框架(pictorial structure framework , PSF)”内应用随机森林。 该模型的特点在于引入人体生理结构作为先验知识,人体被预先表示为多个具有空间约束的部位,且每个部分都被看作是刚体。即先识别人体身体部位,再识别姿势。
在这里插入图片描述
本质上,PSF 的目标是将人体表示为给定输入图像中每个身体部位的坐标集合; PSF 使用非线性联合回归器,理想情况下是两层随机森林回归器。

PSF优势在于当输入图像具有清晰可见的肢体时,这些模型效果很好,但是它们无法捕获和建模隐藏或从某个角度不可见的肢体。

为了克服这些问题,使用了诸如面向直方图的高斯(HOG)、轮廓、直方图等特征构建方法。 尽管使用了这些方法,但经典模型缺乏准确性、相关性和泛化能力。

2.2 基于深度学习的人体姿态估计算法

在计算机视觉任务方面,在HPE中,跟其他任务一样,深度卷积神经网络 (CNN) 的出现导致算法效果开启了腾飞模式。

  1. CNN 能够从给定的输入图像中提取特征,其精度和准确性比任何其他算法都更高;
  2. CNN泛化能力强(如果给定的隐藏层中存在足够数量的节点);
  3. 相比传统经典方法,传统方法中的特征提取、模版是人工制作的,人工设计的特征鲁棒性很差,学习到的特征复杂度有限。而且不一定是科学的,光照条件、拍摄角度等一变化,可能会导致检测失败。

Toshev等人于2014年首次使用CNN来估计人体姿势,从基于经典的方法转向基于深度学习的方法,发布的论文命名为 DeepPose: Human Pose Estimation via Deep Neural Networks.

作者还提出了另一种方法,他们实现了此类回归器的级联,以获得更精确和一致的结果。 他们认为,所提出的深度神经网络可以以整体方式对给定数据进行建模,即网络具有对隐藏姿势进行建模的能力,这对于经典方法来说是不正确的。

随着深度学习的发展,同时也带来了新的挑战,其中之一是解决多人姿态估计。深度学习在估计单人姿态方面很熟练,但是估计多人姿态时却很困难,原因是一张图像可以包含多个处于不同位置的人,随着人数的增加,相互之间的相互作用增加导致计算复杂性。计算复杂性的增加通常会导致实时推理时间的增加。

为了解决以上问题,引入了两个方法:Top Down和Bottom Up

  1. Top Down:自顶向下,即先检测每个人的框,再每个人再单独预测关键点;
  2. Bottom Up:自底向上,即先检测所有关键点,再组装成每个人
    在这里插入图片描述

OpenPose

是一种自底而上的方法,网络首先检测图像中的身体部位或关键点,然后组装成一个人。OpenPose 使用多级联的 CNN 作为主要架构,由 VGG-19 卷积网络组成,用于特征提取。

预测分支有两个:
1. 第一个分支预测每个身体部位的置信度图;
2. 第二个分支预测部位亲和力场 (Part Affinity Field, PAF),将不同部位关联起来组成一个人。

在这里插入图片描述
OpenPose pipeline如下:
在这里插入图片描述

AlphaPose (RMPE)

采用自顶而下的方法,会在预测过程中产生大量定位错误和不准确性。
在这里插入图片描述
例如,上图显示了两个边界框,红色框代表真实值,而黄色框代表预测边界框。

在分类方面,黄色边界框将被视为对人类进行分类的“正确”边界框,即使使用“正确”的边界框,也无法估计人体姿势。

AlphaPose 的作者通过两步框架解决了人体检测不完美的问题。 在此框架中,他们引入了两个网络:

对称空间变换网络(SSTN): 有助于在输入中裁剪出适当的区域,从而简化分类任务,从而获得更好的性能。
单人姿势估计器(SPPE): 用于提取和估计人体姿势。

AlphaPose 的目标是通过将 SSTN 附加到 SPPE,从不准确的边界框中提取高质量的单人区域。 该方法通过解决不变性问题来提高分类性能,同时提供稳定的框架来估计人体姿势。
在这里插入图片描述

3 算法应用

动作捕捉:三维特效场景
人机交互:动作控制、手势控制
VR, AR:元宇宙数字人、抖音尬舞机、3D试衣、虚拟主播
肢体语言理解:机场、交警警察手势翻译、手语翻译
摔倒检测、健身、跳舞、球类、武术运动指导、穴位定位
步态分析、识别身份、异常动作识别

4 Paper

把一些经典的算法paper列举在下面,供大家参考:

  1. DeepPose: Human Pose Estimation via Deep Neural Networks. CVPR, 2014 首个使用深度卷积神经网络实现人体姿态估计, regression方法
  2. Efficient Object Localization Using Convolutional Networks, CVPR, 2015 首个使用heatmap方法
  3. OpenPose 经典多人姿态估计方法, Bottom-Up
  4. RMPE: Regional Multi-person Pose Estimation, 2018 Top-Down
  5. DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation Bottom-Up方法
  6. Mask R CNN 人体检测和关键点检测独立并行, 类似Top-Down方法
  7. Simple Baselines for Human Pose Estimation and Tracking,EECV, 2018
  8. HRNet: Deep High-Resolution Representation Learning for Visual Recognition
  9. RLE: Human Pose Regression with Residual Log-likelihood Estimation

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

非常好的简历精选7篇

想要打造一份令人眼前一亮的简历,赢得招聘方的青睐?参考这7篇精选的“非常好的简历”案例!无论是应届毕业生还是职场人士,都能从中借鉴灵感,提升简历质量。让求职之路更加顺畅,轻松斩获心仪职位&#xff01…

跨境独立站和传统外贸的差异

跨境独立站和传统外贸主要在以下几个方面存在区别: 交易形式:传统外贸主要涉及线下交易,买卖双方需要经过面谈、磋商、签订合同等环节。而跨境独立站则主要通过线上平台进行交易,买卖双方可以通过平台发布产品、协商价格、完成支…

linux 内核regulator

问题 在sys文件系统下没有生成cpu 调频的相关节点。 日志对比 [ 3.588745] cpu cpu4: Looking up cpu-supply from device tree [ 3.588753] cpu cpu4: Failed to get reg [ 3.588791] cpu cpu4: Looking up cpu-supply from device tree [ 3.588808] Failed to i…

【数电笔记】18-卡诺图化简

目录 说明: 用卡诺图化简逻辑函数 1. 公式法化简与卡诺图化简对比 2. 化简依据 3. 化简规律 3.1 两个小方块相邻 3.2 四个小方块相邻 3.3 八个小方块相邻 4. 卡诺图化简法步骤 4.1 例1 4.2 例2 5. 画卡诺圈规则 5.1 例1 6. 特殊情况 6.1 例1 6.2 例…

【LeetCode刷题笔记】103. 二叉树的锯齿形层序遍历

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

linux安装镜像cento7

点击创建新的虚拟机 点击典型&#xff0c;下一步 浏览&#xff0c;centos7下载文件的位置 找到位置后&#xff0c;效果如下图所示 下一步&#xff0c;填写用户名和密码&#xff0c;再点击下一步 给虚拟机起名字&#xff0c;默认就行&#xff1b;虚拟机安装路径&#xff0c;默认…

JavaSE自定义验证码图片生成器

设计项目的时候打算在原有的功能上补充验证码功能&#xff0c;在实现了邮箱验证码之后想着顺便把一个简单的图片验证码生成器也实现一下&#xff0c;用作分享。 注意&#xff0c;实际开发中验证码往往采用各种组件&#xff0c;通过导入依赖来在后端开发时使用相关功能&#xf…

组件的props属性

目录 1&#xff1a;使用props的作用&#xff1a; 2&#xff1a;props自定义属性的用法&#xff1a; 3&#xff1a;集合v-bind使用自定义属性&#xff1a; 4&#xff1a;props自定义属性是只读的&#xff1a; 5&#xff1a;default默认值&#xff1a; 6&#xff1a;type值类…

Unity版本使用情况统计(更新至2023年10月)

本期UWA发布的内容是第十三期Unity版本使用统计&#xff0c;统计周期为2023年5月至2023年10月&#xff0c;数据来源于UWA网站&#xff08;www.uwa4d.com&#xff09;性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势&#xff0c;了解近半年来哪些Unity版本的使用概率更…

C/C++,树算法——Ukkonen的“后缀树“构造算法的源程序

1 文本格式 // A C program to implement Ukkonens Suffix Tree Construction // And then build generalized suffix tree #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 256 struct SuffixTreeNode { struct Suffix…

Python Locals:引领代码风潮,变量管理新尝试

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;locals()函数是一个强大的工具&#xff0c;它使程序员能够访问和操作当前作用域内的局部变量。本文将深入探讨locals()函数的功能、应用和重要性。 动态变量赋值和操作 locals()函数让我…

[数据结构]HashSet与LinkedHashSet的底层原理学习心得

我们区分list和set集合的标准是三个&#xff1a;有无顺序&#xff0c;可否重复&#xff0c;有无索引。 list的答案是&#xff1a;有顺序&#xff0c;可重复&#xff0c;有索引。这也就是ArrayList和LinkedList的共性 set的答案是&#xff1a;顺序内部再区分,不可以重复&#xf…

分享几个国内免费使用的 gpt 网站

可放心阅读点击&#xff0c;无邀请链接、邀请码等 今天主要分享几个个免费的GPT网站。 1、思默问答&#xff08;SiteSMO&#xff09; AI写作生成器_智能写作_问答助手 - 思默问答 算是国内比较早的AI应用网站&#xff0c;支持问答&#xff0c;画图等&#xff0c;所有的问答…

visual Studio MFC 平台实现图像增强中的线性变换(负变换)和非线性变换(对数与幂律)

MFC 实现数字图像处理中的图像增强操作 本文使用visual Studio MFC 平台实现图像增强中典型的三种图像增强的方法中的两大类&#xff0c;包括线性变换–>负变换&#xff0c;非线性变换–>对数变换和幂律变换&#xff1b;其中第三大类分段式变换可以参考MFC实现图像增强–…

Presto基础学习--学习笔记

1&#xff0c;Presto背景 2011年&#xff0c;FaceBook的数据仓库存储在少量大型hadoop/hdfs集群&#xff0c;在这之前&#xff0c;FaceBook的科学家和分析师一直靠hive进行数据分析&#xff0c;但hive使用MR作为底层计算框架&#xff0c;是专为批处理设计的&#xff0c;但是随…

孩子都能学会的FPGA:第十九课——FPGA实现流水线操作

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

Rust国内sparse镜像源配置

文章目录 1. 遇到问题1.1 问题现象1.2 解决办法 2. 重新设置最新 sparse源3. 更多参考资料3.1 字节源3.2 ustc 源3.3 清华源3.4 其他人的总结 1. 遇到问题 有好一阵子没有更新源和安装软件了&#xff0c; 使用ustc的源&#xff0c; 更新了好一阵子&#xff0c; 最后安装居然还出…

养身馆推拿会员管理系统,佳易王推拿会员管理软件短信设置教程

养身馆推拿会员管理系统&#xff0c;佳易王推拿会员管理软件短信设置教程 一、佳易王会员管理软件大众版 部分功能简介&#xff1a; 1、会员信息登记 &#xff1a;可以直接使用手机号登记&#xff0c;也可以使用实体卡片&#xff0c;推荐用手机号即可。 2、会员卡类型 &…

压缩docker在主机的虚拟磁盘容量

我们在windows里使用docker时会发现&#xff0c;即使我们已经删除了无用的镜像和容器&#xff0c;主机里挂在docker虚拟磁盘的那个盘&#xff0c;可用空间也没有增加&#xff0c;这是因为虚拟磁盘不会自动缩小&#xff0c;这里我分享一个可用的解决方案。 1.先通过docker回收空…

大小堆的实现(C语言)

目录 前言 一种完全二叉树&#xff1a;堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度&#xff1a; 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…