图像分类训练技巧包(二)

论文名: Bag of Tricks for Image Classification with Convolution Neural Networks
论文地址: http://arxiv.org/pdf/1812.01187v2.pdf

这篇文章是亚马逊李沐团队的一篇技巧(tricks)文章,被CVPR2019收录了。虽然题目是讲的Image Classification,但是作者也说了,在目标检测,实例分类等问题上也是有一定的作用的。在此做下笔记,有理解不对的地方还请大佬们勿喷。

这一次将从模型微调开始着手,还没有看上一篇图像分类训练技巧包(一)的同学,可以先去看看。

模型调整是对网络体系结构的微小调整,例如改变特定卷积层的步幅。这种调整通常几乎不会改变计算复杂性,但可能对模型精度产生不可忽略的影响。在本节中,我们将使用ResNet作为示例来研究模型调整的影响。模型调整是对网络体系结构的微小调整,例如改变特定卷积层的步幅。这种调整通常几乎不会改变计算复杂性,但可能对模型精度产生不可忽略的影响。在本节中,我们将使用ResNet作为示例来研究模型调整的影响。

Resnet回顾

我们首先简单的回顾一下resnet的网络结构。

image

ResNet网络由一个输入主干(Input stem)、四个后续阶段(Stage)和一个最终输出层(Output)组成。输入主干有一个 7×7 卷积层,输出通道有 64 个,步长为 2,接着是 3 ×3 最大池化层,步长为 2。从阶段 2 开始,每个阶段从下采样块开始,然后是几个残差块。

image

在下采样块中,存在路径 A 和路径 B。路径 A 具有三个卷积,其卷积核大小分别为 1×1、3×3 和 1×1。卷积层1的步幅为 2,用来实现下采样,卷积层2主要用于提取特征,卷积层3完成通道的扩张,称为瓶颈结构(目的降低参数的数目,减少计算)。路径 B 使用步长为 2 的 1×1 卷积将输入形状变换为路径 A 的输出形状,因此我们可以对两个路径的输出求和以获得下采样块的输出。

以上的输入主干下采样模块就是这次微调的地方。

Resnet微调

老规矩,先上结论。

image

Resnet-B是对Resnet下采样模块的改进,Resnet-C是对Resnet输入主干的改进,Resnet-C是在B的基础上再次对下采样模块。

Resnet-B

B结构是在2016年torch组提出来的,在博客中作者提到 “我们也实验了将步长2的下采样从瓶颈模块的第一个1x1卷积移动到了3x3卷积(ResNet-50和ResNet-101)。”但是当时作者也没有解释原因。

image

其实很好理解,我们再回到下采样模块中。

image

亚马逊的大佬们在论文中指出,“其中第一个卷积用来作为下采样,所以步长设为了2——很明显,核大小1x1、步长2的卷积会造成3/4的信息丢失!”

为什么1x1,步长为2的卷积层会丢失3/4的信息呢?

上图!

image

我们现在有一个1x1的卷积核,要以步长为2,在6x6的特征图上进行卷积操作。

image

这样,就完成了一个卷积层!但是,只能红色的块才能进入下一层进行特征提取操作。

image

从6x6到3x3,有3/4的信息都被丢掉了。所以就不打算将步长为2的下采样部分交给1x1的卷积,而是交给后一层的3x3的卷积。

image

这样的话,由于卷积核宽度大于步长,卷积核在移动过程中能够遍历输入特征图上的所有信息(甚至还能有重叠)。

Resnet-C

C结构由谷歌在inception结构中有运用,一句话来说就是“多的小卷积比少的大卷积效果差不错,而且能减少参数,提升效果。”

image

)

使用3个33的卷积来替换resnet的77的卷积。并且前2个卷积的stride=3,channel=32,最后一个channel=64。如下图:

image

Resnet-D

D是在B的灵感下改进的。

调整原因:与ResNet-B相似,下采样的右边通道同样存在着忽略3/4信息的问题,因此进行改进。既然主通道可以通过修改stride来降低信息损失,那么short-cut为什么不可以呢?

于是就简单粗暴的做实验,发现将卷积改为sride=1,同时在前面加上一个2x2,步长2的平均池化层来进行下采样,效果理想并且不怎么影响计算效率。

image

这样,论文中的模型微调就弄完了,上结果!

image

可以看到,效果D的改进效果是最好的。看到黄字,我们就会有一个疑问:为什么FLOPs上升了13%,可是速度只慢了3%?

详细情况大家可以看看这一篇文章,我认为说的很清楚了。传送门:关于FLOPs和实测速度

模型微调就介绍到这里,下一篇文章就是图像分类训练技巧包的最后一篇,将会主要介绍如何在训练过程中优化模型以及全部技巧在目标检测和实例分割中的应用。

拜拜!

参考文献

Batch normalization: Accelerating deep network training by reducing internal covariate shift
Deep residual learning for image recognition
Training and investigating residual nets
Bag of Tricks for Convolutional Neural Networks
训练技巧详解【论文详解含有部分代码】Bag of Tricks for Image Classification with Convolutional Neural Networks
深度学习 Image Classification图像分类之Bag of Tricks for Image Classification with Convolutional Neural Net
CNN训练分类任务的优化策略(tricks)
深度学习小技巧(二):模型微调

你可能感兴趣的:(图像分类训练技巧包(二))