张雯雯,徐杨,2,白芮,陈娜
(1.贵州大学 大数据与信息工程学院,贵阳 550025;2.贵阳铝镁设计研究院有限公司,贵阳 550009)
人体姿态估计作为计算机视觉领域的主要研究方向[1],应用范围十分广泛。目前,姿态估计存在2 个方面的难点[2]:不同摄影机角度和遮挡目标的检测与识别以及运算效率。姿态估计最初基于图像结构[3],即使用树形结构来模拟身体各部分之间的空间关系。但是当身体存在遮挡时,会导致重复计算。随着机器视觉的快速发展,研究者开始采用卷积神经网络的方法进行计算,大幅提高了姿态估计的准确性[4]。近年来,动物姿态估计在动物学、生态学、生物学和农业等领域广泛应用[5]。动物姿态估计的基本目标是定位并解析动物关键点,如下巴、腿和臀部等。目前,用于研究动物姿态估计的网络主要是深度卷积神经网络,其按阶层结构对输入信息逐层提取抽象特征并学习计算,最终得到动物关键点。
现有包含动物图像的数据集多数都是为分类和检测而构建的,只有极少数是为解析动物关键点而构建的[6],而为动物标注大量数据集代价非常高。目前,采用深度学习方法进行人体姿态估计已经获得了显著的成果,但由于缺乏大量动物标注数据集,深度学习方法并不适合解析动物,将现有的深度学习方法直接应用于动物姿态估计是不可行的。由于合成动物数据集[7]的成本较低,产生具有丰富真实地面的合成动物数据集也更容易,因此许多研究者在进行实验时使用合成数据。然而,合成数据和真实数据之间存在很大的域间隙[8],从而使得在合成数据上训练的模型不能很好地应用到真实数据上。
研究者经实验发现,通过联合使用合成动物数据集和真实动物数据集,可使成本最小而效果达到最优[9]。CHANG等[10]创建了包含多种3D 模型的ShapeNet,但其中SMPL 是为人类构建的;CAO等[11]提出一种跨域自适应方案来学习人类和动物图像之间的共享特征空间,从现有的人类姿势数据集中进行学习,此外,还根据置信度得分选择伪标签进入训练;ZUFFI等[12]为了恢复更详细的动物三维形状,提出从真实动物复制纹理,并以端到端的方式预测动物的3D 网格;VAROL等[13]为研究可变形对象的解析,渲染了真实的合成人体模型以缩小合成数据和真实数据之间的差距;TOSHEV等[14]提出深度姿态DeepPose 估计网络,针对人体关键点进行深度神经网络回归学习,但该网络很难检测到精确的小目标;CHEN等[15]提出的级联金字塔网络(Cascaded Pyramid Network,CPN),使人体被遮挡关键点的检测性能得到改善,但因缺乏关节间的结构信息,该方法对多尺度的姿态估计泛化性能较差;NEWELL等[16]提出用于姿态估计的堆叠沙漏网络(Stacked Hourglass Network,SHN),其改进版本在人体姿态估计领域得到了成功应用[17],但在高低分辨率恢复过程中会产生误差,导致检测精确度不高。
本文将堆叠沙漏网络作为动物姿态的基本网络框架并进行改进,联合使用合成动物数据集和真实动物数据集训练模型,解决动物姿态估计缺乏数据标签的问题。设计基于SE(Squeeze-and-Excitation)注意力机制的多尺度最大池化模块 MMPM-S,融合4 种不同尺度下的图像特征,解决池化操作后特征信息大量丢失的问题。针对沙漏网络在编码-解码过程中丢失网络浅层定位信息的问题,设计基于 CBAM(Convolutional Block Attention Module)注意力机制的改进沙漏模块IHNM-C,并进行多级特征融合,从而提高网络对多通道信息的提取能力,优化需要融合的特征信息,以最小的参数代价有效提高网络精度。
堆叠沙漏网络(SHN)利用多尺度特征来识别姿态,其由多个沙漏模块(Hourglass Module,HM)串联而成,能够在多尺度空间中进行特征提取及融合,解决模型参数量大和计算量大的问题[18]。如图1 所示,HM 形状呈沙漏状,结构类似镜像结构(彩色效果见《计算机工程》官网HTML版,下同)。
图1 沙漏模块结构Fig.1 Structure of hourglass module
HM 使用编码-解码(encode-decode)的结构,主要由下采样和上采样操作构成。下采样的目的是降低分辨率和计算的复杂度,上采样通过最近邻插值法进行,目的是提高图像特征的分辨率,这种自上而下和自下而上的设计使得网络在每个尺度上都能提取关节点特征,层层叠加后得到最后一层特征图,既保留了所有层的信息,又能和原图的大小一致。
本文使用的堆叠沙漏网络由4 个主要的沙漏网络构成。由于沙漏网络整合了局部和全局的信息,因此SHN 对每个沙漏网络的输出热图和真实热图都进行了损失计算,通过级联结构的沙漏网络和多阶段中间监督对整个图像的初始特征和检测结果进行预测,如图2 所示。
图2 中间监督过程Fig.2 Process of intermediate supervision
本文以SHN 作为基础网络进行改进,设计多尺度最大池化模块MMPM-S,解决模型容易丢失网络浅层信息的问题;同时设计单个沙漏模块IHNM-C,提高网络对多通道信息的提取能力,对需要融合的特征信息进行优化。此外,本文还提出一种多级特征融合方法,将深浅层的特征进行融合,以获得更准确的特征信息。本文总体网络模型如图3 所示,通过联合使用未标记的真实动物数据集和合成动物数据集训练该网络模型,从而实现动物的姿态估计。
图3 总体模型Fig.3 The overall model
2.1.1 SE 注意力模块
SE 注意力模块[19]通过明确建模通道之间的相互依赖,自适应地重新校准通道方面的特征响应,从而提高网络生成的表示的质量,其中分为Squeeze 压缩和Excitation 激发两个步骤,如图4 所示。
图4 SE 注意力模块Fig.4 SE attention module
在SE 注意力模块中,将输入X∈RH′×W′×C′特征映射为U∈RH×W×C,将U经过Squeeze 压缩,实际操作就是全局平均池化,将特征图压缩为1×1×C向量,得到统计量z∈RC,z的第c个元素计算公式为:
为利用压缩操作中聚合的信息,在压缩之后进行Excitation 激发操作,目的是完全捕获与通道相关的依赖关系。通过两层全连接的bottleneck 结构得到特征图中每个通道的权值,并将加权后的特征图作为下一层网络的输入,如式(2)所示:
为限制模型复杂性,在得到1×1×C向量后,对原来的特征图进行Scale 操作:
2.1.2 MMPM-S 模块
本文提出基于SE 注意力机制的多尺度最大池化模块MMPM-S,融合4 种不同尺度下的图像特征,如图5 所示。
图5 MMPM-S 模块Fig.5 MMPM-S module
在MMPM-S 模块中,对输入特征F进行4 个不同尺度的最大池化操作,得到不同尺度的图像特征,以防止池化后特征信息的大量丢失。该模块能够聚合不同区域的上下文信息,提高获取全局信息的能力。MMPM-S 生成的不同级别的特征图,经过卷积(Conv)、上采样(Upsample)操作,最终通过特征融合(Concat)拼接在一起。MMPM-S 获取了多尺度特征信息,最后能够融合合适的全局特征,将局部和全局信息融合到一起。最后,为减小卷积池化过程中因特征图的不同通道所占的重要性不同带来的损失,引入SE 注意力模块,通过卷积还原特征图通道数,得到提取后的特征图F′。
2.2.1 堆叠沙漏网络的特征融合
深度卷积神经网络浅层特征包含较多的位置信息,但是语义信息不足;网络深层特征蕴含丰富的语义信息,有利于热图中心点回归预测,但是定位信息很粗略,并且在堆叠沙漏网络编码-解码过程中容易丢失网络浅层定位信息。因此,本文提出对深浅层特征进行融合。将原始图像经过图像预处理后输入到每个沙漏模块中进行特征传递,以获得更准确的特征信息。由于每一阶段的热图都是对整个图像的初始特征和检测结果进行评估的全局特征信息,因此本文将每个沙漏模块的热图结果作为下一个沙漏模块卷积层的输入,从而使下一阶段的热图估计结果更加准确。
2.2.2 单个沙漏模块的特征融合
堆叠沙漏网络叠加了多个沙漏模块,每个沙漏模块又叠加了多个上采样、下采样和残差模块,这会使得局部特征信息大量丢失,不利于更细致地提取动物关节部位纹理和形状等特征,并且随着网络训练的进行,网络会更加倾向于识别的动物关节,而动物被遮挡的关节部分更容易被忽略,不利于提取被遮挡部分的特征信息。因此,本文在沙漏模块进行编码-解码的过程中,将输入的特征信息叠加在最外层的输出,避免丢失大量的局部特征信息。
2.3.1 CBAM 注意力模块
CBAM 注意力模块[20]分为通道注意力模块(Channel Attention Module,CAM)和空间注意力模块(Spatial Attention Module,SAM)。CBAM 是一个轻量级的通用模块,可以集成到任何CNN 架构中与基本CNN 一起进行端到端的训练。CBAM 注意力模块如图6 所示。
图6 CBAM 注意力模块Fig.6 CBAM attention module
假设输入的特征F∈RC×H×W发送到通道注意力模块,通道注意力模块将最大池化(Maxpool)和平均池化(Avgpool)并行连接能够减少信息的丢失,与单一的池化相比,丢失的信息更少,得到的效果更好。得到两个一维向量RC×1×1经过共享多层感知机(Shared MLP)处理后相加,再经过Sigmoid 激活后得到一维通道注意力Mc∈RC×1×1,所得的Mc与输入特征F按元素相乘得到新的特征F′,如式(4)所示:
其中:F为输入特 征;Mc∈RC×1×1为一维通道注意力;σ表示Sigmoid函数;MLP 为多层感知机;W0∈RC/r×C和W1∈RC×C/r为MLP 两个隐藏层的参数;为两种池化在每个通道上聚合空间信息得到的特征表示符。
空间注意力模块的输入就是通道注意力模块的输出,假设输入特征是F′∈RC×H×W,按空间进行最大池 化(Maxpool)和平均池化(Avgpool)产生两个R1×H×W的通道描述,经过拼接后进行7×7 卷积和Sigmoid 激活,最后得到二维空间注意力Ms∈Rc×1×1,如式(5)所示:
其中:F′为输入特征;Ms∈Rc×1×1为二维空间注 意力;f7×7为滤波器尺寸为7×7 的卷积运算;F′savg和F′smax为两种池化在每个空间位置上聚合通道信息得到的特征表示符。
将所得的Ms与特征图F′按元素相乘得到提取后的特征图F′,如式(6)所示:
其中:⊗表示逐个元素相乘的符号;F′为注意力模块内部优化的特征图;F′为注意力模块优化后输出的特征图。
2.3.2 IHNM-C 模块
由于深度卷积神经网络浅层特征包含更丰富的信息,而原始的沙漏模块定位信息粗略,因此本文设计基于CBAM 注意力机制的改进沙漏模块IHNM-C,如图7 所示。
图7 IHNM-C 模块Fig.7 IHNM-C module
在IHNM-C 的编码阶段,每层网络通过Residual block[21]及Maxpool操作,最终得出分辨 率逐渐降低的特征图。在IHNM-C 的解码阶段,网络通 过Interpolation block、Residual block 和多次特征融合,逐渐恢复出高分辨率的特征图。同时,IHNM-C跳跃层经过逐步提取关节特征,向IHNM-C 后半部分传递,将跳跃层保留的各尺度特征与后半部分特征进行融合,联合网络低层次和高层次的特征图,实现网络浅层特征和深层特征的融合,从而减少定位信息的丢失,提高动物姿态的检测精度。在跳跃层向IHNM-C 后半部分传递时,以拼接的方式融合获得的多尺度特征,容易将无效的特征输入到最终的特征图中,影响检测精度。因此,本文使用CBAM 模块学习特征融合权重,从而抑制无效特征,提高检测精度。
本文将损失函数L(n)定义为源数据集(Xs,Ys)和目标数据集Xt热图的均方误差,如式(7)所示:
其中:f(n)为训练的模型;为训练生成的伪标签。
从仅使用合成数据训练模型开始,获得初始模型f(0),然后重复迭代训练n次,当第n次迭代时,用(Xs,Ys)和(Xt,)联合使用L(n)训练模型。
本文采用堆叠沙漏网络作为实验的基础网络,使用合成动物数据集和TigDog 真实动物数据集对网络进行训练、验证以及测试。
TigDog 数据集为马和老虎提供关键点注释,其中马的图像取自YouTube,训练集与测试集比例为5∶1,8 380 幅图像用于训练,1 772 幅图像用于测试;老虎的图像取自国家地理纪录片,训练集与测试集比例为4∶1,6 523 幅图像用于训练,1 765 幅图像用于测试。
合成动物数据集包含5 种动物类别的图像,包括马、老虎、羊、狗和大象,每种动物类别有10 000 幅图像,8 000 幅图像用于训练,2 000 幅图像用于验证。
此外,本文还在VisDA2019 数据集上测试网络的泛化能力,该数据集涉及6 个领域,包括真实图像、素描、剪贴画、绘画、信息图表和快速绘图。采用草图、绘画以及剪贴画进行泛化能力测试,并验证本文方法的先进性和有效性。
本文使用正确关键点百分比(Percentage of Correct Keypoints,PCK)作为评价指标,即计算检测的关键点与其对应的groundtruth 间的归一化距离小于设定阈值的比例。PCK@0.05 是指阈值为0.05 时的正确关键点百分比,计算公式如下:
其中:i表示id为i的关键点;k表示第k个阈值的Tk;p表示第p个动物;dpi表示第p个动物中id为i的关键点预测值与人工标注值的欧式距离;表示第p个动物的尺度因子;Tk表示人工设定的阈值;表示Tk阈值下id为i的关键点的PCK 指标;表示Tk阈值下算法的PCK 指标。
本文实验使用的软件平台是Python3.8,服务器的系统是Ubuntu 20.04 版本,显卡是NVIDIA GeForce GTX 3090,使用PyTorch1.7.0 构建基础网络。
堆叠沙漏网络的堆叠次数为4。在本文实验中,选用 RMSProp[22]优化器对模型进行优化。训练周期epoch 为200,batchsize 大小为10,初始学习率 为2.5×10-4,学习率衰减系数为0.1,分别在120 和180 周期时进行一次学习率衰减,每次衰减学习率将会减少10倍。输入图像被裁剪为256×256 像素,通过缩放、旋转、翻转和颜色扰动进行数据增强。
通过上述的实验环境和实验设置中的参数,在TigDog 数据集和合成数据集上进行实验,对比本文模型与其他先进的动物姿态估计网络模型的实验结果。图8 所示为训练后得到的热图结果。在训练过程中,对图像进行随机旋转和翻转,以增强数据。
图8 热图结果Fig.8 Heatmap results
在TigDog 数据集上进行实验,当动物分别为马和老虎时本文模型与其他模型的PCK@0.05 精度对比分别如表1 和表2 所示。其中:加粗数据表示最优值;Real 表示仅用真实动物数据集训练的模型;Syn 表示仅用合成数据训练的模型;Eye、Chin、Shoulder、Hip、Elbow、Knee 和Hooves 分别代表眼睛关节点平均值、下巴关节点平均值、肩膀关节点平均值、臀部关节点平均值、肘关节点平均值、膝盖关节点平均值和蹄关节点平均值;Mean 代表所有关节点平均值。实验结果表明,本文方法相比于CycGAN[24]、BDL[25]、CyCADA[9]、CC-SSL[23]性能得到了较大提升。相较于有较好表现的CC-SSL,本文模型在对于马的实验上PCK@0.05 提高了4.6%,在对于老虎的实验上PCK@0.05 提高了3.5%,结果与直接在真实图像上训练的结果接近。由于老虎通常生活在森林中,经常会被周围的生物遮挡,而用于训练的合成动物数据集没有这种遮挡,因此导致模型很难适应遮挡比较严重的场景,这使得表1和表2 中所有模型对于老虎的精度都没有达到和马一样的效果。
表1 不同模型的PCK@0.05 精度对比结果(马)Table 1 Comparison results of PCK@0.05 accuracy of different models(Horse)
表2 不同模型的PCK@0.05 精度对比结果(老虎)Table 2 Comparison results of PCK@0.05 accuracy of different models(Tiger)
图9 是本文模型的姿态估计以及局部分割可视化结果。可以看出,即使对于一些极端的姿势,如趴下和骑马等,本文模型也能产生准确的预测结果。此外,如图10 所示,本文模型可以对其他动物类别进行很好的姿态估计,如羊、大象和狗。
图9 TigDog 数据集上的可视化结果Fig.9 Visualization results on TigDog dataset
图10 其他动物的可视化结果Fig.10 Visualization result of other animals
本文采用来自视觉领域适应性挑战数据集(VisDA2019)的图像进行模型泛化能力的测试,该数据集包括6 个模块:真实图像,草图,剪贴画,绘画,信息图,快速绘图。本文采用草图、绘画以及剪贴画进行泛化能力测试,可视化结果如图11 所示。
图11 VisDA2019 的可视化结果Fig.11 Visualization results of VisDA2019
不同模型在VisDA2019 数据集上的PCK@0.05精度对比如表3 所示。其中:Visible Kpts 精度表示只考虑直接可见的关键点的精度;Full Kpts 精度表示还包括自遮挡的关键点;加粗数据表示最优值。可以看出:CC-SSL 和本文模型都优于在真实图像上训练的模型,从而证明了联合使用合成数据集和真实数据集训练模型的重要性;此外,本文模型性能也优于CC-SSL 模型。
表3 VisDA2019 数据集上的PCK@0.05 精度Table 3 PCK@0.05 accuracy on VisDA2019 dataset
本文模型以堆叠沙漏网络作为基础网络进行改进,设计多尺度最大池化模块MMPM-S,从而解决模型容易丢失网络浅层信息的问题;设计基于注意力机制CBAM 的改进沙漏网络模块IHNM-C,从而提高网络对多通道信息的提取;同时还提出多级特征融合方法,以获得更准确的特征信息。为证明模型中每个关键模块的有效性和先进性,以马为实验对象对TigDog 数据集和合成动物数据集进行消融实验,同时与CC-SSL 进行比较,实验结果如表4 所示。其中:“ √ ”表示模型包含这一模块。
实验结果表明:相较于目前取得较好表现的CC-SSL,分析PCK@0.05 指标可知,添加多尺度最大池化模块使精度提高3.28%,而添加多级特征融合模块提升0.69%,在此基础上添加注意力机制提升0.13%,这是由于学习了特征融合权重,突出了有效特征;最终模型比基线CC-SSL 提升4.6%,证明了本文方法的可行性。
本文以堆叠沙漏网络为基础网络并进行优化,提出多尺度最大池化模块,提高模型获取全局信息的能力,同时设计一种多级特征融合方法,使网络充分提取和融合特征信息。此外,通过使用注意力机制学习特征融合权重,突出有效特征,从而提升总体网络模型的识别效果。在TigDog 数据集上的实验结果表明,本文模型相比于CC-SSL 模型PCK@0.05提高了4.58%。下一步将在保证精度的前提下降低模型参数量和复杂度,并提高其在动物被遮挡情况下的效果。