oh my 毕设-人体姿态估计综述

news2024/11/16 0:36:54

文章目录

    • What is Human Pose Estimation?
    • Classical vs. Deep Learning-based approaches
      • Classical approaches to 2D Human Pose Estimation
      • Deep Learning-based approaches to 2D Human Pose Estimation
    • Human Pose Estimation using Deep Neural Networks
      • OpenPose
      • AlphaPose (RMPE)
      • DeepCut
      • Mask R-CNN
    • 7 Human Pose Estimation applications
      • AI-powered personal trainers
      • Robotics
      • Motion capture and augmented reality
      • Athlete pose detection
      • Motion tracking for gaming
      • Infant Motion Analysis
    • Evaluation metrics for Human Pose Estimation model
      • Percentage of Correct Parts (PCP)
      • Percentage of Detected Joints (PDJ)
      • Percentage of Correct Key-points (PCK)
      • Object Keypoint Similarity (OKS) based mAP
    • Top 10 Research Papers on Human Pose Estimation
    • Human Pose Estimation in a Nutshell

What is Human Pose Estimation?

Human Pose Estimation(HPR)是一个对人体关节进行识别和分类的方法。

本质上,这是一种捕获描述人类的关键点的每个关节(arm,head、torso,etc…)的方法。这种点与点之间的连接成为pair(对)

点与点之间的连接必须是重要的,即不是所有点都能形成一个"pair"。从一开始,HPE 的目标就是形成类似骨骼的人体表示,然后针对特定任务的应用对其进行进一步处理。

人体姿态检测主要有以下三种:

  1. Skeleton-based model(基于骨干)
  2. Contour-based model(基于轮廓)
  3. Volume-based model (基于卷)

Classical vs. Deep Learning-based approaches

HPE方法主要在机器视觉领域,并且他主要用于人体几何学和行为信息的理解上,这些信息往往是错综复杂的。

这一节探讨两种方法:传统的方法和基于深度学习的方法。我们也会解释为什么传统方法在捕获几何图形和行为信息时会失败,而如CNN的深度学习却在这方面比较出色。

Classical approaches to 2D Human Pose Estimation

经典方法通常是指机器学习方法。

例如,早期估计人类姿势的工作包括在“图像结构框架”内实施随机森林。 这被用来预测人体的关节。

图形结构框架(PSF)通常被称为估计人类姿势的传统方法之一。PSF 包含两个组件:

  1. Discriminator(鉴别器): 它预测某特定位置存在某个身体部位的可能性。
  2. Prior(先验器): 它使用鉴别器的输出对姿势上的概率分布进行建模;建模的姿势应该是逼真的。

从本质上讲,PSF的目标是将人体表示为给定输入图像中每个身体部位的坐标集合。PSF 使用非线性联合回归器,理想情况下是两层随机森林回归器。

当输入图像具有清晰可见的肢体时,这些模型工作良好,但是,它们无法捕获从某个角度隐藏或不可见的肢体。

为了克服这些问题,使用了直方图定向高斯(HOG)、轮廓、直方图等特征构建方法。尽管使用了这些方法,但经典模型缺乏准确性、相关性和泛化能力,因此采用更好的方法只是时间问题。

Deep Learning-based approaches to 2D Human Pose Estimation

基于深度学习的方法可以拟合任何函数(如果隐藏层中存在足够数量的节点)。

在计算机视觉任务方面,深度卷积神经网络 (CNN) 超越了所有其他算法,在 HPE 中也是如此。

CNN能够从给定的输入图像中提取模式和表示,比任何其他算法都更精确和准确;这使得CNN对于分类,检测,分割等任务非常有用。

与经典方法不同,其中功能是手工制作的;当提供足够的训练-验证-测试数据时,CNN可以学习复杂的特征。

Toshev 等人在 2014 年最初使用 CNN 来估计人类姿势,从基于经典的方法转向基于深度学习的方法,他们将其命名为 DeepPose:通过深度神经网络估计人类姿势

