Deep Residual Learning for Image Recogition
目前我主要使用的backbone是resnet backbone 花上一点点时间来好好学习一下
Abstract
resnet很厉害,是2015年的Imagenet与coco challenge的冠军
Introduction:
深度学习之中,我们通过提取到的低纬度中纬度高纬度的信息用于端对端的分类器的训练。 提出了一个问题:是不是网络的层数越多我们的效果就会越好呢?根据以往的情况好像是层数越多就越好,但是通过实验呢我们发现当层数的增加错误率会增加。
同时,网络层数还会受到一些限制,例如说梯度消失等限制。但是我们通过提出的比较好的初始化和中间层的一些策略(normalized)我们克服了这些困难。 虽然说我们通过这些方法将网络的层数提升了,但是在实验中精度却下降,Kaiming He 等人将这样的情况称之为“退化”问题。 当增加网络层数到一定的上限,精度不会随着层数的增加而增加反而会下降。同时这些问题并不是因为过拟合问题而造成的,结论:更高的层数可能会带来更大的误差。所以说我们的大佬何凯明就是为解决这个问题所写出的这个论文!
In this paper, Kaiming等设计了残差单元(如下图所示), 并且resnet就是由很多残差单元组合而成的网络。 公式 F(x) + x can be realized by feedforward neural networks with "shortcut connections"俗称捷径。这个捷径是一个最简单的恒等映射(加法)。
之前的文章也提到过,卷积神经网络是通过不断的堆叠卷积层从而做特征提取的(特征分为按照网络的结构深浅分为低层、中层、高层特征)。之前的工作一般是使用高层特征来训练分类器,但是高层特征是通过低层—中层—高层来进行提取的。低层和中层的特征有用但是没有用上。In this paper, 浅层的特征有机会进入深层的特征,是我们分类器可以学习到更加丰富的信息,使网络层数增加到比较大的时候精度仍然可以提升。
Method: Residual Learning
通过实验呢我们发现residual 的这个恒等映射是可以有效的解决神经网络增加退化的问题,而且这种计算还较为经济,总算量较小。
同时我们发现,残差块F是较为灵活的,可以往里面填充多个卷积层,但是通过实验我们发现2/3层的卷积层是一个较为合适的方法。
论文中何凯明等人选择了以下的残差结构(2/3层),
下图之中,architecture如下图所示。a图为VGG19网络, b图较为简单的网络结构,c图为使用了残差块的结构。并且残差块是上图之中两层卷积层的卷积层的网络
虚线箭头(维度不匹配的两种方法)
Resnet不同的版本:
在这里可以看出来,网络的层数增加但是我们的方法精度得到了提升,解决了我们提出的退化问题
当然这种提升也不是没有上限,在resnet一千多层的时候效果没有101好,作者认为是因为一千多层的网络很容易出现过拟合导致模型精度下降