本文转载于原文链接
什么是姿势估计?
人体姿势估计和跟踪是一项计算机视觉任务,包括检测、关联和跟踪语义关键点。语义关键点的例子是 “右肩”、"左膝 "或 “车辆的左刹车灯”。
实时视频录像中的语义关键点追踪性能需要高计算资源,这一直限制着姿势估计的准确性。随着最新的进展,具有实时性要求的新应用成为可能,如自动驾驶汽车和最后一英里的送货机器人。
如今最强大的图像处理模型是基于卷积神经网络(CNNs)的。因此,最先进的方法通常是基于设计特别为人类姿势推理而定制的CNN架构。
自下而上与自上而下的方法
所有的姿势估计方法都可以归纳为自下而上和自上而下的方法。
自下而上的方法首先估计每个身体关节,然后将它们分组,形成一个独特的姿势。自下而上的方法是由DeepCut开创的(这个方法我们将在后面详细介绍)。
自上而下的方法首先运行一个人物检测器,然后在检测到的边界框内估计身体的关节。
姿势估计的重要性
在传统的物体检测中,人们只被视为一个边界框(一个正方形)。通过进行姿态检测和姿态跟踪,计算机可以对人类的身体语言进行理解。然而,传统的姿势跟踪方法既不够快,对遮挡物也不够稳健,因此不可行。
高性能的实时姿势检测和跟踪将推动计算机视觉的一些最大趋势。例如,实时跟踪人类的姿势将使计算机能够对人类的行为形成更精细、更自然的理解。
这将对各个领域产生巨大影响,例如,在自动驾驶方面。今天,大多数自动驾驶汽车事故是由 "机器人 "驾驶引起的,即自动驾驶汽车进行了允许但意外的停车,而人类驾驶员撞上了自动驾驶汽车。通过实时的人类姿势检测和跟踪,计算机能够更好地理解和预测行人的行为–允许更自然的驾驶。
什么是人体姿势估计?
人体姿势估计的目的是预测图像或视频中的人体部位和关节的姿势。由于姿势运动通常是由一些特定的人类动作所驱动的,因此了解人类的身体姿势对于动作识别至关重要。
什么是二维人体姿势估计?
二维人体姿态估计是用来从图像和视频等视觉中估计人体关键点的二维位置或空间位置。传统的二维人体姿态估计方法对各个身体部位使用不同的手工特征提取技术。
早期的计算机视觉作品将人体描述为一个棍状物,以获得全局姿势结构。然而,现代基于深度学习的方法已经取得了重大突破,在单人和多人姿势估计方面的性能都有了明显的提高。一些流行的二维人体姿势估计方法包括OpenPose、CPN、AlphaPose和HRNet(我们将在本文后面介绍它们和其他方法)。
什么是三维人体姿势估计?
三维人体姿势估计是用来预测三维空间中身体关节的位置。除了三维姿态,有些方法还可以从图像或视频中恢复三维人体网状结构。近年来,这一领域引起了人们的极大兴趣,因为它被用来提供与人体有关的广泛的三维结构信息。它可以应用于各种应用,如三维动画产业、虚拟或增强现实以及三维动作预测。三维人体姿态估计可以在单眼图像或视频(正常的相机画面)上进行。
使用多个视点或额外的传感器(IMU或LiDAR),三维姿势估计可以应用信息融合技术,这是一个非常具有挑战性的任务。虽然二维人体数据集很容易获得,但收集准确的三维姿态图像注释却很耗时,而且人工标注也不实用,成本很高。因此,尽管近年来三维姿态跟踪取得了重大进展,特别是由于二维人体姿态估计方面的进展,但仍有一些挑战需要克服。模型的通用性、对遮挡的鲁棒性和计算效率。
OpenPose是一个流行的库,它使用神经网络进行实时三维人体姿势估计,甚至用于多人使用的情况。
3D人体建模
在人体姿态估计中,人体部位的位置被用来从视觉输入数据中建立人体表征(如身体骨架姿态)。因此,人体建模是人体姿势估计的一个重要方面。它被用来表示从视觉输入数据中提取的特征和关键点。通常情况下,基于模型的方法被用来描述和推断人体姿势,并呈现二维或三维姿势。
大多数方法使用N个关节的刚性运动学模型,其中人体被表示为一个具有关节和肢体的实体,包含身体运动学结构和身体形状信息。
有三种类型的模型用于人体建模。
运动学模型
也叫基于骨架的模型,用于二维姿势估计以及三维姿势估计。这种灵活而直观的人体模型包括一组关节位置和肢体方向来表示人体结构。因此,骨架姿势估计模型被用来捕捉不同身体部位之间的关系。然而,运动学模型在表现纹理或形状信息方面是有限的。
平面模型
基于轮廓的模型,该模型用于二维姿势估计。平面模型被用来表示人体的外观和形状。通常情况下,身体部位由多个接近人体轮廓的矩形来表示。一个流行的例子是主动形状模型(ASM),它被用来捕捉完整的人体图形和使用主成分分析的剪影变形。
体积模型
用于三维姿态估计。存在多个流行的三维人体模型,用于基于深度学习的三维人体姿势估计,以恢复三维人体网格。例如,GHUM和GHUML(ite),是完全可训练的端到端深度学习管道,在超过60’000个人类配置的高分辨率全身扫描数据集上进行训练,为统计和衔接的三维人体形状和姿势建模。
姿势检测的主要挑战
人的姿势估计是一项具有挑战性的任务,因为身体的外观会因为不同形式的衣服、任意遮挡、由于观察角度和背景的遮挡而动态变化。姿势估计需要对具有挑战性的现实世界的变化具有鲁棒性,如照明和天气。
因此,对于图像处理模型来说,识别细粒度的关节坐标是一个挑战。追踪小的和几乎看不见的关节尤其困难。
头部姿势估计
估算一个人的头部姿势是一个流行的计算机视觉问题。头部姿态估计有多种应用,如辅助凝视估计、建立注意力模型、将三维模型与视频相匹配以及进行人脸对齐。
传统上,头部姿势的计算是利用目标脸部的关键点,并通过解决平均人类头部模型的二维到三维对应问题。
恢复头部三维姿势的能力是基于关键点的面部表情分析的副产品,该分析是基于深度学习方法提取的二维面部关键点。这些方法对闭塞和极端的姿势变化具有鲁棒性。
动物姿态估计
大多数最先进的方法都集中在人体姿势检测和跟踪方面。然而,一些模型被开发用于动物和汽车(物体姿势估计)。
动物姿态估计伴随着额外的挑战,如有限的标记数据(需要手动收集数据和注释图像)和大量的自我排除。因此,动物的数据集通常很小,包括有限的动物种类。
另外,由于频繁的互动会导致遮挡,并使将检测到的关键点分配给正确的个体变得复杂,因此估计多个动物的姿势是一个具有挑战性的计算机视觉问题。另外,对于外观非常相似的动物,它们的互动比人类通常更密切,这也是一种挑战。
为了解决这些问题,转移学习技术已经被开发出来,将人类的方法重新应用于动物。一个例子是用DeepLabCut进行多动物姿势估计和跟踪,DeepLabCut是一个最先进的、流行的开源动物和人类姿势估计工具箱。在我们关于计算机视觉在农业中的应用的文章中阅读更多关于动物姿势跟踪的信息。
视频人物姿态跟踪
复杂情况下的多帧人体姿势估计很复杂,需要很高的计算能力。虽然人体关节检测器对静态图像显示出良好的性能,但当模型应用于视频序列进行实时姿势跟踪时,其性能往往不够。
最大的挑战包括处理运动模糊、视频失焦、姿势遮挡,以及无法捕捉视频帧之间的时间依赖性。
应用传统的递归神经网络(RNN)在空间背景建模方面产生了经验上的困难,特别是在处理姿势遮挡方面。最先进的多帧人体姿势估计框架,如DCPose,利用视频帧之间丰富的时间线索来促进关键点的检测。
姿势估计是如何工作的?
姿势估计利用姿势和方向来预测和跟踪一个人或物体的位置。因此,姿势估计允许程序估计图像或视频中人体的空间位置(“姿势”)。一般来说,大多数姿势估计器是2个步骤的框架,检测人体的边界框,然后估计每个框内的姿势。
姿势估计通过寻找人或物体的关键点进行操作。以一个人为例,关键点是肘部、膝部、手腕等关节。姿势估计有两种类型:多姿态和单姿态。单一姿态估计用于估计给定场景中单个物体的姿态,而多姿态估计则用于检测多个物体的姿态。
在流行的MS COCO数据集上进行的人体姿势估计可以检测到17个不同的关键点(类别)。每个关键点都有三个数字(x,y,v),其中x和y标志着坐标,v表示该关键点是否可见。
"nose", "left_eye", "right_eye", "left_ear", "right_ear", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", "left_hip", "right_hip", "left_knee", "right_knee", "left_ankle", "right_ankle"
用深度学习进行姿态估计
随着近年来深度学习解决方案的快速发展,深度学习已被证明在各种任务中胜过经典的计算机视觉方法,包括图像分割或物体检测。因此,深度学习技术在姿态估计任务中带来了重大进展和性能提升。
接下来,我们将列出并回顾流行的人类姿势检测和跟踪方法。
最受欢迎的姿势估计方法
方法#1:OpenPose
方法#2: High-Resolution Net (HRNet)
方法#3:DeepCut
方法#4:Regional Multi-Person Pose Estimation (AlphaPose)
方法#5:Deep Pose
方法#6:PoseNet
方法#7:Dense Pose
基于深度学习的姿势检测方法
因为姿态估计是一种很容易应用的计算机视觉技术,我们可以使用现有的架构来实现一个自定义的姿态估计器。现有的架构可以让你开始开发一个自定义的姿势估计器,包括:
1. Open Pose
OpenPose是最流行的自下而上的多人姿态估计方法之一。这个架构的特点是实时的、多人的姿势估计。OpenPose是一个开源的实时多人检测,在检测身体、脚、手和面部关键点方面具有很高的准确性。OpenPose的一个优点是,它是一个API,使用户可以灵活地选择来自摄像机场、网络摄像机和其他的源图像,更重要的是用于嵌入式系统应用(例如,与CCTV摄像机和系统集成)。它支持不同的硬件架构,如CUDA GPU、OpenCL GPU或仅有CPU的设备。轻量级的版本对于边缘推理应用来说是足够高效的,可以通过边缘设备实时进行设备上的处理。
2. HRNet
高分辨率网络(HRNet)是一个用于人体姿势估计的神经网络。它是一种用于图像处理问题的架构,用于寻找我们所知道的与图像中特定物体或人有关的关键点(关节)。与其他架构相比,这种架构的一个优势是,大多数现有方法从低分辨率的姿态表示中匹配出高分辨率的表示,而不是使用高低分辨率的网络。取而代之的是,该神经网络在估计姿势时保持高分辨率的表征。例如,这种HRNet架构对检测电视体育节目中的人类姿态很有帮助。
3. DeepCut
DeepCut是另一种流行的自下而上的多人姿态估计方法。DeepCut用于检测多人的姿势。该模型的工作原理是检测图像中的人数,然后预测每张图像的联合位置。DeepCut可以应用于有多人/物体的视频或图像,例如,足球、篮球等。
区域多人姿势估计(AlphaPose)是一种流行的自上而下的姿势估计方法。它对于在存在不准确的人体边界框的情况下检测姿势很有用。也就是说,它是一个通过最佳检测的边界框来估计人类姿势的最佳架构。AlphaPose架构适用于检测图像或视频领域的单人和多人姿势。
4. DeepPose
DeepPose。这是一个利用深度神经网络的人类姿势估计器。DeepPose的深度神经网络(DNN)捕捉所有的关节,铰链汇集层、卷积层和全连接层,形成这些层的一部分。
5. PoseNet
PoseNet。PoseNet是一个建立在tensorflow.js上的姿势估计器架构,可以在浏览器或移动设备等轻型设备上运行。因此,PoseNet可以用来估计单个姿势或多个姿势。
6. DensePose
这是一种姿势估计技术,旨在将RGB图像的所有人类像素映射到人体的三维表面。DensePose也可用于单个和多个姿势估计问题。
7. Tensor flow Lite
Tensorflow Lite提供了姿势估计,其轻量级ML模型针对低功耗边缘设备进行了优化。