牛 悦, 王安南, 吴胜昔
(华东理工大学能源化工过程智能制造教育部重点实验室,上海 200237)
姿态估计通常是指识别和定位图像中的人体关键点,它是人体动作识别和人机交互等许多计算机视觉研究方向的基础课题。早期的人体姿态估计被表述为树形图形结构模型[1-6]的问题,一般采用手工标注关键点位置来预测特征。近年来,依赖于卷积神经网络(Convolutional Neural Network,CNN)[7]的发展,姿态估计网络的性能得到极大的改善,但在一些特殊场景如视频安监人员危险作业的拍摄过程中,往往人员稀少且常出现人体部分区域被物体遮挡或重叠的情况,难以获取包含人体所有关键点的图像,这给人体姿态估计任务带来很大的挑战。
DeepPose[8]首次使用深度神经网络(Deep Neural Networks,DNN)获取人体全部关键点的上下文信息,将人体姿态估计作为关键点回归问题。堆叠沙漏网络(Stacked Hourglass Networks)[9]利用下采样和上采样模块来处理和整合各个尺度的特征,通过生成热图[10]捕捉人体关键点之间的空间关系。Simple Baselines 网络[11]提供了一个简单的基线方法用于人体姿态估计,虽然这两个模型可以提高姿态估计的性能,但其中的上采样和反卷积操作会导致部分信息损失从而无法准确定位关键点。高分辨率网络(High-Resolution Network,HRNet)[12]通过一系列的卷积和多尺度特征融合可以得到包含更丰富语义信息和更精确空间位置信息的高分辨率表征,但计算量繁杂且需要一定的存储空间来保存各个尺度特征信息。级联金字塔网络(Cascaded Pyramid Network,CPN)[13]由全局网络(GlobalNet)和精炼网络(RefineNet)组成,GlobalNet基于类似特征金字塔网络(Feature Pyramid Network,FPN)的主干网络提取足够的上下文信息以识别简单关键点,RefineNet 将来自GlobalNet的所有尺度的特征进行处理并融合,结合在线困难关键点挖掘(Online Hard Keypoint Mining, OHKM)算法对困难关键点进行预测,使模型对被遮挡人体关键点的检测性能得到进一步改善。
在特征提取网络中添加注意力机制[14]可以让模型自适应地寻找需要关注的区域并对该部分分配更大的权重,突出重要特征并抑制和忽略无关特征以提高网络的表示能力。STN[15]引入了一个可学习的空间维度转换模块,使模型具有空间不变性。SENet[16]从通道维度上得到权重矩阵对特征进行重构,它没有充分利用空间信息,同时也忽略了使用最大池化操作进一步细化特征。残差注意力网络(Residual Attention Network)[17]是兼顾通道抽象特征和空间位置特征信息的混合注意力机制,但其参数量和计算量较大。具有广泛适用性的卷积块注意力机制(Convolutional Block Attention Module,CBAM)[18]将通道和空间信息混合在一起进行特征提取,它利用平均池化和最大池化生成注意力图,依次通过通道和空间注意力模块来重构细化特征。
综上所述,本文以CPN 作为被遮挡人体姿态估计的整体网络架构,提出一种结合注意力机制的级联金字塔模型CBAM-CPN。本文模型的整体架构遵循自上而下的检测方法,首先使用类似于FPN 的目标检测器找到人体边界框的位置,再在其中用CBAM-CPN 进行姿态估计;将深度残差网络ResNet-50[19]作为提取不同尺度特征图的基础框架,并把CBAM 注意力机制引入残差模块的Bottleneck 之后,含注意力机制的深度残差网络将会提取更丰富的特征信息,这使得模型能够检测人体目标和精准识别被遮挡关键点;同时在RefineNet 中使用OHKM 算法来计算损失函数,给予了难以识别的关键点更多的关注,从而使模型精确度进一步提高。
CBAM-CPN 的整体框架包括特征提取网络和级联金字塔姿态估计网络,如图1 所示,其中Ci是不同级别的特征图。
图1 CBAM-CPN 整体框架Fig.1 Framework of the CBAM-CPN
相同深度的残差网络相较于普通网络精确度显著提高且更容易训练。为了进一步提升网络的检测性能,在考虑使用ResNet 作为主干网络的基础上,本文将能够无缝集成到任何CNN 中的简单高效的CBAM 注意力机制添加到残差分支中。CBAM 是一个用于前馈卷积神经网络且具有广泛适用性的轻量级通用模块,对网络的效率几乎没有影响,并且可以与CNN 一起进行端到端的训练,使网络自适应地提取重要特征的同时抑制或忽视不必要的特征,以此来增强网络的表达能力,也有助于网络中的信息传递。
CPN 包括GlobalNet 和RefineNet 两个模块。GlobalNet 网络架构基于添加了CBAM 的ResNet 主干能提取不同层级的特征表示,它可以提供丰富的信息。该网络能够有效定位容易识别的关键点,对于精确预测被遮挡或重叠的关键点却无能为力。虽然存在许多难以通过单个GlobalNet 直接识别的关键点,但GlobalNet 的输出对于推断这些关键点的位置是至关重要的。为了提高效率并保持信息传输的完整性,RefineNet 通过拼接来自GlobalNet 的所有尺寸的特征图,实现跨不同层级传输信息,再借助OHKM算法计算损失函数来预测余下的困难关键点。
为了提供给姿态估计网络更丰富的特征信息,将引入了CBAM 注意力机制的ResNet-50 作为模型的特征提取网络。
2.1.1 残差网络 由于ResNet 更容易训练且只需简单地将残差映射的权重置零就可以拟合普通网络难以拟合的恒等映射。根据网络的层数,将常见的ResNet 进行分类,如表1 所示。
表1 常见ResNet 网络的结构Table 1 The structure of common ResNet
针对ResNet-50 这类残差映射为瓶颈结构的深层网络,通常用 1×1 卷积进行降维和升维来解决输入特征图通道维度较大带来的参数量增多的问题。RseNet-50 的通道数是不含瓶颈结构的残差网络的4 倍,这意味着它较后者可以提取更多的通道域信息,但 1×1 卷积操作使得二者具有相似的时间复杂度,即ResNet-50 在模型容量和性能上有一个较好的权衡。
本文用ResNet-50 来提取特征,它由多个残差模块堆叠而成。残差模块如图2 所示。
图2 残差模块Fig.2 Residual module
用式(1)表示为:
其中:x、y分别是残差模块的输入与输出特征图。函数F(x) 为由3 层卷积神经网络构成的残差映射。用式(2)表示为:
式中: σ 表示ReLU 激活函数。
在ResNet-50 的残差映射F(x) 中,对输入依次进行 1×1 、 3×3 和 1×1 卷积操作用以降维、特征处理和升维,将输出的维数恢复后,与恒等映射的输出逐元素相加,再对其使用ReLU 激活函数。
ResNet-50 一共有5 个阶段,其整体结构如图3所示。
图3 ResNet-50 整体结构Fig.3 Structure of ResNet-50
在一个阶段内,残差模块输出特征图尺度不变,维度与恒等映射的输出相同,二者直接逐元素相加;进入到下一阶段后,在第一个残差模块中使用步长为2 的卷积进行下采样,特征图大小减半且通道数发生改变,需要用 1×1 卷积处理恒等映射来匹配维度,用式(3)表示为:
因为每个阶段的最深层模块具有最丰富的特征表示,所以将第2~5 个阶段中最后一个残差模块的特征激活输出,以提取4 种不同深度的图像特征信息用于人体姿态估计。
2.1.2 CBAM 注意力机制 为了进一步增强特征提取网络的表达能力,在ResNet-50 的残差模块中加入即插即用的轻量级的CBAM 注意力机制,如图4 所示。
图4 加入CBAM 注意力机制的残差模块Fig.4 Residual module with CBAM attention mechanism added
特征图 Feature ∈RC×H×W为CBAM 的输入,其中C、H、W分别为通道数、高和宽。
因为生成单一维度的注意力图需要较少的参数量和计算成本,所以针对三维输入特征图,CBAM 通过分解过程依次得到一维的通道注意力图和二维的空间注意力图,通过二者自适应地细化输入特征图,而不是直接计算三维的注意力图,用式(4)和式(5)表示为:
式中: ⊗ 表示逐元素乘法,Mc∈RC×1×1是通道注意力机制生成的权重矩阵即通道注意力图, Feature′是通道注意力模块的输出,Ms∈R1×H×W是空间注意力图,Feature′′是空间注意力模块的输出。
通道注意力机制压缩了输入特征图的空间维度,利用其通道间关系生成注意力图,如图5 所示。
图5 通道注意力机制Fig.5 Channel attention module
首先通过平均池化和最大池化操作聚合输入特征图的空间信息,得到两个不同的空间语义描述算子∈RC×1×1和∈RC×1×1,然后将二者分别作为共享的包含一个隐藏层的多层感知机(Multilayer Perceptron,MLP)的输入以生成通道注意力特征向量。为了减少参数量,隐藏层神经元的个数为C/r(其中r为通道缩减率),因为中间特征图的通道数和训练批量通常可被16 整除,所以r固定为16[18],以提升MLP 的效率。将得到的两个通道注意力特征向量的对应元素相加,再使用激活函数,获得最终的通道注意力图Mc(Feature)∈RC×1×1。该过程用式(6)表示为:
式中: σ′为sigmoid 激活函数,W0、W1∈RC×C/r均为共享MLP 的权重。Mc中每个权重表示对应通道的特征图对于关键信息的重要性和关联度。
空间注意力机制利用被重构之后特征图的空间关系生成空间注意力图,如图6 所示。首先沿通道方向同时进行平均池化和最大池化聚合输入特征图的通道信息,分别得到两个二维的通道特征描述算子∈R1×H×W和∈R1×H×W。为使二者特征融合将它们进行维度拼接以生成有效的空间特征矩阵,然后用 7×7 卷积获得空间注意力矩阵,再通过激活函数得到一个二维的空间注意力图Ms(Feature)∈R1×H×W,它包含了要关注或抑制信息的空间位置。该过程用式(7)表示为:
图6 空间注意力机制Fig.6 Spatial attention module
式中:f7×7表示过滤器为 7×7 卷积运算。空间与通道注意力机制相辅相成,可以有效地突出含有关键信息的区域[20]。
从利用CBAM 增强后的ResNet-50 中提取到浅层特征和深层特征均包含更多的信息,而网络性能的提升正是源于注意力机制对有意义信息的准确关注和对无关信息的抑制。
CPN 包含GlobalNet 和RefineNet 两个模块,它采用自上而下的检测策略处理被遮挡的人体姿态估计问题。首先使用类似于FPN 的目标检测器生成人体边界框,因为池化操作会造成一定程度的信息损失,所以目标检测器用Mask R-CNN[21]中的ROIAlign取代FPN 中的ROIPooling 操作,然后在边界框内进行单个人体关键点的准确定位。
2.2.1 全局网络 把从特征提取网络中得到的4 个不同层级的特征图C2,C3,C4,C5作为GlobalNet 的输入,由它们构成特征金字塔。把 3×3 的过滤器直接用于C2,C3,C4,C5以生成关键点热图。其中C2和C3是浅层特征,具有较高的空间分辨率,但缺乏语义信息;C4和C5是深层特征层,包含更多的语义信息,但由于多次跨步卷积或池化,空间位置信息较少。为了使所有尺度的特征都具有丰富的语义信息,把深层特征通过上采样和上一层的浅层特征通过横向连接(Lateral Connection)逐元素相加。上采样操作是在原有图像的像素点之间采用双线性插值算法插入新元素,从而改变原图像的大小。
GlobalNet 的具体流程如图7 所示。迭代开始时,在最后一个阶段的输出C5上进行 1×1 卷积得到最粗略的特征图,通过上采样改变其空间尺寸大小,再将它与C4均进行一次 1×1 卷积操作以保证横向连接的两层特征维度相同,然后通过逐元素加法进行求和得到融合了不同层级特征、具有更丰富信息的特征图。这样逐层迭代,最终生成最精细的特征图。为了消除上采样的混叠效应用两次卷积来处理(i=2,3,4,5) ,最后再通过上采样生成GlobalNet 的输出P2,P3,P4,P5(Pi是GlobalNet 的不同级别的输出)。
图7 GlobalNet 的流程图Fig.7 Flowchart of GlobalNet
GlobalNet 的预测网络通过预测热图获得简单关键点坐标,如图8 所示。
它对各层级的关键点都进行预测。GlobalNet 的损失函数用式(8)和式(9)表示为:
式中: Lossg为4 路损失函数值之和,采用的是均方根误差(Mean Squared Error,MSE);Mi为第i个层级的关键点预测值;M*为人工注释关键点的真实值;Nj,k、分别为第j个人体的第k种关键点的预测值和人工注释关键点的真实值;n为人体边界框个数;m为1 个人体的关键点个数。
2.2.2 精炼网络 GlobalNet 的输出作为RefineNet 的输入,将P2,P3,P4,P5先分别通过4 路由一定数量堆叠的瓶颈模块和上采样构成的精炼网络,将各层级的特征在通道域上拼接之后再通过一个瓶颈模块得到RefineNet 的输出。如图9 所示。
图9 RefineNet 的流程图Fig.9 Flowchart of RefineNet
RefineNet 的预测网络如图10 所示。它通过热图定位难以识别的关键点坐标,采用的损失函数为Lossohkm。网络在训练中会逐渐出现更加关注可见关键点的倾向,而这些关键点可能在GlobalNet 中就已经被准确定位。相反,网络给予被遮挡关键点的关注不够,它们难以被有效预测。为了确保复杂关键点也能被识别, Lossohkm使用OHKM 算法来计算损失函数,在线筛选难以识别的关键点并在这些关键点上使用梯度下降和误差反向传播的方法,增加网络对它们的关注度。用式(10)表示为:
图10 RefineNet 的预测网络Fig.10 Prediction network of RefineNet
式中Ni,j、分别为第i个人体的第j种关键点的预测值和人工注释关键点的真实值。先将每个关键点的均方根误差降序排序,它们的排名表示关键点的预测复杂程度,排名越高即该关键点越难预测,应给予更多的关注,用前 topk个关键点的均方根误差计算OHKM 误差,以这些关键点的损失函数代替RefineNet 网络整体的损失函数进行训练。
CBAM-CPN 的实验验证分为标准人体姿态估计和被遮挡人体姿态估计两个部分。本节依次介绍人体姿态估计的数据集、评价指标,再对实验设置进行说明,最后对实验结果进行分析。
标准人体姿态估计实验使用MPII 数据集和MS COCO2017 数据集进行验证,被遮挡人体姿态估计实验使用3DOH50K 数据集进行验证。MPII 和MS COCO2017 是用于人体姿态估计的公开基准数据集。MPII 从在线视频中提取出大约25 000 张图像,每张图像包含1 个或多个人,总共有超过40 000个人带有注释的身体关键点,一般将28 000 个样本用作训练集,11 000 个用作测试集。MS COCO2017是由微软公司收集和发布的1 个大规模的关键点检测数据集,它分别提供了大约118 000 和5 000 个样本作为人体姿态估计的训练集和验证集。3DOH50K是第1 个用于遮挡场景中人体重建和姿态估计的3D 数据集,它包含51 600 张具有准确的2D 和3D 注释的图像,其中训练集和测试集的样本个数分别为50 310 和1 290。本文采用的是含有14 种人体关键点的2D 注释。
标准人体姿态估计实验使用由MPII 数据集规定的正确关键点比例(Percentage of Correct Keypoint,PCK)和由MSCOCO2017 数据集规定的目标关键点相似度(Object Keypoint Similarity,OKS)作为模型精度的评价指标。
在MPII 数据集中,将人体头部长度作为归一化参考值,提出PCKh 评价指标,它常用的阈值为0.5、0.2和0.1,分别对应PCKh@0.5、PCKh@0.2 和PCKh@0.1,预测关键点与其对应的人工注释真实值之间的归一化距离小于设定阈值,则此关键点被视为正确预测。用式(11)表示为:
式中:i为关键点下标,di为第i个关键点预测值与其人工注释真实值之间的欧式距离,ddef为归一化参考值即人体头部长度,T为设定的阈值。
在MS COCO2017 数据集中,评价指标是通过计算预测关键点和其真实值的相似度来衡量的,用式(12)表示:
式中:vi为第i个关键点的可见度标志位; δ(·) 为可见度判断函数;vi=1 表示第i个关键点无遮挡且已被注释;vi=2表示第i个关键点有遮挡但已被注释;s=为关键点的衰减常数,其值为人体边界框面积的平方根;ki为第i类关键点的归一化参考值,是通过计算所有样本集中人工注释的关键点与其真实值之间的标准差得到的,ki越大表示此类型的关键点越难注释。OKS 的值在 [0,1] 范围内, OKS=1 表示完美预测,但它通常为一个范围,当其大于或等于设定阈值T时,表示预测关键点正确,否则预测错误。
在3DOH50K 数据集中,单个人体包含14 种关键点,根据图像中被遮挡人体关键点的个数1~3、4、···、8、9 将数据集分别划分为10%、20%、···、60%、70%这7 种不同的遮挡比例,将对这7 种样本进行检测,其OKS 值对应的平均分数分别为mAP10、mAP20、 mAP30、 mAP40、 mAP50、 mAP60 和mAP70,并用平均精度作为被遮挡人体姿态估计模型的评价指标。
具体实验环境设置如下:本文网络结构使用深度学习框架Pytorch 搭建。硬件配置:操作系统为Windows10,处理器为Intel(R) Core(TM) i9-9900K CPU@3.60 GHz,安装内存大小为32 G,GPU 型号为NVIDIA GeForce RTX 2080 Ti,安装的为Cuda10.0。
在实验中将结合注意力机制的级联金字塔网络模型的训练周期设置为100,批量大小设置为64,优化器设置为Adam,学习率设置为0.01,学习率衰减率设置为0.03,学习率衰减周期设置为10 000 批次,模型验证周期设置为1 000 批次,输出输入尺寸的比值为8,输出维度为 19×38 。
3.4.1 标准人体姿态估计实验 CBAM-CPN 在MPII数据集上进行标准人体姿态估计实验验证,结果如表2 所示。以PCKh@0.5 作为模型在MPII 数据集上的评价指标,分别得到各个关键点的精度并计算它们的平均精度。由表2 可知,相比Stacked Hourglass模型[9]、Simple Baselines 模型[11]、HRNet 模型[12]、Structure AwareNet 模型[22]、能够实时跟踪人体关键点的PoseNet 模型[23]和GHRCPN 模型[24],本文提出的CBAM-CPN 模型的各个关键点预测精度和平均预测精度较高,尤其是头部和肩部关键点的识别分数分别达到了99.1 和97.5,为人体姿态估计与其他领域的交互提供了有利条件,如安全帽佩戴检测和安全背心检测等。
表2 MPII 数据集PCKh@0.5 对比实验结果Table 2 Comparative experimental results of MPII dataset PCKh@0.5
在MS COCO2017 数据集上进行标准人体姿态估计实验验证,结果如表3 所示。表中,APT为阈值为T时的分数,APL、APM分别为图像中大目标和中等目标检测的AP 分数。
表3 MS COCO2017 数据集OKS 对比实验结果Table 3 MS COCO2017 data set OKS comparison experiment results
由表3 可知,本文提出的CBAM-CPN模型的精度相比Stacked Hourglass 模型[9]、Simple Baselines 模型[11]、HRNet 模型[12]、HigherHRNet 模型[25]、G-RMI模型[26]和相较PoseNet 模型[23]拥有更快计算性能的MoveNet 模型[27]均有不同程度的提升。实验结果表明,CBAM-CPN 模型在标准人体姿态估计上表现出更优的关键点预测性能。
3.4.2 物体遮挡人体姿态估计实验 在3DOH50K 数据集上进行被遮挡人体姿态估计实验验证,按照人体14 个关键点被遮挡比例将数据集中的样本划分为7 个类别进行实验,取 topk为8,结果如表4 所示。
表4 3DOH50K 数据集OKS 对比实验结果Table 4 3DOH50K data set OKS comparison experiment results
以OKS 作为模型在3DOH50K 数据集上的评价指标,通过实验统计得到在各种遮挡比例下的OKS 平均分数。由表4 可知,SimplePose 模型[28]、MultiStageConv 模型[29]和CrowdPose 模型[30]在遮挡比例超过30%的场景中姿态估计的平均精度小于70%,HRNet 模型[12]和GHRCPN 模型[24]在遮挡比例超过40%时,平均分数小于70,CBAM-CPN 模型比这些相关研究具有更好的鲁棒性且在遮挡比例达到50%的情况下,平均分数仍可保持在70 以上。
在3DOH50K 数据集上,可视化CBAM-CPN 模型在物体遮挡比例为10%、20%、30%、50%、60%、70%的6 种场景下人体姿态估计实验中的预测结果如图11所示。
图11 物体遮挡人体姿态估计实验可视化Fig.11 Object occlusion human pose estimation experiment visualization
由实验结果可知,CBAM-CPN 模型可以有效地定位被遮挡的人体关键点,是一种具有较高精度的人体姿态估计模型,且在被遮挡的场景中具有很好的鲁棒性,它为关键点被遮挡、关键点重合和复杂背景等情况下的人体姿态估计问题提供了一种可供参考的解决方案。
3.4.3 CBAM 注意力机制消融实验 本文比较了基本的CPN 模型和在特征提取网络中融入注意力机制的CBAM-CPN 模型在标准和物体遮挡人体姿态估计实验中的性能,网络的其他结构不变,结果如表5、表6 所示。
表5 标准人体姿态估计CBAM 注意力机制消融实验Table 5 Standard human pose estimation CBAM attention mechanism ablation experiment
表6 物体遮挡人体姿态估计CBAM 注意力机制消融实验Table 6 Object occlusion human pose estimation CBAM attention mechanism ablation experiment
由表5 可知,在标准人体姿态估计实验中,相比基本的CPN 模型,本文模型在MPII 数据集上的平均分数提高了1.2,在MS COCO2017 数据集上的各个OKS 阈值下的识别精度均较高,其中,整体分数提高了4.1,为基本模型(CPN)的5.6%。CBAM-CPN 模型比基本模型在两个典型的公开数据集上都表现出更优的关键点预测性能。
由表6 可知,在物体遮挡人体姿态估计实验中,相比基本的CPN 模型,CBAM-CPN 模型在3DOH50K数据集上的不同遮挡比例下的OKS 精度均较高,其中,平均分数提高了4.0,为基本模型的5.9%。这是因为CBAM-CPN 在基础的特征提取网络ResNet-50 的残差分支中添加了CBAM 注意力机制,增加网络对重要的通道抽象特征和空间位置特征的关注,从而获得包含更有效信息的关键点特征。
姿态估计任务不仅需要有实验的硬件配置和网络算法,还需要具备庞大的数据训练库作为基础。对于标准人体姿态估计实验,用两个具有代表性的公开数据集MPII 和MS COCO2017 来训练网络,二者均提供了大量的训练样本使网络能够得到较为理想的实验结果。但对于物体遮挡人体姿态估计实验,使用3DOH50K 数据集中包含的训练和测试样本数量较少,数据集中图像背景单一且风格类似,这一定程度上对遮挡实验的结果造成影响。
优质数据集能够提升模型的准确率,但无论是依靠手工标注还是动作捕捉设备,数据集的制作成本都很高。当前遮挡场景下的人体姿态估计数据集的采集大多利用动作捕捉设备,其仅能对特定环境中固定范围内活动的人体进行动作捕捉,故在室外场景遮挡人体姿态估计任务的数据样本相对匮乏,仅依靠目前的公开数据集训练出的网络性能仍有待提高。
人体姿态估计是当前计算机视觉领域的热门研究课题,现有的一些相关研究均可以有效地预测关键点,但在被遮挡的场景下却难以达到准确识别关键点的目的。本文提出了一个结合注意力机制的级联金字塔模型(CBAM-CPN)用于解决物体遮挡人体姿态估计问题,将CBAM 注意力机制融入CPN 模型的特征提取网络ResNet-50 的残差模块中,使得深度残差网络给予重要区域的特征信息更多的关注,从而可以提取到对于正确定位被遮挡关键点更加有用的信息,通过相辅相成的GlobalNet 和RefineNet 依次预测出简单关键点和困难关键点的位置。实验结果表明,CBAM-CPN 模型在标准情况和物体遮挡情况下的人体姿态估计均有较优准确性和较强鲁棒性。如何获取包含更多遮挡人体样本的数据集,以及如何进一步提高模型的精度和使模型轻量化将是今后的研究方向。