09 经典网络解析

image.png

AlexNet

image.png

ImageNet大规模视觉挑战赛

目前已停办。
image.png
image.png

主体贡献

image.png

层数统计说明

image.png

  • 第一层
    • 输出是96个特征图
    • 特征图每个元素经过ReLU函数操作后输出
  • 需要注意,输入图像在输入之前经过了去均值处理
    • 统计数据集中所有图像的均值向量,也是2272273,这个向量会被存下。
    • 当给定图像输入神经网络前,会先将图像减去均值图像后,再输入神经网络。

Q:那么为何要去均值呢?
A:我们在分类时,实际上比较张三和李四,两者绝对数值是没有意义的,我们更多比较是相对值用于分类。去均值是为了保留相对值,来保证数值计算时不会出那么多问题。而且绝对数值对分类很多时候是没有意义的。 :::info 注意,AlexNet去均值的操作和其他网络如VGG是不同的。 ::: image.png

  • 池化层

image.png

  • 局部响应归一化层
    • 不作详细介绍,后来的网络如VGG就不再使用此层,因为意义不大。

image.png

  • 同理,第二层256个5*5卷积核,步长为1,使用零填充p=2
    • 第二层增加了卷积核的个数,相当于增加了基元的描述能力,能够描述更多的信息。
    • 对上一层输出的2727做55卷积,大致相当于在原图上做50*50卷积,有很大的感受野。
    • 输出为2727256
  • 第三、四个卷积层

image.png

  • 第五层卷积层(conv5):256个3*3卷积核,步长为1,使用零填充p=1
  • 第六到第八层:全连接神经网络分类器
    • MAX POOL3的输出:66256的特征响应图组
    • FC6期望输入:向量,将特征响应图组展开flatten(一个特征图一个特征图连接起来)得到9216维向量。
    • 输出:图像类别概率

image.png

  • 重要说明:
    • 整个是端到端的

image.png

  • 重要技巧:

image.png

AlexNet卷积层在做什么?

image.png

  • 输出是66256的特征图。可以将整个红框圈住的层看成是256个超级卷积核(输出256个特征图,就相当于有256个卷积核)。就可以这样认为:一张图像,经过256个卷积核得到256个特征响应图。
    • 从数据中学习对于分类有意义的结构特征
    • 描述输入图像中的结构信息
    • 描述结果存储在256个6*6的特征响应图里

ZAFNet

这个网络让我们对网络中每个神经元在做什么,或每个卷积核在做什么,有了更深入的理解。
image.png
做了如上改进,那么这些改进有什么作用呢?

  • 第一个改进:
    • 第一个卷积层的卷积核改小,有利于感受细粒度的信息,即不要第一次就丢掉太多细粒度的东西。
  • 第二个改进:
    • 步长降低是希望分辨率不要很快降下来,而是慢慢降下来,这样不至于像素信息突然从大图变为小图,导致信息损失太快。
  • 第三个改进:
    • 作者通过可视化发现第三、四层已经不再是基元结构,有了很多种基元组合的结构(概念)了,而模板少是记不住的,分类能力当然弱,因此增加卷积核个数,多一些基元,分类效果就会变好。

VGG

image.png

  • 输入图像去均值方法:
    • 计算均值的方式不同于AlexNet:将图像的每一个点都拿出来,算这些点的r、g、b的均值,得到一个三维向量。
  • 采用了5组卷积(一组卷积包含2或3个卷积层),3个全连接。
    • 13个卷积层和3个全连接,因此是个16层的网络。

image.png

  • 为什么每次池化后都增加卷积核个数?
    • 因为增加卷积核就能增加模板个数,就能增加图像中学习到的局部模式/结构的个数。
  • 为什么前层卷积核少,后层多?
    • 因为前层学的是一些基元信息,而基元是有限的,但基元能组合产生的结构是很多的。
    • 而且前层图像较大,卷积核多的话,运算量就很大。O(mmdnn)
    • 而后层输入的特征图都比较小。

      小卷积核有什么优势?

      两个33输出的结果相当于原图上55卷积的结果。
      image.png

      对于高斯核,两次小卷积和一次大卷积结果相同,对于卷积核,我们只说感受野是相同的。结果也没必要一样。

image.png

为什么VGG每经过一次池化操作,卷积核个数就增加一倍?

image.png

问什么卷积核个数增加到512后就不再增加

image.png

VGG16 vs VGG19

image.png

VGG证明的一些结论

1、往深度上做神经网络对性能是有帮助的
2、小卷积核就足够了,串联能仿真大卷积核的结果
3、AlexNet的归一化层作用并不明显


GoogleNet

  • 最大创新点:提出了一种Inception结构

image.png

  • 平均池化的思想和我们之前讲纹理时的相似,用平均值代替就可以了,不必使用空间位置,意义不大。

    • 即66256的特征图不必展开每张特征图,用每张特征图的均值代表此特征图即可。

      串联结构(如VGG)存在的问题

      image.png
  • 比如有一条很粗的线,如果前一层卷积核较小,那么只会提取到边缘的线,这样就导致信息丢失。

    Inception模块

  • 1*1的卷积不会改变长宽,不考虑邻域,考虑的是对一个像素点的所有深度通道上的数值进行非线性操作,在深度方向上进行压缩。

  • 3*3是在原始输入信息上提取小感受野的东西
  • 5*5是在原始输入信息上提取大感受野的东西
  • max pooling相当于将强的信息向周围扩张
  • 相当于将前面的特征图在深度方向拼起来,会要求所有的输出都是相同宽高(可以通过padding实现),这样才能连起来。
  • 这种方法就得以保留更多的信息。

Inception v1

这样直接用起来会很慢,这么多卷积在里面,尤其5*5卷积,会慢很多,因此提出了下面瓶颈的方法。

  • 11卷积不改变宽高,但可以通过控制此层卷积核的个数来改变后面55卷积核的深度(卷积核的深度等于前层输出的特征图的个数)。
    • 因此,通过11卷积可以降低深度通道,然后再去做卷积。这样运算量就会小(11卷积本身运算量很小)

image.png
image.png

  • 注意,新加的层11卷积和后面层的11卷积作用是不一样的。

image.png

  • 输入:

image.png

  • 输出:

image.png

辅助分类器的作用

使得上述红线标的地方也能有梯度回传,避免训练过程中网络太深导致的梯度消失问题。
image.png
image.png

平均池化向量化与直接展开向量化有何区别?

image.png