赵佳圆,张玉茹,苏晓东,徐红岩,李世洲,张玉荣
(1.哈尔滨商业大学计算机与信息工程学院,黑龙江 哈尔滨 150028;2.黑龙江省电子商务与智能信息处理重点实验室,黑龙江 哈尔滨 150028)
近年来,人体姿态估计任务[1]已经成为计算机视觉领域的研究热点,主要应用于人机交互[2]、行为识别[3]等领域。该任务的主要目的是检测并定位图片中所有人体关键点,例如手、膝盖等。目前的研究表明,尽管卷积神经网络在姿态估计任务中表现不错,但对于局部信息比较敏感,要想获取全局上下文信息,就必须依赖更大的卷积核或更深的层。目前,许多单尺度网络都采用经典的编解码器结构,例如文献[4-5]介绍上述网络通过卷积、池化等下采样操作提取特征,并通过上采样操作恢复分辨率。虽然这样的结构已经取得了很好的性能,但对于复杂关键点的识别精度难以提升,主要原因是单尺度网络缺乏输入空间的上下文信息。为了解决这个问题,文献[6-7]提出了多尺度结构,将不同尺度的特征进行融合,以获得共享的特征表达。
虽然多尺度结构已经取得了不错的效果,但是它在实际任务中仍然会受到人体可变性和外部因素的影响。此外,复杂的关键点(如“膝”和“脚踝”)很难被精确识别。在MPII 数据集中,高分辨率网络(HRNet)对简单的关键点(如“头”和“肩”)的PCKh@0.5 精度已经接近饱和,分别为96.2%和95.0%。然而,对于复杂的关键点,例如“膝”和“脚踝”,PCKh@0.5 精度仅达到84.3% 和80.6%,这限制了模型的整体性能。虽然高分辨自回归网络(HR-ARNet)[8]对HRNet[7]模型进 行改进,并引入 了卷积注意力模块(CBAM)注意力机制[9]和自注意力机制[10],然而单阶段的自注意力机制会使模型的注意力范围过大,缺乏对特定区域的控制,导致学习到的关节之间的关系不清。
本文提出一种基于注意力机制的人体关键点隐式建模网络,旨在建模关节之间的关系,从而提高复杂关键点检测的能力。该模型由两种不同的注意力机制组成[10-11],首先通过HRNet 网络对输入图像进行初步的特征提取,随后采用十字注意力网络和多阶段的自注意力机制准确识别复杂的关键点,之后隐式建模关键点间结构化信息以提高模型的整体性能,最后采用焦点损失函数解决训练过程中可能弱化不可见关键点的问题,加速模型收敛速度并提高识别能力。
早期的人体姿态估计方法大多基于概率图和图结构模型来解决[12-13],用若干个可变形的“部件”(即肢体,如头部、手臂、腿等)组成的集合来表示一个完整的人体结构,各个部件采用模板匹配来进行检测,然后依据各个部件之间的空间约束关系对人体姿态的关键点进行建模。近年来的研究表明,深度卷积神经网络的方法在人体姿态估计任务中取得较好的效果。
文献[14]介绍基于深度学习的人体姿态估计算法DeepPose,并借鉴深度神经网络(DNN)在图像分类等任务上的良好表现,展开了使用DNN 进行人体姿态估计的研究,将原本的手工特征提取和模板匹配问题转换为网络自动提取特征和关键点坐标回归问题。文献[15]介绍基于热图的人体姿态估计模型,提出了由深度卷积神经网络(DCNN)和马尔可夫随机场(MRF)组成的一种新的混合架构,通过渲染关键点热图的方法,从改变真值的角度提升模型精度。文献[5]提出了Hourglass 模型,可以在所有尺度上对特征进行处理和合并,以最好地捕捉与身体相关的各种空间关系,并且采用了重复的自下而上与自上而下的中间监督机制来提高模型性能,且为了生成最终预测集采取池化和上采样的连续步骤。之后出现了许多基于多尺度特征融合的方法,例如文献[16]提出了级联金字塔网络(CPN),该网络结合特征金字塔结构与多尺度特征融合,通过多尺度信息显式地处理“难”关键点,最后将不同尺度的信息通过上采样和拼接得到最终特征图。文献[8]提出基于图搜索方法,将残差模块扩展到金字塔网络中,增强DCNN 的尺度不变性。文献[4]提出由SimpleBaseline 继承沙漏结构,但使用残差网络(ResNet)[17]替换掉原有的对称结构,为人体姿态估计任务提供了新的特征提取网络。文献[18]提出通过结构化空间学习,使用三阶段多特征深度卷积网络框架生成初始姿态,保持时间一致性,从而获得精准的人体姿态估计结果。文献[19]介绍了利用帧间时间差异建模动态上下文,利用互信息量寻找关键信息,去除噪声,提升姿态估计精度。
与上述方法不同,文献[7]认为由低到高恢复分辨率的过程会损失一些特征信息,故提出全程保持高分辨率特征的网络HRNet,该网络由并行高分辨率与低分辨率子网络组成,并在多分辨率子网络之间重复交换信息,通过重复多尺度融合,在相同深度和相似级别的低分辨率表示的帮助下提高高分辨率表示,从而使高分辨率特征图也有丰富的姿势估计。经过这样全程保持高分辨率特征,反复的多尺度特征融合,可以生成更精确的关键点热图。由于这样密集的多尺度特征融合,使卷积神经网络学习了共享的特征表达,也使得该结构得到了最先进的结果。此外,文献[16]使用在线难关节点挖掘(OHKM)损失函数代替普通的MSE 损失函数,从损失函数的角度提升了模型的识别精度,更加关注一些复杂的关键点。
注意力机制是一种用于计算机视觉系统中快速高效地关注重点区域的特性。它被广泛地应用于各种计算机视觉任务中,如图像分割[20]和目标检测[21]等。文献[9]提出卷积注意力模块(CBAM),如图1所示,它结合了空间和通道之间的注意力特征。通过卷积建立特征之间的相关性,CBAM 可以提高特征在通道和空间上的联系,更有利于提取目标的有效特征。CBAM 中的空间注意力模块的输出需要经过7×7 卷积进行信息整合,但由于7×7 的感受野受限,对于人体姿态估计任务往往需要更大的感受野。为了解决这个问题,在语义分割任务中,文献[11]介绍了十字交叉注意力网络(CCNet),如图2 所示。CCNet 将感受野扩大到全局范围,从而提高了图像分割的精度。
图1 CBAM 注意力机制Fig.1 CBAM attention mechanism
图2 十字交叉注意力机制Fig.2 Cross attention mechanism
随着Vision Transformer[22]的推出,人体姿态估计任务的新思路随之而来。Transformer 的主要思想是通过计算输入之间的注意力和自注意力来获得全局感受野。虽 然PoseFormer[23]是第1 个使用 纯Transformer 架构进行姿态估计的模型,但由于纯Transformer 结构的特征提取能力较弱,需要大量的训练数据,因此大多数工作使用卷积神经网络(CNN)与Transformer 相结合 的架构。例 如,TokenPose[24]使用CNN 进行特征提取,并将每个关键点嵌入到一个Token 中,以同时从图像中学习约束和外观线索。HR-ARNet[8]提出了注意力细化网络,利用注意力机制对HRNet 提取的特征进行细化,使用单阶段自注意力机制寻找关节远距离关系。但是,使用单阶段方法会使每个关键点的注意力不集中。受到TransPose[25]的启发,本 文方法对CNN 提取的特征进行迭代注意力计算,以达到细化目标关键点的目的。
本文旨在构建一个可即插即用的网络,用于建模人体关键点之间的远程关系。首先描述模型的整体架构,然后对注意力计算进行数学分析,最后通过结合相关损失函数的方法达到对复杂关键点识别的目的。
本文提出一种基于注意力机制的关键点隐式建模网络,如图3 所示,该网络由3 个部分组成,分别是CNN 主干网络用于特征提取、特征筛选网络基于十字交叉注意力机制、多阶段关节隐式建模网络。
图3 关键点隐式建模架构Fig.3 Architecture of key points implicit modeling
为了证明本文提出方法的有效性,本文选择当前精度最高的HRNet[7]作为主干网络,并使用经典的特征提取网络ResNet[17]作为主干网络来证明本文方法的鲁棒性。
HRNet 在整个网络前向传播的过程中能够保持输入图片的高分辨率特征,并且在不同阶段进行高低分辨率特征融合,从而在MSCOCO 和MPII 数据集上获得了优于以往研究的成果。如图4 所示,在HRNet 的最后一层将前面各层子网信息进行融合,产生输出,并且全程保留高分辨率信息。由于并行的子网代表来自之前网络中不同尺度的语义信息,直接聚合会存在信息冗余。因此,本文使用十字交叉注意力机制关注关键信息,抑制冗余信息,从而增强了网络的特征融合能力。
图4 HRNet 网络结构Fig.4 HRNet network structure
特征筛选网络基于十字交叉注意力机制搭建,设从主干网络输出得到局部特征图为F∊RH×W×C,其中,H×W代表特征图的分辨率,C代表通道数。将其通过两个1×1 卷积映射至不同特征空间,得到两个分别为Q与K的特征张量,{Q,K} ∊RC'×W×H,C'表示特征图的通道数,且C' <C,同时通过另一个1×1卷积,得到一个V特征张量,V∊RC×W×H。在Q张量中某个位置沿通道取出一向量Qu,Qu∊RC'。同时,在K张量中相同位置,取出该位置所在一行与一列的 一组向量,即特征向量Ωu∊R[H+W-1]×C',将 两个向量进行融合,融合运算定义如下:
其中:i∊[1,2,…,(H+W-1)];u代表平面维度;di,u代表特 征Qu与Ωi,u之间的 相关程 度,且di,u∊R[H+W-1][W×H],Ωi,u代表Ωu中的第i个元素。经过融合计算后,应用Softmax 对位置关系进行归一化,得出注意力权重A。在V中位置u处取出该位置所在一行与一列的一组向量,即特征向量φu∊R[H+W-1]×C,用于远程上下文信息聚合操作,聚合运算定义如下:
最终输出Hu' 大小为C×W×H,通过这样计算,可以达到对局部特征进行增强的目的,拥有一个更加宽阔的上下文视图。
在人体姿态估计任务中,卷积运算只处理卷积核大小的局部信息,若想获得远距离关键点之间的关系,则需要扩大感受野。目前基于卷积神经网络扩大感受野的方法大多为增加卷积神经网络的深度或者增大卷积核[26],但这无疑带来了更大的计算量。
为解决这一问题,本文利用自注意力机制来寻找关节之间远距离依赖。设CNN 主干网络输出特征图F∊RH×W×C,首先通过1×1 卷积将其映射至特征图Fforward∊RH×W×d,以提升网络对特征的表征能力。如果直接使用特征图F计算相似性,则直接体现了语义上的相似性,在计算注意力权重时会产生一定的局限性。而映射到新的空间后,则增加了输入之间相似性计算的多样性,不仅仅是在语义上的相似性,更加强化了上下文的注意力。之后将其特征图展开为X∊RL×d的序列,其中L=H×W,经过N层注意力网络和前向传播网络。多阶段关节建模网络整体架构如图5 所示。
图5 多阶段关节隐式建模网络Fig.5 Multistage joint implicit modeling network
对于上一阶段特征图,首先通过3个矩阵Wq、Wk、Wv∊Rd×d将其映射至Q∊RL×d、K∊RL×d和V∊RL×d。之后,注意力分数矩阵A∊RN×N计算方式如下:
其中:Wq、Wk、Wv3 个矩阵中的参数都是可学习的。自注意力机制通过计算向量之间的相关性,很好地解释了特征图之间的相关性,从而建模远距离关节关系。而通过堆叠N层,可以逐渐细化响应位置。
网络的FNN 部分是必不可少的,在自注意力机制的计算内部结构中进行的是线性变换,而线性变换的学习能力不如非线性变换强。尽管注意力输出利用自注意力机制,学习到了每个特征的新表达形式,但是这种表征的表达能力可能并不强。通过使用激活函数,可以加强数值较大的部分并抑制数值较小的部分,从而提高相关部分的表达效果。此外,在全连接层中,将数据映射到高维空间再映射到低维空间的过程可以学习到更抽象的特征,同时也可以防止过拟合。
本文提出基于热图的姿态估计方法,在网络对图片预测过程中,网络针对每个关键点生成一张概率图,共有X张概率图,X为关节点数量。假设是模型预测第k个关键点概率图,由高斯函数渲染,Hk~N(zk,σ),其 中,zk=(xk,yk),表示输 入图像 中第k个关键点位置,损失值由均方误差计算:
可以看出,如果通过所有关键点计算损失值,则有可能会使网络关注简单关键点,如“头”等,而忽略复杂关键点,如“膝盖”等。本文使用焦点损失,反向传播前Y个关键点损失,使模型更能关注复杂关键点,表达式如下:
本文使 用公开 数据集MPII 数据集[27]和MSCOCO 数据集[28]评估本文的方法。所有模型用PyTorch 框架实现,实验显卡使用一块NVIDIA GeForce RTX 2080 Ti。
MPII数据集包括约25 000张图片和超过400 000个带有16 个关键点的标签。该数据集涉及410 种人类活动,例如“骑自行车”、“滑雪”等,其中有超过33 000 个不可见关键点,且许多图片的背景十分复杂。这使得该数据集非常适合评估本文的工作。本文使用官方数据集划分,使用包含22 246 张图片的训练集来训练模型,并使用包含2 958 张图片的验证集来验证模型的有效性。参照之前的工作[6,29],输入图像是根据注释中心的尺度参数从原始图像中裁剪出256×256 像素的图像。MSCOCO 数据集包含超过200 000 张图片和250 000 个带有17 个关键点的人体实例。在MSCOCO 数据集中,将输入图像的分辨率大小调整为256×192 像素。MSCOCO 数据集被划分为train、val 和test-dev 3 个集合,分别包含57 000 张、5 000 张和20 000 张图片。本文实验在train 集上进行训练,并在val 集上进行验证。
MPII 数据集 评价指标为PCKh[27],其计算方式如下:
其中:X为关键点数;PPCKh@α是头部阈值为α时预 测正确关键点的比例;f(pi)代表关键点相似度。f(pi)计算方法如下:
其中:0.6L表示人体头部区域框对角线长度的60%;是关键点pi的预测值是关键点pi的真值;代表预测值与真实值之间欧氏距离;α为头部归一化阈值。
在MSCOCO 数据集上,使用Average Precision(AP)做评价指标。AP 基于关键点相似度(OKS)计算,OKS 计算方式如下:
其中:di为网络预测值与真实值的欧氏距离;vi代表该关键点的可见性;s代表物体像素面积;ki代表关键点影响因子。平均精度指标与召回率表示如下:AP50(OKS 为0.5 的AP 值),APM(中尺度目标),APL(大尺度目标),AP(OKS 为0.50,0.55,…,0.95 的平均精度),AR(OKS 为0.50,0.55,…,0.95 的平均召回率)。
本文在Nvidia GeForce RTX 2080 Ti 显卡上对其他模型进行复现,用于与本文方法进行对比。表1与表2 为本文方法在MPII 数据集与MSCOCO 数据集上的实验结果(加粗字体为最优值)。
表1 MPII 数据集实验结果Table 1 Experimental results of MPII dataset %
表2 MSCOCO 数据集实验结果Table 2 Experimental results of MSCOCO dataset
为体现本文方法可适用于不同特征提取网络,本文分别使用HRNet 与ResNet 做主干网络进行定量分析。实验结果表明,本文方法能够提升不同特征提取网络的准确性,并提高复杂关键点的识别能力。在MPII 数据集中,使用本文方法对HRNet 和ResNet 两种网络进行实验,结果显示在HRNet 的基础上,本文方法的精度提高了1.7%,而对于ResNet,精度提高了18.6%。值得注意的是,在以HRNet 为主干网络的实验中,关键点“膝”和“脚踝”的精度分别提高了3.1%和2.3%。在以ResNet 为主干网络的实验中,关键点“膝”和“脚踝”的精度分别提高了24.1%和25.6%。这表明本文方法对不同的特征提取网络都有效,并且具有鲁棒性。
实验结果显示,在MSCOCO 数据集中,使用ResNet 作为主干网络时,平均精度(AP)提高了34.7%,而使用HRNet 作为主干网络时,AP 仅提高了2.6%。对比实验结果表明,使用经典的ResNet 作为主干网络的精度可以与其他优秀模型相媲美,这再次证明了本文提出方法的有效性。
为确定模型中超参数,本文以MPII 数据集为基准数据集,HRNet 为特征提取网络,对超参数进行消融实验。
1)多头注意力:本文使用了多头注意力机制来建模网络。不同头数的注意力机制代表了模型从不同角度提取特征,因此导致了不同的最终效果。本文分别尝试了头数为1、2 和4 个的情况,并将结果列在表3 中。实验结果表明,当头数为2 个时,模型效果最佳。然而,当头数增加时,效果开始下降。这可能是因为增加头数会导致模型的注意力分散到其他区域,从而削弱注意力机制。相反,使用单头注意力机制可能会使模型过度关注当前位置,而忽略其他信息。
表3 模型头数消融实验结果Table 3 Ablation experiment results of model heads
2)隐式建模层数:本文对隐式建模网络中隐式建模层数N进行消融分析,实验结果如表4 所示。从表4 可以看出,当隐式建模层数为4 时,模型效果最佳。相较于2 层网络,4 层网络更注重“难”关键点的提取,具有更细致的特征。但是,6 层网络相较于4 层网络并没有明显提升,这表明过多的层数可能会导致特征冗余,影响模型精度。
表4 隐式建模层数消融实验结果Table 4 Ablation experiment results of implicit modeling layers
3)特征筛选网络:本文对不同的特征筛选网络进行比较,实验结果如表5 所示。从表5 可以看出,相较于CBAM 网络,十字交叉网络更适合人体姿态估计任务,这表明在人体姿态估计任务中,空间信息更有利于关键点的检测。
表5 不同特征筛选网络消融实验结果Table 5 Ablation experiment results of different feature screening networks %
4)关键点损失数:本文对焦点损失反向传播关节损失个数Y进行消融实验,实验结果如表6 所示。实验结果表明,当Y=5 时,模型表现最佳。相比于不使用焦点损失,即Y=16 的情况,焦点损失可以提高模型的精度,与假设一致,即焦点损失可以使模型更加关注“难”关键点。当Y>5 时,模型的精度会下降,这可能是因为随着关节损失个数的增加,模型对于“难”关键点的关注减弱,从而导致精度降低。
表6 关键点损失数消融实验结果Table 6 Ablation experiment results of key point loss count
对隐式建模的每个阶段的可视化如图6 所示。从图6 可以看出,不同的CNN 架构具有不同的关节依赖偏好。但随着注意力层的增加,两个模型的关注点都会逐渐细化,即使是不可见点,模型仍然可以通过其他关节线索对其进行推断。如图7 所示,分别展示了在MSCOCO 验证集与MPII 验证集上的结果。本文使用自注意力机制,打破卷积操作的局部感受,使用非局部方法对关键点结构隐式建模,以提升模型的识别能力。但本文算法具有一定的局限性,由于本文算法仍属于热图方法,需要足够的内存,难以在资源受限的设备上运行,虽然使用了非局部方法,但由于自注意力机制只能在有限的上下文中关注特征的相关性,因此仍有可能存在一定的局部感受,需要更详细的分析和实验来确定。
图6 不同骨干网络的可视化结果Fig.6 Visualization results of different backbone networks
图7 在MSCOCO 和MPII 验证集上的可视化结果Fig.7 Visualization results on MSCOCO and MPII validation sets
本文提出一种基于注意力机制的人体关键点隐式建模方法。首先基于十字交叉注意力机制搭建特征筛选网络,增强关键特征,抑制不重要特征;其次采用多阶段自注意力机制构建关键点隐式建模网络,通过反复计算关节特征之间相关性,明确学习关键点之间约束关系,隐式建模关节之间的高阶关系;最后采用焦点损失,使模型更加关注复杂识别关键点,提升模型对复杂关键点的识别能力。实验结果表明,本文方法能够很好地融入任意人体姿态估计特征提取网络中,即插即用,可以提高网络识别精度,并具有泛化能力。下一步将从图形学角度对本文方法进行研究,以达到提升模型关键点识别能力、缩短模型的训练时间和提高模型鲁棒性的目的。