高 坤,李汪根,束 阳,王志格,葛英奎
安徽师范大学 计算机与信息学院,安徽 芜湖 241002
人体姿态估计是计算机视觉中一个极为重要的任务,它已经广泛应用于很多领域[1],诸如骨骼动作识别[2-3]、人机交互[4-5]都需要姿态估计的参与,2D人体姿态估计的目标是在场景中检测出人体的关节点位置坐标[6]。
当下2D人体姿态估计主要有两大类方法[1],一类是自顶向下(top down)的方法,这类方法的检测方式是先从场景中检测人体并框选,再在所框选区域内检测关节点。另一类方法是自底向上(bottom up)的方法,这类方法的检测方式是直接从场景中检测出所有关节点,再将所检测到的关节点拼装出人体结构。
随着神经网络的发展,在人体姿态估计领域也陆续出现了很多优秀的研究成果,Newell等提出的堆叠沙漏网络(stacked hourglass networks,SHN)[7],网络由数个对称的沙漏结构网络单元堆叠而成,前一个单元的输出作为后一个的输入,经过对特征的反复提取,最终输出热图用于预测关节点的位置;Chen等提出的级联金字塔网络(cascaded pyramid network,CPN)[8],使用了特征金字塔结构用于提取特征,能够更全面地提取多个尺度上的特征信息;Xiao等提出的简单基线(simple base‐line,SBL)[9],仅使用简单的下采样提取特征再利用转置卷积还原特征图尺寸,同样有着优秀的表现;Sun等提出了高分辨率网络(high resolution network,HRNet)[10],通过构建多个分支进行多尺度特征融合并始终保留高分辨率分支,从而充分利用了特征信息,网络的性能表现突出。
但是随着新的网络不断提出,网络的规模也日渐增大,带来网络参数量和计算量的大幅增加,无论对于训练还是部署,这都需要很高的成本[11],所以一些研究将重心转向了轻量化,Zhang等基于SBL网络改进提出轻量级姿态估计网络(lightweight pose network,LPN)[12],在网络的推理速度方面展现出较大优势;Yu等基于HRNet提出了Lite-HRNet[13],虽然网络性能略有折损,但是却使得网络在轻量化方面有着较大优势。
本文基于以上研究,采用与SBL和LPN相同的简单结构框架,提出了一个融入密集连接的多尺度轻量级人体姿态估计网络。首先基于VoVNet[14]的密集连接思想,重新设计了下采样特征提取瓶颈模块LGCblock代替原本的瓶颈模块,特征图的密集连接能够实现对特征信息的充分利用,同时为了更好地提取特征,在LGCblock内结合深度可分离卷积的思想设计了GWConv模块,实现多尺度提取特征信息,同时又保证了参数量和计算量不会大幅增加,使用三组GWConv模块的输出相连接并将最终特征图进行通道维度的变换构成了LGCblock结构。本文还结合分组卷积的思想构建了分组空洞空间卷积池化金字塔(SG-ASPP),用于弥补特征提取过程中可能遗漏的特征信息,最终使得网络在轻量化的同时取得优秀的精度表现。
基于以上描述,本文提出的网络主要有如下优势:
(1)基于VoVNet的思想设计了LGCblock结构,密集连接的结构实现了有效的特征复用,对于轻量级网络而言极大提升了网络的性能。
(2)GWConv将深度可分离卷积同多尺度特征提取相结合,在有效控制参数量和计算量的前提下大幅提升特征提取能力。
(3)使用分组空洞空间卷积池化金字塔来进一步对特征进行提取,在仅增加少量参数量的情况下进一步提升网络的特征提取能力。
密集连接网络指通过前向传播的方式将每层都与其他层相连接,每层的输入特征图都会包含其前置所有层的特征图,这样能够使特征得到重用,极大提高特征的利用效率,从而提高网络的性能。DenseNet[15]提出为所有层都添加密集连接,但是这样会导致网络的复杂度急剧增大,在DenseNet的基础上,VoVNet提出仅保留输入到最后一层的密集连接,在继承密集连接网络的优势的同时使得网络的复杂度大大降低。
在卷积操作中,分组卷积就是对输入的特征图在通道维度上进行分组再对每组进行卷积操作这样能够大幅降低参数量和计算量[16],通常在逐通道卷积(depth‐wise convolution)中会使用,这种卷积方式会导致通道方向的特征交互不足,组与组之间无法进行特征交互,最终会使网络的特征提取能力下降,这时采用通道洗牌(channel shuffle)方法,可以一定程度上弥补特征交互不足的问题,通道洗牌方法就是对分组卷积后的特征图在通道方向进行打乱重组,使每次对特征图进行分组卷积时每个组的输入来自之前的组,这样特征信息就可以在组与组之间相互流通。
本文提出的LDMNet以LPN网络作为框架改进而来,整体结构如图1所示。网络为类似沙漏结构,主要由下采样特征提取部分和上采样还原特征图尺寸两部分组成,如图1所示为LDMNet的网络结构。
图1 LDMNet网络结构Fig.1 Structure of LDMNet network
当图片输入网络时首先会对图片进行如图2所示Stem模块的简单处理,参考文献[17],本文将Stem层设计为双分支结构,相比于仅使用3×3的卷积在几乎不增加参数量和计算量的情况下,能更好地保留原始特征信息,如图2所示为Stem模块的结构。
图2 Stem模块Fig.2 Stem module
通过将卷积与池化两个分支的特征图相融合,原理上与密集连接网络相似,通过对特征图的复用来保留更多原始特征信息,并且在参数量和计算量上与基线LPN预处理模块几乎无差别,经过实验分析,Stem模块相比基线LPN预处理模块对模型性能有较大提升作用。
紧接着是LDMNet的下采样特征提取部分,本文将这一部分划分为五个阶段,前四个阶段由LGCblock结构组成,最后一个阶段为分组空洞空间卷积池化金字塔模块(SG-ASPP),本文改进的密集连接的LGCblock瓶颈结构用来代替LPN网络中原本的瓶颈结构,不仅有效降低了参数量和计算量,网络的性能表现也有所提升,图中标注了每个阶段所包含的LGCblock结构数目,前四个阶段中,都会对特征图进行维度变换,输出的通道数依次为112、256、384、512,仅第二、三阶段会对特征图进行下采样,前四个阶段输出的特征图尺寸依次为64×64、32×32、16×16、16×16,第五个阶段SG-ASPP不改变特征图的尺寸及通道数,目的是尽可能地再提取特征。
最后通过两组转置卷积将下采样特征提取部分输出地特征图进行上采样,还原高分辨率特征图,同时将Stem层的输出与上采样输出地特征图进行相加融合,输出的高分辨率特征图用于预测人体关节点,实现对人体的姿态估计。
本文基于密集连接网络的思想设计了如图3所示的LGCblock瓶颈结构,主要由三个GWConv模块和一个逐点卷积模块组成,串联三个GWConv模块用来提取空间维度的特征,并将它们的输出拼接,使用逐点卷积进行通道方向的特征交互和维度变换。
图3 LGCblock结构Fig.3 LGCblock structure
对于瓶颈结构内的第一层GWConv模块可以用公式表示为:
第一层GWConv会将对特征图降维,使通道数减少为一个较小的中间通道数,能够在不损失特征提取能力的同时降低网络参数量和计算量,后续的GWConv模块可以用公式表示为:
θi+1代表第i+1层的输出,θi代表第i层的输入,F代表GWConv模块,对于最后一层可以用公式表示为:
θend代表输出,H代表逐点卷积,将前置层的输出特征图通过前向传播的方式与LGCblock的输入相拼接,再对特征图进行维度变换,将其转化为输出通道数。
通过以上的密集连接结构,LGCblock中的最后一层特征图会包含其所有前置层特征图的信息,使得所有中间层特征图的信息都能够得到充分的再次利用,在训练过程中可以加速梯度的反向传播实现对网络效率的提升,同时LGCblock仅有所有前置层与最后一层之间的密集连接,并且得益于特征图能够充分再次利用,所以在中间层可以对特征图进行通道维度的压缩并且不会损失特征信息,能够有效降低模型的参数量和计算量,网络的整体性能也有明显提升。
在过往的研究中可以得知,注意力机制对于提升网络的性能有着重要的作用[18],尤其对于轻量级的网络,可以在尽可能小的成本下实现对网络性能的大幅度提升,所以本文对每一层LGCblock结构的输出位置都使用了坐标注意力机制(coordinate attention,CA)[19],其结构与其他通道注意力诸如压缩激活(squeeze-and-excitation,SE)注意力机制[20],高效通道注意力(efficient channel attention,ECA)[21]等相似,不同的是坐标注意力机制将空间位置信息有效地融入进了通道中,如图4所示为坐标注意力机制的结构,并且不再需要庞大的参数量就可以实现,这对于提升轻量级人体姿态估计网络的性能是至关重要的,通过后续的实验也证明了坐标注意力机制在提升网络性能方面的重要性。
图4 坐标注意力机制Fig.4 Coordinate attention
对一个特征图尺寸为(w,h)的特征图第c通道而言,首先使用均值池化将水平和竖直方向的空间特征信息嵌入到通道方向,计算过程如公式(4)所示,随后进行特征变换生成注意力权重,转换过程如公式(5)所示。
其中,g=δ(G([ηh,ηw])),δ和σ为对应的采样系数,G为特征变换操作,最终得到坐标注意力:
本文还通过实验对比了使用了密集连接的LGC‐block的LDMNet相比使用仅对GWConv模块进行串联的结构的LDMNet,实验的结果表明使用LGCblock的情况具有更低的参数量和计算量以及更高的性能。
人体姿态估计是一个对位置信息极为敏感的任务,在卷积神经网络中,感受野关系到提取的特征所覆盖的特征图范围,感受野是由卷积核大小所决定的,当下最常使用的卷积核大小为3×3,对于轻量级网络使用3×3大小的卷积效果相对有限,与使用更大卷积核相比有明显的效果差距[22],但是如果仅使用更大卷积核进行特征提取则会无法兼顾特征图中多尺度的信息,可能会忽略一些细节信息,同时伴随着大卷积核的引入,网络的参数量核计算量都会随之大幅增加。
基于以上问题,本文设计了GWConv模块,将深度可分离卷积[23]与多尺度卷积相结合,在轻量化的条件下[24]实现更高效的特征提取,如图5所示为GWConv结构。
图5 GWConv模块Fig.5 GWConv module
由于深度可分离卷积将卷积拆分为逐通道与逐点两个部分,会导致在卷积过程中的特征交互不足,为了解决这个问题,GWConv首先对输入的特征图进行通道方向的特征变换,公式表示为:
若输入特征图X的通道数为α,经过维度变换fin的输出特征图Xδ通道数为α/2,通过对特征图进行降维的方式实现通道方向的特征交互弥补了深度可分离卷积的不足,并且通道数减少为原来的一半会降低后续操作的参数量和计算量,随后对特征图进行四个尺度的逐通道卷积,对应的卷积核尺寸分别为3、5、7、9,再将多尺度卷积的输出相融合,用公式表示为:
其中,tn代表堆叠n层卷积核尺寸为3的逐通道卷积等价代替更大卷积核的逐通道卷积,本文方法的n设置为4,等效进行了四个尺度的逐通道卷积,fmid表示对拼接后特征图进行的维度变换,最后将输出特征图与输入特征图进行拼接并进行维度变换得到输出,公式表示为:
fout将拼接后的特征图进行维度变换,将通道数转化为输出通道数。
空洞卷积(atrous convolution)是在普通卷积的基础上加入了膨胀率,在使用相同卷积核尺寸条件下扩大了感受野,通过调整膨胀率的大小,可以将感受野扩展为所需要的大小。
空洞空间卷积池化金字塔(ASPP)模块[25]使用了空洞卷积和池化来尽可能提取特征图中的更多信息,通过使用不同膨胀率的空洞卷积来实现多个尺度的特征提取,同时保证特征图的分辨率不发生改变。按照轻量化的思路,本文对ASPP模块进行了改进,融合了分组卷积的思想,设计了分组空洞空间卷积池化金字塔(SG-ASPP)模块,在几乎不损失性能的前提下将ASPP的参数量降低75%,如图6所示为SG-ASPP的结构。
图6 SG-ASPP模块Fig.6 SG-ASPP module
首先将输入的特征图沿通道方向切分为四组,其中三组进行膨胀率分别为4、8、12的空洞卷积提取特征信息,另外一组进行自适应均值池化,随后将四组的输出相拼接并进行通道洗牌。本文将SG-ASPP放置在四个LGCblock结构之后,用于在下采样后再尽可能提取一些可能被忽略的特征信息,实验结果也表明SG-ASPP模块在提升网络性能方面发挥了重要作用。
本文提出的网络使用了两个数据集,MPII数据集和COCO数据集。
MPII数据集包含大约25 000张图片,有约40 000个人体目标且均被标注了16个关节点的信息,一般会把其中28 000张图片作为训练集,剩余12 000张图片作为测试集。MPII数据集的评价指标为PCKh[26](percent‐age of correct keypoints),以人体头部作为归一化指标计算预测正确的关键点比例,即预测关键点距离标注关键点之间的归一化距离小于设定阈值的比例,本文选用阈值为0.5的PCKh@0.5作为评估标准,评估的关键点分别为头部(head)、肩膀(shoulder)、手肘(elbow)、腕部(wrist)、髋部(hip)、膝盖(knee)以及脚踝(ankle)。
COCO数据集包含330 000张图片,其中有超过200 000张被标记图片,拥有标注信息的人体目标约250 000个,每个人体目标被标注了17个关节点的信息,一般使用训练集中的57 000张图片进行训练,在5 000张图片的验证集上验证最后使用测试集的20 000张图片进行测试。COCO数据集的评价标准是关键点相似性[27](object keypoint similarity,OKS),本文采用AP(OKS=0.50,0.55,…,0.95时10个预测关键点准确率的均值)作为主要评价指标、AP50(OKS=0.5时的准确率)、AP75(OKS=0.75时的准确率)、APM(中型物体检测准确率)、APL(大型物体检测准确率)以及AR(OKS=0.50,0.55,…,0.95时10个预测关键点召回率的均值),作为辅助评价指标。
本文的实验环境为Ubuntu 20.04,GPU为NVIDIA RTX 3060,显存为12 GB,使用的Pytorch版本为1.10.1,Python版本为3.9,网络使用的优化器为Adam,设置的训练周期为150轮,批量大小为32,初始学习率设置为0.001,在训练第120轮时缩减10倍。
本文采用和LPN网络相同的数据预处理,对于MPII数据集处理为256×256大小,对于COCO数据集处理为256×192大小,便于与其他方法进行对比。
本文方法在COCO数据集以及MPII数据集上进行了实验验证,与基线LPN和其他具有代表性的先进方法进行准确度、参数量和计算量上的比较。
首先,本文方法在MPII数据集上进行了实验,包括MPII数据集中人体7个部位关节点以及平均预测准确度的结果如表1所示,与Hourglass、SimpleBaseline、HRNet相比,本文方法的参数量和计算量最低并且平均预测准确度达到了相近水准,与基线LPN相比,本文增加了少量的参数量和计算量,在平均精度方面提升了1.9个百分点,在轻量化网络极其有限的资源以及沙漏结构下采样带来的特征信息损失限制下,相比最新的轻量级高分辨率网络LiteHRNet相比平均精度提高了1.5个百分点。
表1 MPII验证集实验结果对比(PCKh@0.5)Table 1 Comparison of experimental results of MPII validation set(PCKh@0.5)
表2是本文方法在COCO验证集上与其他方法的实验对比结果,LDMNet在不使用预训练模型以及基线LPN中的Iterative Training Strategy学习率迭代策略的情况下,平均精度相较使用了学习率迭代训练策略的基线LPN提升了1.0个百分点,与没有使用学习率迭代策略的基线LPN相比则提升了3.2个百分点,在与最新的轻量级方法LiteHRNet比较中,本文方法的平均精度提升了2.9个百分点。另外与一些大型网络作比较,LDMNet在轻量化方面具有极大优势,平均预测准确度与相同网络结构的SBL-50相近,达到了与大型网络相近的主流性能水准。
表2 COCO验证集实验结果对比Table 2 Comparison of experimental results of COCO validation set
本文还在COCOtest-dev测试数据集上将LDMNet与其他方法做了对比如表3所示,为了方便比较,网络输入的图片尺寸选择为384×288,实验结果表明,LDMNet与一些采用预训练模型的大型网络诸如CPN、HRNet相比,平均预测精度虽稍显逊色,但是在轻量化方面的表现则非常优异并且不再依赖预训练模型,使得网络的训练部署更加轻便,更符合轻量化的设计思路,与使用ResNet-152作为瓶颈结构并且使用ResNet-152预训练模型的SBL-152相比,LDMNet在网络结构相同的情况下仅用不足1/10的参数量最终取得了相对不错的成绩,与最新的轻量级网络LiteHRNet相比,LDMNet在少量增加参数量的条件下,平均预测准确度提升了0.4个百分点。
表3 COCO test-dev测试集实验结果对比Table 3 Comparison of experimental results of COCO test-dev set
综合以上实验结果,本文提出的LDMNet在轻量级模型中表现出优异的性能表现,与最新的轻量级姿态估计方法相比有较大优势,其中值得注意的是,在与基线LPN的对比中虽然参数量和计算量有所提升,但是不再需要采用在LPN中呈现为对模型进行多次训练的Iterative Training Strategy学习率迭代策略以及任何类似预训练手段,仅通过单次训练即得到最终结果,实际上大大降低了模型的训练时间成本,与此同时在模型性能上超越了基线LPN;与大型网络相对比在模型规模上有极大优势,且性能表现表现稳定,达到了对轻量级人体姿态估计的设计目标。
本文选择使用MPII数据集进行消融实验,首先分别单独将坐标注意力机制(CA)、分组空洞空间卷积池化金字塔(SG-ASPP)单独用在本文方法,用来验证各模块对LDMNet的影响,实验结果如表4。
表4 模块消融实验Table 4 Ablation experiment
结果表明,SG-ASPP模块与CA对于LDMNet而言都有着重要的作用,对提升模型性能发挥着重要的作用,其中CA对本文模型性能的提升占主导地位。随后为了深入研究模型中的模块对性能的影响,本文对图1中的Stem模块进行消融实验,实验结果如表5。
表5 Stem消融实验Table 5 Stem ablation experiment
其中LDMNet1代表未使用Stem模块的情况,使用Stem模块在几乎不增加参数量和计算量的条件下大幅度提升了模型性能。随后本文对LGCblock使用的密集连接进行了实验分析,结果如表6所示。
表6 LGCblock消融实验Table 6 LGCblock ablation experiment
LDMNet2代表仅将GWConv模块进行串联而不使用密集连接结构组成LGCblock的情况,与不使用密集连接的LGCblock结构相比,使用密集连接的LGCblock在参数量降低了接近50个百分点,计算量也降低了近30个百分点,并且平均预测准确度提高了0.6个百分点,对中间层特征图进行复用在提升模型预测准确度的同时还能大幅降低模型复杂度。为了更细分地对本文提出模块效果进行分析,本文还使用GWConv模块与普通深度可分离卷积模块分别构建LGCblock结构,实验结果如表7所示。
表7 GWConv消融实验Table 7 GWConv ablation experiment
LDMNet3代表使用卷积核尺寸为3的单尺度深度可分离卷积,相比使用普通深度可分离卷积,虽然使用GWConv参数量和计算量都有所增加,但是平均预测准确度提升了2个百分点,实验结果表明GWConv模块的多尺度特征提取对于提升网络性能发挥着极为重要的作用。另外本文还对图1中的短路连接进行了实验分析,训练过程中的模型收敛曲线如图7所示。
图7 模型训练收敛曲线Fig.7 Model training convergence curve
可以看出,相比于不使用短路连接的情况,短路连接能够使模型的训练更快收敛,并且平均准确度也有所提升,在MPII验证集上的实验对比如表8所示。
表8 短路连接消融实验Table 8 Residual ablation experiment
LDMNet4代表不使用短路连接,平均准确度相较使用短路连接的情况降低0.5个百分点,以上实验结果可以推断出,由于多次进行下采样缩小特征图尺寸,会使得特征图中的信息存在损失,而通过将高分辨率特征图直接由短路连接的方式与输出特征图相融合可以极大缓解这个问题,从而提高模型性能。
对于轻量级姿态估计,模型的推理速度是一个至关重要的参数,本文对LDMNet做了推理速度的测试,测试平台为I5-10400F,对256×192大小的输入,与其他经典方法在推理速度上的对比如图8所示,LDMNet的推理速度可以达到平均19 FPS,图中图案的大小表示模型的规模,与SBL以及当下主流的HRNet在相同的环境下对比,有着更快的推理速度和更轻量级的模型规模,具有更强的实时性。
图8 模型推理速度对比Fig.8 Comparison of model inference speed
本文随机选取COCO数据集中部分人体样本做了姿态估计可视化如图9所示,可视化结果显示本文方法在各种环境下都能够顺利检测出人体关节点的位置,包括障碍物遮挡、阴影环境下以及模糊画面都能准确地检测出人体关节点,得益于密集连接网络的特性以及多尺度特征提取,LDMNet能够学习到画面中兼顾全局与局部的特征信息,在面对复杂场景时同样会有优异的性能表现,展现了本文方法的可靠性以及面对复杂环境的鲁棒性。
图9 COCO数据集可视化Fig.9 COCO dataset visualization
本着在尽可能低的网络参数量以及计算量的条件下提升网络性能的目标,本文结合密集连接网络和多尺度特征提取两种方法提出了轻量级的人体姿态估计网络LDMNet,网络以轻量级简单人体姿态估计网络LPN为基础框架,将原本的下采样瓶颈结构替换为LGCblock,并用GWConv作为其基本模块,使得网络能够在轻量化方面表现优异并且具有高效的特征提取能力,使得网络的整体性能获得较大提升,同时提出了SG-ASPP模块,使得整个特征提取模块的性能进一步得到提升,最终的实验结果达到了与现有优秀模型相同的水准,在COCO数据集以及MPII数据集上的实验结果还表明,本文提出的方法有效地平衡了网络的复杂度与预测准确率之间的关系。在后续的工作中,如何在进一步缩减网络参数量以及计算量的前提下,对现有网络的性能进行提升,能够在真实场景中得到应用是需要着重思考的内容。