第四部分 深度卷积网络-实例探究 1 笔记

2.1 为什么要进行实例探究?
Why look at case studies?
类似通过别人代码来学习编程,研究有效、成功的CNN网络架构也是不错的学习办法。在计算机视觉任务中表现良好的神经网络框架往往也适用于其它任务,如果有人已经训练或者计算出擅长识别猫、狗、人的神经网络或者神经网络框架,该网络架构同样可以用来构建一个自动驾驶汽车系统。
典型CNN架构:
  • 经典架构
  1. LeNet-5
  2. AlexNet
  3. VGG(16/19)
  • ResNet
  • Inception

2.2 经典网络
Classic networks

第四部分 深度卷积网络-实例探究 1 笔记

LeNet-5 设计用来识别手写数字,针对灰度影像进行训练。
输入: 影像尺寸32x32x1
Conv1:卷积核5x5x1x6 s = 1 p=0 输出维度28x28x6
AvgPooling:f = 2 s =2 输出维度14x14x6
Conv2:卷积核5x5x6x16 s=1 p=0 输出维度10x10x16
AvgPooling:f = 2 s =2 输出维度5x5x16
Flatten:将上一层的输出展开成400个单元
FC1:输出维度120
FC2:输出维度84
FC3:输出维度10 softmax 对应十个数字的概率
该网络中采用了平均池化,卷积层对应的**函数为sigmoid函数和tanh函数。这个神经网络中有一种模式至今仍然经常用到,就是一个或多个卷积层后面跟着一个池化层,然后又是若干个卷积层再接一个池化层,然后是全连接层,最后是输出,这种排列方式很常用。
AlexNet
第四部分 深度卷积网络-实例探究 1 笔记

输入尺寸变为了227x227x3,实际采用的224x224x3。池化采用了MAX Pooling。**函数采用的是ReLu。全连接层的维度更大,导致参数主要集中在全连接层。针对ImageNet数据集进行训练,输出维度为1000。
VGG
第四部分 深度卷积网络-实例探究 1 笔记
第四部分 深度卷积网络-实例探究 1 笔记

AlexNet网络结构相对复杂,包含大量超参数。
VGG-16网络没有过多超参数,是一种只需要专注于构建卷积层的简单网络。首先用3×3,步幅1的卷积核构建卷积层,padding参数same。然后用一个2×2,步幅2的过滤器构建MAX Pooling。
网络结构简单示意:
Input——>
Conv——>Conv——>Pool——>
Conv——>Conv——>Pool——>
Conv——>Conv——>Conv——>Pool——>
Conv——>Conv——>Conv——>Pool——>
Conv——>Conv——>Conv——>Pool——>
FC1——>FC2——>FC3
卷积层+全连接层个数 = 16 约1.38亿个参数。
VGG-16的结构并不复杂,而且这种网络结构很规整,都是几个卷积层后面跟着池化层,池化层缩小了图像的高度和宽度。同时,卷积层的卷积核维度变化存在一定的规律64-128-256-512主要缺点是需要训练的特征数量非常巨大

2.3 残差网络 - 1
Residual Networks (ResNets)
非常深的神经网络往往难以训练,因为会存在梯度消失和梯度爆炸的问题。残差网络可以很好的应对这些问题。残差网络利用残差模块(Residual block)构建网络,相比于传统的Conv-Pool的堆叠方式,残差模块引入了跳跃连接(Skip connection)的机制,该机制可以将某一层网络层的**迅速的反馈给另外一层甚至更深。
Residual block
第四部分 深度卷积网络-实例探究 1 笔记

两层神经网络:
传统情况:首先是线性**,即L层的**a[l]乘以L+1层的权重W[l+1]加上偏置b[l+1],然后是非线性**ReLu得到L+1层的**a[l+1],以同样的方式得到L+2层的**a[l+2]
残差模块:主路径与传统方式一致,在得到L+2层的**之前,针对线性**z[l+2],在进行ReLu**之前,需要加上L层的**即a[l],随后对和进行ReLu**得到a[l+2]。表现在网络结构上,恰似L的**经过跳跃连接到L+1层上进而得到L+2层。
第四部分 深度卷积网络-实例探究 1 笔记

而残差网络就是这么一个个残差模块堆叠而成的,上图中共有5个残差模块,ResNet论文中称传统网络结构为Plain network