• 【网络结构】GoogLeNet inception-v1:Going deeper with convolutions论文笔记


    @

    0. 论文链接

    1. 概述

      GoogLeNet是谷歌团队提出的一种大体保持计算资源不变的前提下,通过精妙的设计来增加网络的深度和宽度,基于Hebbian法则和多尺度处理来进行设计,在ILSVRC2014中获得了分类和检测第一的好成绩。
      通过实验,可以发现神经网络的效果可以通过网络更深、更宽来提升。但也有两个很明显的问题:过拟合极大的增加了计算量,作者想通过增加网络的稀疏性的同时加深与加宽网络,但是计算机的基础结构在遇到稀疏数据计算时会很不高效,使用稀疏矩阵会使得效率大大降低,所以作者提出了一种既能利用稀疏性,又可以利用稠密计算的网络结构。
    ps:读论文的时候,文章中很多sparse,十分不理解,在网上查阅了一些资料,1.CNN具有稀疏性跟参数共享的特性,稀疏性指的是他相比于同规格的全连接,输出的数值量较少。2.稀疏性就是有输出的神经元比例比较少的意思(某 UCLA大神在知乎上的回答)
      总得来说,1.inception-v1引入了inception结构,并针对一些问题进行了改进。2.因为网络很深,训练的时候增加辅助分类器防止梯度消失。3.巧用1x1卷积。

    2. inception

      inception结构主要考虑了如何设计近似卷积视觉网络的最优稀疏结构并用容易获得的密集组件进行覆盖,然后在网络中重复这个局部结构。他们先提出了这个“naive inception”,如下图

    针对结构图做以下说明
    1)采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;

    2) 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;

    3) 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了;

    4) 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加;

      可以发现,这样设计,网络结构不但更宽了而且融合不同尺度的特征,同时他们的输出拼接起来组成一个输出向量,因此相当于一个“神经元”,这样保证了网络结构的稀疏性,算是设计的十分巧妙了。
      但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,论文借鉴NIN结构,采用1x1卷积核在进行3x3以及5x5卷积之前先进行降维,这样在增加宽度与深度的同时平衡计算量。改进的inception如下:

    3. GoogleNet

      这是他们团队在比赛中使用的模型,基于inception模型,采用模块化结构,方便添加和修改。为了防止梯度消失,同时网络中间的层次生成的特征会非常有区分性,所以给这些层增加一些辅助分类器。这些分类器以小卷积网络的形式放在Inception(4a)和Inception(4b)的输出上。在训练过程中,损失会根据折扣后的权重(折扣权重为0.3)叠加到总损失中(详细的可以看下图)。
      把全连接层改成average pooling层,想法来自NIN,经过试验可以将top-1 acc提高0.6%,即使去掉了FC层同样需要dropout,但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune(原因是网上同学解释的),在总得结构图中也可以发现在每个分类器之前都有一个average pooling层。

    总体结构:

    1. 包括Inception模块的所有卷积,都用了修正线性单元(ReLU);
    2. 网络的感受野大小是224x224,采用RGB彩色通道,且减去均值;
    3. #3x3 reduce和#5x5 reduce分别表示3x3和5x5的卷积前缩减层中1x1滤波器的个数;pool proj表示嵌入的max-pooling之后的投影层中1x1滤波器的个数;缩减层和投影层都要用ReLU;
    4. 网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共有约有100个;
    5. 添加辅助分类器

    具体细节:

    1. 均值pooling层滤波器大小为5x5,步长为3,(4a)的输出为4x4x512,(4d)的输出为4x4x528;
    2. 1x1的卷积有用于降维的128个滤波器和修正线性激活;
    3. 全连接层有1024个单元和修正线性激活;
    4. dropout层的dropped的输出比率为70%;
    5. 线性层将softmax损失作为分类器(和主分类器一样预测1000个类,但在inference时移除)。

    参考链接

    https://www.jianshu.com/p/ffae362527f0
    https://blog.csdn.net/xjz18298268521/article/details/52381919
    https://blog.csdn.net/wspba/article/details/61921619

  • 相关阅读:
    百度&高德地图小区景点边界轮廓实现
    使用Hexo & Github,搭建属于自己的博客
    网页背景图固定不动,不跟随滚动条滚动
    jQuery同步Ajax带来的UI线程阻塞问题及解决方法
    Java并发编程实战(5)- 线程生命周期
    Java并发编程实战(4)- 死锁
    Java并发编程实战(3)- 互斥锁
    Java并发编程实战(2)- Java内存模型
    Java并发编程实战(1)- 并发程序的bug源头
    软件测试待解决问题
  • 原文地址:https://www.cnblogs.com/kk17/p/9800217.html
Copyright © 2020-2023  润新知