Lite-HRNet:轻量级HRNet,FLOPs大幅下降
分享一篇新出的 CVPR 2021 轻量级网络论文 Lite-HRNet: A Lightweight High-Resolution Network ,大名鼎鼎的HRNet的升级版。
论文:https://arxiv.org/abs/2104.06403 代码:https://github.com/HRNet/Lite-HRNet
HRNet有很强的表示能力,很适用于对位置敏感的应用,比如语义分割、人体姿态估计和目标检测。将ShuffleNet中的Shuffle Block和HRNet简单融合,能够得到轻量化的HRNet,作者将其命名为Naive Lite-HRNet。
Naive Lite-HRNet中存在大量的卷积操作,作者提出名为Lite-HRNet的网络,在Lite-HRNet中使用conditional channel weighting模块替代卷积,以进一步提高网络的计算效率。
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.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尺寸为,即:
将AAP操作得到的和特征进行Concat操作,得到;
对依次进行卷积、ReLU、卷积、sigmoid操作,将输出结果记作,即:
对进行上采样操作,使得权重的分辨率与它们所对应分支的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.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同样能以更小的计算量得到更高的性能。
将Shuffle Block与Small HRNet融合,设计出Naive Lite-HRNet; 提出了Conditional Channel Weighting操作,该操作能够以更小的计算量实现卷积的功能; 在Naive Lite-HRNet基础上,使用Conditional Channel Weighting操作代替Shuffle Block中的卷积,得到Lite-HRNet; 通过实验证明了在人体姿态估计、语义分割领域中,相比其他轻量级网络,Lite-HRNet有更低的计算量和更高的性能。
仅用于学习交流!
END