Lite-HRNet:轻量级HRNet,FLOPs大幅下降

2021-05-07 11:37:50 浏览数 (2)

分享一篇新出的 CVPR 2021 轻量级网络论文 Lite-HRNet: A Lightweight High-Resolution Network ,大名鼎鼎的HRNet的升级版。

  • 论文:https://arxiv.org/abs/2104.06403
  • 代码:https://github.com/HRNet/Lite-HRNet

0 动机

HRNet有很强的表示能力,很适用于对位置敏感的应用,比如语义分割、人体姿态估计和目标检测。将ShuffleNet中的Shuffle Block和HRNet简单融合,能够得到轻量化的HRNet,作者将其命名为Naive Lite-HRNet。

Naive Lite-HRNet中存在大量的卷积操作,作者提出名为Lite-HRNet的网络,在Lite-HRNet中使用conditional channel weighting模块替代卷积,以进一步提高网络的计算效率。

1.Naive Lite-HRNet

ShuffleNetv2中的Shuffle Block结构如下图所示:

上图所示的结构中有2个分支,其中一个分支将输入特征进行卷积、depthwise卷积和卷积,将该分支的输出和输入特征进行concat操作,然后进行shuffle操作,得到最终的输出特征。

Small HRNet的结构如下图所示:

相比于原始的HRNet,Small HRNet减少了网络的深度和宽度。Small HRNet中Stem部分包含2个步长为2的卷积,每个Stage都包含一系列Residual Block和1个多分辨率融合模块。

为了构建计算量更小的Naive Lite-HRNet,作者使用Shuffle Block替换Stem中的第2个卷积和所有的Residual Block,使用separable卷积替换多分辨率融合模块中的传统卷积。

2.Lite-HRNet

2.1 Conditional Channel Weighting

若某个卷积输入和输出feature map的通道数都为,则卷积的时间复杂度为,的depthwise卷积的时间复杂度为。在Shuffle Block中,当时,2个卷积的计算量要多于1个的depthwise卷积,即。

为进一步减少网络计算量,使用Conditional Channel Weighting操作代替Naive Lite-HRNet的Shuffle Block中的卷积,形成新的网络,并将新的网络命名为Lite-HRNet。

对于Lite-HRNet中的第个分支,Conditional Channel Weighting操作可表示为:

上式中的是的矩阵,表示weight map;表示元素乘法操作。Conditional Channel Weighting的时间复杂度为,远低于卷积。

作者提出使用Cross-resolution Weight Computation和Spatial Weight Computation这2种方法计算权重矩阵。使用Conditional Channel Weighting操作替换掉卷积后的Shuffle Block结构如下图所示:

上图中的表示通过Cross-resolution Weight Computation方法计算权重矩阵;表示通过Spatial Weighting Computation方法计算权重矩阵。

下面分别介绍Cross-resolution Weight Computation和Spatial Weighting Computation的实现过程。

2.2 Cross-resolution Weight Computation

在网络的第个Stage中有个分支,每个分支的feature map分辨率不同。共有个weight map分别与这些分支对应,将这个weight map记作。

使用表示个分支的feature map,表示分辨率最高的feature map,表示分辨率最低的feature map,则有:

在上式中,是一个轻量级的函数。

的实现过程为:

  • 首先对进行Adaptive Average Pooling(AAP)操作,输出的feature map尺寸为,即:
mathrm{X}_{1}^{prime}=mathrm{AAP}left(mathrm{X}_{1}right), mathrm{X}_{2}^{prime}=mathrm{AAP}left(mathrm{X}_{2}right), ..., mathrm{X}_{s-1}^{prime}=mathrm{AAP}left(mathrm{X}_{s-1}right),
mathrm{X}_{1}^{prime}=mathrm{AAP}left(mathrm{X}_{1}right), mathrm{X}_{2}^{prime}=mathrm{AAP}left(mathrm{X}_{2}right), ..., mathrm{X}_{s-1}^{prime}=mathrm{AAP}left(mathrm{X}_{s-1}right),
  • 将AAP操作得到的和特征进行Concat操作,得到;
  • 对依次进行卷积、ReLU、卷积、sigmoid操作,将输出结果记作,即:
begin{aligned} left(mathrm{X}_{1}^{prime}, mathrm{X}_{2}^{prime}, ldots, mathrm{X}_{s}right) & rightarrow text { Conv. } rightarrow mathrm{ReLU} rightarrow text { Conv. } rightarrow text { sigmoid } rightarrowleft(mathrm{W}_{1}^{prime}, mathrm{W}_{2}^{prime}, ldots, mathrm{W}_{s}^{prime}right) end{aligned}
  • 对进行上采样操作,使得权重的分辨率与它们所对应分支的feature map分辨率一致,将上采样操作的输出结果记作。

