ResNext论文笔记,分组卷积的组数,简化模型

ResNext论文笔记

  • 本质是分组卷积,结合了堆叠模块和Inception的并行思想。
  • 这篇论文侧重从简洁化模块(减少超参数和简化支路设计)以及分组卷积的组的大小(cardinality支路数量,the size of transformations,作者指出提高分组卷积的cardinality比deeper和wider更有效)方面写的。
  • 与 ResNet 相比,相同的参数量,结果更好.

ResNext

下图是ResNext block(left)和ResNext block(right)模块的对比,可以看到这里借鉴了inception的并行设计,但是相比InceptionV4或者Inception-ResNetv2,ResNext的支路是固定的

ResNeXt确实比Inception V4的超参数更少,但是直接废除了Inception的囊括不同感受野的特性仿佛不是很合理,在更多的环境中我们发现Inception V4的效果是优于ResNeXt的(实验可能微调过了)。类似结构的ResNeXt的运行速度应该是优于Inception V4的,因为ResNeXt的相同拓扑结构的分支的设计是更符合GPU的硬件设计原则。

下图right的设计是为了和left保持一样的参数量

这里写图片描述

下图是InceptionV1的模块,这里作者归纳了Inception的模式:split-transform-merge。

  • split:输入分到多支路,1*1卷积降维成低维语义信息
  • transform:对输入的feature map进行转换
  • merge:concatenation(ResNext里是逐元素相加)

img

Inception有刻意雕琢支路的痕迹,迁移到其他地方微调很麻烦,扩展性一般。(但这是inception多感受野的思想)

ResNext block内的支路拓扑一样,加上了残差连接,concat操作换成了add,cardinality和中间层的channel大小(文章写的是width)可变。作者强调cardinality这个参数很重要,指出提高分组卷积的cardinality比deeper和wider更有效。

ResNext Template

以下图ResNext具体网络结构为例,中括号内就是 split-transform-merge,通过 cardinality© 的值控制支路个数。
output 在上下相邻的格子不断减半,中括号内的逗号后面卷积核的个数不断翻倍。

可以看到ResNet-50和ResNeXt-50(32x4d)拥有相同的参数,但是精度却更高。

rules:

  1. 如果产生的feature map 大小相同,那么这些block就共享超参数(channel数量和filter size,但参数不共享)
  2. feature map大小/2时,channel*2

第二个rule确保了参数可以均匀分布在每一层

这里写图片描述

Aggregated Transformations

作者回归MLP,归纳出了下面不同的split-transform-merge结构:

MLP一个没有偏置的线性激活神经元为:
∑ i = 1 D w i x i \sum_{i=1}^{D} w_{i} x_{i} i=1Dwixi
每个结构使用相同的拓扑结构,那么这时候的Inception表示为:
F = ∑ i = 1 C T i ( x ) \mathcal{F}=\sum_{i=1}^{C} \mathcal{T}_{i}(\mathbf{x}) F=i=1CTi(x)
结合ResNet的identity映射,带residual的结构可以用如下公式表示:
y = x + ∑ i = 1 C T i ( x ) \mathbf{y}=\mathbf{x}+\sum_{i=1}^{C} \mathcal{T}_{i}(\mathbf{x}) y=x+i=1CTi(x)
其中C是Cardinality,T()是任意的变换,例如一系列的卷积操作等。

等价模式

这里写图片描述

三个block都是等价的。

  • a写完了3个支路
  • b简化了最后一个1*1卷积层
  • c简化了第一个1*1卷积层

作者指出block的depth>3的时候效果好,depth=2的时候效果一般。也就是把bottleneck结构换成两个3*3卷积。

模型参数

实验中在增加accuracy时保持模型复杂度和参数尽量不变。

参数计算:C:cardinality,d:output channel number

Resnet Bottleneck:1×1×256×64+3×3×64×64+1×1×64×256约为70k参数

图1b block的参数:C×(1×1×256×d+3×3×d×d+1×1×d×256),C=32,d=4时参数约为70k

图3a,BN在transform之后,和shortcut相加之前。图3c等价a,BN在卷积后。ReLu在BN之后。

选用c结构是因为三种结构等价,且训练结果一样,c更简洁且快。

实验

notations:输入输出channel为256d,feature map大小/2时,channel*2。

cardinality vs width

resnext优于resnet,在complexity不变的情况下,c变大error下降。

作者指出block第二层的channel没必要小于4,我认为是他们实验试出来的,也可能是再小到1就是深度可分离卷积了。

这里写图片描述

Increasing Cardinality vs deeper/wider

table4,可见增加c之后模型的结果比增加channel100d和加深到200层的效果要好

这里写图片描述

Performance on ImageNet-1k

ImageNet-1k上ResNext101 per minibatch0.95s,resnet101 0.7s,作者认为这个开销是可以接受的,如果稍微调整代码可能会减少这个时间。

ImageNet-5k

参数相当的情况下resnext效果优于wide resnet,增加c效果提升。

作者提到在5k上训练的搬到1k比专门在1k上训练的模型的效果类似(可以比)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OeOOyIb-1669279016487)(C:\Users\86188\Pictures\table7.png)]

CIFAR

作者把resnet block 换成了resnext的block

Our networks start with a single 3×3 conv layer, followed by 3 stages each having 3 residual blocks, and end with average pooling and a fully-connected classifier (total 29-layer deep), following resnet

fig7实验:

  1. 固定d不变增加c
  2. 增加d固定c=1

在这里插入图片描述

由fig7可见,增加c比增加d更加有效

在这里插入图片描述

由fig7可见,增加c比增加d更加有效.(我总感觉变量控制的不是很好,增加w和c的参数变得都不一样,c明显参数更大)

表8同组的模型复杂度相当。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值