深度学习之解读VGGNet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31531635/article/details/71170861


为什么提出


提出的背景

 提出目的即为了探究在大规模图像识别任务中,卷积网络深度对模型精确度有何影响。
 这个网络的结构用的都是特别小的3x3的卷积模版(stride:1,padding:1),以及5个2x2的池化层(stride:2),将卷积层的深度提升到了16-19层,并在当年ImageNet挑战中再定位和分类问题上取得地第一第二的好成绩。


基本思想及其过程

VGGNet网络配置情况:
 为了在公平的原则下探究网络深度对模型精确度的影响,所有卷积层有相同的配置,即卷积核大小为3x3,步长为1,填充为1;共有5个最大池化层,大小都为2x2,步长为2;共有三个全连接层,前两层都有4096通道,第三层共1000路及代表1000个标签类别;最后一层为softmax层;所有隐藏层后都带有ReLU非线性激活函数;经过实验证明,AlexNet中提出的局部响应归一化(LRN)对性能提升并没有什么帮助,而且还浪费了内存的计算的损耗。

这里写图片描述
这里写图片描述

 上述图为VGGNet网络框图,从左至右每一列代表着深度增加的不同的模型,从上至下代表模型的深度,其中conv<滤波器大小>-<通道数>,至于为什么用3x3的滤波器尺寸,是因为这是能捕捉到各个方向的最小尺寸了,如ZFNet中所说,由于第一层中往往有大量的高频和低频信息,却没有覆盖到中间的频率信息,且步长过大,容易引起大量的混叠,因此滤波器尺寸和步长要尽量小;这里使用1x1的卷积模版是因为1x1就相当于可以看作是一种对输入通道进行线性变换的操作(增加决策函数的非线性且不会影响到感受野的大小)。

 上面第二个图为各个模型中用到的参数分析图,可以看到随着层数的增加A-E,参数增加的并不是很多,因此也分析出层数的增加可以提升性能的同时,也不会在参数量的计算存储损耗上,有非常多的增加。

 之前的网络都用7x7,11x11等比较大的卷积核,现在全用3x3不会有什么影响吗?
 实际上,一个5x5可以用两个3x3来近似代替,一个7x7可以用三个3x3的卷积核来代替,不仅提升了判别函数的识别能力,而且还减少了参数;如3个3x3的卷积核,通道数为C,则参数为3x(3x3xCxC)=27 C2 ,而一个7x7的卷积核,通道数也为C,则参数为(7x7xCxC)=49 C2
 而1x1卷积层的合并是一种增加决策函数的非线性的方式,而且还没有影响到卷积层的感受野。

训练
 训练使用加动量的小批基于反向传播的梯度下降法来优化多项逻辑回归目标。批数量为256,动量为0.9,权值衰减参数为5x 104 ,在前两个全连接层使用dropout为0.5,学习率为0.01,且当验证集停止提升时以10的倍数衰减,同时,初始化权重取样于高斯分布N(0,0.01),偏置项初始化为0。
 为了获得初始化的224x224大小的图片,通过在每张图片在每次随机梯度下降SGB时进行一次裁减,为了更进一步的增加训练集,对每张图片进行水平翻转以及进行随机RGB色差调整。
 初始对原始图片进行裁剪时,原始图片的最小边不宜过小,这样的话,裁剪到224x224的时候,就相当于几乎覆盖了整个图片,这样对原始图片进行不同的随机裁剪得到的图片就基本上没差别,就失去了增加数据集的意义,但同时也不宜过大,这样的话,裁剪到的图片只含有目标的一小部分,也不是很好。
 针对上述裁剪的问题,提出的两种解决办法:
(1) 固定最小遍的尺寸为256
(2) 随机从[256,512]的确定范围内进行抽样,这样原始图片尺寸不一,有利于训练,这个方法叫做尺度抖动scal jittering,有利于训练集增强。 训练时运用大量的裁剪图片有利于提升识别精确率。
测试
 测试图片的尺寸不一定要与训练图片的尺寸相同,且不需要裁剪。
 测试的时候,首先将全连接层转换到卷积层,第一个全连接层转换到一个7x7的卷积层,后面两个转换到1x1的卷积层,这不仅让全连接网应用到整个未裁剪的整个原始图像上,而且得到一个类别的得分图,其通道数等于类别数,还有一个决定与输入图片尺寸的可变空间分辨率。为了获得固定尺寸的图片的得分图,运用原始图片的softmax的后验概率以及其水平翻转的平均来获得。
 下图为各个模型运用在ILSVRC-2012数据集上的结果(测试图片尺寸固定为一个值时)。
这里写图片描述
 更直接地看即
<div align=center>![模型误差图1-w600](media/14937325495530/%E6%A8%A1%E5%9E%8B%E8%AF%AF%E5%B7%AE%E5%9B%BE1.png)</div>

 若设置测试图片的尺寸不一,利用尺度抖动scale jittering的方法取三个值,然后取结果的平均值。
这里写图片描述

 可以看到结果稍好于前者测试图片采用单一尺寸的效果。
 当取训练图片S利用尺度抖动的方法范围为[256;512],测试图片也利用尺度抖动取256,384,512三个值进行分类结果平均值,然后探究对测试图片进行多裁剪估计的方法,即对三个尺度上每个尺度进行50次裁剪(5x5大小的正常网格,并进行两次翻转)即总共150次裁剪的效果图,如下。
这里写图片描述

扫描二维码关注公众号,回复: 3774773 查看本文章

 可以看到这个效果比之前两个效果更进一步,说明多尺度裁剪也起了一定好的作用。
 最后将多个模型进行合并进一步得到了更好的效果,并在ILSVRC比赛上拿到了第二的成绩。
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_31531635/article/details/71170861