CondeseNetV2:保持特征的新鲜是特征复用的关键 | CVPR 2021

论文提出SFR模块,直接重新激活一组浅层特征来提升其在后续层的复用效率,而且整个重激活模式可端到端学习。由于重激活的稀疏性,额外引入的计算量非常小。从实验结果来看,基于SFR模块提出的CondeseNetV2性能还是很不错的,值得学习

来源:晓飞的算法工程笔记 公众号

论文: CondenseNet V2: Sparse Feature Reactivation for Deep Networks

[图片上传失败...(image-e22c5a-1656998989028)]

Introduction


 目前大多数SOTA卷积网络都只能应用于算力充足的场景,而低算力场景往往是多数算法落地的实际场景,所以轻量级网络的研究是十分重要的。近期有研究认为DenseNet的长距离连接是低效的,较深的层往往将早期特征认定为过时并在生成新特征时将其忽略,造成了额外的内存和计算消耗。
 为了缓解这一低效的设计,CondenseNet在训练过程中根据权重动态逐步裁剪不重要的层间连接,而ShuffleNetV2则通过分支和shuffle的设计使得层间连接随着层间距离增大而减少。对于这两个网络的具体介绍,可以看看公众号之前发的两篇解读:《CondenseNet:可学习分组卷积,原作对DenseNet的轻量化改进 | CVPR 2018》《ShuffleNetV1/V2简述 | 轻量级网络》

[图片上传失败...(image-cf316f-1656998989028)]

 尽管上面的两个改进网络都有其提升,但论文认为直接淘汰浅层特征做法过于激进,浅层特征还是可能包含对生成深层特征有用的信息。在仔细研究后,论文提出了特征重激活(feature reactivation)的概念。整体思路如图1c所示,更新浅层特征从而可以更高效地被深层特征复用。
 但需要注意的是,如果直接更新全部特征会带来过度的计算量,影响整体的效率。实际上,从DenseNet的成功可以看出,大部分的特征是不需要每次都更新的。为此,论文提出可学习的SFR(sparse feature reactivation)模块,通过学习的方式选择浅层特征进行重新激活,仅引入少量计算量就可以保持特征的"新鲜"。在应用时,SFR模块可转换分组卷积,复用当前的加速技术保证实践性能。
 论文基于SFR模块和CondeseNet提出了CondenseNetV2,在性能和特征复用程度上都有很不错的表现,能媲美当前SOTA轻量级网络。实际上,SFR模块可简单地嵌入到任意卷积网络中,论文也将SFR模块嵌入ShuffleNetV2进行了相关实验,效果也是杠杠的。

Method


Sparse Feature Reactivation

  • Feature reuse mechanism

 先定义DenseNet中的特征复用机制。假设block共L层,每层的特征输出为x_{l}x_0为block输入。由于当前层会以稠密连接的形式复用前面所有层的输出,l层的复合函数会接受所有的前层特征作为输入:

[图片上传失败...(image-67b18e-1656998989028)]

 在CondenseNet中,H_l为可学习分组卷积(LGC),用于自动学习输入的分组以及去掉不重要的连接。而在ShuffleNet中,H_l的输入会根据与当前层的距离进行丢弃。上面的两种网络设计倾向于丢弃冗余的长距离连接,取得了很不错的性能提升,然而这样的设计可能会阻碍高效的特征复用机制的探索。实际上,导致深层不再使用浅层特征的主要原因是特征x_l一旦产生就不再改变。为此,论文提出计算消耗少的SFR模块,使得过时的特征可以被廉价地复用。

  • Reactivating obsolete features

 对第l层引入重激活模块G_l(\cdot),该模块将层输入x_l转换为y_l,用于激活前面的层输出特征。定义激活操作U(\cdot, \cdot)为与y_l相加,稠密层的输入重激活可公式化为:

[图片上传失败...(image-bd7bc4-1656998989028)]

x_l^{out}为重激活的输出特征,l层的可学习分组卷积操作H(\cdot)输出新特征x_l。此外,旧特征(x_i, i=1,\cdots,l-1)会被重新激活以提高其作用。

[图片上传失败...(image-ca15be-1656998989028)]

 显然,重激活所有的特征是不必要的,DenseNet的成功说明大部分特征是不需要重新激活的,而且过多的重激活也会带来过多的额外计算。为此,论文希望能自动找到需要重激活的特征,只对这部分特征进行重激活。于是,论文提出了SFR(sparse feature reactivation)模块,如图2所示,基于剪枝的方法逐步达到这个目标。

  • Spare feature reactivation(SFR)

