时维国,于晓慧
(大连交通大学 自动化与电气工程学院,辽宁 大连 116028)
人体姿态估计(Human Pose Estimation)是计算机视觉中的一个重要分支,是对视觉目标进行感知、定位、结构化信息获取以及行为分析的前提。姿态估计技术广泛应用于计算机视觉领域,例如人机交互[1]、行为识别[2-3]、视频监控[4]和运动捕捉[5-6]等,是多个视觉任务中不可缺少的一环; 同时现有的目标姿态技术已深入到生活的方方面面,例如虚拟现实、交通违章驾驶、安防异常行为识别、商品无感支付等。姿态估计技术应用范围广阔, 是一个非常热门的研究方向。
人体姿态估计是对二维和三维的人体进行建模,检测出人体关键点位置信息。由于传统模型匹配方法具有局限性[7-9],人体姿态估计主要用深度学习方法解决,其中卷积网络为首选。 2014年Toshev等[10]将深度神经网络引入人体姿态估计算法,有效提高了人体关键点的检测性能。但随着对人体姿态估计网络性能要求的不断提高,运算复杂度也随之快速升高,因此在保持网络模型运行速度的前提下,如何保持网络模型对人体的关键点检测精度,是当前人体姿态估计网络模型改进和优化所面临的重要问题。
基于深度学习的姿态估计方法主要分为Single-stage、Bottom-Up、Top-Down 3种检测方法。Single-stage方法可一次性定位关键点位置和关键点所属目标,推理逻辑简单、速度快,但准确度低。Bottom-Up方法[11]是先定位得到所有人的关键点位置,然后将关键点进行聚类,得到关键点所属目标,该方法的计算和运行时间随着人数的增加几乎保持不变; 当使用上下文信息无法获得关节点相互关系时,便会出现关节点错组、杂乱等现象,该类方法推理速度快,但精度低。在COCO 2016关节点挑战[12]中取得了最好成绩的Cao等[13]提出了人体关节点亲和场来改进其中缺点。Kocabas等[14]提出将多任务模型与一种新的分配方法相结合,通过姿态残差网络来接收关节点和人体目标。Top-Down检测方法分为人体目标检测和单个人体姿态两部分,先通过检测区分目标,再将检测的人体送入单人姿态估计网络,例如文献[15-16]提出按顺序级联检测器和人体估计,文献[17-18]提出在整个网络中,直接预测人体目标框和关节点情况。Top-Down方法的优点在于精度高,缺点在于速度慢,跟检测人数有关,同时依赖于检测准确度。主要优化的角度一般包括网络模型结构、关键点编解码方法、中间层监督、损失函数等[19-20]。
本文使用Top-Down姿态估计方法,设计了一种特征高分辨率表征的姿态估计方法,该方法是基于Mask RCNN模型,提升姿态特征的空间位置信息,减少姿态估计的预测误差,进一步提升姿态估计性能。 该方法从模型结构角度,通过Mask RCNN模型检测实例,将实例的检测结果映射到特征金字塔的高分辨率特征层,通过Roi-Align提取特征金字塔的高分辨率特征输入关键点预测模块,然后上采样提高特征分辨率,最后将预测特征进行空间位置编码成分类任务,来获取实例的关键点二维空间位置,实现多人姿态估计。
基于Mask RCNN将分割任务分成四部分:主干+FPN获取不同level特征、RPN候选框提取、RCNN实例检测以及FCN全卷积网络进行实例分割预测。Mask RCNN网络结构示意图见图1,主干可以采用ResNet、DenseNet等网络,接一个FPN特征金字塔,提取不同分辨率特征,然后通过侧连接将低层空间位置信息与深层语义信息相连接。对于不同分辨率特征既包含语义分类信息又包含不同的空间位置信息,得到不同感受野大小特征之后,基于多层特征进行检测和分割的预测。首先对于每一层FPN特征都会预设不同尺度的锚框,对于高分辨率FPN特征则预设较小锚框,预测较小的目标,因为高分辨率特征的感受野较小;然后通过RPN候选框提取网络,该网络主要是对预设的锚框进行前景背景二分类和回归任务,用于候选前景区域的提取,对提取的候选框在多层level特征进行ROI-align,选取正负样本送入RCNN进行多类分类与坐标二次回归;同时对于包含分割信息的正样本候选框送入全卷积 FCN模块, 用于分割的预测,分割预测模块由多层卷积加分割编码预测层组成,预测每个目标的前景背景。
图1 Mask RCNN网络结构示意图
姿态估计训练样本中按照目标面积大小,将候选框分配到不同分辨率大小的金字塔特征进行预测,原则为根据特征的感受野大小,低分辨率特征具有大的感受野,高分辨率特征具有小的感受野,将大目标分配到低分辨率特征进行预测,小目标分配到高分辨率特征进行预测,与检测任务的分配方式一致;同时关键点对空间位置高度敏感,所以姿态估计预测模块输入特征需要通过ROI-align方式进行特征提取,来避免位置量化误差;同时关键点输入模块需要丰富的空间位置信息(图2),ROI-align得到的特征分辨率大小设为14×14。
图2 KeyPoint-RCNN网络结构示意图
把14×14的特征输入到关键点预测模块,关键点预测模块由多层卷积构成,为了保证特征的感受野大小,设置8层连续的卷积层,卷积核大小设置为3×3,卷积滑窗大小为1,卷积核数量设为512,卷积方式为same卷积,不改变特征分辨率大小;然后接一层反卷积层,反卷积通道数为关键点预测个数,在COCO数据集上预测17个点,则通道数为17,反卷积将14×14分辨率大小特征增大到28×28,最后连接一个双线性上采样层,将特征双线性插值到56×56,保证了特征的空间位置信息。
测试过程:先将RPN候选框生成器中分数最高的前1 000个候选框输入RCNN中, RCNN通过回归和分类, 得到一系列的检测框; 再将检测框根据其尺度在输入多层特征上进行ROI-align, 把14×14的特征输入到姿态估计模块, 通过8层卷积、一层反卷积和一层双线性插值得到56×56的特征图, 将56×56大小的特征图先插值到检测框大小, 然后在特征图上, 每个通道寻找最大位置点, 得到的位置点再加上检测框左上角位置, 就得到原图上关键点位置信息。
检测任务是将候选框分发到不同FPN特征金字塔上进行特征提取,分别为P2、P3、P4、P5 4层,将ROI-Align之后的特征联合起来输入RCNN进行分类与回归预测。其检测分发的原则为:按照检测候选框的尺度进行分发,大目标对应到小分辨率进行特征提取,小目标对应到高分辨率进行特征提取,FPN预测结构示意图见图3。
图3 FPN预测结构示意图
按照以上P2~P5 4层的分发方式,对一个目标分发到哪一层进行特征提取,根据尺度大小, 对应分配到FPN的具体层level的公式为:
(1)
式中:k0为基础level层,对应224×224尺度分配对应的层,选择P4作为k0层;w和h分别为图像的宽与高;⎣」为向下取整。当目标大于224×224, 设目标为448×448,则返回的k值为k0+1, 即返回到P5层,正好对应低分辨率特征,预测大尺度目标。当存在目标更大时,k值返回k0+2,由于最高层为P5预测层,也会只在P5层上提取特征。
对于姿态估计任务,候选框中选择带有关键点的候选框训练关键点分支。根据上述分析,关键点与分割任务不同于检测,对位置信息异常敏感,关键点任务会将ROI区域关键点映射到56×56固定特征图大小,同时会向下取整导致量化误差。当大目标分配到P5层低分辨率特征进行预测时,会导致提取的特征误差更大,但对于检测任务,大目标返回到原图32个像素误差,依然是可以满足检测需求且一般满足检测框相似度大于0.5;但关键点大目标相差32个像素误差是致命的,所以将关键点在检测任务分配的基础上,对任意候选框尺度都分配到高分辨率特征层进行预测,来减少检测特征提取的量化误差,考虑到当分配到P2层,特征提取耗时更加严重,这里选取P3层进行关键点预测特征提取,高分辨率表征姿态估计网络结构示意图见图4。
图4 高分辨率表征姿态估计网络结构示意图
在 P3 层上进行预测而不是采用在 P2 层进行预测,其第二个原因主要是 P3 的感受野更大, 能够更加充分感知整个姿态之间的连接关系与姿态结构。
本文是基于高分辨率特征表征的姿态估计方法研究,主要是根据检测任务与姿态估计任务对空间位置信息的要求,以及现有基于Mask RCNN架构的姿态估计方法其存在的问题,提出了基于高分辨率特征表征的方法,即对任意候选框都通过丰富的空间位置信息进行表征,减少量化误差。同时考虑到在姿态预测结构中,加入了多层卷积,预测特征本身具有更加丰富的感受野,所以在FPN特征结构中,采用高分辨率特征进行关键点姿态信息的提取。基于高分辨率表征的姿态估计算法步骤如下:
Step1 特征提取:输入大小为1 333×800,训练过程进行多尺度训练,输入图像先进行主干特征提取,采用基础主干模型 ResNet-50,主干ResNet-50是基于ImageNet检测预训练模型去除分类全连接层得到的;然后输入FPN特征金字塔结构,提取多层level信息,分别是P2~P7层特征提取。
Step2 对P2~P7每一个level层,都连接RPN 候选框提取器进行候选框提取,然后从提取的候选框中筛选512个候选框,训练RCNN检测分支。512个候选框中,正负样本的比例为1∶3,正样本训练回归分支,正负样本联合训练RCNN的分类分支。
Step3 对候选框正样本进行进一步筛选,筛选正样本中含有关键点信息的候选框作为关键点候选框训练样本Pkey,同时将真值框也作为关键点候选框,真正训练的候选框样本为:
(2)
Step4 将关键点候选框在P3高分辨率特征上进行 ROI-Align 特征提取,得到固定14×14 大小的特征,然后输入关键点预测模块进行关键点预测;关键点预测模块由8个3×3卷积层组成,然后通过反卷积以及上采样得到56×56分辨率大小特征,将关键点编码成空间位置进行训练,最后联合检测RCNN的分类与回归loss、RPN 的分类与回归loss,以及关键点loss。
Step5 在训练过程中,训练检测类别数为1, 因为只对人体进行检测。采用SGD优化器, 单卡 batch为8,总batch size为64,学习率设为0.08,warm-up为500 个iter;训练总的迭代次数为 22,训练检测类为人体1类,最后得到总的训练模型。
Step6 检测测试:测试过程首先输入图像为 1 333×800,通过主干和FPN特征金字塔特征提取,然后通过RPN候选框提取,取得分前1 000的候选框,通过其尺度分配到FPN不同level进行 ROI-Align,得到7×7固定大小分辨率特征输入RCNN,取得分前100个检测框作为人体目标的检测结果。
Step7 关键点测试:将检测目标全部分配到 P3层上进行ROI-Align特征提取,得到固定大小14×14分辨率特征输入关键点head模块,然后通过8层卷积核反卷积以及双线性插值得到56×56大小分辨率特征,然后在特征图上取最大位置点作为关键点检测结果,最后返回大图位置。
数据集采用COCO数据集进行试验,分别为训练集与验证集,COCO关键点个数为17,训练目标类为人体目标,训练与测试均为多人场景。
试验条件:算法与对比试验的环境一致,处理器为i7,内存为8GB,系统为Linux Ubuntu系统,显卡为英伟达GeForce GTX 1080,显存为8G。本方法采用的深度学习框架为Pytorch,开发编程语言为Python。
本文提出的高分辨率特征表征的姿态估计算法评价指标为OKS与mAP,其中OKS为姿态相似度,mAP为姿态估计平均精度,OKS主要是通过关键点之间的聚类衡量,第p个目标的OKSp的计算方式为:
(3)
基于高分辨率表征的姿态估计方法和Mask RCNN架构,本试验将与Mask RCNN 公开论文中的姿态估计性能在COCO数据集上进行对比。高分辨率特征姿态估计训练参数设置:训练输入大小为多尺度方式,短边范围为640~800,长边与短边成比例,最长为1333; 输入数据预处理方式为减均值除以方差,3个通道的均值为[123.675, 116.28, 103.53],方差为[58.395, 57.12, 57.375],训练卡数为8卡,单卡batch size为8,训练卡为英伟达V100,学习率为0.08,SGD优化器,动量项为0.9,weight decay为1e-4,其中设置 police的学习率下降方式,在15,22个epoch下降学习率,学习率下降倍率为0.1,采样warm-up的起始学习率更新,warm-up代数为1000,warm-up的倍率为1e-3;训练迭代次数为22,训练总的迭代次数与论文中设置一致,所有的参数选择更新学习。测试参数设置: 测试分辨率大小为1333×800单尺度测试,测试过程也进行图像预处理减均值除方差。
高分辨表征姿态估计方法在COCO数据集中每个batch size训练总损失与关键点分类损失如图5所示。从图中可以看出,模型总的损失函数以及关键点损失在训练过程都在整体下降,在所有的迭代次数之后,损失基本上优化到全局最优解。
图5 高分辨率表征姿态估计损失loss示意图
在训练的过程中为了跟踪RCNN模块的分类性能,计算每个batch中所有候选框的分类准确率,采用Accuracy进行评价,负样本候选框也参与评测,整个训练过程候选框的精度如图6所示。可以看出对人体实例的检测性能不断提升,当检测越准确,才能将人体目标进行进一步的姿态估计。
图6 RCNN模块在训练集的精度变化
对训练完成的模型进行检测与关键点可视化,在COCO验证集的检测结果与姿态估计结果可视化见图7。对检测的人体,进一步进行姿态估计,采用高分辨率特征表征的方法,无论对大目标还是小目标都能进行完整的姿态估计,姿态估计的对称姿态点误检较少,且关键点定位较为准确。
图7 COCO数据集测试可视化示意图
为了验证提出的高分辨率特征姿态估计方法的有效性,与Mask RCNN[18]姿态估计方法进行对比,验证集的性能见表1。姿态估计的评测指标为mAP,其中检测的评测指标也为mAP,对于姿态估计mAP会进一步对比不同相似度阈值下的AP以及不同大小目标的AP。
表1 高分辨率特征表征与Mask RCNN姿态估计方法 COCO验证集对比结果
由表1可以得到,本文提出的高分辨率表征姿态估计方法检测任务性能提升1.0%,姿态估计任务提升0.5%,其中在IOU50以及IOU75下都有对应的性能提升,IOU50 提升只有0.4%,可以看出高IOU下姿态估计性能提升更为明显,说明其高分辨率降低了特征下采样误差,其空间位置定位更准确。
为了进一步验证其在P3层提取高分辨率特征的有效性,还对不同层的特征进行了试验,试验对比见表2,可以得到在P3层上ROI-align的特征效果最好。
以上试验充分说明,P3层高分辨率特征表征,相比P2层其语义分类性能更优,但如果在更低分辨率特征进行特征提取,其姿态估计性能不断降低。同时由于训练过程中检测与姿态估计是相关的,姿态估计损失会影响检测的优化,导致其检测性能进一步降低。综上所述,本文设计的高分辨率特征表征的姿态估计其检测、姿态估计任务都相比论文Mask RCNN性能更高,充分验证了高分辨率特征表征具有一定的有效性。
本文首先介绍了 Mask RCNN 模型结构,然后分析了基于 Mask RCNN 的姿态估计任务方法与原理,分析了其对应的优缺点。将检测任务与姿态估计任务进行对比,分析得到姿态估计任务对空间位置信息更加敏感,在特征金字塔特征提取的基础上,将特征金字塔提取更高高分辨率特征输入姿态估计模块,一方面是降低关键点下采样量化误差,同时高分辨率特征具有丰富的空间位置信息, 提升关键点的检测性能。为了高分辨率特征提取,考虑到特征提取耗时,将特征金字塔中间层特征进行关键点任务的特征提取。通过试验对比,基于高分辨率特征表征的关键点预测方法准确度更高。