AI学习笔记整理(29)—— 计算机视觉之人体姿态估计相关算法

人体姿态估计(Human Pose Estimation, HPE) 是指通过计算机视觉技术来推测或估计人体在三维空间中的姿态信息,包括关节位置、角度和身体姿势等。本质上,它是一种捕获每个关节(手臂、头部、躯干等)的一组坐标的方法,该坐标被称为可以描述人的姿势的关键点(keypoint)。

目前主流的人体姿态估计算法可以划分为传统方法和基于深度学习的方法。

基于传统方法的人体姿态估计

传统方法一般是基于图结构和形变部件模型,设计2D人体部件检测器,使用图模型建立各部件的连通性,并结合人体运动学的相关约束不断优化图结构模型来估计人体姿态。有如下缺点:

First,传统方法虽然拥有较高的时间效率,但是由于其提取的特征主要是人工设定的HOG和SHIFT特征,无法充分利用图像信息,导致算法受制于图像中的不同外观、视角、遮挡和固有的几何模糊性。同时,由于部件模型的结构单一,当人体姿态变化较大时,部件模型不能精确地刻画和表达这种形变,同一数据存在多个可行的解,即姿态估计的结果不唯一,导致传统方法适用范围受到很大限制。

Second,另一方面,传统方法很多是基于深度图等数字图像提取姿态特征的算法,但是由于采集深度图像需要使用专业的采集设备,成本较高,所以很难适用于所有的应用场景,而且采集过程需要同步多个视角的深度摄像头以减小遮挡问题带来的影响,导致人体姿态数据的获取过程复杂困难。因此这种传统的基于手工提取特征,并利用部件模型建立特征之间联系的方法大多数是昂贵和低效的。

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

参考链接:https://www.cnblogs.com/lilicon/articles/12609353.html

基于深度学习的人体姿态估计方法主要是利用卷积神经网络(CNN)从图像中提取人体姿态特征,相比于传统方法人工设计特征,CNN 不仅可以得到语义信息更为丰富的特征,而且能够获得不同感受野下多尺度多类型的人体关节点特征向量和每个特征的全部上下文(contextual),摆脱对部件模型结构设计的依赖,然后对这些特征向量进行坐标回归以反映当前姿态,从而将姿态信息应用于具体实际之中。有如下好处:

First,相较之下日常生活中的单目摄像头更为常见,虽然其采集的彩色图像容易受到光照等环境因素的影响,但是可以利用神经网络提取出比人工特征更为准确和鲁棒的卷积特征,以预测更为复杂的姿态,所以基于深度学习的人体姿态估计方法得到了深入的研究。

Second,不同于传统方法显式地设计特征提取器和局部探测器,进行深度学习时构建CNN比较容易实现,同时可以设计处理序列问题的CNN模型,例如循环神经网络RNN,通过分析连续多帧图像获得人体姿态的变化规律,进而为人体姿态中各个关节点之间建立更为准确的拓扑结构。

人体姿态估计数据集

由于缺乏高质量的数据集,在人体姿势估计方面进展缓慢。在近几年中,一些具有挑战性的数据集已经发布,这使得研究人员进行研发工作。人体姿态估计常用数据集:

  • COCO Keypoints challenge
  • MPII Human Pose Dataset
  • VGG Pose Dataset
  • CMU Panoptic Dataset(本案例所用数据集)

OpenPose算法的原理与应用

OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,基于它的实例如雨后春笋般涌现。

其理论基础来自Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ,是CVPR 2017的一篇论文,作者是来自CMU感知计算实验室的曹哲。

人体姿态估计技术在体育健身、动作采集、3D试衣、舆情监测等领域具有广阔的应用前景,人们更加熟悉的应用就是抖音尬舞机。

OpenPose项目Github链接:https://github.com/CMU-Perceptual-Computing-Lab/openpose

实现原理

和很多自底向上的方法一样,OpenPose 首先检测出图像中所有人的关节(关键点),然后将检出的关键点分配给每个对应的人。下图展示了 OpenPose 模型的架构。

  1. OpenPose 网络首先使用前面的几个网络层(在上面的流程图中使用的是 VGG-19),从图像中提取特征。

  2. 接下来,这些特征被传给两个平行的卷积层分支。第一个分支用来预测 18 个置信图(Part Confidence Maps),每个图代表人体骨架中的一个关节。第二个分支预测一个集合,该集合中包含 38 个关节仿射场(Part Affinity Fields,PAFs),描述各关节之间的连接程度。

  3. 接着,OpenPose 用一连串的步骤来优化每个分支的预测值。使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来。使用关节置信图,可以在每个关节对之间形成二分图(如上图所示)。使用 PAF 值,二分图里较弱的连接被删除。由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架。通过上述步骤,可以检出图中所有人的人体姿态骨架,并将其分配给正确的人。针对该算法更详细的解释,请参考其论文:
    https://arxiv.org/pdf/1812.08008.pdf

DeepCut