在他们发表的论文中,他们将整个问题定义为基于CNN的身体关节回归问题。

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

随着DeepPose显示出强大而有希望的结果,HPE的研究自然而然地被基于深度学习的方法所吸引。

Human Pose Estimation using Deep Neural Networks

随着HPE研究的飞速发展,他也将迎接的新的挑战。

其中一个是解决多人姿态检测

DNN 在估计单个人类姿态时非常准确,但在估计多人 时,它们会因为:

  1. 一个图片可以包含多个人的不同姿势
  2. 随着人数的增加,之间的相互作用会导致计算复杂性。
  3. 随着计算复杂度的增加,推理时间也会增加。

为了解决这些问题,研究人员引入了两种方法:

  1. Top-down 自上而下:自顶向下的算法先从图像中检测出所有人,随后利用单人姿态估计的方法对所有人进行姿态估计。自顶向下算法的缺点是算法运行效率随着人数增加而降低,且部分被遮挡的人无法被检测,精度不高。
  2. Bottom-up 自下而上: 自底向上的算法,先检测出所有人的骨点,再将骨点进行连接形成图,最后通过图优化的方法剔除错误的连接,实现多人姿态估计。自底向上算法的优点是运行时间不随人数增加而线性增加,更有利于实时多人姿态估计。

现在,让我们看一下用于多人体姿势估计的深度学习模型。

OpenPose

这是一种自下而上的方法,网络首先检测图像中的身体部位或关键点,然后将适当的关键点映射到形成对。

OpenPose 也使用CNN作为其主要架构。它由一个 VGG-19 卷积网络组成,用于从给定输入中提取模式和表示。VGG-19 的输出进入卷积网络的两个分支。

第一个网络为每个身体部位预测一组confidence map,而第二个分支预测一个Part Affinity Fields (PAF),会在部件之间创建一定程度的关联。修剪二分图中较弱的链接也很有用。

上图显示了OpenPose的架构,它是一个多阶段CNN。

本质上,来自两个分支的预测连同特征一起为下一阶段连接起来,以根据输入中存在的人数形成人体骨架。 CNN 的连续阶段用于优化预测。

上图描述了OpenPose的pipeline 。

AlphaPose (RMPE)

区域多人姿势估计 (RMPE) 或 AlphaPose 对HPE使用了自上而下的方法。 HPE 的自上而下方法在定位和预测过程中会产生大量误差和不准确性,因此极具挑战性。

例如,上图显示了两个边界框,红色框表示 ground truth,而黄色框表示预测边界框。

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

AlphaPose的作者用两步框架解决了人类检测不完善的问题。在这个框架中,他们引入了两个网络:

  1. Symmetric Spatial Transformer Network (SSTN)对称空间转换器网络 : 它有助于裁剪输入中的适当区域,从而简化分类任务,进而提高性能。
  2. Single Person Pose Estimator (SPPE)单人姿势估算器:用于提取和估计人类姿势。

AlphaPose 的目标是通过将 SSTN 附加到 SPPE 从不准确的边界框中提取高质量的单人区域。这种方法通过解决不变性来提高分类性能,同时提供一个稳定的框架来估计人类的姿势。

DeepCut

DeepCut 是由 Leonid Pishchulin 等人2016年提出的目标,是共同解决检测和姿态估计任务。

这是一种自下而上的方法来估计人类的姿势。

这个想法是检测给定图像中所有可能的身体部位,然后标记它们,例如头部,手,腿等,然后分离属于每个人的身体部位的过程。

该网络使用积分线性规划(ILP)建模对给定输入中所有检测到的关键点进行隐式分组,以便生成的输出类似于人类的骨架表示。

Mask R-CNN

Mask R-CNN是一种非常流行的实例分割算法。

该模型能够通过在对象周围创建边界框以及创建分割掩码来同时定位和分类对象。

