2020 IEEE Signal Processing Letters 在多人姿态估计中使用知识蒸馏
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9004476
摘要:
在人体姿态估计中准确性和效率同等重要。大多数现有的方法只是追求卓越的性能,牺牲了大量的计算资源和内存。基于这种考虑,我们提出了一种新的紧凑和轻量级框架,使用知识蒸馏训练更有效的人体姿态估计器。该方法从不同的角度提出了三种蒸馏机理,包括logit蒸馏、特征蒸馏和结构蒸馏。具体来说,logit蒸馏是以教师模型的输出为软目标来激发学生模型。特征蒸馏,提炼出教师模式的高层次特征,以辅助学生。与以上策略不同的是,结构蒸馏是从全局的角度来考虑问题,目的是确保学生的预测像教师一样包含相当丰富的结构知识。我们在两个多人姿态估计数据集(COCO和MPII)上验证了该方法的有效性和效率。具体来说,我们的模型可以通过最先进的方法实现具有竞争力的性能,并且在coco数据集上只消耗我们基准模型35%的模型参数和GFLOPs (SimpleBaseline-ResNet-50 2018CVPR)。
在训练过程中,Teacher模型被冻结,只需要训练Student模型,在此过程中,判别器网络将被优化。在测试时,只有我们训练的Student模型用于姿态估计。
在图1中,我们有教师模型和学生模型,其骨干网络分别采用ResNet-50和ResNet-18。
前者采用大模型进行训练,训练过程中其参数被冻结。后者拥有更小的架构和更少的参数。整个框架的目的是产生一个紧凑的学生网络的姿态估计。
为了得到这样一个网络,将图像输入到res-block中进行特征提取,在此过程中,FD将上层网络的高级语义知识翻译到下层网络。然后将特征图发送到解码器中,通过上采样得到热图预测。
在此阶段,LD将教师知识作为软目标来辅助目标函数中的小网络,SD捕捉来自教师模型和学生模型的预测热图的全局结构一致性
高级特征表示具有重要的语义信息,可为一些比较难的关节点定位提供更多的指导。神经网络最后一层卷积的特征包含丰富的语义信息,包括判别信息和空间信息。这些信息对于定位人体的精确关键点至关重要。但对于小型浅层网络而言,这些信息难以获取。因此,我们提出FD将上述信息从教师网络转移到学生网络,保证学生模型像教师模型一样学习图像的区别性和语义性特征。
其损失如下:
L f d = 1 ( W × H ) 2 ∑ i ∈ R ∑ j ∈ R ( f i j s − f i j t ) 2 L_{fd}=\frac{1}{(W \times H)^2} \sum_{i\in R} \sum_{j\in R} (f_{ij}^s -f_{ij}^t)^2 Lfd=(W×H)21i∈R∑j∈R∑(fijs−fijt)2
其中 R = 1 , 2 , . . . , W × H R={1,2,..., W \times H} R=1,2,...,W×H代表feature map中的所有点, f i j f_{ij} fij代表从特征向量 F i F_i Fi、 F j F_j Fj计算得出的两个像素点之间的特征映射图(similarity map)
f i j = F i F j ( ∥ F i ∥ 2 ) ( ∥ F j ∥ 2 ) f_{ij}= \frac {F_i F_j}{(\parallel F_i \parallel_2)(\parallel F_j \parallel_2)} fij=(∥Fi∥2)(∥Fj∥2)FiFj
LD从教师模型的soft targets或者logits(在关节点定位之前的预测) 去训练压缩模型。教师模型的soft targets预先承载了训练数据集的抽象知识,有利于学生模型的训练。
L s o f t = 1 K ∑ K = 1 ∥ h k s − h k t ∥ 2 2 L_{soft}=\frac{1}{K} \sum_{K=1} \parallel h_k^s - h_k^t \parallel_2^2 Lsoft=K1K=1∑∥hks−hkt∥22
其中 h k t h_k^t hkt和 h k t h_k^t hkt代表预训练的教师模型和小的目标模型的第K个关节点的置信度图。使用 L 2 L_2 L2损失计算 L s o f t L{soft} Lsoft以便与原始的姿态损失对应。
最终的LD损失包括使用真实标签计算的原始的MSE损失和 L s o f t L_{soft} Lsoft,因此 L l d L_{ld} Lld损失如下
L l d = α L m s e + ( 1 − α ) L s o f t L_{ld}=\alpha L_{mse} + (1- \alpha)L_{soft} Lld=αLmse+(1−α)Lsoft
其中 α \alpha α是平衡因子, α = 0.5 \alpha =0.5 α=0.5
我们关注教师模型和学生模型的全局结构一致性,我们训练了一个简单的对抗学习网络去对齐教师模型和学生模型的结构信息。
压缩模型(由于教师网络使用Resnet-50,101,152进行训练,学生网络使用Resnet-18进行训练,因此压缩模型即指使用Resnet-18作为backbone的学生网络)被认为是生成器,其预测的热图被认定为假样本,教师模型预测的热图都认定为真样本。让对抗网络去判别真假样本。该判别网络D是一个简单有效的网络,由3个3x3 stride=1的卷积组成,padding=1,其后跟着BN层和ReLU层。
L a d = E H s ∼ p s ( H s ) [ D ( H s ) 2 ] + E H t ∼ p t ( H t ) [ ( D ( H t ) − 1 ) 2 ] L_{ad}=E_{H_s\sim p_s(H_s)} [D(H_s)^2] + E_{H_t\sim p_t(H_t)} [(D(H_t)-1)^2] Lad=EHs∼ps(Hs)[D(Hs)2]+EHt∼pt(Ht)[(D(Ht)−1)2]
L = λ L l d + β L f d + γ L a d L=\lambda L_{ld} + \beta L_{fd} + \gamma L_{ad} L=λLld+βLfd+γLad
其中设置 λ = 0.5 , β = 0.2 , γ = 0.3 \lambda=0.5, \beta=0.2, \gamma=0.3 λ=0.5,β=0.2,γ=0.3。交替优化压缩网络和判别器。
我们通过最小化 L a d L_{ad} Lad来优化判别器,而对于生成器的训练,我们的目标是最小化 L G L_G LG
L ( G ) = λ L l d + β L f d + γ L s L(G)=\lambda L_{ld} + \beta L_{fd} + \gamma L_{s} L(G)=λLld+βLfd+γLs
其中 L s = E H s ∼ p s ( H s ) [ ( D ( H t ) − 1 ) 2 ] L_s=E_{H_s\sim p_s(H_s)} [(D(H_t)-1)^2] Ls=EHs∼ps(Hs)[(D(Ht)−1)2],用来缓解 H t H_t Ht和 H s H_s Hs之间的差异。
训练细节
我们使用PyTorch用2块TITAN GPU进行训练。我们选择ResNet-50, 101, 152作为教师模型,这些模型都用Imagenet预训练模型的权值进行初始化。对于COCO,初始学习率为5e−4,使用2个TITAN GPU,用84小时训练教师模型130个epoch。对于MPII,我们将图像大小调整为256 × 256,并花9小时训练教师(resnet-50)模型120个epoch。
整个框架的训练细节与教师模型相似,只是我们的ResNet-18模型是从头开始训练的。在训练过程中,教师模型的参数被冻结,不进行更新。在测试时,只部署小而经济的目标模型,没有繁重的教师网络。