深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记

深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记

  • 小结
  • 一、VGGNet-深度卷积神经网络
    • Abstract
    • 1.Introduction
    • 2.ConvNet Configurations
      • 2.1Architecture
      • 2.2Configurations
      • 2.3Discussion(特点)
    • 3.Classification framework
      • 3.1 training
      • 3.2Testing
    • 4.Classification Experiments
  • 二、Google-Net
    • abstract
    • 1.Introduction
    • 2.Related Work
    • 3.motivation and High level considerations
    • 4.Architectural Details
  • 三、ResNet(残差网络)
    • 1.基本原理
    • 2.identity mapping
    • 3.网络结构

小结

GoogleNet主要是Inception,对图像以多种卷积训练,并组合通道数;
VGGNet主要是关注深度,利用小卷积核来增加深度;
ResNet主要是残差,反向传播时保留部分损失函数,使得网络深度能进一步增加。

一、VGGNet-深度卷积神经网络

Very Deep Convolutional Networks For Large-Scale Image Recognition

Abstract

  1. 研究卷积网络深度大规模图片识别中的精确度
  2. 内容:彻底评估使用3×3的卷积核时,增加网络深度的影响
    结论:深度提高到16-19时,对现有技术有显著改进
  3. 研究成果在其他数据集上也有较好的普及

1.Introduction

  1. CNN在大规模图像、视频上取得巨大成功原因:
    1. 大型公开的图片数据库:如ImageNet
    2. 高性能的计算系统
  2. (ILSVRC在深度视觉神经架构的发展中扮演了重要角色)
  3. 提高精确度(以往方式):
  4. 更小的接收窗口大小和更小的第一卷积层步长
  5. 密集地在整个图像或多个层度上进行训练和测试
  6. 本文:关注深度
    1. 固定其他参数
    2. 加入更多的卷积层来增加深度
    3. 使用3×3的卷积核

2.ConvNet Configurations

2.1Architecture

  1. input: 224*224

  2. preprocessing: 减平均RGB值

  3. 然后进行一系列卷积:

    ​ 像素填充:1

    ​ 卷积核:3×3、1×1

    ​ 卷积步长:1

  4. 池化层:最大池化,2×2,步长2

    不是所有卷积层后面都有池化层

  5. 3个全连接层:

前两个:4096通道

后一个:1000class

  1. soft-max层

  2. 隐藏层激活函数:ReLU

ps: 没有局部响应归一化层。AlexNet中LRN 局部响应归一化的理解

2.2Configurations

深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第1张图片

img

2.3Discussion(特点)

  1. 3×3卷积核、更深的网络的好处:
    • 感受野:6个3×3=3个5×5=2个7×7
    • 进行更多次的非线性操作。增强了CNN对特征的学习能力
    • 参数不会爆炸,参数集中在全连接层。
  2. 1×1卷积核的好处:
    • 不影响输入输出维数
    • 引入非线性变换。
    • 参数少
    • 其他用法:
      • 提炼特征,多通道特征组合在一起。
      • 改变通道数

3.Classification framework

3.1 training

  1. 通过使用具有动量的小批量梯度下降(基于反向传播)优化多项式逻辑回归目标来进行的。

    Ps:momentum是梯度下降法中一种常用的加速技术。对于一般的SGD,其表达式为

    x ← x − α ∗ d x x\leftarrow x-\alpha\ast dx xxαdx

    x x x沿负梯度方向下降。而带momentum项的SGD则写生如下形式:
    v = β ∗ v − a ∗ d x v=\beta \ast v -a\ast dx v=βvadx

    x ← x + v x \leftarrow x+v xx+v
    β \beta β即momentum系数,通俗的理解上面式子就是,如果上一次的momentum(即 v v v)与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,所以这样做能够达到加速收敛的过程。

  2. 批量大小:256,向量:0.9

    PS:批量:一次训练的样本数目

  3. 训练的调整:权值衰减(weight decay,正向项前的系数,正则项指示模型复杂度)。weight decay的作用 是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。

    丢弃正则化(dropout Regularization):对于开始的两个全连接层

    ​ 思想:对于网络的每一层,随机的丢弃一些单元。

    ​ 1. 每个特征都可能被丢弃,所以整个网络不会偏向于某个特征(权值过大),减小过拟合

    ​ 2. 网络变小小,减小了过拟和

  4. 学习率初始设置为 1 0 − 2 10^{-2} 102,在验证集精度停止提高时,降低10倍。减少3次

  5. 370K次迭代(itertion)、74时期(epochs)

    PS: itertion = 一个正向通过 + 一个反向通过

    ​ epoch = 所有训练样本一个正向传递 + 一个反向传递

  6. weight的初始化:首先,训练configuration A , A浅的可以采用随机初始化。其他网络的初始化用A的前4个卷积层、后三个FC层,其他层随机初始化。

  7. Training image size:

    • 固定S大小:single-scale training

      S=384,用S=256训练出的权重初始化。用 1 0 − 3 10^{-3} 103学习率。

    • 范围随机采样:multi-scale training

3.2Testing

在测试时,给定一个经过训练的ConvNet和一个输入图像,它按以下方式分类。 首先,它被各向同性地重新标度为预定义的最小图像侧,Q(或称为测试尺度)。 Q不一定等于S( 对于每个S使用多个Q值会提高性能)。 然后,网络被密集地应用于重新标度的测试图像。也就是说,全连接层首先被转换为卷积层(第一FC层转换为7×7卷积层,最后两个FC层转换为1×1卷积层)。 然后将得到的全卷积网应用于整个(未裁剪)图像。 结果是一个类分数图(class score map),其通道数等于类的数目,而且还有一个可变的空间分辨率(spatial resolution),取决于输入的图像大小。 最后,为了获得图像的类分数的固定大小向量,对类分数映射进行空间平均(求和)。 研究者还通过对图像的水平翻转来增强测试集;对原始图像和翻转图像的Soft-max类后验进行平均,以获得图像的最终分数。