基本架构可以轻松扩展,以执行人体姿势估计任务。

Fast R-CNN使用CNN从给定输入中提取特征和表示。

然后,提取的特征用于通过区域建议网络 (RPN) 建议对象可能存在的位置。

由于边界框可以具有各种大小,如上图所示,因此使用名为 RoIAlign 的图层对提取的特征进行归一化,使它们都具有统一大小。

提取的特征被传递到网络的并行分支中,以细化建议的感兴趣区域(RoI),以生成边界框和分割掩码。

在人体姿势估计方面,网络产生的掩码分割输出可用于检测给定输入中的人类。由于掩模分割在物体检测中非常精确,在这种情况下 - 人类检测,可以很容易地估计人体姿势。

此方法类似于自上而下的方法,其中人员检测阶段与零件检测阶段并行执行。

换句话说,关键点检测阶段和人员检测阶段是相互独立的。

7 Human Pose Estimation applications

人体姿势估计具有多种实际应用,因此现在让我们来看看一些最常见的HPE用例。

AI-powered personal trainers

如今,保持身体健康已成为我们生活中不可或缺的一部分,拥有一位好的教练可以帮助达到我们想要的健身水平。

毫不奇怪,市场上已经充斥着利用人工智能的力量来帮助人们更好地锻炼的应用进程。

例如,Zenia 是一款由 AI 驱动的瑜伽应用进程,它使用 HPE 指导您在瑜伽锻炼期间保持正确的姿势。它使用摄像头来检测您的姿势并估计您的姿势的准确性 - 如果正确,则预测的姿势将以绿色表示,就像上图一样。如果姿势不正确,红色将取代绿色。

除了瑜伽,HPE还应用于其他形式的运动。

例如,它现在通常用于举重,它可以通过搜索常见错误并提供有关如何修复它们以防止受伤的见解来指导应用进程用户执行适当的举重。

Robotics

机器人技术一直是增长最快的发展领域之一。

虽然对机器人进行编程以遵循进程可能既乏味又耗时,但深度学习方法可以提供帮助。

强化学习等技术使用模拟环境来达到执行某项任务所需的精度水平,并且可以成功用于训练机器人。

Motion capture and augmented reality

HPE的另一个有趣的应用是CGI。

娱乐业,特别是电影业,花费大量现金为特效、神秘生物、超凡脱俗的风景等等创建计算机生成的图形。

CGI之所以昂贵,是因为它需要付出很多努力——比如穿上特殊的西装和面具来捕捉动作,在估计的姿势、处理能力中创造肤浅的效果,以及除此之外的大量时间投资。

HPE可以自动从 2D 输入中提取关键点并创建其 3D 渲染,然后可用于添加效果、动画等。

Athlete pose detection

如今,几乎所有的运动都严重依赖数据分析。 姿势检测可以帮助玩家提高技术并取得更好的效果。除此之外,姿势检测可用于分析和了解对手的强弱,这对专业运动员及其教练来说是无价的。

Motion tracking for gaming

姿势估计的另一个有趣应用归结为游戏内应用,玩家可以利用HPE的动作捕捉功能将姿势注入游戏环境。目标是创造互动游戏体验。

例如,微软的Kinect使用3D姿势估计(使用红外传感器数据)来跟踪玩家的动作,并使用它来将角色的动作虚拟地渲染到游戏环境中。

Infant Motion Analysis

HPE 还可用于分析婴儿运动。这对于分析婴儿在成长过程中的行为非常有帮助,尤其是在评估其身体发育过程中。

在某些情况下,婴儿出生时患有与肌肉、关节和神经系统相关的严重健康问题,其中一些是由脑瘫、运动障碍或创伤引起的。

运动分析可以帮助识别哪些肌肉或关节无法正常工作。姿势估计可以挑选出婴儿运动中的细微异常,医生可以分析并提出合适的治疗方法。HPE 还可以用作提高身体能力的推荐工具,使孩子能够拥有最大程度的独立性。

