前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lite-HRNet:轻量级HRNet,FLOPs大幅下降

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

作者头像
CV君
发布2021-05-07 11:37:50
2.1K0
发布2021-05-07 11:37:50
举报

分享一篇新出的 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 } \rightarrow\left(\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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 Conditional Channel Weighting
  • 2.2 Cross-resolution Weight Computation
  • 2.3 Spatial Weight Computation
  • 2.4 计算量分析
  • 2.5 Lite-HRNet总体结构
  • 3.1 人体姿态估计
  • 3.2 语义分割
相关产品与服务
人体分析
腾讯云神图·人体分析(Body Analysis)基于腾讯优图领先的人体分析算法,提供人体检测、行人重识别(ReID)等服务。支持识别图片或视频中的半身人体轮廓;支持通过人体检测,识别行人的穿着、体态等属性信息。可应用于人像抠图、背景特效、人群密度检测等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档