理解:

在3.2testing作者提出了一种策略,即使用卷积层代替全连接层(具体理解可参考FCN网络,讲的十分详细),这种策略不限制输入图片的大小,最终输出结果是一个w*h*n的score map。其中,w和h与输入图片大小有关,而n与所需类别数相同。而将w*h个值进行sum pool(对每一个channel进行求和),即可得到在某一类上的概率。这种方法叫做dense evaluation

另一种策略就是经常使用的卷积层+全连接层。通过将测试图片缩放到不同大小Q,Q可以不等于S(训练时图片大小)。在QQ图片上裁剪出多个SS的图像块,将这些图像块进行测试,得到多个1*n维的向量。通过对这些向量每一纬求平均,得到在某一类上的概率。这种方法叫做multi-crop

作者认为,这两种方法的差别在于convolution boundary condition不同:dense由于不限制图片大小,可以利用像素点及其周围像素的信息(来自于卷积和池化),包含了一些上下文信息,增大了感受野,因此提高分类的准确度;而multi-crop由于从图片上裁剪再输网络,需要对图像进行padding,因此增加了噪声。

但是由于multi-crop需要裁剪出大量图片,每张图片都要单独计算,增加了计算量,并且准确率提升不大。在论文4.3中可以看出multi-crop比dense在top-1错误率上提升只有0.2.

4.Classification Experiments

深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第2张图片

深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第3张图片

二、Google-Net

abstract

  1. The main hallmark of this architecture is the improved utilization of the computing resources inside the network
  2. increased thedepth and width of the network while keeping the computational budget constant.
  3. classification and detection. 分类和检测

1.Introduction

we will focus on an efficient deep neuralnetwork architecture for computer vision, codenamed Inception。

mobile and embedded computing

2.Related Work

  1. CNN standard structure:

    • stacked convolutional layers (optionally followed by contrast normalization and max-pooling) are followed by one or more fully-connected layers.
    • larger datasets, the recent trend has been to increase the number of layers and layer size while using dropout to address the problem of overfitting.
  2. used a series of fixed Gabor filters of different sizes to handle multiple scales.

多尺度!!!!

  1. 1 × 1 1\times1 1×1卷积核:用于降维

  2. RCNN:将整个检测问题分为两个子问题:利用颜色和纹理等低级线索,以与类别无关的方式生成对象位置建议,以及使用CNN分类器在这些位置识别对象类别。

    定位与检测--------->googlenet 尝试了多框预测、更好的边界框建议分类

3.motivation and High level considerations

  1. 增加网络深度、宽度的坏处:

    • 增加了参数量,有过拟合的风险
    • 增加了计算资源的使用

    解决方法:引入稀疏性,用稀疏层替换全连接层,甚至卷积层

  2. 通过分析前一层激活的相关统计,并聚类具有高度相关输出的神经元,可以逐层构建最优网络拓扑。

  3. 卷积是通过一系列与前层区块的密集连接来实现的,文献【11】发表后,卷积神经网通常在特征维度中使用随机的稀疏的连接表,以打破对称性,提高学习水平,然而,根据文献【9】这种趋势会倒退回全连接模式,以便更好滴使用并行计算。

4.Architectural Details

  1. Inception的体系结构的主要设计思路是要在一个卷积视觉网络中寻找一个局部最优的稀疏结构,这个结构需要能够被可获得的密集组件(dense component)覆盖和近似表达。

  2. Inception就是把多个卷积或池化操作,放在一起组装成一个网络模块,设计神经网络时以模块为单位去组装整个网络结构。

    深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第4张图片

    由于参数量太大,加入 1 × 1 1\times1 1×1卷积核,减少通道数,还有非线性操作。

    深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第5张图片

  3. 整体网络结构设计

    深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第6张图片

(1)GoogLeNet采用了模块化的结构(Inception结构),方便增添和修改;
(2)网络最后采用了average pooling来代替全连接层,该想法来自NIN(Network in Network),事实证明这样可以将准确率提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便对输出进行灵活调整;
(3)虽然移除了全连接,但是网络中依然使用了Dropout ; (在avg pooling之后,FC之前)
(4)为了缓解梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度(辅助分类器Auxililary Classifier)。辅助分类器是将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中,这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号。

原始输入的图像为224×224×3,接下来的是对各层进行更细致的解释:
深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第7张图片
深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第8张图片

三、ResNet(残差网络)

deep residual learning 深度残差学习

1.基本原理

一般CNN网络:输入为X,某一有参网络层设为H,学习 x → H ( x ) x\rightarrow H(x) xH(x)的映射

ResNet:学习输入、输出之间的残差,即 H ( x ) − x H(x)-x H(x)x。X -> (H(X) - X) + X。其中X这一部分为直接的identity mapping,而H(X) - X则为有参网络层要学习的输入输出间残差。
增加网络层次时,减少损失函数的衰减、损失。
深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第9张图片

2.identity mapping

  1. 用F(X, Wi)来表示残差映射,那么输出即为:Y = F(X, Wi) + X

  2. 建立新的identity mapping函数,从而可以使得处理后的输入X与输出Y的通道数目相同即Y = F(X, Wi) + Ws*X

    两种identity mapping的方式。一种即简单地将X相对Y缺失的通道直接补零从而使其能够相对齐的方式,另一种则是通过使用1x1的conv来表示Ws映射

3.网络结构

深度卷积神经网络:GoogleNet、VGGNet、ResNet 学习笔记_第10张图片

你可能感兴趣的:(神经网络)