Evaluation metrics for Human Pose Estimation model

深度学习算法需要适当的评估指标,以便在训练期间很好地学习分布,并在推理期间表现良好。评估指标取决于手头的任务。

在本节中,我们将简要讨论HPE所需的四个评估指标。

Percentage of Correct Parts (PCP)

PCP用于测量肢体的正确检测。如果两个预测的关节位置与真实肢体关节位置之间的距离几乎小于肢体长度的一半,则认为检测到肢体。然而,有时它会惩罚较短的四肢,例如小臂。

Percentage of Detected Joints (PDJ)

为了解决PCP提出的问题,提出了一个新的指标。 它测量躯干直径一定比例内的预测关节和真实关节之间的距离,称为检测到的关节百分比 (PDJ)。

PDJ 有助于实现定位精度,这减轻了PCP的缺点,因为所有关节的检测标准都基于相同的距离阈值。

Percentage of Correct Key-points (PCK)

PCK 用作精度指标,用于测量预测的关键点和真实关节是否在某个距离阈值内。PCK 通常相对于主体的比例进行设置,该比例包含在边界框中。

阈值可以是:

  • PCKh@0.5 是当阈值 = 头骨链接的 50% 时
  • PCK@0.2 是预测关节和真实关节之间的距离 < 0.2 * 躯干直径
  • 有时以 150 毫米作为阈值。
  • 它减轻了较短的肢体问题,因为较短的肢体具有较小的躯干和头骨链接。
  • PCK 用于 2D 和 3D (PCK3D)

Object Keypoint Similarity (OKS) based mAP

OKS 在 COCO 关键点挑战中通常用作评估指标。它被定义为:

  • di 是ground truth 和预测关键点之间的欧氏距离
  • s is the square root of the object segment area s 是对象段区域的平方根
  • k is the per-keypoint constant that controls fall off. k 是控件衰减的每个关键点常量。
  • vi 被认为是一个可见性标志,可以是 0、1 或 2,分别表示未标记、标记但不可见和可见和标记。

由于 OKS 用于计算距离 (0-1),因此它显示了预测的关键点与真实关键点的接近程度。

Top 10 Research Papers on Human Pose Estimation

以下是有关各种HPE的一些最突出的研究论文。我将paperswithcode连接放到了下面,可以直接点击连接下来论文或查看原码。论文精读及模型讲解后面我都会做教程的。

  • DeepPose: Human Pose Estimation via Deep Neural Networks

https://paperswithcode.com/paper/deeppose-human-pose-estimation-via-deep

  • Convolutional Pose Machines

https://paperswithcode.com/paper/convolutional-pose-machines

  • RMPE: Regional Multi-Person Pose Estimation

https://paperswithcode.com/paper/rmpe-regional-multi-person-pose-estimation

  • Efficient Object Localization Using Convolutional Networks

https://paperswithcode.com/paper/efficient-object-localization-using

  • DeepCut: Joint Subset Partition and Labeling for Multi-Person Pose Estimation

https://paperswithcode.com/paper/deepcut-joint-subset-partition-and-labeling

  • Simple Baselines for Human Pose Estimation and Tracking

https://paperswithcode.com/paper/simple-baselines-for-human-pose-estimation

  • OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

https://paperswithcode.com/paper/openpose-realtime-multi-person-2d-pose

  • Human Pose Estimation for Real-World Crowded Scenarios

https://paperswithcode.com/paper/human-pose-estimation-for-real-world-crowded

  • DensePose: Dense Human Pose Estimation In The Wild

https://paperswithcode.com/paper/densepose-dense-human-pose-estimation-in-the

  • PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model

https://paperswithcode.com/paper/personlab-person-pose-estimation-and-instance

paperswithcode中的sota以及其他优秀经典论文

https://paperswithcode.com/task/pose-estimation

