孙琪翔,张睿哲,何 宁,张聪聪
1.北京联合大学 北京市信息服务工程重点实验室,北京 100101
2.北京联合大学 智慧城市学院,北京 100101
人体姿态估计是在给定的图像或视频中对人体的关键部位或者主要关节进行检测,最终输出人体全部或局部肢体相关参数(各个关节点的相对位置关系)的过程,例如人体轮廓、头部的位置与朝向、人体关节的位置和部位类别等[1]。人体姿态估计是人体行为识别的基础问题,人体行为识别在人类生活的众多领域得到广泛的应用,如视频监控、运动检索、人机交互、智能家居以及医疗保健等任务。
从实现姿态估计的角度考虑人体姿态估计主要有两种方法:自上而下方法和自下而上方法。自上而下的方法依赖检测器来检测人体实例,每个人都有一个边界框,然后将问题减少到单个人的姿态估计。Fang等人[2]提出一个局部的多人人体姿态估计(regional multiperson pose estimation,RMPE)框架来减少错误的检测结果对单人姿态估计带来的影响。Chen 等人[3]提出(cascaded pyramid network,CPN)方法,该方法在特征金字塔网络(feature pyramid network,FPN)的基础上结合RefineNet 进一步优化难预测的关键点。类似的,Huang 等人[4]提出一个Coarse-Fine 网络,利用多尺度监督并融合粗细特征得到最终的预测结果。Xiao等人[5]提出一个简单但是有效的网络来进行多人姿态估计和跟踪。Newell 等人[6]提出stacked hourglass network 来 有效地学习结合不同尺度的特征,其中沙漏模块(hourglass module)即在卷积反卷积(Conv-deconv)模块中加残差链接(residual connections)。hourglass的有效性使得之后很多工作都采用了类似的模块,例如Yang等人[7]在hourglass 的基础上提出了金字塔残差模块(pyramid residual module)提高应对身体部位的尺度变化的能力。自上而下方法在进行人体姿态估计时,会把大小不同的检测框统一到一个尺度进行学习,因此对尺度不敏感,对小尺度的人也相对容易预测;然而对于目标检测要求较高,如果检测有误差,后面很难恢复;另外运行时计算量与图片中的人数成正比,人越多,计算量越大。
自下而上的方法,首先要找到图片中的所有关键点,比如所有头部,左手,膝盖等。然后把这些关键点组装成一个个人。在引入深度学习方法后,Pishchulin等人[8]提出DeepCut 把分配问题建模成全连接图(fully connected graph)中的整数线性规划(integer linear program,ILP)问题,之后很多工作围绕解决ILP 问题展开,Iqbal等人[9]提出可以局部地求解ILP 问题,不过还是没有很好地解决这个问题。Insafutdinov等人[10]提出DeeperCut用更深的ResNet[11]来估计关键点,并使用依赖图像的成对的项和一个增量优化策略来提高推测效率。Levinkov等人[12]提出了两种局部搜索算法可以单调收敛到局部最优,为ILP问题提供了一个可行的解决方案。Varadarajan等人[13]结合人体内在的结构信息,提出一个贪婪的分配算法来降低ILP问题的复杂度。Cao等人[14]提出的OpenPose 把关键点之间的关系建模成关节引力场(part affinity field,PAF),来帮助更好、更快地分配关键点,其不论是准确率还是速度相较之前的方法都有了巨大的提升,第一次使多人姿态估计的速度可以达到实时的级别。接下来一些工作致力于同时学习关键点位置和怎么分配关键点,以免除复杂的分配后处理。Newell 等人[15]提出associative embedding可以在预测关键点的同时预测一个标记热图(tag heatmap),用来帮助进行关键点组别分配。Xia 等人[16]提出的semantic part segmentation 侧重于对关键点部件的聚类。Papandreou 等人[17]提出的PersonLab 同时学习关键点和其相对位移,用来直接聚集同一个人的关键点。Tang 等人[18]提出一种组合模型来表示人体各部分的层次关系,可以解决底层关键点模糊的问题。自下而上的方法不受目标检测的误差影响;计算量与图像中有多少人无关,因此效率提升较大;然而对尺度较为敏感,对小尺度的人比较难预测。上述人体姿态估计方法都是基于卷积神经网络,针对图像的卷积运算都是在空间上进行局部卷积操作,而局部卷积操作往往因为无法参考全局信息而造成一些偏差。为了解决这个问题,通常会使用更大的卷积滤波器或有更多卷积层的深度网络。虽然有改善,但是也导致了计算效率低、优化困难的问题[11]。针对以上问题,本文提出了一种基于非局部神经网络的人体姿态估计方法,能够从主干网络的层面解决这个问题,首先设计非局部神经网络模块,然后将该模块与目前最优人体姿态估计骨干网络HRNet 进行融合,最后本文设计了3 种NLHR 网络结构,在MPII(MPII human pose dataset)[19]和COCO 人体关键点数据集[20]上验证了相关算法的有效性。
本文提出的方法目的在于提高人体姿态估计的准确率,因此本文的骨干网络选择了高分辨率网络(highresolution network,HRNet),HRNet 是由中科大和微软亚洲研究院Sun 等人[21]在2019 年共同提出的高分辨人体姿态估计网络。HRNet 与以往的串行人体姿态估计模型不同,大多数用于关键点热图估计的卷积神经网络由类似于分类网络的主干网络组成,主体采用分辨率由高到低、再由低到高的框架,增加多尺度融合和中继监督优化,其网络结构如图1所示。
图1 传统网络结构Fig.1 Traditional network structure
HRNet为并联结构,通过并行连接高分辨率到低分辨率卷积,可以一直保持高分辨率特征,并通过重复跨并行卷积执行多尺度融合来增强高分辨率特征信息。从特征分辨率的角度看,HRNet网络由4个并行子网络组成,同一子网络特征的分辨率不随深度变化而变化,并行子网络特征图分辨率依次降低一半,同时通道数增加到两倍。从HRNet 网络的深度上看可以分成4 个阶段,第1 阶段由1 个子网络构成,第2 阶段由2 个子网络构成,第3 阶段由3 个子网络构成,第4 阶段由4 个子网络构成,每个阶段之间由融合模块构成,融合模块将不同分辨率特征信息融合,以此增加网络的特征表示,如图2所示。不同分辨率的特征图有不同的细粒度,关注原图像不同尺度的区域,这些特征之间存在互补性。通过组合这些特征,可以得到更好的人体特征表示。
图2 HRNet网络结构Fig.2 HRNet network structure
借助HRNet 强大的特征表示能力,本文将HRNet作为NLHR网络的骨干网络。
HRNet网络是现阶段人体姿态估计领域的最优网络架构,可以兼顾准确率和网络参数量,但是HRNet 和传统网络一样都是使用卷积神经网络(convolution neural network,CNN)作为特征提取的方式。卷积神经网络有一定局限性,例如在5×5 卷积中,卷积滤波器有25个像素,目标像素的值参照自身和周围的24个像素来计算,这就意味着卷积只能利用局部信息来计算目标像素,而局部卷积操作往往因为无法参考全局信息而造成一些偏差。当然有很多方法可以缓解这个问题,比如使用更大的卷积滤波器或者更多卷积层的深度网络。但是这些方法往往会带来较大参数量,而结果的改善很有限。在人体姿态估计领域,人体的关节点结构性特征,利用传统的卷积提取方式,无法有效地在局部就获取到人体的全部特征,而增加了全局特征就能更好地提取到人体的全部姿态特征,从而提高人体姿态估计的准确率,为了获取的人体姿态的全局特征,本文方法引入非局部均值的概念。
为了实现对每个像素的全局参考,Wang等人[23]结合上述非局部均值的特点,提出了一个泛化、简单、可直接嵌入到当前网络的非局部网络模块,非局部网络模块的描述如公式(4)所示:
本文方法融合了非局部网络模块和HRNet。首先对非局部网络模块封装,具体定义如公式(5)所示:
结合上述公式和具体实验参数,设计的非局部网络模块如图3所示。
图3 非局部网络模块Fig.3 Non-local network module
通过公式(5)可知非局部的操作可以保持输入的参数大小,非局部网络模块是可以改变输入值的,并且非局部网络的输入端和输出端,参数是相同的,因此能否提高人体姿态估计的准确率取决于NLHR网络的结构设计。
HRNet在第4阶段包含4个分支子网络,根据文献[21]越小的分辨率包含有越强的语义信息,底层分辨率也更丰富。因此,为了突出图像的底层特征,在第4 个分支上融合非局部网络模块。具体NLHR 网络结构如图4所示,此时通道数为256,分辨率为原始图像的132。
图4 NLHR网络结构Fig.4 NLHR network structure
非局部网络模块的特点是保持输入参数和输出参数的一致,且不会影响原始网络使用预训练权重,为了验证NLHR 网络是否为最优网络架构,在3.3 节消融实验中,从分辨率和非局部网络模块数量的角度出发,设计消融实验,确定最优的网络结构。
实验环境为Ubuntu 16.04.6 LTS,64 位操作系统,Intel Xeon®CPU E5-2678v3@2.50 GHz,内存12 GB,显卡RTX2080Ti 以及Cuda10.0.130、Cudnn7.5、Pytorch1.4和Python3.6 的软件平台。网络预训练模型使用在ImageNet数据集上预训练的参数。
数据集:MPII 数据集是从YouTube 视频中提取,其中30 000张人体姿态图像用于训练,10 000张人体姿态图像用于测试,每个人体有16个标注的关键点。COCO数据集由超过200 000张样本图片组成,包含250 000个人体目标及17个标注的关键点。
PCKh评价标准[19]。通过对测试图像中每个人进行明确的边界限定来获得检测准确率。给定边界框框内的候选区域包含原始关键点坐标位置,控制相关阈值得到不同准确率来判断预测的关键点是否定位合理,选择阈值r=0.5。PCKh 用于人体躯干大小代替头部框大小,将该尺度作为归一化其他部件的距离,距离采用欧式距离。如果检测关键点与标签关键点的欧式距离在该阈值范围内,则该检测结果是正确的。以第k类人体关键点为例,PCKh的计算方式如公式(6)所示:
OKS 评价标准[20]。基于COCO 评估指标OKS,AP是对于不同关键点类型和人物大小尺寸的归一化,是关键点之间的平均关键点相似度,在[ ]0,1 之间,预测越接近原值则趋向1,反之趋向0。OKS定义如公式(7)所示:
其中,t为给定OKS 的阈值处理分别取(0.50,0.55,…,0.90,0.95),预测准确率由测试集所有图片中人物的OKS 指标计算得到。APM表示中等大小目标的准确率,APL表示大目标的准确。
本文将人体检测框的高度或宽度扩展到固定的长宽比:高∶宽=4∶3,然后将人体检测框从图像中裁切出来,并重新调整到固定大小256×192。同时本文对数据增强的操作包括随机旋转[-45°,45°]、随机尺度[0.65,1.35]和翻转。根据文献[24]本文也包括半身的数据增强。
在优化器的选择上,本文使用Adam优化器[25],学习率的设定遵循文献[5],基础学习率设定为10−3,在第170个epoch和第200个epoch分别降为10−4和10−5。最终训练过程在210个epoch结束。
在MPII数据集上的实验结果如表1所示,与HRNet的实验结果基线相比,NLHR 网络的准确率提升了0.2个百分点,根据文献[21]造成这种小幅提升的原因可能为MPII数据集的准确率趋于饱和。
表1 MPII验证集上的实验结果(PCKh@0.5)Table 1 Experimental results on MPII validation se(tPCKh@0.5)%
针对MPII 数据集,以32 通道宽度作为骨架网络进行消融实验,首先,在HRNet 的第一阶段增加非局部网络模块,并将该网络模块命名为NLHRv1,网络的平均准确率和基线网络相比没有明显变化为90.3%,然后,在HRNet 的最后一层,增加非局部网络模块,此时网络的平均准确率相较于基线网络由90.3 提升至90.4%。最后使用NLHR作为网络结构,网络的平均准确率提升至90.5%。如表1 所示,可以得出非局部网络模块在低分辨率阶段可以获得更好的特征表示,而在高分辨率网络阶段的效果有限。
接下来,以32通道宽度的网络作为骨架网络,输入图像的大小设置为256×192,针对COCO2017 数据集,分别从非局部网络模块数量和在HRNet 不同阶段增加非局部网络模块的角度上设计NLHR 网络结构并在COCOval2017上进行测试。
结合HRNet 的4 层结构,本文设计3 组网络结构并进行消融实验。第1 组网络结构:在HRNet 第1 个分支子网络上每隔1 个融合阶段增加1 个非局部网络模块。此时,网络的通道数32,分辨率为原始图像的1/4。设计NLHRv1b1、NLHRv1b2、NLHRv1b3、NLHRv1b4 网络,分别有1、2、3、4个非局部网络模块。网络参数量、浮点运 算 量(Giga floating-point operations per second,GFLOPs)和准确率的比较,如表2所示。
表2 COCO数据集网络参数量、GFLOPs和精度对比Table 2 Comparison of network parameters,GFLOPs and accuracy of COCO datasets
在本阶段的消融实验中,随着非局部网络模块数量的增加,模型的参数量会有明显的增加,导致训练难度增大,虽然会带来准确率的提升,但是效果有限。
第2组网络结构:分别在HRNet的不同分辨率阶段增加非局部网络模块。设计NLHRr1、NLHRr2、NLHRr3、NLHRr4 网络,分别在原始图像分辨率的1/4、1/8、1/16、1/32阶段增加非局部网络模块。实验结果如表3所示。
表3 COCO数据集网络参数量、GFLOPs和精度对比Table 3 Comparison of network parameters,GFLOPs and accuracy of COCO datasets
在本阶段的消融实验中,网络参数量和GFLOPs随着非局部网络模块的增加而逐渐增加,在精度上相较于单个非局部网络模块几乎没有提升。
总结以上3组消融实验,准确率最好且网络参数量和计算复杂度相对较低的是NLHRr4 网络。从网络结构的角度来看,NLHRr4 网络与初始设计的NLHR 网络结构相同。
在本阶段的消融实验中,分别在1/4、1/8、1/16、1/32分辨率阶段增加非局部网络模块,随着分辨率的降低,网络参数量略有提升,GFLOPs 几乎没变,网络的准确率逐渐提升,一直到原始图像1/32 分辨率的阶段,准确率达到最高。
第3组网络结构:依次在HRNet的不同分辨率阶段增加一个非局部网络模块。设计NLHRr1b1、NLHRr2b2、NLHRr3b3、NLHRr4b4 网络,分别在1/4、1/8、1/16、1/32分辨率阶段依次增加1 个非局部网络模块。实验结果如表4所示。
表4 COCO数据集网络参数量、GFLOPs和精度对比Table 4 Comparison of network parameters,GFLOPs and accuracy of COCO datasets
NLHR 网络在COCO 验证集上的结果和近年来的其他方法对比结果如表5所示,可以看出本文方法在图像输入大小相同的情况下准确率相较于基线方法有大幅度的提高。平均准确率比基线准确率高出2.3个百分点,在中等尺度目标和小目标上的准确率分别提高2.9和2.7个百分点。与感受野更宽且图像输入大小更大的HRNet-W48 相比,本文方法的准确率上依然领先。从网络的参数量和GFLOPs的角度来看,和基线网络的参数量进行对比,本文方法增加了0.6×106。在COCO 验证集上的平均准确率AP 增加2.3 个百分点。与此前结果最优的HRNet-W48 网络相比,HRNet-W48 网络的规模更大,宽度更宽,参数量达到63.6×106,远高于本文方法,但是本文方法的平均准确率AP仍能高出0.4个百分点。综上,NLHR 网络在准确率最优的前提下,网络的参数量仍能控制在较低的水平。
表5 COCO验证集上的实验结果比较Table 5 Comparisons of experimental results on COCO validation set
本文对NLHR 网络在COCO 验证集上的测试结果图做了可视化,不同视角、单人、多人、大目标和小目标的人体姿态估计结果如图5 所示。可以看出,本文方法在不同情境下进行人体姿态估计,效果都能做到更精确。
图5 NLHR网络在COCO验证集上的测试结果图Fig.5 NLHR network test result images on COCO validation set
本文以HRNet作为骨干网络,结合传统方法非局部均值的思想提出了NLHR 网络用于人体姿态估计。该网络利用非局部神经网络模块的优势实现了对卷积神经网络固有局限的改进。在COCO和MPII数据集上的实验结果表明,本文方法在网络参数量与HRNet基线网络的参数量相差很小的情况下,准确率有较大的提升,即使与更大规模的网络相比,准确率仍有优势。在人体姿态估计中,更高的精度往往需要更复杂的网络作为支撑,如何在提高精度的前提下,更好地控制网络的参数量会是接下来的研究重点。