通过上述操作,可以得到个分支的权重矩阵。某个分支中特定位置的权重是由经过AAP操作得到的中同样位置的值决定的,即由多个分辨率的特征得到。

对于第个分支中位置处的特征值,计算公式为:

与所有分支的feature map在位置处对应的特征区域有关,因此包含多种分辨率的特征,通过上式得到的包含多尺度的特征。

需要注意的是,在操作时,先使用AAP操作减小了的分辨率,因此在后面的卷积运算中不会引入很大的计算量。

2.3 Spatial Weight Computation

在Spatial Weight Computation中,权重矩阵的值仅和当前分支的feature map有关,即:

通过Spatial Weight Computation方式计算的权重矩阵,值在所有空域位置处都相等,上式中的实现过程为:

Global Average Pooling(GAP)的作用是聚集所有位置的特征。

得到权重矩阵后,根据下式得到第个分支位置处的输出特征:

根据权重矩阵的计算过程可知,输出特征的每个元素都和该分支所有输入特征有关。

2.4 计算量分析

假设网络中的某个Stage包含2个分支,输入特征为和,的尺寸为,的尺寸为。卷积、的Depthwise卷积、不同类型的Conditional Channel Weighting(CCW)操作的计算量如下表所示:

从上表中可以看出,CCW的计算量远小于卷积。从上文中描述的权重矩阵的计算过程可知,CCW也可以完成多个通道的信息融合,因此可以使用CCW代替卷积以减少网络的计算需求。

2.5 Lite-HRNet总体结构

Lite-HRNet的结构如下图所示:

在stem中,有1个步长为2的卷积和1个Shufflt Block。接下来的3个Stage中,每个Stage均包含2个CCW模块和1个融合模块。上表中“resolution branch”一栏中表示该Stage包含的feature map的分辨率信息。在上表的最后两列中,Lite-HRNet-N中的N表示网络的层数。

3.实验

3.1 人体姿态估计

  • COCO数据集

在COCO train2017上使用8个NVIDIA V100 GPU训练网络,每个GPU的batch size为32。将人体检测框进行拓展,使得其长宽比为4:3,并将其resize为或者尺寸的图像。在训练时使用了一些数据增强手段,比如random rotation、random scale、random flipping等。

在COCO val2017上验证,在COCO test-dev2017上测试网络性能。在测试时采取了two-stage的方法,即先通过SimpleBaseline中的检测器检测包含人体的目标框,然后预测关键点。在推理时使用了post-gaussian filter、平均原图像和翻转后图像的heat map方法得到最终的heatmap。在COCO test-dev2017上的性能如下表所示:

  • MPII Human Pose数据集

该数据集包含40K个人体实例,选取12K个实例用于测试,其他实例用于训练。使用8个NVIDIA V100 GPU训练网络,每个GPU的batch size为32。将人体检测框resize为。同样使用了random rotation、random scale、random flipping方法进行数据增强。

在测试时使用了post-gaussian filter、平均原图像和翻转后图像的heat map方法得到最终的heatmap。使用PCKH@0.5作为评价指标,性能如下表所示:

从上述2个实验中可以看出,相比于其他轻量级模型,Lite-HRNet有更小的计算量和更高的性能。

3.2 语义分割

使用Cityscapes数据集,在训练时使用了randomly horizontally flip、scale等数据增强方法,训练时输入图片分辨率为。在测试时没有使用任何额外的技巧,在Cityscapes的验证集和测试集上的性能如下表所示:

上表中的“P”表示backbone是否在ImageNet数据集上进行过预训练。从上表中可以看出,在语义分割应用中,相比于其他方法,Lite-HRNet同样能以更小的计算量得到更高的性能。

4.总结

  • 将Shuffle Block与Small HRNet融合,设计出Naive Lite-HRNet;
  • 提出了Conditional Channel Weighting操作,该操作能够以更小的计算量实现卷积的功能;
  • 在Naive Lite-HRNet基础上,使用Conditional Channel Weighting操作代替Shuffle Block中的卷积,得到Lite-HRNet;
  • 通过实验证明了在人体姿态估计、语义分割领域中,相比其他轻量级网络,Lite-HRNet有更低的计算量和更高的性能。

仅用于学习交流!

END

0 人点赞