Human Pose Estimation in a Nutshell

人体姿势估计 (HPE) 是一种从给定输入(图像或视频)中提取人体姿势的方法,通常以骨骼的形式。

这是一个引人入胜且快速增长的研究领域,可在各种行业中找到应用。HPE的一些最常见用例包括体育教练、电脑游戏、医疗保健等。

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

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

相关文章

想要努力赚钱,培养四种基础能力

这四种基础能力分别是&#xff1a;认知力、学习力、执行力、复盘力。我们的认知和思维&#xff0c;很大程度上&#xff0c;都是由所处的环境和圈子决定的。在同一个环境和圈子里面呆久了&#xff0c;你的认知就会被固化了。穷人最根本的枷锁&#xff0c;不是缺乏资金&#xff0…

excel图表技巧:看看,这个饼图象不象罗盘?

说到制作柱形图、条形图、饼图&#xff0c;相信大家都没有问题&#xff0c;直接选中数据&#xff0c;再插入对应的图表就行了&#xff0c;可如果要制作一张双层饼图你还会吗&#xff1f;“啥&#xff1f;还有双层饼图&#xff1f;”嘿嘿&#xff0c;不知道了吧&#xff0c;双层…

PVE+NUT+群晖等配置

文章目录配置文件说明默认配置(翻译的)ups.conf(设置ups通信相关)upsd.conf(设置ups客户访问的相关信息)upsd.users(设置upsd用户)nut.conf(nut的配置,主要是模式&#xff0c;决定使用哪些文件)upsmon.confupssched.confupssched-cmd官方手册写的可以的文章只需要实现&#xff…

excel数据查找:内容查找统计的函数公式

判断单元格是否包含特定内容是平时工作中经常会遇到的一类问题&#xff0c;常见于包含备注信息的表格中。例如下面这个考勤汇总表&#xff0c;需要根据备注中的内容判断该员工是否存在加班的情况&#xff0c;就属于这类问题。 遇到这类问题该如何处理&#xff0c;常用的公式做法…

klee2.3 教程1-2

1. klee2.3 安装 system&#xff1a;unbuntu 20.04 note: llvm-13klee2.3z3-4.10 1.1 install dependencies KLEE 需要 LLVM 的所有依赖项&#xff08;请参阅此处&#xff09;&#xff0c;以及更多。特别是&#xff0c;您应该安装下面列出的程序和库。graphviz/doxygen是可…

初级C语言之【操作符】

&#x1f996;作者&#xff1a;学写代码的恐龙 &#x1f996;博客主页&#xff1a;学写代码的恐龙博客主页 &#x1f996;专栏&#xff1a;【初级c语言】 &#x1f996;语录&#xff1a;❀未来的你&#xff0c;一定会感谢现在努力奋斗的自己❀ 初级C语言之【操作符详解】一&am…

综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)

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

spring6笔记3(bean的循环依赖,手写spring框架,ioc注解开发,JdbcTemplate)

第九章、Bean的循环依赖问题 9.1 什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你&#xff0c;你也依赖我。 比如&#xff1a;丈夫类Husband&#xff0c;妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 public class Husband…

【java线程池详解】

java线程池详解线程的基本状态Executor框架Executor框架组成部分Executor框架使用示意图Runnable接口、Callable接口ExecutorsFuture接口和实现Future接口的FutureTask类Future和FutureTask的关系ThreadPoolExecutor类ThreadPoolExecutor 饱和策略&#xff08;拒绝策略&#xf…

MySQL去重,一条SQL语句完美解决【去重留一】

此处以某消费记录表(consume_record)为例&#xff0c;SQL语句如下&#xff1a; DELETE consume_record FROM consume_record, ( SELECT min(id) id, user_id, monetary, con…

Qt第五十五章:Qt Design Studio设计登录页并打包到python运行

