计算机视觉中的深度学习8: 卷积神经网络的结构

Slides:百度云 提取码: gs3n

今天这一讲,我们以ImageNet Classification Challenge中使用的CNN的发展来进行介绍。

AlexNet

计算机视觉中的深度学习8: 卷积神经网络的结构
在2012年以前,ImageNet Classification Challenge的获胜者都是人工进行特征提取的线性分类模型。在2012年,AlexNet成功登顶。
计算机视觉中的深度学习8: 卷积神经网络的结构

AlexNet的结构

计算机视觉中的深度学习8: 卷积神经网络的结构
蓝色部分是神经网络的结构,从这我们能够看得出来,这个神经网络的各项长宽大小都是没有明显规律的。这花费了研究人员很长时间进行调整。

黄色的部分是计算的资源

  1. 内存占有
  2. 训练参数的个数
  3. 浮点计算的次数

仔细地观察一下变化的趋势

计算机视觉中的深度学习8: 卷积神经网络的结构

  1. 内存都集中在前几个卷积层,因为卷积层是输入和输出都非常大,而且filter的个数越多,输出也越大
  2. 因为全连接层的连接方式是类似笛卡尔乘积的,所以W的个数非常大,从而产生了更多的可训练参数
  3. filter个数对计算次数影响很大,这因为是卷积,每一次卷积都会产生大量的计算。

ZFNet

计算机视觉中的深度学习8: 卷积神经网络的结构
这本质上的设计思路和AlexNet一模一样,但是这儿使用了更大的神经网络

  1. Conv1:使用了 (7x7 步长 2)的filter,而AlexNet使用的是(11x11 步长 4)的filter
  2. Conv3, 4, 5:使用了512, 1024, 512个filter,而AlexNet使用了384,384,256个filter。

一般来说,更大的网络会有更好的效果。因为你能处理更大的更多的数据了,也能从数据中提取和保留更多的信息。
缺点是,收敛慢,downsample慢。

VGG

计算机视觉中的深度学习8: 卷积神经网络的结构
VGG已经不需要再用人工进行一点一点调试了,他通过有规律的组合,达成了非同一般的效果,能够更快地扩展神经网络,让它变得更深更大。

VGG设计规则

  1. 所有卷积层都是3x3 步长1 pad 1的结构
  2. 所有最大池均为2x2 步长 2
  3. 在池层之后,将通道的数据通过复制扩展为2倍

在VGG中,卷积层有5个阶段

  1. Stage 1: conv-conv-pool
  2. Stage 2: conv-conv-pool
  3. Stage 3: conv-conv-pool
  4. Stage 4: conv-conv-conv-[conv]-pool
  5. Stage 5: conv-conv-conv-[conv]-pool (VGG-19 has 4 conv in stages 4 and 5)

计算机视觉中的深度学习8: 卷积神经网络的结构

卷积层设计

我们有两种选择

Option 1:

  1. Conv(5x5, C -> C)
  2. Params: 25C2
  3. FLOPs: 25C2HW

Option 2:

  1. Conv(3x3, C -> C), Conv(3x3, C -> C)
  2. Params: 18C2
  3. FLOPs: 18C2HW

两个3x3转换与单个5x5转换具有相同的接收域,也就说,一个相同大小的input,经过选择1和选择2,他们的输出大小是一样的。

但是选择2的优点在于

  1. 参数较少且计算量较小,需要更少的计算资源
  2. 两个卷积层的结合,使得非线性计算更多,也让特征之间的组合更多

池层设计

为什么要将通道复制一遍?
因为我们希望每个卷积层都需要有相同的计算量!

计算机视觉中的深度学习8: 卷积神经网络的结构
第一层的输入是Cx2Hx2W,输出则是Cx2Hx2W.
经过2x2 步长为2的max pooling之后,输出则变成了CxHxW
为了达成每个卷积层都需要有相同的计算量的目标,我们只需要将C×2。
第二层的输入就变成了2CxHxW。
如上图所示,则两个卷积层的浮点计算量是相同的。

AlexNet vs VGG-16

VGG是一个比AlexNet大得多的网络,这得益于GPU技术的快速发展。
在AlexNet时代,一个GPU的显存才3G,需要将AlexNet拆解成两部分放到两个GPU里面进行。

计算机视觉中的深度学习8: 卷积神经网络的结构
TBD