时间:2024-05-04
林怡雪,高尚,王光彩,刘晓欣,范迪
(山东科技大学,青岛266590)
人体骨骼关键点的定位是人机交互、智能安防、虚拟现实和行为识别等领域的重要部分[1]。人体关键点定位方法可分成两个类别:基于传统模型的方法和基于深度学习的方法[2]。传统的人体关键点定位方法主要基于可变形组件模型(Deformable Part Model,DPM)[3,4],实现对人体部件的探测、结构化分类及预测。在人体部件探测过程中,需要手动设计SIFT[5]、HOG[6]等算子提取低级特征并进行聚合。因此其最终预测结果会受前期手动提取特征的局限而不能达到令人满意的效果。
近年来,深度学习逐渐成为主流方法,它能够克服传统方法中存在的不足。2014 年Toshev 等人提出的DeepPose[7],直接利用神经网络回归关键点坐标,但因人体姿势变化灵活,场景复杂,因此很难预测准确。针对这一问题,Jain 等人提出了一种用热力图(heatmap)表示关键点的方法,其模型结合了卷积网络和图模型两部分,前者提取特征,后者则学习空间关系[8]。后来Tompson 等人提出了一种全卷积的网络(Fully Convolutional Network,FCN)模型来学习热力图[9],并进一步改进为利用多分支的级联(cascade)网络优化定位效果[10]。2016 年Nellwell 提出了一种经典的堆叠沙漏网络(Stacked Hourglass Network)模型[11],通过重复堆叠的上采样下采样和中间监督,将不同尺度的特征联系起来。
自然场景下多人的人体关键点定位更具挑战。Insafutdinov 等人提出DeepCut[12],用全连接图(Fully Connected Graph)中的整数线性规划(Integer Linear Program,ILP)解决分配问题,后续他又在此基础上加入ResNet[13],改进并提出DeeperCut[14]网络。OpenPose[15]引入关节引力场(Part Affinity Fields,PAF)使网络的准确率和速度均有提升。Mask R-CNN[16]通过多任务网络同时检测人体位置和预测关键点。Fang 等人提出的局部多人姿态估计(Regional Multi-person Pose Estimation,RMPE)方法可以减轻错误的人体检测结果带来的影响[17]。2018 年微软提出的Simple Baseline[18]方法利用简单的网络结构就能达到较高性能。2019 年中科大和微软亚洲研究院联合发布的HRNet(High Resolution Net)[19]利用并行结构保持高分辨率,一举打破了COCO关键点定位比赛的三项纪录。从算法策略上看,可以把多人关键点定位网络分为自底向上和自顶向下两类。前者先定位出图片中的所有关键点然后再进行聚类,如文献[12,14,15],后者先检测图片中的人再定位其关键点,如文献[16,17,18,19]。
然而自顶向下方法的效果对人体检测框依赖比较重,图片中的遮挡、干扰、复杂背景等容易使结果产生较大误差。针对这一问题,本文在特征金字塔网络的基础上引入注意力模块,通过权重分配使网络着重学习有用特征,以提高网络对关键点定位的精度。本文所设计的方法通过COCO 数据集进行了实验,从实验结果看,本文加入注意力模型后的CPN,相较于原网络而言,其平均准确率和平均召回率均有所提升,在单人、多人、干扰复杂、严重遮挡等情况下均获得了很好的定位结果。从与当前主要关键点定位算法对比实验看,本文算法的定位准确率或精度较对比方法有一定提升。
骨骼关键点的定位主要是通过对图片像素点进行预测打分,以确定最有可能为关键点的位置。本文所提出算法的框架是在CPN(Cascaded Pyramid Network)[20]的基础上加入CBAM(Convolutional Block Attention Module)[21]注意力模型机制,以提高网络输出的准确率。本文网络模型如图1 所示。
CPN 的基础骨架网络为ResNet-50。ResNet-50利用数个瓶颈块(bottleneck)为特征金字塔提供不同深度的特征信息。而CPN 通过分别在其中的第3、7、13、16 个bottleneck 块后输出提取的信息并进行融合,由于其输出特征尺寸逐渐由大变小而命名为特征金字塔网络。之后,不同大小的特征通过上采样统一尺寸,并被拼接层(concat layer)以第一维度(即通道方向)组合到一起,其中由浅到深各层上采样的倍数分别为1、2、4和8。
注意力模型CBAM 被加入到ResNet-50 最深层的bottleneck 之后。此结构可以在不改变整个网络整体架构的基础上,通过特征金字塔的逐层上采样网络作用在深浅不同的特征信息上。本文网络输出图片中的每一个像素点是骨骼关键点的预测概率,并组成热力图,之后由soft-argmax 函数将热力图转换为关键点的数值坐标并输出。
关键点定位基础框架采用CPN 级联金字塔网络。CPN 网络是一种自顶向下的人体关键点定位网络,它以人体检测网络的输出为输入,经过网络处理定位骨骼关键点。CPN 网络包括两部分:前期粗略检测关键点的GlobalNet 网络和微调网络RefineNet,其结构如图2 所示。
图1 引入注意力模型的CPN网络
图2 CPN特征金字塔网络结构
浅层特征在空间上具有较高的分辨率,但是语义上包含的信息量较少;深层特征语义上包含的信息较多,但空间分辨率较低。GlobalNet 利用网络结构将这两者结合,它利用骨架网络ResNet 中的瓶颈块提取信息,每经过一层处理,特征图的大小减半,而通道数增加两倍。在经过特征提取后,GlobalNet 将底层特征进行上采样,然后与上层特征叠加,实现浅层特征和深层特征融合。经过GlobalNet 的学习,网络已经能够基于外观特征预测出一些容易定位的关键点位置(如眼睛),但是另外一些需要基于上下文信息的定位,则需要后面的RefineNet 进行预测。
RefineNet 接收GlobalNet 输出的特征,并通过concat 层把这些信息拼合起来。同时RefineNet 在不同大小的特征信息后面加入了不同个数的bottleneck 块进一步细化提取信息。RefineNet 利用L2 损失作为监督,通过减小预测值与真实值之间的欧氏距离,重点学习那些难以学习到的关键点(如遮挡)。通过微调,网络可以在较小尺度的空间上达到效率和性能的平衡。
为了帮助计算机理解图像,现代深度学习网络常常会加入注意力机制,其本质是通过对图像特征信息分配权重系数,来强调对于学习目标有用的重要位置,而抑制某些无关紧要的信息。对于已有人体关键点定位网络而言,精度受限制的一个重要原因是受到复杂背景和遮挡的干扰。对于相距很近甚至紧挨的两个人,人体检测框无法完全将两人区分开。注意力模型能很好地解决这个问题。
本文为了提高CPN 网络模型的预测精准度,在骨架网络ResNet-50 的最深层bottleneck 后加入了注意力机制CBAM 模块,组成新的ResNet 模块,其模型架构如图3 所示。
图3 CBAM注意力机制模型
图3 注意力模块可分为通道注意力(channel attention)和空间注意力(spatial attention)两部分。其中通道注意力通过池化操作学习每个通道的重要度,从而对每个通道分配不同的权重。经过全局最大池化和平均池化后进入多层感知机(Multilayer Perceptron,MLP)进行学习,学习结果叠加后得到通道注意力。
空间注意力的输入为经过通道注意力加权的特征图,它学习特征图谱中各个位置对于需要估计点的重要性程度。分别经过最大池化和平均池化后,将二者按照第一维度进行拼接,之后通过一个大小为3×3 的卷积,最终生成空间注意力。
由于CBAM 中卷积操作都对原特征图进行了填充(padding),因此输出不改变特征大小,从而加强了此模块的可移植性,可以在不改变骨架结构的基础上插入网络。
本文方法主要在COCO[22]数据集上进行神经网络的训练和评估。此数据集包括143k 多张图片。其中有训练集图片118288 张,验证集图片5000 张以及测试集图片20288 张。COCO 数据集中关于人物的标注有250k 例,共有多达1700k 个人物骨骼关键点。COCO的标签有17 个关键点位置坐标,分别为鼻子、左右眼、左右耳、左右肩部、左右手肘、左右手腕、左右臀部、左右膝盖和左右脚踝。
实验平台是NVIDIA RTX 2070 显卡服务器及Anaconda 环境。网络输入的图片大小统一为256×128 像素,并经过随机裁剪及翻转进行数据增强。模型利用公开数据集ImageNet[23]的预训练模型进行权值初始化。实验过程中,利用Adam[24]优化器进行梯度下降,初始学习率设为5×10-4,每经过6 轮训练,学习率减半。
COCO 官方评价方法沿用了类似目标检测的相似度度量方法,即平均准确率(Average Precision,AP)和平均召回率(Average Recall,AR)并对之做了一定调整,使其适应关键点的评估。
COCO 数据集采用OKS(Object Keypoint Similarity)作为关键点相似度度量的指标,以此来判断某个点的预测是否准确,计算公式如下:
上式中OKSp表示图片中第p 个人的相似度指标,其中i 表示骨骼关键点的编号;dpi为第p 个人的第i个关键点的预测位置与真实位置之间的欧氏距离;sp为人体p 的尺度因子,定义为人体框面积的平方根;σi是人体骨骼关键点的归一化因子,由人工标注位置偏移的标准差计算得到;vpi为第p 人的第i 个关键点的状态,δ()为克罗内克函数,即只有被标注为可见的人体骨骼关键点(v=1)才计入评价指标,其公式如下:
由式(1)可知,两个关键点间的相似度取值在[0,1]之间。选定一个阈值t 后,通过将图上一点p 的相似度值即OKSp与t 作比较,可以判断p 是否预测准确。因此测试集上的平均准确率(AP@t)为:
平均准确率的均值AP 运用广泛,它表示在给定阈值在[0.5,0.95]的范围内以0.05 为步长递增下的平均准确率的平均值,其计算公式如下:
本文选取当前主要的关键点定位方法进行对比测试。实验在COCO 数据集上进行训练并在其test-dev中进行测试对比。对比实验的网络有CMU-Pose[25]、Mask R-CNN[8]、G-RMI[26]、PersonLab[27],以及CPN[20]。其中CMU-Pose[25]为2016 年的COCO 人体关键点定位比赛的冠军。评价指标采用AP、AR;阈值为0.5,0.75 的AP、AR;以及其在中型目标下的(APm,ARm)、大目标下的(APl,ARl)。
图4 本文改进的CPN 网络及原CPN 的实验对比结果。由图4 可知,本文改进CPN 网络的AP 和AR分别可达到72.3 和78.3,与原CPN 网络相比分别提高了0.7 和0.3。且在其他阈值及大中目标下的评价指标也均有所提升。
图4 本文改进网络与原CPN的比较
图5 是与CMU-Pose、Mask R-CNN、G-RMI、PersonLab 的对比实验结果。由图5 可看到,本文的网络在定位准确率上的表现明显优于自底向上的方法如CMU-Pose 和较新的算法PersonLab;较同类自顶向下的算法G-RMI 和Mask R-CNN,本文方法在精度上也有一定程度的提高。
图5 本文方法与当前主流算法在COCO数据集上的比较
图6 为本文网络在不同条件下的实验效果。图中人体的17 个关键点分别用不同颜色的点标识,并将相关联的点用彩色线条两两连接。结果表明,该网络不仅能够在单人图片如(a)、(d)、(g)中表现良好,且能在多人图片的复杂干扰情况如(b)、(c)、(e)、(f)中获得不错的效果。其中(c)、(g)包含小尺寸人体图片,(b)、(e)有严重遮挡,(b)、(d)包含图片中关键点不全的情况,都能很好的定位关键点。
图6 本文方法在不同条件下的测试效果
针对现有人体关键点检测网络在多人情况下因遮挡等干扰导致准确率低的问题,本文提出了一种改进CPN 的人体关键点定位算法,在原网络中引入了注意力模型CBAM,很好地发挥了CPN 特征金字塔网络对深层和浅层的融合,以及注意力模块分配权重学习有用信息的优势,提高了关键点定位的准确性。通过实验对比表明,本文方法比较好地改善了原CPN 网络及当前方法在遮挡、干扰、背景复杂等情况下检测不准的问题,实现了平均准确率和平均召回率均的提升。后续可以重点解决网络的轻量化问题,在不影响准确率的基础上减少参数,提高运行速度。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!