深度学习进行人体姿态估计
简介
姿态估计是计算机视觉中的一个热门课题。作为人工智能(AI)的一个领域,计算机视觉使机器能够执行图像处理任务,目的是模仿人类的视觉。
内容
来自于Elisha Odemakinde的论文,Elisha Odemakinde是一名机器学习工程师和研究员。他是计算机视觉和语言处理方面的专家。
什么是姿态估计?
人体姿态估计和跟踪是一项计算机视觉任务,包括检测、关联和跟踪语义关键点。语义关键点的例子是“左肩”、“右肩”、“左膝”或“车辆的左车灯”等。
实时视频镜头中语义关键点跟踪的性能需要高计算资源,这限制了姿态估计的准确性。随着最新进展,具有实时要求的新应用成为可能,如自动驾驶汽车和最后一英里送货机器人。
今天,最强大的图像处理模型基于卷积神经网络(CNN)。因此,最先进的方法通常基于设计专门为人体姿势推断定制的CNN架构。
自下而上与自上而下的方法
所有的姿态估计方法都可以分为自底向上和自顶向下两种方法。
自下而上的方法首先估计每个身体关节,然后将它们分组以形成独特的姿势。自底向上的方法是DeepCut首创的(我们将在后面更详细地介绍这种方法)。
自顶向下的方法首先运行人检测器,并在检测到的边界框内估计身体关节。
姿态估计的重要性
以传统方式目标检测,人只被感知为一个边界框(一个正方形)。通过执行姿势检测和姿势跟踪,计算机可以理解人类的身体语言。然而,传统的姿态跟踪方法既不足够快也不足够鲁棒以至于遮挡是不可行的。
高性能的实时姿态检测和跟踪将推动计算机视觉的一些最大趋势。例如,实时跟踪人类姿势将使计算机能够对人类行为形成更精细、更自然的理解。
这将对各个领域产生很大的影响,例如,在自动驾驶方面。今天,大多数自动驾驶汽车事故是由“机器人”驾驶引起的,自动驾驶车辆进行了允许但意外的停车,人类驾驶员撞上了自动驾驶汽车。通过实时人体姿势检测和跟踪,计算机能够更好地理解和预测行人行为,从而实现更自然的驾驶。
什么是人体姿态估计?
人体姿态估计旨在预测图像或视频中人体部位和关节的姿态。由于姿态运动通常是由一些特定的人类动作驱动的,所以知道人类的身体姿态对于动作识别是至关重要的。
什么是2D人体姿态估计?
2D人体姿态估计用于从诸如图像和视频的视觉中估计人体关键点的2D位置或空间位置。传统的2D人体姿态估计方法对各个身体部位使用不同的手工制作的特征提取技术。
早期的计算机视觉作品将人体描述为简笔画,以获得全局姿态结构。然而,基于现代深度学习的方法已经通过显著提高单人和多人姿势估计的性能而实现了重大突破。一些流行的2D人体姿态估计方法包括开放姿势、CPN、AlphaPose和HRNet(我们将在本文后面介绍它们和其他一些)。
什么是3D人体姿态估计?
3D人体姿态估计用于预测3D空间中身体关节的位置。除了3D姿态之外,一些方法还从图像或视频中恢复3D人体网格。近年来,由于该领域用于提供与人体相关的大量3D结构信息,因此引起了人们的极大兴趣。它可以应用于各种应用,例如3D动画产业、虚拟或增强现实以及3D动作预测。3D人体姿态估计可以在单目图像或视频(正常相机馈送)上执行。
使用多个视点或额外的传感器(IMU或LiDAR),3D姿态估计可以与信息融合技术一起应用,这是一项非常具有挑战性的任务。而2D人体数据集可以很容易地获得,收集精确的三维姿态图像注释耗时,并且人工标记不实用且昂贵。因此,尽管近年来3D姿态跟踪已经取得了显著的进步,特别是由于在2D人体姿态估计方面取得的进展,但是仍然有几个挑战需要克服:模型泛化、对遮挡的鲁棒性和计算效率。
一个流行的库使用神经网络进行实时3D人体姿态估计,甚至用于多人用例,它是开放姿势。
三维人体建模
在人体姿态估计中,人体部位的位置用于从视觉输入数据构建人体表示(例如身体骨架姿态)。因此,人体建模是人体姿态估计的一个重要方面。它用于表示从视觉输入数据中提取的特征和关键点。通常,使用基于模型的方法来描述和推断人体姿态,并渲染2D或3D姿态。
大多数方法使用N关节刚性运动学模型,其中人体被表示为具有关节和肢体的实体,包含身体运动学结构和身体形状信息。
人体建模有三种模型:
第一种模型:
运动学模型也称为基于骨架的模型,用于2D姿态估计以及3D姿态估计。这种灵活而直观的人体模型包括一组关节位置和肢体方向来表示人体结构。因此,骨架姿态估计模型用于捕捉不同身体部分之间的关系。然而,运动学模型在表示纹理或形状信息方面受到限制。
第二种模型:
平面模型或基于轮廓的模型,用于2D姿态估计。平面模型用于表示人体的外观和形状。通常,身体部位由多个近似人体轮廓的矩形表示。一个流行的例子是主动形状模型(ASM)使用主成分分析来捕获完整的人体图形和轮廓变形。
第三种模型:
体积模型,用于3D姿态估计。存在多种流行的3D人体模型,用于基于深度学习的3D人体姿态估计,以恢复3D人体网格。举个例子,古姆& GHUML(ite)是完全可训练的端到端深度学习管道,在超过60,000人的全身扫描的高分辨率数据集上进行训练,以模拟统计和关节式3D人体形状和姿势。它可以用来推断。
姿态检测的主要挑战
人体姿态估计是一项具有挑战性的任务,因为人体的外观由于不同形式的衣服、任意遮挡、视角引起的遮挡以及背景环境而动态变化。姿态估计需要对具有挑战性的真实世界变化具有鲁棒性,例如光照和天气。
因此,对于图像处理模型来说,识别细粒度的关节坐标是具有挑战性的。跟踪小的和几乎不可见的关节尤其困难。
头部姿态估计
估计一个人的头部姿态是一个流行的计算机视觉问题。头部姿态估计具有多种应用,例如帮助凝视估计、建模注意力、使3D模型适合视频以及执行面部对准。
传统上,头部姿态是使用来自目标面部的关键点并通过用平均人类头部模型解决2D到3D的对应问题来计算的。
恢复头部的3D姿态的能力是基于关键点的面部表情分析的副产品,该面部表情分析基于利用深度学习方法提取2D面部关键点。这些方法对于遮挡和极端的姿态变化是鲁棒的。
动物姿态估计
大多数最新的方法集中于人体姿态检测和跟踪。然而,一些模型被开发用于动物和汽车(物体姿态估计)。
动物姿态估计带来了额外的挑战,例如有限的标记数据(需要收集数据和注释图像手动)和大量的自遮挡。因此,动物的数据集通常很小,只包括有限的动物种类。
此外,估计多个动物的姿态是一个具有挑战性的计算机视觉问题,因为频繁的交互会导致遮挡,并使将检测到的关键点分配给正确的个体变得复杂。此外,让长相非常相似的动物比人类更密切地互动也是一项挑战。
为了解决这些问题,已经开发了迁移学习技术来将方法从人类重新应用到动物。一个例子是多动物姿态估计和跟踪深度切削,这是一个为动物和人类提供的最先进、最受欢迎的开源姿态估计工具箱。阅读更多关于动物姿态跟踪的文章农业中的计算机视觉。
视频人物姿态跟踪
复杂情况下的多帧人体姿态估计比较复杂,需要很高的计算能力。虽然人体关节检测器对于静态图像表现出良好的性能,但是当模型应用于视频序列进行实时姿态跟踪。
最大的挑战包括处理运动模糊、视频散焦、姿态遮挡以及无法捕捉视频帧之间的时间依赖性。
应用传统递归神经网络(RNN)招致空间环境建模的经验困难,特别是在处理姿态遮挡。最新的多帧人体姿态估计框架,例如目的利用视频帧之间丰富的时间线索来促进关键点检测。
姿势估计是如何工作的?
姿态估计利用姿态和方向来预测和跟踪人或物体的位置。因此,姿态估计允许程序估计图像或视频中身体的空间位置(“姿态”)。一般来说,大多数姿态估计器是两步框架,检测人体边界框,然后估计每个框内的姿态。
姿态估计通过找到人或物体的关键点来操作。以一个人为例,关键点是像肘、膝、腕等关节。有两种类型的姿态估计:多姿态和单姿态。单姿态估计用于估计给定场景中单个对象的姿态,而多姿态估计用于检测多个对象的姿态。
流行的人体姿态估计MS COCO数据集可以检测17个不同的关键点(类)。每个关键点都用三个数字(x,y,v)标注,其中x和y标记坐标,v指示关键点是否可见。
"鼻子", "左眼", "右眼", "左耳", "右耳", "左肩", "右肩", "左肘", "右肘", "左手腕", "右手腕", "左臀", "右臀", "左膝", "右膝", "左脚踝", "右脚踝"
基于深度学习的姿态估计
随着近年来深度学习解决方案的快速发展,深度学习已被证明在各种任务中优于经典的计算机视觉方法,包括图象分割法或者目标检测。因此,深度学习技术在姿态估计任务中带来了显著的进步和性能增益。
接下来,我们将列出并回顾流行的人体姿态检测和跟踪方法。
最流行的姿态估计方法
方法1:打开姿势
方法2:高分辨率网(HRNet)
方法3:深度切割
方法4:区域多人姿势估计(AlphaPose)
方法5:深姿势
方法6: PoseNet
方法7:密集姿势
基于深度学习的姿态检测方法
因为姿态估计是一种容易应用的计算机视觉技术,所以我们可以使用现有的架构实现定制的姿态估计器。让您开始开发定制姿态估计器的现有架构包括:
方法1:开放姿势是用于多人姿势估计的最流行的自下而上方法之一。这种架构的特点是实时、多人姿势估计。OpenPose是一个开源的实时多人检测,在检测身体,脚,手和面部关键点方面具有很高的准确性。OpenPose的一个优势是,它是一个API,让用户可以灵活地从摄像机场、网络摄像头和其他设备中选择源图像,对于嵌入式系统应用(例如,与CCTV摄像机和系统的集成)更为重要。它支持不同的硬件架构,如CUDA GPUs、OpenCL GPUs或纯CPU设备。轻量级版本对于使用边缘设备进行实时设备上处理的边缘推断应用程序来说足够高效。
方法2:高分辨率网是用于人体姿态估计的神经网络。它是一种在图像处理问题中使用的架构,用于找到我们所知的关于图像中特定对象或人的关键点(关节)。这种体系结构相对于其他体系结构的一个优点是,相对于使用高-低分辨率网络,大多数现有方法将姿势的高分辨率表示与低分辨率表示相匹配。代替这种偏差,神经网络在估计姿势时保持高分辨率表示。例如,这种HRNet架构有助于检测电视体育节目中的人体姿势。
方法3:深度切割是另一种流行的自下而上的多人姿势估计方法。DeepCut用于检测多人的姿势。该模型通过检测图像中的人数,然后预测每张图像的关节位置来工作。DeepCut可以应用于多人/物体的视频或图像,例如足球、篮球等。
方法4:区域多人姿态估计(AlphaPose)是一种流行的自顶向下的姿态估计方法。这对于在存在不准确的人体边界框的情况下检测姿态是有用的。也就是说,它是通过最佳检测的包围盒来估计人体姿态的最佳架构。AlphaPose架构适用于检测图像或视频领域中的单人和多人姿态。
方法5:深层目的:这是一个人体姿势估计器,它利用了深度神经网络。DeepPose的深度神经网络(DNN)捕捉所有关节,将汇集层、卷积层和全连接层连接起来,形成这些层的一部分。
方法6:PoseNet:PoseNet是一个基于tensorflow.js构建的姿态估计器架构,可以在浏览器或移动设备等轻量级设备上运行。因此,PoseNet可用于估算也 a 单一姿势或者多种姿势。
方法7:致密糖:这是一种姿势估计技术,旨在将RGB图像的所有人体像素映射到人体的3D表面。DensePose还可以用于单个和多个姿态估计问题。
方法8:张量流姿势估计:Tensorflow Lite通过针对低功耗优化的轻量级ML模型提供姿态估计边缘设备。
姿态估计的用例及应用
人体姿态估计已经被广泛应用,包括人机交互、运动分析、增强现实和机器人。
姿态估计在很多领域都有应用,下面列出了其中一些。
最流行的姿态估计应用
应用1:人类活动估计
应用2:运动转移和增强现实
应用3:训练机器人
应用4:控制台的运动跟踪
应用5:人类跌倒检测
人类活动估计
姿态估计的一个相当明显的应用是跟踪和测量人类活动和运动。DensePose、PoseNet或OpenPose等架构通常用于活动、手势或步态识别。通过使用姿态估计来跟踪人类活动的例子包括:
1.用于检测坐姿的应用程序
2.全身/手语交流(例如,交通警察信号)
3.检测人是否跌倒或生病的应用程序
4.支持足球、篮球和体育分析的应用程序
5.分析舞蹈技巧的应用程序(例如,在芭蕾舞中)
6.姿势学习在形体训练中的应用
7.在安全和监控增强中的应用
增强现实和虚拟现实
截至今天,与增强和虚拟现实应用程序接口的姿态估计为用户提供了更好的在线体验。例如,用户可以通过虚拟教练虚拟学习如何打网球之类的游戏。
更重要的是,姿态估计器也可以与基于增强现实的应用程序相接口。例如,美国陆军试验将增强现实程序用于战斗。这些项目旨在帮助士兵区分敌人和友军,以及提高夜视能力。
具有人体姿态跟踪的训练机器人
姿态估计器的典型应用是让机器人学习某些工艺。代替手动编程机器人跟随轨迹,机器人可以通过跟随导师的姿势、表情或外表来学习动作和移动。
控制台的人体运动跟踪
姿态估计的其他应用是游戏中的应用,其中人类主体自动生成姿态并将姿态注入到游戏环境中,以获得交互式游戏体验。例如,微软的Kinect使用3D姿势估计(使用红外传感器数据)来跟踪人类玩家的运动,并使用它来将角色的动作虚拟地渲染到游戏环境中。
展望和未来趋势
物体姿态估计是计算机视觉的一个主要趋势。与二维包围盒相比,物体姿态估计允许获得对物体的更详细的理解。直到现在,姿态估计仍然是计算非常密集的,并且需要昂贵的AI硬件(通常是多个NVIDIA GPUs),这对于现实世界的使用来说是不实际的。
边缘人工智能技术
新的技术和方法使得减少人工智能模型的大小成为可能,使得姿态估计算法不那么“沉重”并且更加有效。这是现实世界中实现人体姿态检测的基础。
结果,将姿态估计算法部署到边缘设备并执行设备上的机器学习(边缘人工智能).边缘推理使该技术具有可扩展性,对于任务关键型应用程序(离线能力)来说更加健壮,并且是私有的(不需要将图像发送到云)。边缘ML的轻量姿态估计模型的一个例子是轻量级开放式。
如何开始
无代码计算机视觉平台,如Viso套件使得快速实现企业级姿态估计应用成为可能。端到端解决方案Viso Suite允许使用不同的摄像机和人工智能硬件。
下一步是什么?
姿态估计是计算机视觉的一个迷人的方面,可以应用于多个领域,包括技术,医疗保健,商业和其他领域。除了它在塑造人类角色方面的突出作用深度神经网络学习各种关键点,它也用于安全和监控系统。
其他流行计算机视觉的应用包括图像分类,图象分割法, 人脸检测,以及目标检测。
后记
如果觉得此篇文章还不错可以帮忙推推!
若有什么不懂的或者有错的可以在下方留言,另外再求个三连!!