卷积神经网络(convolutional neural networks, CNN) 是针对图形领域任务提出的神经网络,经历数代人的发展,在 2012 年之后大部分图像任务被 CNN 统治,例如图像分类,图像分割,目标检测,图像检索等
卷积神经网络发展史
CNN 结构受视觉系统启发:1962年,生物学家 Torsten Wiesel 和 David H.Hubel(1981年诺贝尔医学奖)对猫的视觉系统进行研究,首次发现猫的视觉系统中存在层级结构,并且发现了两种重要的细胞simple cells和complex cells,不同类型细胞承担不同抽象层次的视觉感知功能。
猫的视觉系统实验
- 神经元存在局部感受区域(receptive field),也称感受野。
- 细胞对角度有选择性
- 细胞对运动方向有选择性
对 CNN 启发:
- 视觉系统是分层、分级的进行处理,从低级到高级的抽象过程 -> 堆叠使用卷积和池化
- 神经元实际上是存在局部的感受区域的,具体来说,它们是局部敏感 -> 神经元局部连接
第一个卷积神经网络雏形——新认知机(Neocognitron)
1980年,日本学者福岛邦彦(Kunihiko Fukushima) 借鉴毛视觉系统实验结论,提出具有层级结构的神经网络——新认知机,堆叠使用类似 S 细胞和 C 细胞的两个结构。S 细胞和 C 细胞可类比现代 CNN 的卷积和池化
缺点:没有反向传播算法更新权值,模型性能有限。
福岛邦彦主页:http://personalpage.flsi.or.jp/fukushima/index-e.html
第一个大规模商用卷积神经网络——Lenet-5
1989年,Lecun等人已开始研究Lenet
1998年,Lecun等人提出Lenet-5,并成功在美国邮政系统中大规模应用于手写邮政编码识别
缺点:无大量数据和高性能计算资源
第一个技惊四座的卷积神经网络——AlexNet
2012年,AlexNet以超出第二名10.9个百分点的成绩夺得ILSVRC分类任务冠军,从此拉开卷积神经网络统制治图像领域序幕
成功要素:
- 算料:ImageNet
- 算力:GPU
- 算法:AlexNet
卷积层
图像识别特点
- 特征具有局部性:卷积核每次仅连接K*K区域,K*K是卷积核尺寸
- 特征可能出现在任何位置:卷积核参数重复使用(参数共享),在图像上滑动
- 下采样图像,不会改变图像目标
卷积核:具可学习参数的算子,用于对输入图像进行特征提取,输出通常称为特征图(feature maps)
边缘检测:$\begin{bmatrix}
-1 & -1 & -1\\
-1 & 8 & -1\\
-1 & -1 & -1
\end{bmatrix}$
锐化:$\begin{bmatrix}
0 & -1 & 0\\
-1 & 5 & -1\\
0 & -1 & 0
\end{bmatrix}$
高斯模糊:$\begin{bmatrix}
1 & 2 & 1\\
2 & 4 & 2\\
1 & 2 & 1
\end{bmatrix}$
填充(Padding):在输入图像的周围添加额外的行/列。
作用:
- 使卷积后图像分辨率不变,方便计算
- 弥补边界信息“丢失”
步幅(Stride):卷积核滑动的行数和列数称为步幅,控制特征图的大小,会被缩小 $\frac1s$ 倍
输出特征图尺寸计算:
多通道卷积:RGB图像是3*h*w的三维的数据,第一个维度3表示 channel ,通道数
一个卷积核是3-D 张量,第一个维度与输入通道有关
注:卷积核尺寸通常指高、宽
池化层
池化:一个像素表示一块区域的像素值,降低图像分辨率
一个区域像素如何被一个像素代替:
- Max Pooling,取最大值
- Average Pooling,取平均值
输出尺寸计算与卷积操作类似
注意:池化层无可学习参数
池化作用:
- 缓解卷积层对位置的过度敏感
- 减少冗余
- 降低图像分辨率,从而减少参数量
Lenet-5
K=(输出通道,输入通道,核大小)
input=(1, 32, 32)
- C1层:卷积核K1=(6, 1, 5, 5), p=1, s=1, output=(6, 28, 28)
- S2层:最大池化层,池化窗口=(2, 2), s=2, output=(6, 14, 14)
- C3层:卷积核K3=(16, 6, 5, 5), p=1, s=1, output=(16, 10, 10)
- S4层:最大池化层,池化窗口=(2, 2), s=2, output=(16, 5, 5)
- FC层:3个FC层输出分类(400, 120), (120, 84), (84, 10)
特征提取器(features):C1, S2, C3, S4
分类器(classifier):3个FC层
CNN 进化史
- 1980 Neocognitron 福岛邦彦
- 1998 Lenet-5 Lecun
- 2012 AlexNet Alex
- 2014 GoogLenet Google
- 2014 VGG-Net VGG
- 2015 ResNet Kaiming He
- 2017 DenseNet Gao Huang
- 2017 Se-Net Jie Hu