深度学习之基础模型—InceptionV1(GoogLeNet)

来源:互联网 发布:sql join 多个条件 编辑:程序博客网 时间:2024/06/06 16:33

与VGG同年,google也独立在深度网络的深度方向进行了研究。发明了一个22层的深度神经网络,为了致敬LeNet,取名GoogLeNet非GoogleNet)。该结构充分利用了网络结构中子网络的计算,使得网络的深度进一步提升。在设计过程中,受到了多尺度处理的启发,并且结合Hebbian principle原理进行网络结构设计,使得网络达到最优的状态。

简介

  • GoogLeNet的参数量相比AlexNet要少很多,是AlexNet参数的112(12x fewer parameters than AlexNet)
  • 由于手机终端和嵌入式设备的发展,深度学习算法的运行效率和内存控制显得尤其重要,深度神经网络不仅具有学术性,更应该能够应用于现实生活中
  • 论文起源于NIN(Network in network),并且在网络深度上进行了研究

研究动机

针对之前的网络结构设计,主要存在几个方面的缺点:

  • 参数太多,模型的熵容量太大,容易导致过拟合,尤其对于比较小的数据集
  • 网络越大,计算复杂度也就越大,在实际应用中,带来了困难
  • 网络越深,模型训练越困难,梯度消失问题不可避免

GoogLeNet的研究动机从两个方面进行考虑:

  • 深度: 网络采用了一个22层的结构,9个Inception(2-5-2结构),但是为了避免梯度消失问题,GoogLeNet在不同层增加了Loss的输出

  • 宽度: 网络在每一个小的结构中,利用了1x1, 3x3, 5x5的卷积核和直接Max Pooling操作(为了保证输出的特征层的大小与卷积核输出大小相同,步长设置为1),为了避免由于宽度的增加带来每一个卷机核或者Max Pooling输出的特征层cancatenate之后,特征层的深度过深,也为了减少网络参数,在每一个3x3,5x5的卷积核前面和3x3Max Pooling后面都利用了一个1x1的卷积核进行降维,如下图

    这里写图片描述

网络结构

网络结构中的参数如下:


这里写图片描述

说明:

  1. 前面4层,为普通的卷积和max pooling操作。在网络的开始利用了7x7s=2,其目的是为了降低图像的特征层大小,减少后面的计算量
  2. 结构中的Max Pooling采用的类似于AlexNet中的Overlapping Pooling3x3s=2
  3. 网络中,不断重复上述的Inception Module模块,来提高网络的深度:

     a)#1x1:表示网络结构中的最左边的1x1 convolutions卷机核个数 b)#3x3 reduce: 表示网络结构中的3x3 convolutions上一步操作的1x1 convolutions的卷积核个数 c)#3x3 : 表示网络结构中的3x3 convolutions的卷积核个数 d) #5x5 reduce: 表示网络结构中的5x5 convolutions上一步操作的1x1 convolutions的卷积核个数 e)#5x5: 表示网络结构中的5x5 convolutions的卷积核个数 f)pool proj:表示3x3max pooling后面的1x1convolutions操作卷积核个数
  4. 所有的网络中的操作,后面都接一个非线性映射变换ReLU
  5. 网络的最后,采用了类似NIN网络结构中的global pooling操作,对7x7x1024的特征层进行avg pooling操作,变成了一个1x1x1024的向量
  6. 采用dropout操作,避免过拟合

网络的深度增加,给训练带来了很大的困难(梯度消失问题),为了更好的训练网络,GoogLeNet,在Inception(4a)和Inception(4d)的输出层,增了Loss计算误差,然后反向传播,在整个训练过程中,不断减少这个两个Loss的权重。


这里写图片描述

说明:

  1. 在Inception(4a)和Inception(4d)分别接了一个大小为5x5,步长为3的average pooling层,从而分别生成为4x4x512和4x4x528的特征层
  2. 紧跟一个1x1卷机,用来降维,卷积核个数位128(利用ReLU进行非线性处理)
  3. 全连接层的输出为1024(激活函数ReLU),并且采用dropout操作(dropout=70%)
  4. 通过softmax进行预测,预测的种类为1000类,同最终的输出结果


这里写图片描述

ILSVRC 2014分类结果

  • 在比赛中,作者独立训练了7个GoogLeNet模型,初始化完全相同,不同的是训练时每次看到的图像数据不同而已
  • 在预测阶段,将图像的短边进行比例缩放(256,288,320,352),然后选取每一个尺度下图像的左,中,右(或者上,中,下—根据短边是宽还是高决定)三个位置的正方形区域(256x256,288x288,320x320,352x352),最后针对每一个正方形区域,进行裁剪,选取4个角和中心位置的224x224区域(5个区域)加上将正方形区域缩放到224x224(每个正方形区域对应一共6张224x224图像),在进行水平镜像操作。最终每张图像可以产生4362=144张crops。

参考文献

https://arxiv.org/pdf/1409.4842.pdf
http://blog.csdn.net/jyl1999xxxx/article/details/75104930
http://blog.csdn.net/lynnandwei/article/details/44458033
http://blog.csdn.net/shuzfan/article/details/50738394
http://www.cnblogs.com/Allen-rg/p/5833919.html
http://www.cnblogs.com/neuface/archive/2016/03/11/5265740.html

原创粉丝点击