一直在路上,不是在奔跑,就是在漫步。
论文:
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
CNN很强,例如我们的Inception;最近的resnet也很强。那强强联手会怎么样呢?
残差Inception网络在没有残差连接的情况下比同样的Inception网络表现出色。
回顾Res Net
主要思想就是将residual和inception结构相结合,以获得residual带来的好处。
由于Inception网络往往非常深,因此用残差连接替换Inception架构的过滤器级联阶段。
ResNet网络的亮点:
因此Inception获得残差方法的所有好处,同时保持其计算效率。
带你读论文系列之计算机视觉–GoogLeNet
带你读论文系列之计算机视觉–Inception v2/BN-Inception
带你读论文系列之计算机视觉–GoogLeNet V3
模型的参数和计算复杂性束缚了Inception V3 的性能。而Inception V4它具有比Inception V3更统一的简化架构和更多的Inception模块。
Inception V4和Inception-ResNet V2的表现相似,超过了最先进的单帧性能ImageNet验证集。
残差模块的引入。
ResNet的残差连接。
v4要针对v3进行一系列简洁的优化。
Inception的结构是很容易调节的,就是说改变一些fitler最终并不会影响结果。但是作者为了优化训练速度小心的调整了每一层的大小。现在因为tensorflow的优化功能,作者认为不需要再像以前一样根据经验小心的调整每一层,现在可以更加标准化的设置每一层的参数。而提出了Inception-V4,网络结构如下:
纯Inception-v4和Inception-ResNet-v2网络的Stem模式。这是这些网络的输入部分。
Inception V4具体的Block如下图:
纯Inception-v4网络的35×35网格模块的模式。这是Inception-V4网络结构中的Inception-A块。
纯Inception-v4网络的17×17grid模块的模式。这是Inception-V4网络结构中的Inception-B块。
纯Inception-v4网络的8×8 grid模块模式。这是Inception-V4网络结构中的Inception- C块。
35×35到17×17reduction模块的模式。
17×17到8×8grid-reduction模块的模式。这是Inception-V4网络结构中的纯Inception-v4 network使用的reduction模块。
Inception-ResNet-v1网络的35×35网格(Inception-ResNet-A)模块的模式。
Inception-ResNet-v1网络的17×17 grid(Inception-ResNet-B)模块的模式。
较小的Inception-ResNet-v1网络所使用的这个模块是"Reduction-B"17×17至8×8 grid还原模块。
Inception-ResNet-v1网络的8×8网格(Inception-ResNet-C)模块的模式。
Inception-ResNet-v1网络的主干。
Inception-ResNet-v1和Inception-ResNet-v2网络的架构。此架构适用于两个网络,但底层组件不同。
Inception-ResNet-v2具体的Block如下图:
Inception-ResNet-v2网络的35×35grid(Inception-ResNet-A)模块的模式。
Inception-ResNet-v2网络的17×17grid(Inception-ResNet-B)模块的模式。
17×17至8×8网格还原模块的模式。图中更广泛的Inception-ResNet-v1network所使用的Reduction-B模块。
Inception-ResNet-v2网络的8×8 grid(Inception-ResNet-C)模块的模式。
Inception-V4和Inception-Resnet-V2的总体结构是比较像的,都是一个stem加上多次重复的Inception或者Inception-Resnet block,然后后面再连接reduction,然后重复这样的结构几次。
三种Inception变体的Reduction-A模块的filter数量。
K代表1✖️1 Conv,l代表3✖️3 Conv,m代表 3✖️3 Conv stride为2,n代表 3✖️3 Conv stride为2。
当超过1000个卷积核时,会出现“死”神经元。在最后的平均。池化层之前会出现输出值为0 的现象。解决方案是要么减小learning rate,要么对这些层增加额外的batch normalization。
如果将残差部分缩放后再跟需要相加的层相加,会使网络在训练过程中更稳定。因此缩放块只是用一个合适的常数来缩放最后的线性激活,通常在0.1 左右,用这个缩放因子去缩放残差网络,然后再做加法。求和前进行缩放,可稳定训练。缩放系数为0.1-0.3之间。
类似的不稳定在resnet中也有resnet提出warm-up来解决。当卷积核很多,很小的学习率(0.00001)也不能让训练稳定。
scaling并不是必须的!是否找到某种应用场景,让scaling成为必须的,此为一个可研究方向。
Inception-v3训练期间的TOP-1error与计算成本相似的残余Inception相比。评估是在ILSVRC-2012验证集的非黑名单图像的单一作物上进行的。Residual version 的训练速度要快得多,最终准确率也比传统的Inception-v4略高。
Single crop-Single model的实验结果。报告了ILSVRC2012验证集的非黑名单子集。
可以看出Inception-V4和Inception-ResNet-V2的差别并不大,但是都比Inception-V3和Inception-ResNet-V1都好很多。
主要研究了如何用residual learning 来提升inception的训练速度(紧扣主题,residual learning 只能加快训练,对精度提升没什么用)。此外,我们最新的模型(有和没有残差连接)优于我们以前的所有网络,仅因为模型尺寸的增加。