GoogLeNet Inception V1:Going deeper with convolutions论文笔记

论文地址:Going deeper with convolutions

前言

在ILSVRC2014上最耀眼的除了VGG,那就非GoogLeNet莫属了,它与VGG类似的地方就是,关注于模型的深度,使模型倾向于deeper,与VGG不同的是,它的尝试更加新颖。从2014年至今,GoogLeNet经历了Inception v1到v4,以及Inception-ResNet的发展,也证明了Inception最初思想的潜力。今天我们就来看看GoogLeNet Inception V1的框架和效果。

思想

GoogLeNet的思想动机也是增加模型的规模:深度,和宽度。同样的是,更大的模型意味着更多的参数,计算资源的消耗增加,模型也更容易过拟合,因此并不能盲目的增加模型的规模。

改进

深度,必须增加。那么为了较少模型复杂度,就只能在模型的宽度上做文章。VGG的做法是将每一层的滤波器尺寸都换成 3×3 来减少模型的宽度,也证明具有很好的效果。Inception的做法就是将卷积层的完全连接变成稀疏连接,而且受到生物神经学的启发,利用多个大小不一致的滤波器,在多个尺度上来提取特征,然后再连接到一个共同的输出,这样一方面在不增加参数量的前提下增加了网络的宽度,另一方面也增加了网络对多个尺度的适应性。通过对Inception进行堆叠,构成了一个含有22个权重层的GoogLeNet。

框架结构

对于每一个Inception模块,包含有 1×1 3×3 5×5 的三个滤波器,以及一个并行的最大池化层,最后在将输出连接成一个输出向量。模块构成如下:
这里写图片描述
随着层数的加深,feature map中特征的空间集中度会下降,因此需要更多的 3×3 5×5 的滤波器,而这样会导致参数量变得非常大。
因而作者提出了一种新的结构,在 3×3 5×5 的滤波器前使用 1×1 的滤波器来进行降维,例如,假设原始结构为1×1×192×64+3×3×192×128+5×5×192×32(height×width×input×output),而在3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),这样就将模型参数减少到原来的三分之一左右。同样的为了减少维度,在pooling层之后也使用 1×1 的滤波器来进行降维。并且除了降维的功能, 1×1 的滤波器还可以用来进行修正线性激活。因此改进后的Inception模块如下:
这里写图片描述
整个GoogLeNet的框架如下:
这里写图片描述
模型的参数如下:
这里写图片描述
我们发现在Inception4(a)和Inception4(d)中,使用了辅助分类器,作者希望利用中间层的特征来增加底层的判别性,利用辅助分类器来增加反向传播的信号,来增加额外的正则化(辅助分类器在测试阶段并不使用)。

对于整个GoogLeNet模型,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一。

实验结果

分类任务上与state of the art的比较
这里写图片描述
GoogLeNet 不同版本的性能:
这里写图片描述
检测任务上与state of the art的比较:
这里写图片描述
单模型检测的性能:
这里写图片描述

总结

本文在模型结构上进行了非常大胆新颖的尝试,在提高模型层次的基础上,使用稀疏结构来减少模型复杂度,以提高模型的性能。结果也证明了这个方法是非常具有研究价值的。

你可能感兴趣的:(deeplearning,论文,论文笔记,deep-learning,论文笔记)