04.卷积神经网络
第2周 深度卷积网络:实例探究
2.1 为什么要进行实例探究?
- 概述
(1)经典网络
LeNet-5
AlexNet
VGG
(2)ResNet
(3)Inception
2.2 经典网络
- LeNet-5
(1)针对灰度图像。
(2)输入: 32 × 32 × 1 32\times 32 \times 1 32×32×1。
(3)Conv1: f = 5 , s = 1 f=5, s=1 f=5,s=1,6个过滤器,输出 28 × 28 × 6 28\times 28\times 6 28×28×6。
(4)Pool1: f = 2 , s = 2 f=2, s=2 f=2,s=2,一般采用平均池化,输出 14 × 14 × 6 14\times 14 \times 6 14×14×6。
(5)Conv2: f = 5 , s = 1 f=5, s=1 f=5,s=1,16个过滤器,输出 10 × 10 × 16 10\times 10\times 16 10×10×16。
(6)Pool2: f = 2 , s = 2 f=2, s=2 f=2,s=2,一般采用平均池化,输出 5 × 5 × 16 5\times 5 \times 16 5×5×16。
(7)FC3: 120 120 120
(8)FC4: 84 84 84
(10)论文:LeCun et al. 1998. Gradient-based learning applied to document recognition。 - AlexNet
(1)输入: 227 × 227 × 3 227\times227\times 3 227×227×3。
(2)Conv1: f = 11 , s = 4 f=11, s=4 f=11,s=4,96个过滤器,输出KaTeX parse error: Undefined control sequence: \5 at position 9: 55\times\̲5̲5\times96。
(3)Pool1: f = 3 , s = 2 f=3, s=2 f=3,s=2,采用最大池化法。
(4)Conv2: f = 5 f=5 f=5,256个过滤器,采用相同卷积法,输出 27 × 27 × 256 27\times27\times256 27×27×256。
(5)Pool2: f = 3 , s = 2 f=3,s=2 f=3,s=2,采用最大池化法,输出 13 × 13 × 256 13\times13\times256 13×13×256。
(6)Conv3: f = 3 f=3 f=3,采用相同卷积法,输出 13 × 13 × 384 13\times13\times384 13×13×384。
(7)论文:Krizhevsky et al. 2012. ImageNet: classification with deep convolutional neural networks。 - VGG-16
(1)Conv= 3 × 3 3\times3 3×3过滤器, s = 1 s=1 s=1,相同卷积
(2)MAX-POOL= 2 × 2 , s = 2 2\times2,s=2 2×2,s=2
(3) [ C O N V 64 ] × 2 [CONV 64]\times2 [CONV64]×2表示有两层卷积层,每层有64个卷积过滤器
(4)论文:Simonyan & Zisserman 2015. Very deep convolutional networks for large-scale image recognition。 - 论文阅读顺序建议:首先阅读AlexNet论文,然后是VGG论文,最后是LeNet。
2.3 残差网络
- 残差模块
(1)示意图
(2)主路径
z [ l + 1 ] = W [ l + 1 ] a [ l ] + b [ l + 1 ] z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} z[l+1]=W[l+1]a[l]+b[l+1]
a [ l + 1 ] = g ( z [ l + 1 ] ) a^{[l+1]}=g(z^{[l+1]}) a[l+1]=g(z[l+1])
z [ l + 2 ] = W [ l + 2 ] a [ l + 1 ] + b [ l + 2 ] z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} z[l+2]=W[l+2]a[l+1]+b[l+2]
a [ l + 2 ] = g ( z [ l + 2 ] ) a^{[l+2]}=g(z^{[l+2]}) a[l+2]=g(z[l+2])
(3)在主路径的基础上,对 a [ l ] a^{[l]} a[l]增加捷径(也称为跳远连接),直接输入到深层中,形成残差。即在主路径中的第四行公式改为:
a [ l + 2 ] = g ( z [ l + 2 ] + a [ l ] ) a^{[l+2]}=g(z^{[l+2]}+a^{[l]}) a[l+2]=g(z[l+2]+a[l]) - 残差网络
- 残差网络的作用:尽管理论上,随着深度神经网络层数的增加,对训练集的拟合误差应减少,但是实际上在下降到一定程度后,误差反而会上升,如下图所示:
而残差网络不会出现这样的问题,其示意图如下所示:
2.4 残差网络为什么有用?
- 残差网络为什么起作用?
- ResNet
2.5 网络中的网络以及 1 × 1 1\times1 1×1卷积
-
1
×
1
1 \times 1
1×1为什么起作用?
Lin et al. 2013. Network in network。 - 应用
1
×
1
1 \times 1
1×1卷积
- 作用:根据需要,保持或压缩通道数量。
2.6 谷歌Inception网络简介
- Inception网络的动机
(1)代替人工确定过滤器的规模,或确定是否要使用卷积层、池化层。
(2)不同条件下卷积、池化示意图
(3)输入: 28 × 28 × 192 28\times28\times192 28×28×192
(4)输出: 28 × 28 × 256 28\times28\times256 28×28×256
(5)存在问题:计算成本 - 以上一张图中
5
×
5
5\times5
5×5卷积叙述计算成本问题
(1)卷积示意图
(2)每个输出值需要计算 5 × 5 × 192 5\times5\times192 5×5×192次乘法,共 28 × 28 × 32 28\times28\times32 28×28×32个输出值,因此共需要进行乘法计算 28 × 28 × 32 × 5 × 5 × 192 = 120 M 28\times28\times32\times5\times5\times192=120M 28×28×32×5×5×192=120M。计算成本过高。
(3)解决方法:上一节中学到的 1 × 1 1\times1 1×1网络。 - 使用
1
×
1
1\times1
1×1网络
(1)网络结构示意图
(2)中间层有时被称为瓶颈层(bottleneck layer)
(3)计算成本分析:
a. 输入到瓶颈层, 28 × 28 × 16 × 192 = 2.4 M 28\times28\times16\times192=2.4M 28×28×16×192=2.4M
b. 瓶颈层到输出层, 28 × 28 × 32 × 5 × 5 × 16 = 10.0 M 28\times28\times32\times5\times5\times16=10.0M 28×28×32×5×5×16=10.0M
2.7 Inception网络
- Inception模块
(1)基本架构
- Inception网络
除Inception模块外,还增加了部分全连接层和softmax,防止网络过拟合。
2.8 使用开源的实现方案
- 充分使用Github等开源网站
2.9 迁移学习
- 迁移学习
(1)问题假设:检测猫是否是tigger或mity或两者都不是。
(2)下载ImageNet的相关网络及权重,然后删除最后的softmax层,增加新的softmax层。
(3)仅需训练softmax层的参数(新数据集较小时),或训练softmax层及部分其它隐藏层(新数据集较大时,要训练的隐藏层应在后面),或将原始权重作为初始化然后全部网络进行训练(新数据集充分大时)。
2.10 数据扩充
- 常见扩充方法
(1)镜像操作
(2)随机剪裁
(3)旋转操作(不常用)
(4)扭曲(不常用)
(5)局部扭曲(不常用) - 颜色变换
通常基于某种分布对RGB通道进行变换。
- 训练中实现变形
2.11 计算机视觉现状
- 数据VS手工
(1)当数据量越大时,人们往往更倾向于更简单的算法,更少的手工设计。 - 在基准测试集和竞赛中的建议
(1)嵌入
独立地训练若干神经网络,然后将输出平均
(2)测试时采用Multi-crop
测试时,在图片的多个版本中运行分类器并平均结果。10-crop举例如下:
- 使用开源代码
(1)使用文献中的网络结构。
(2)使用开源实现。
(3)使用预训练模型在数据集上调试。