abstract
本文研究了在大规模图像识别中卷积网络的深度与准确率的关系。对使用3*3卷积核的网络随着深度的增加的评估,发现当网络深度达到16-19层时效果会有显著的提升
introduction
为了提升convnet的准确率,目前大致有两种方向
1、使用更小的感受野和在第一个卷积层上使用更短的步长。
2、用多尺度的密集的训练和测试网络
在本文中,我们注重另一点:网络的深度。固定了其他结构的参数,使用3*3的卷积核,持续的增加了网络的深度,结果强无敌。
2 ConvNet Configurations
2.1Architecturetecture
训练重的输入是224x224RGB的图像,唯一的预处理就是减去训练集中的平均值。
卷积层采用3x3的卷积和(认为是最小的能够捕捉左/右,上/下,中心的大小),还有比较特殊的1x1的卷积核(Inception-v1也有这个东西),可看做是空间的线性映射。
一共有五个池化层,都是2x2 步长为2,接在某些卷积层后面。
卷积层之后是全连接层,前两个全连接层有4096个通道,第三个有1000个对应着1000个分类。最后输入到softmax中。
所有隐藏层输出经过激活函数ReLU(和alexnet一样),然而并没有使用alexnet的lrn归一化,因为并没有乱用还增加了计算时间并且占用内存。
2.2 表1中介绍了结构,从11层(8卷积层3全连接)到19(16卷积,3全连接)层。
表2中介绍了参数的个数,尽管vgg网络较深但是宽度并不大,所以参数的总数并不太多。
2.3 Discussion
vgg只使用3x3x1的卷积核
不难发现,**两个3x3的卷积核所观察到的视野相当于一个5x5的卷积和所观察到的视野,三个3x3相当于一个7x7。
所以我们使用多个小的卷积核代替大的卷积核**,好处有什么呢:
1、使用合并了多个非线性层代替单个层,增加了模型的判别力
2、减少了参数的个数,3个3x3卷积层所需要的参数是3x(32xC2) = 27C2,而1个7x7的卷积层所需要的参数是1x(72xC^2) = 49C^2。所以虽然似乎有点不可思议,但实际上是减少了参数的个数。
表1中的C,使用了1x1的卷积层,这样可以在不影响原网络感受野的情况下增加网络的非线性。
3 Classificating Framework
3.1 Training
vgg训练与alexnet类似,使用mini-batch,bath 大小为256,momentum为0.9,在前两个全连接层使用0.5的dropout,学习率初始为10^-2,当准确率不再增加时自动衰减10倍,总共衰减3次。在370k次迭代之后停止训练。
网络权值的初始化同样重要,不合适的初始化权值由于梯度的不稳定性会在深度网络中阻碍训练。为了解决这个问题,可以先随机初始化并训练一个较浅的网络(表中的A)然后在训练更深的网络时使用A的权值初始化(中间层随机)。 在预初始化时,并不使学习率衰减。
同时,在论文发布之后,发现不使用与初始化也是可能的。
对图像的尺寸有两种选择,一个是先训练S=256(S表示图片最小边的值)的模型,再利用它初始化训练384的模型。 第二个是使用变长的输入尺寸 vgg 的尺寸是在256到512之间。
3.2 testing
首先进行等比例缩放, 短边长度Q大于224, Q的意义与S相同, 不过S是训练集中的, Q是测试集中的参数. Q不必等于S, 相反的, 对于一个S, 使用多个Q值进行测试, 然后去平均会使效果变好.
将全连接层转换为卷积层,第一个全连接转换为7×7的卷积,第二个转换为1×1的卷积。
使用全卷积网络,就没必要在图片的小块部分上浪费算力了。