乔 迤,曲 毅
(武警工程大学 信息工程学院,陕西 西安 710086)
传统的2D 人体姿态估计是通过手工提取特征或建立人体模型,来设计2D 人体部件检测器。WANG Y 等人[1]提出基于多树模型的人体姿态估计,同时表征人体部件间的运动学约束关系和依赖关系,DANTONE M 等人[2]提出建立依赖于身体部位的非线性联合回归器来预测关节位置。在特征的选取上,RAMANAN D 等人[3]使用颜色直方图来提取部位的外观特征,SAPP B 等人[4]利用级联的结构化模型来提取轮廓边缘和形状特征,YANG Y 等人[5]使用HOG 特征来建立人体各部位的混合模型。传统方法受图像背景、光照、遮挡等的影响较大,并且对于多维特征的选择主观性较强,不能很好地适应人体部件的复杂性和环境的变换,因此利用传统的基于部件模型的方法具有较大的局限性。
随着深度学习的发展,利用神经网络提取的特征具有更好的鲁棒性,基于深度学习的2D 人体姿态估计利用卷积神经网络模拟人的视觉系统,通过多层网络,得到不同感受野下的丰富特征。TOSHEV A[6]等人首次基于级联的深度神经网络搭建了人体关节点回归的网络框架,从而摆脱了传统方法无法充分利用图像整体信息的局限性,实现精准的关节点定位和姿态提取。作为计算机视觉的基本任务,人体姿态估计发展状况与虚拟现实、人机交互、智能视频监控和运动行为分析等研究领域都紧密相连。本文主要对基于深度学习的2D 人体姿态估计方法进行梳理和总结,按视频图像中的人体数量,将人体姿态估计分为单人和多人场景下的检测,并分别阐述了人体姿态估计的常用方法,列举了测试基准数据集和评价准则。此外,本文还对人体姿态估计现阶段面临的问题进行分析,并对该领域未来发展的趋势进行展望。
2D 人体姿态估计,是通过人体关节点的二维坐标来描述人体骨架信息,基于深度学习的2D 人体姿态估计是通过图像特征提取,进行关节点检测和骨架信息恢复,从复杂背景环境中对人体进行分割提取,当前姿态估计的目标在于提高实时检测速度和检测精度。根据检测对象和算法流程的不同,可将其分为人体检测关节点回归融合算法和人体关节点检测聚类算法。前者是利用目标检测算法将每个人从图像背景中识别出来,然后对单人姿态进行估计;后者是对图像中所有的关节点进行检测,而后对其进行聚类连接成相应个体,从而恢复人体姿态,具体分类如图1 所示。
图1 2D 人体姿态估计算法总结
人体检测关节点回归融合算法主要包含两个步骤:首先构建人体检测器,利用目标检测算法生成人体提议框(Human Proposals),而后在框内进行人体关节点回归。
1.1.1 人体检测算法
人体检测的任务是要从复杂环境背景中将所关心的部分提取出来,是人体姿态估计的初始化过程。经典的目标检测的算法可以分为两类:一类是先产生候选区域(Region Proposals)再利用卷积神经网络(CNN)分类的目标检测框架,这类算法是基于区域提取的R-CNN[7]系列算法,如R-CNN[7]、SPP-Net[8]、Fast R-CNN[9]、Faster R-CNN[10];另一类是以YOLO 算法为代表的将目标检测转换为回归问题的目标检测框架(YOLO、SSD),目标检测算法的好坏直接关系到后续单人姿态估计的准确度。当前人体姿态估计主要使用Faster R-CNN 作为人体检测框架。
早在2000 年PAPAGEORGIOU C 等人[11]就提出了早期的目标检测方法,常用无先验知识的滑窗遍历来进行候选区域的选择,由于检测区域多尺度变换,容易造成漏检和误检。随着深度卷积神经网络的发展,2014 年,GIRSHICK R 等人[7]首次提出基于区域提取的R-CNN算法,利用selective search 获得约2 000 个候选区域,并对区域大小进行归一化,输入神经网络进行特征提取。针对R-CNN 模型对候选区域尺寸的限制,HE K 等人[8]在此基础上设计了空间金字塔池化层(Spatial Pyramid Pooling,SPP),使得输入的候选框大小可以进行缩放。为了降低重复计算节省运算开支,GIRSHICK R 等人[9]在SPP-Net 的基础上提出Fast R-CNN 算法,用ROI Pooling层代替SPP 层,将分类问题和边框回归问题进行了合并,极大加快了检测速度。DeepCut[12]方法就是先利用算法检测图像中的人体关节点,而后将关节点划分为不同的个人。为了从根本上解决selective search 选择候选区域慢的问题,2016 年REN S 等人[10]又提出了更快的Faster R-CNN 算法,使用RPN(Region Proposals Network)网络将候选区域的选取融合到整个网络结构中,大幅提高了候选框的提取速度和精度。
虽然Faster R-CNN 等算法取得了巨大进展,但是其实时性仍不能满足实际需求。随后出现的YOLO、SSD 算法优越性逐步凸显。Redmon 等人提出了YOLO 方法,实现了端到端的目标检测,摒弃了之前先划分候选区域再分类识别的两步走方法,提出了一种单阶段的处理方法,将输入图片划分为7×7 的网格,每个格子最多回归一种目标,通过边框回归进行目标区域的修正[13],该方法舍弃检测精度换取检测速度的大幅提升。
1.1.2 关节点回归算法
通过人体检测得到包含一个人的bounding box,在单人关节点检测中对应输出(Ground Truth)有两种思路:一种是直接回归关节点位置坐标(x,y),即基于坐标直接回归;另一种输出的是heatmap,heatmap 最大值对应关键点的位置,heatmap 的Ground Truth 是以关键点为中心的二维高斯分布,即基于热图回归。
(1)基于坐标回归
基于坐标回归的单人姿态估计是将人体各关节点的二维坐标作为Ground Truth,使输入图像经过端到端的网络直接映射得到每个关节点的位置坐标。这种从单个点直接回归的处理方法缺乏鲁棒性,姿态估计算法早期多采用这种算法,缺点是忽略了人体部件之间的结构信息,单独对每个关节点进行回归。
DeepPose[6]基于AlexNet 网络多阶段端到端回归人体关节点的二维坐标,无需借助人体模型和检测器,在初始阶段得到关节点的粗略位置,在其周围邻域切取小尺寸的子图像作为下一阶段的输入,后续阶段不断对其进行修正优化,具体结构如图2 所示,这也奠定了基于坐标回归方法的基础。
图2 DeepPose 结构图
由于直接从输入图像中预测关节点的位置是一个非线性问题,SUN X 等人[14]为了增强结构信息,提出了结构感知的回归方法,使用骨骼来进行姿态表示,同时利用关节点的连接结构来定义损失函数,以便从2D 姿态扩展到3D 姿态。FAN X 等人[15]基于生理图像提出一种双源深度卷积神经网络(DS-CNN),采用多尺度滑动窗口构建图像补丁(part patches)实现关节点的检测和定位。
(2)基于热图检测
基于热图检测的单人姿态估计是用概率图heatmap来表示关节点的粗略位置,训练网络得到的是特征图(feature map)各像素的概率检测值。Heatmap 不仅可以反映像素属于各个关节点的概率分布,还提供了关节点本身和关节点之间的图像特征。基于热图的检测可以为关节点坐标的检测提供先验,使用更为广泛。
①关节点关系的建模
TOMPSON J 等人[16]提出采用热图的方式来回归关节点,每个关节点占据一个热图通道,其二维高斯分布以目标关节点位置为中心,针对得到的关节点有误检(false positive)的情况,作者提出建立空间模型(spatial model)进行优化,利用马尔科夫随机场来过滤异常关节点,也为多人场景中的关节点聚类提供了解决思路。PAPANDREOU G 等人[17]在此基础上进行了改进提出了G-RMI,基于全卷积ResNet-101 的网络结构利用热图—偏移解码器将热图(heatmap)和对应的偏移量(offset)结合起来得到精确关节点的定位。为了更好地体现关节之间的依赖关系,YANG W 等人[18]设计了一个可以灵活构建的树结构模型和循环模型的消息传递层,使得DCNN 和部位检测器进行联合训练,但是此方法的计算量依然非常庞大。
②主干网络结构的改进
人体姿态估计中应用的网络结构许多都是基于经典神经网络改进而来的,WEI S E 等人[19]提出一种多阶段级联网络CPM,使用顺序化卷积架构对可学习的空间纹理特征进行序列预测,不断去修正响应图,使用神经网络同时学习图片特征和空间信息。残差网络提出后,NEWELL A 等人[20]提出一种结构对称的堆叠式沙漏(Stacked Hourglass)架构,使用剩余模块作为组成单元,如图3 所示,使用多尺度特征来捕获各关节点的语义信息和空间位置信息,由于高分辨率是通过上采样获得的,因此会有潜在的信息缺失,四阶Hourglass 子网络结构如图4 所示。FANG H 等人[21]提出的RMPE 是基于对称空间变换网络(Symmetric Spatial Transformer Network,SSTN)构建了专门的人体检测框,提出了参数化姿态非最大值抑制(Parametric Pose NonMaximum-Suppression,p-Pose NMS)来消除冗余,提高了准确率和效率。BULAT A 等人[22]使用了由两个深层子网组成的CNN 级联结构,分别是基于ResNet-152 的部位检测网络和基于VGG 的回归网络。
图3 Residual 模块示意图
图4 四阶Hourglass 子网络
CHEN Y 等人[12]提出的CPN,构建基于FPN 和Mask-RCNN 的人体检测器后,级联两个子阶段的网络模块GolbalNet 和RefineNet,第一阶段由特征金字塔网络GolbalNet 负责所有关节点的检测重点提高明显部位的检测精度,第二阶段由RefineNet 进行进一步修正。后续许多网络结构都是以此为基准模型进行改进的,例如LI W等人[23]在此基础上提出了多阶段人体姿态估计网络MSPN,将CPN 的GlobalNet 作为轻量级的单阶段模块进行堆叠,相邻阶段之间进行特征聚合以保证更高分辨率,MSPN通过将前一个阶段的对应的两个特征图和当前阶段下采样得到的特征图相连接,避免由于反复下采样和上采样造成的信息丢失。SU K 等人[24]提出Channel Shuffle Module(CSM)来促进特征图间的跨通道融合,提出Spatial Channel-wise Attention Residual Bottleneck(SCARB)利用注意力机制来学习空间和通道维度的关系。
Hourglass 是自上而下人体姿态估计的开山之作,在此基础上,KE L 等人[25]基于Hourglass 网络做了改进,使用多层MSS-Net 进行多尺度监督来加强语义特征学习,而后利用MSR-Net 处理多尺度信息保持全局一致性。为了提高精度有效应对遮挡问题,TANG W 等人[26]在Hourglass 网络的基础上提出了DLCM 模型,利用深度神经网络学习人体的组成结构,可进行自上而下和自下而上的结构推理。
不同于上述两阶段的算法,为了提高检测效率,NIE X等人[27]提出将人体检测和关节点回归两者统一起来当做单阶段来处理的分层结构化姿态表示SPR,直接预测根节点root joint 作为人的中心位置,同时将所有关节点进行层次分割,从root joint 开始预测相邻层级关节点的偏移量,具体如式(1)所示,从而减轻网络的预测压力。
③多尺度特征提取
为了完善在深度卷积神经网络中特征金字塔的应用,YANG W 等人[28]设计了金字塔残差模块(PRM)来克服人体形态变换造成的比例变化增强鲁棒性,首先使用不同缩放比例下采样得到不同尺度的特征图,而后再通过上采样将特征图恢复到相同大小融合形成多尺度特征,这一阶段姿态估计的方法大都是从高分辨率特征图下采样至低分辨率,再从低分辨率恢复至高分辨率,此过程中会损失部分细节信息,为了使姿态估计预测的关节点更加准确、空间更加精确,SUN K 等人[29]提出了高分辨率的人体姿态估计网络HRNet,通过在高分辨率特征主网络中逐渐并行加入低分辨率特征图子网络,将不同分辨率feature map 之间的连接从串行改成了并行,在整个过程中一直保持高分辨率分支的存在,各并行网络之间相互交换信息,实现了不同网络间的多尺度融合和特征提取。
自下而上的方法通常包括两个阶段,分别是关节点检测和关节点聚类。即首先对视频图像中所有的关节点进行检测,而后通过对其进行分组聚类,对不同人的关节点进行连接恢复人体姿态,该算法适用于多人场景,较之人体检测和关节点回归融合算法计算开销保持稳定,但是关节分组连接复杂度也会相对提高。代表算法有DeepCut、Associative Embedding、DeeperCut、OpenPose、PIFPAF 等。
PISHCHULIN L 等人[30]首次提出DeepCut,利用Fast R-CNN 来检测身体关节并进行相应类别标记,而后利用整数线性规划将这些类别划分给对应的人从而组合恢复出骨架信息。在此基础上,INSAFUTDINOV E 等人[31]提出了DeeperCut,采用残差网络Resnet 来提高关节检测精度,使用Image-Conditioned Pairwise Terms 来做优化,压缩候选区域的节点。为了提高实时检测效率,CAO Z 等人[32]提出了基于CPM 改进的OpenPose 方法,可以实现单人和多人的人体动作和手指关节等的识别,利用PAF方法给每个肢体构造二维向量来编码肢体的位置和方向信息,从而提高部位之间的关联度。如图5 所示,OpenPose 先通过VGG-19 卷积神经网络获取图像特征,之后经历两个分支,上半支路预测关节点置信度,下半支路预测关节点亲和度向量完成关节点的匹配,最后利用匈牙利算法将同一个人的关节点进行聚类连接,恢复人体骨架信息,这一方法获得了2016 年COCO 关键点挑战赛的冠军。
图5 OpenPose 算法流程示意图
文献[33]提出Associative Embedding 方法,通过使用标签值来编码部位之间的关联置信度,使得同一个人不同关节点对应的标签值尽可能相似,不同人的不同关节点对应的标签值相差尽可能大,通过划定阈值对标签值数据进行分割,从而将关节点分组到每个人体实例。PAPANDREOU G 等人[34]提出personlab 算法,可以同时完成人体姿态估计和人体实例分割任务。
2019 年,KREISS S 等人[35]提出PIFPAF 方法,这是一个基于复合场的人体姿态估计算法,使用部分强度场PIF 来预测关节点热图,使用部分关联场PAF 来确定关节点的连接,最后使用贪婪算法对部分强度场和部分关联场的信息进行处理,得到人体姿态估计的结果,相比OpenPose 算法性能有了明显提升。2020 年,字节跳动XIAO B 团队[36]基于之前的HRNet 和Associative Embedding提出了一种高分辨率网络HigherHRNet,利用多分辨率训练和热图聚合的策略,使高分辨率网络能够预测具有尺度感知的热图,也是目前自下而上方法中性能最优秀的网络之一。
2.1.1 单人姿态估计数据集
(1)LSP 数据集
LSP 数据集定义了14 个人体关节点,分别为头顶、脖子、左右肩部、左右肘部、左右手腕、左右臀部、左右膝盖和左右脚踝。样本数在2 000 左右,目前基本弃用。
(2)FLIC 数据集
FLIC 数据集是从电影中截取的场景片段,场景中包含多人的情况下,只标签了一个人的关节信息。共有5 003个样本,包括训练集3 987 张、测试集1 016 张,是单人人体关节点检测的数据集,通常在实验中作为第二数据集使用。
该数据集定义了9 类人体关节点,包括左右眼睛、鼻子、左右肩部、左右手肘、左右手腕、左右臀部,关节点主要集中在上半身。
(3)MPII 数据集
MPII 数据集约有2.5 万张图片,包含超过4 万个具有关节点注释的人体,包括被遮挡部位关节点标注和头部方向。定义了16 个人体关节点,分别为头顶、脖子、胸部、左右肩部、左右手肘、左右手腕、盆骨、左右臀部、左右膝盖、左右脚踝。同时可作为多人姿态估计的数据集。
2.1.2 多人姿态估计数据集
在现有的多人姿态估计数据集中,常用的有MPII、COCO 和AI Challenger 数据集。
MSCOCO 数据集是人体姿态识别领域应用的主流数据集,包含了20 万张图片和25 万个具有关节点注释的人体实例。定义了17 个人体关节点,分别为左右眼睛、左右耳朵、鼻子、左右肩部、左右手肘、左右手腕、左右臀部、左右膝盖和左右脚踝。
AI Challenger 数据集作为竞赛数据集使用,包含30万张图片,其中训练集21 万张,验证集3 万张,测试集A 3 万张,测试集B 3 万张,均对其进行了关节点标注。定义了14 类人体关节点,分别为头部、脖子、左右肩膀、左右手肘、左右手腕、左右臀部、左右膝盖、左右脚踝。
根据不同数据集的数据标签特点,2D 人体姿态估计有多种评价准则,如表1 所示。
表1 常见的2D 人体姿态估计数据集及评价标准
2.2.1 单人姿态估计评价准则
LSP 数据集采用部位精度百分比PCP (Percentage of Correct Parts)来衡量定位的精确程度,如果预测的肢体两个端点都在Ground Truth 阈值之内,则判定该定位正确有效。
MPII 数据集中采用头部尺度关节点百分比PCKh(Percentage Correct Keypoints on head length)评价关节点检测的准确率,即计算出预测值和真实值的归一化距离小于设定阈值的比例,如式(2)所示:
区别于MPII,FLIC 数据集使用PCK 作为评价指标时用人体躯干大小代替头部框大小作归一化距离。
2.2.2 多人姿态估计评价准则
使用目标关键点相似度(Object Keypoint Similarity,OKS)来评估预测值和真实值之间的差异,从而衡量模型的表现。OKS 指标的计算公式如式(3):
AP 表示所有的OKS 的平均精度,AP50 表示OKS 阈值为0.5 时的平均精度,APM 表示小尺度目标的平均精度,APL 表示尺度在阈值之上目标的平均精度。
在模型计算消耗比较方面,采用浮点计算量FLOPs作为指标,具体指的是卷积神经网络前向传播时所需要的乘法次数,用单张图片的测试速度作为评价测试速度的指标,同时用参数个数作为模型大小的评价指标。
(1)遮挡问题
由于真实生活中背景环境复杂,遮挡问题在一定程度上制约了模型性能的提升,容易造成漏检和误检。
(2)实时性要求
如何降低网络的复杂度和计算开销是制约人体姿态估计算法落地的重要因素,随着图像视频中人数的增多,尤其是自上而下算法的时间开销将会明显增加。
(1)提高检测精度和效率
真正将人体姿态估计算法应用于无人驾驶、安全监控等实时性要求高的领域,还需要进一步简化网络结构设计轻量化模型,降低模型的计算开销,使其能够实现实时快速高精度检测。
(2)移动端应用
在移动端设备部署人体姿态估计技术是一个方向,在不影响检测效率和准确率的情况下,与其他技术相结合拓展外围应用,增强现实真正做到人机交互。
随着深度学习的发展卷积神经网络的出现,用于人体姿态估计的模型结构和算法性能也不断优化和提升,无人驾驶、智能监控等任务需求也在一定程度上促进了人体姿态估计工作的进行。本文对两大类2D 人体姿态估计方法进行了介绍,对每个阶段具有代表性的模型特点进行了阐述,并介绍了人体姿态估计常用的数据集和评价准则。最后对人体姿态估计面临的问题和发展趋势进行了介绍,在未来具有广阔的应用前景。