DeepCut(https://arxiv.org/abs/1511.06645)是一个自底向上的多人人体姿态估计方法。针对人体姿态估计任务,作者定义了以下问题:

  1. 生成一个由 D 个关节候选项组成的候选集合。该集合代表了图像中所有人的所有关节的可能位置。在上述关节候选集中选取一个子集。
  2. 为每个被选取的人体关节添加一个标签。标签是 C 个关节类中的一个。每个关节类代表一种关节,如"胳膊""腿""躯干"等。
  3. 将被标记的关节划分给每个对应的人。

上述几个问题可以被建模为整数线性规划问题(ILP),从而被一起解决。想要了解线性方程组的具体形式和更详细的分析,请参见原论文(链接:https://arxiv.org/pdf/1511.06645.pdf)。

Mask RCNN

Mask RCNN(https://arxiv.org/abs/1703.06870)是一个非常流行的语义和实例分割架构。该模型可以同时预测图像中多个物体的候选框位置及分割其语义信息的 mask。该模型的基础架构很容易被扩展到人体姿态估计上来。

其基本架构首先使用 CNN 从图像中提取特征图。这些特征接着被用于一个区域候选网络(Regin Proposal Network, RPN)来为各个对象生成候选框。候选框会从 CNN 提取出的特征图中选取一个区域。由于候选框可能会有多种尺寸,网络接下来会采用一个层,称为 RoIAlign,用来减小特征图的尺寸,使它们具有相同的尺寸。现在,抽取出的特征被传给平行的 CNN 分支,用来输出候选框和分割 mask 的最终预测。

我们现在主要关注一下分割的分支。假设我们图像中的对象可以属于 K 个类别中的一个。分割分支输出 K 个尺寸为 m*m 的二值 mask,每个二值 mask 代表只属于该类别的所有对象。我们可以将每种特征点建模为一个类别,然后将姿态估计任务看作一个分割任务,从而提取图像中每个人的特征点。

与此同时,可以训练一个对象检测算法来确定每个人的位置。通过组合每个人的位置信息和他们的特征点集合,我们可以得到图像中每个人的人体骨架。

该方法和自顶向下方法比较类似,但不同的是,其人体检测步骤和关键点检测步骤是同时进行的。换句话说,人体检测步骤和关键点检测步骤是相互独立的。

姿态估计与应用场景

动作识别

追踪一段时间内一个人姿态的变化也可以应用在动作、手势和步态识别上。在这方面有好几个应用场景,包括:

  • 用于检测一个人是否摔倒或疾病
  • 用于健身、体育和舞蹈等的自动教学
  • 用于理解全身的肢体语言(如机场跑道信号、交警信号等)
  • 用于增强安保和监控

运动捕捉和增强现实

人体姿态估计的一个有趣应用是 CGI(computer graphic image,一种电影制造技术)应用。如果可以检测出人体姿态,那么图形、风格、特效增强、设备和艺术造型等就可以被加载在人体上。通过追踪人体姿态的变化,渲染的图形可以在人动的时候"自然"地与人"融合"。

姿态估计的一个很好的可视化例子是 Animoji(https://www.wired.com/story/all-the-face-tracking-tech-behind-apples-animoji/)。虽然在 Animoji 中只是跟踪了人脸的结构,但这个技术可以被扩展到人体关键点上。同样的概念可以被用于渲染增强现实(AR)元素,使其能够模仿人的运动。

训练机器人

除了手动为机器人编程、让它们跟随特定的路径,我们也可以让机器人跟随一个做特定动作的人体骨架。人类教练可以仅通过演示特定的动作,来教机器人学习这一动作。接着,机器人就可以计算如何移动自己的活动关节,来进行相同的动作。

控制台中的运动追踪

姿态估计的一个有趣应用是在交互游戏中追踪人体对象的运动。比较流行的 Kinect 使用 3D 姿态估计(采用 IR 传感器数据)来追踪人类玩家的运动,从而利用它来渲染虚拟人物的动作。

相关推荐
烟囱土著1 小时前
捣鼓30天,我写了一个数学加减练习小程序
学习·算法·微信小程序·小程序
biyezuopinvip1 小时前
图像处理报告基于CNN的监控视频流的课堂签到系统
图像处理·人工智能·cnn·图像处理报告·基于cnn的·监控视频流的·课堂签到系统
未若君雅裁1 小时前
JVM实战总结笔记
java·jvm·笔记
摇滚侠1 小时前
2025最新 SpringCloud 教程,Seata-基础-架构原理-整合 Seata 完成,笔记68,笔记69
笔记·spring cloud·架构
xixixi777771 小时前
二值化——将具有丰富灰度或彩色信息的图像,转换为仅由两种像素值(通常是0和1,或0和255) 组成的图像,即黑白图像
网络·图像处理·人工智能·学习·计算机视觉·信息与通信
秋邱2 小时前
AR 应用流量增长与品牌 IP 打造:从被动接单到主动获客
开发语言·人工智能·后端·python·ar·restful
AI_Auto9 小时前
智能制造 - 人工智能、隐私保护、信息安全
人工智能·制造
一只乔哇噻9 小时前
java后端工程师+AI大模型开发进修ing(研一版‖day60)
java·开发语言·人工智能·学习·语言模型
千里码aicood9 小时前
计算机大数据、人工智能与智能系统开发定制开发
大数据·人工智能·深度学习·决策树·机器学习·森林树