[图片上传失败...(image-89be7d-1656998989028)]

 重激活模块G_l(\cdot)包含卷积层、BN层和ReLU层,卷积核的权值矩阵F的大小表示为(O, I)OI分别表示输出维度和输入维度。将G_l(\cdot)模块的输入x_l分成G组,权值矩阵F也随之分为GF^1,\cdots,F^G,每个的大小变为(O,I/G)。注意这里的分组不是将卷积变为分组卷积,只是为了方便稀疏化而进行的简单分组,计算量和参数量没改变。为了将重激活连接稀疏化,定义稀疏因子S(也可以每组不同),使得每组在训练后只能选择\frac{O}{S}个维度进行重激活。
 在训练期间,每个G_l(\cdot)中的连接方式由G个二值掩码M^g\in\{0,1\}^{O\times\frac{1}{G}},g=1,\cdots,G控制,通过将对应的值置零来筛选出F^g中不必要的连接。换句话说,第g组的权值变为M^g\odot F^g\odot为element-wise相乘。
 SFR模块参考了CondenseNet的训练方法进行端到端训练,将整体训练过程分为S-1个稀疏阶段和最终的优化阶段。假设总训练周期为E,则每个稀疏阶段的周期数为\frac{E}{2(S-1)},优化阶段的周期数为\frac{E}{2}。在训练时,SFR模块先重激活所有特征,即将M^g初始为全1矩阵,随后在稀疏阶段逐步去掉多余的连接。在每个稀疏阶段中,g组内重激活i输出的重要程度通过计算对应权值的L1-norm \sum^{I/G}_{j=1}|F^g_{i,j}|得到,将每个组中重要程度最低的\frac{O}{S}个输出(除掉组内已裁剪过的)裁剪掉,即将j输出对应的g组权值M^g_{i,j}设为零。如果i输出在每个组中都被裁剪了,则代表该特征不需要重激活。在训练之后,每组输入只更新1/S比例的输出,S的值越大,稀疏程度越高。

  • Convert to standard group convolution

[图片上传失败...(image-2a01c2-1656998989028)]

 在测试阶段,SFR模块可转换为标准分组卷积和index层的实现,这样的实现在实际使用中可以更高效地计算。如图3所示,转换后的分组卷积包含G组,输出和输入维度为(\frac{OG}{S}, I)。在分组卷积产生中间特征后,index层用于重排输出的顺序,从而获得y_l。在排序时,需要将相同序号的中间特征相加再进行排序。

Architecture Design

[图片上传失败...(image-c66174-1656998989028)]

 基于提出的SFR模块,论文在CondenseNet的基础上改造出CondeseNetV2的新稠密层,结构如图4右所示。LGC层先选择重要的连接,基于选择的特征产生新特征x_l。随后SFR模块将x_l作为输入,学习重激活过时的特征。跟CondenseNet一样,为了增加组间交流,每次分组卷积后面都接一个shuffle操作。从图4的结构对比可以看出,CondenseNet和CondenseNetV2之间的差异在于旧特征的重激活,CondenseNetV2的特征复用机制效率更高。

[图片上传失败...(image-ea02d2-1656998989028)]

 CondenseNetV2沿用了CondenseNet指数增长以及全稠密连接的设计范式,加入了SFR-DenseLayer。结构图表1所示,SE模块和hard-swish非线性激活依旧使用。表1展示的是参考用的基础设计,调整的超参数或网络搜索可以进一步提升性能。

Sparse Feature Reactivation in ShuffleNetV2

[图片上传失败...(image-fc72d1-1656998989028)]

 SFR模块可嵌入到任意CNN中,除了CondenseNet,论文还尝试了ShuffleNet的改造。改造后的结构如图5所示,论文称之为SFR-ShuffleNetV2,仅应用于非下采样层。

Experiment


[图片上传失败...(image-9aa6cb-1656998989028)]

 对不同层的卷积核权值进行可视化,纵坐标可认为是来自不同层的特征。可以看到,CondenseNet更关注相邻层的特征,而CondenseNetV2则也会考虑较早层的特征。

[图片上传失败...(image-e4be2f-1656998989028)]

 通过卷积核权值之和直接展示了层间的关联层度,进一步展示了CondenseNet对较早层的复用程度较高。

[图片上传失败...(image-bce011-1656998989028)]

 不同参数下的准确率对比,其中图b的S=1即CondenseNet。

[图片上传失败...(image-c06fc-1656998989028)]

 论文提出了三种不同大小的CondenseNetV2,参数如表2所示,而ImageNet上的性能对比如表3所示。

[图片上传失败...(image-35bc99-1656998989028)]

 在ImageNet上对比各模块的实际提升效果。

[图片上传失败...(image-65fc74-1656998989028)]

 与SOTA模块在ImageNet上进行对比。

[图片上传失败...(image-745308-1656998989028)]

 在端侧设备上进行推理速度对比。

[图片上传失败...(image-cc685b-1656998989028)]

 CIFAR数据集上的网络对比。

[图片上传失败...(image-6adad1-1656998989028)]

 作为检测主干网络的性能对比。

Conclusion


 论文提出SFR模块,直接重新激活一组浅层特征来提升其在后续层的复用效率,而且整个重激活模式可端到端学习。由于重激活的稀疏性,额外引入的计算量非常小。从实验结果来看,基于SFR模块提出的CondeseNetV2性能还是很不错的,值得学习。




如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容