当前位置:   article > 正文

详解ResNeXt网络(一)

resnext

1 引言

今天我们来回顾经典网络结构 ResNeXt,这个网络可以被解释为 VGG、ResNet 和 Inception 的结合体,它通过重复多个block(如在 VGG 中)块组成,每个block块聚合了多种转换(如 Inception),同时考虑到跨层连接(来自 ResNet)。
RenNeXt网络是许多最先进网络(如 NFNet)的支柱,并且已被证明是许多视觉任务(从对象检测到分割)的快速而准确的选择。

闲话少说,让我们先从VGG,Inception和ResNet开始讲起.

2 VGG

在我们深入研究 ResNeXt block的细节之前,我们应该看看这些block是如何堆叠构成 ResNeXt。在Inception 中,每个block都经过精心定制以产生最佳性能,与Inception不同, ResNeXt 采用 VGG类似的block堆叠方式(即网络由具有相似结构的block堆叠组成), 堆叠过程遵循两个简单的规则:

  • 如果产生的feature map有相同的尺寸,这些blocks共享相同的超参数(宽度和滤波器尺寸)
  • 每次feature map以因子2下采样时,blocks的宽度乘以因子2。(这条规则保证了所有blocks的计算复杂度是大致相同的)

正如 ResNeXt 的作者所说,这种方式可以降低超参数过拟合的风险,从而提升模型泛化能力。
这就是 ResNeXt block块堆叠成 ResNeXt的方式,但什么是 ResNeXt 的 block呢?

3 Inception

什么是Inception呢?很简单,一个 Inception block在单层中利用了多个不同尺寸的kernel,从而能够提取不同尺度下的特征。具体来说,它由四个所谓的“分支”组成:一个 1 X 1 卷积、一个 3 X 3 卷积、一个 5 X 5 卷积,最后是一个 3 X 3 最大池化层。输入被提供给这四个分支,然后将它们的结果通过concact连接起来。一个最原始的Inception结构如下图所示:

在这里插入图片描述

但是请注意,就计算资源而言,5 X 5 卷积是非常奢侈的,即使是 3 X 3 卷积也可能很昂贵。为了解决这个问题,我们可以通过首先使用相对廉价的 1 X 1 卷积来执行降维,然后在具有更少通道数的特征图上执行相应的卷积操作。如下图所示:

在这里插入图片描述

这就是 GoogLeNet 的全部内容,如果您理解它,ResNeXt 应该轻而易举。

4 ResNet

最后,我们来介绍 ResNet,这是 ResNeXt 拼图的第三块也是最后一块。计算机视觉文献中很少有算法享有 ResNet 的知名度和传播率,因此本文不会对其进行过多讨论。这里重点介绍的一件事是 ResNet block 块的结构:

在这里插入图片描述

它在通道数量方面遵循宽 -> 窄 -> 宽设计,通道数变化使用 1 X 1 卷积(如 Inception)和中间的 3 X 3卷积。

5 ResNeXt

让我们以一个例子再次考虑 Inception 的 3 X 3 和 5 X 5 分支,如下所示:
在这里插入图片描述

假设输入有 256 个通道,接着使用两组 1 X 1 卷积,我们将 256 维输入拆分Split为低维数据(例如 3 X 3 分支通道数为160 ,5 X 5 分支通道数为 128 ),转换Transform它们(即分别应用 3 X 3 和 5 X 5 卷积), 最后通过合并merge它们(合并通道数 288 = 160 + 128), 我们会得到很好的结果。正如上文已经提到的,Inception 层需要精心定制,因此迁移它们适应新的任务和数据集是一项非常艰巨的任务。

因此,ResNeXt 的作者追求一种架构,该架构利用 Inception 的拆分-转换-合并策略,同时牢记 VGG 重复具有相同结构的block块和Resnet跨层分支的理念。

ResNeXt网络中的block可以按以下次序生成:

  • 首先,我们需要将输入(同样,我们可以假设它有 256 个通道)分成Split多个低维张量(例如 4 个通道),我们可以通过 1 X 1的卷积来做到这一点。
  • 接着要考虑的点是有多少分支:Inception 有四个分支,用于三种不同的内核大小和一个池化层,但我们的目标是让我们的分支具有相同的网络结构,因此我们可以拥有尽可能多的分支并且对卷积核的大小不做限制。这里我们现在选择 分支数目为32。
  • 然后,我们需要转换Transform我们的数据。同样我们可以对所有分支使用旧的 3 X 3 卷积。
  • 最后,需要合并merge 32 个分支的结果。我们再次使用 1 X 1 卷积将变换输出的通道数目从 4 增加到 256,然后对 32 个 256 维张量求和,这样求和后的结果就可以与输入保持同样的size.

长话短说,每个分支都是这样的:将输入通道数缩小到 4 个通道,然后在不改变通道数量的情况下接 3 X 3 的卷积,最后将通道数恢复到 256。然后对32个分支的输出张量进行求和,最后利用跨层连接将输入添加到结果中来。
在这里插入图片描述
上图是一个 ResNeXt 块结构:具有许多相同分支的模块,每个分支将输入进行通道裁剪,然后通过3X3卷积进行转换,最后将结果进行合并.其中, 分支的数量被称为cardinality,在上图中为 32。cardinality被视为神经网络 (ResNeXt) 除了深度和宽度外的另一个维度.

有趣的是,ResNeXt block可以等效为block间的concat和分组卷积,这个特性使其能够在深度学习库中无缝实现(下篇介绍)。事后看来,它们并不复杂,不应该太具有挑战性,但我确实难以消化它们,所以我们将新开一节深入研究相关细节,以确保每个人都能理解这个强大的网络!

6 总结

本文向我们介绍了 ResNeXt,这是一个受 Inception 的拆分-转换-合并方案启发的网络,在同等参数规模下,增加了网络结构,提高了模型的表达能力。

在下一篇文章中,我们将研究 ResNeXt block块的其他两种等效形式,这需要在更基础的层面上理解分组卷积。

7 附录

本文参考相关论文链接如下,强烈安利大家有空阅读一下下,都是经典.

ResNet论文
VGG论文
InceptionV1论文
ResNext论文
[NFNet]
参考


关注公众号《AI算法之道》,获取更多AI算法资讯。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/373379
推荐阅读
相关标签
  

闽ICP备14008679号