目录 一、Qt Design Studio 二、导出所有文件到QRC&#xff08;不要改动默认的QRC文件名称&#xff09; 三、QRC转换成py 1.删除Constants.qml中的 2.将App.qml和Screen01.qml中的 3.转换 4、将QRC文件和转换后的py文件&#xff0c;复制到python项目中使用。 一、Qt Des…

【云原生 Kubernetes】k8s集群部署springboot项目

一、前言 本篇&#xff0c;我们将基于k8s集群&#xff0c;模拟一个比较接近实际业务的使用场景&#xff0c;使用k8s集群部署一个springboot的项目&#xff0c;我们的需求是&#xff1a; 部署SpringBoot项目到阿里云服务器 &#xff1b;基于容器打包&#xff0c;推送私有镜像仓…

Presto 之 BTreeIndex 索引代码走读

一. 前言 本文主要介绍在Presto&#xff08;OpenLookeng&#xff09;中的BTree索引的代码实现。关于BTree索引原理的介绍可以参考官网资料openLooKeng documentation。 二. BTreeIndex 索引建立 在Presto中&#xff0c;BTreeIndex 索引是通过mapdb中的BTreeMap数据结构实现的&a…

【java入门系列一】java基础

学习记录&#x1f914;写在前面JDK\JREPython有没有虚拟机&#xff1f;第一个code规范学习方法转义符号注释讨论总结谢谢点赞交流&#xff01;(❁◡❁)更多代码&#xff1a; Gitee主页&#xff1a;https://gitee.com/GZHzzz博客主页&#xff1a; CSDN&#xff1a;https://blog.…

13---SpringBoot整合JWT,实现登录和拦截

1、 JWT简介 什么是JWT&#xff1f; JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。它将用户信息加密到token里&#xff0c;服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性&#xff0c;只要正确即通过验证&…

在Ubuntu上安装Azure DevOps代理程序

Contents1 概述2. 安装Ubuntu 18.04操作系统3. 安装Azure DevOps Server 代理3.1 安装Azure DevOps Server 代理3.2 以服务方式运行代理1. 概述Ubuntu是一个以桌面应用为主的Linux操作系统&#xff0c;目前在不适用微软Windows的企业中&#xff0c;ubuntu被广泛应用在个人电脑中…

网络原理4 数据链路层

文章目录mac地址网络原理的总结在数据链路层中&#xff0c;最主要的就是以太网协议这里的目的IP和原地址都是mac地址 mac地址 首先要知道什么是Mac地址&#xff0c;mac地址也叫做物理地址或以太网地址&#xff0c;它是一个用来确认网络设备位置的位置&#xff0c;一个网卡就会…

javaWeb——第一章概述

目录 1.1 软件的分类 1.2 软件架构 1.3 web软件 1.4 web程序 web服务器&#xff1a; Tomcat: 扩展 Java web就是窗口和程序之间的交互&#xff1a; 1.1 软件的分类 系统软件 应用软件 介于两者之间的中间件&#xff08;插件&#xff09; 1.2 软件架构 B/S 服务器与浏…

ZC706P+ADRV9009连接RADIOVERSE详解之三

做好SD卡映像&#xff0c;连接好硬件之后&#xff0c;我们就可以尝试软件操作了。 步骤1&#xff1a;设置好网络 打开软件界面我们看到&#xff0c;板子默认的地址为192.168.1.10 端口号为55555.我们一定也设置跟板子连接的以太网口处于192.168.1网段&#xff0c;并且子网掩码…

【ESP32+freeRTOS学习笔记-(四)任务调度机制】

目录1 、什么是任务的调度机制1.1 概念1.2 三种算法1.3 决定算法的宏2、基本词条解释3、调度算法解释3.1 具有时间片的优先级抢先调度 Prioritized Pre-emptive Scheduling with Time Slicing3.1.1 图解高优先级任务抢占低优先级任务3.1.2 图解具有时间片的优先级抢占3.1.3 总结…