卷积神经网络

卷积神经网络(convolutional neural networks, CNN) 是针对图形领域任务提出的神经网络,经历数代人的发展,在 2012 年之后大部分图像任务被 CNN 统治,例如图像分类,图像分割,目标检测,图像检索等

卷积神经网络发展史

CNN 结构受视觉系统启发:1962年,生物学家 Torsten Wiesel 和 David H.Hubel(1981年诺贝尔医学奖)对猫的视觉系统进行研究,首次发现猫的视觉系统中存在层级结构,并且发现了两种重要的细胞simple cells和complex cells,不同类型细胞承担不同抽象层次的视觉感知功能。

猫的视觉系统实验

  1. 神经元存在局部感受区域(receptive field),也称感受野
  2. 细胞对角度有选择性
  3. 细胞对运动方向有选择性

对 CNN 启发:

  1. 视觉系统是分层、分级的进行处理,从低级到高级的抽象过程 -> 堆叠使用卷积和池化
  2. 神经元实际上是存在局部的感受区域的,具体来说,它们是局部敏感 -> 神经元局部连接

第一个卷积神经网络雏形——新认知机(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

卷积层

图像识别特点

  1. 特征具有局部性:卷积核每次仅连接K*K区域,K*K是卷积核尺寸
  2. 特征可能出现在任何位置:卷积核参数重复使用(参数共享),在图像上滑动
  3. 下采样图像,不会改变图像目标

卷积核:具可学习参数的算子,用于对输入图像进行特征提取,输出通常称为特征图(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 张量,第一个维度与输入通道有关

注:卷积核尺寸通常指高、宽

池化层

池化:一个像素表示一块区域的像素值,降低图像分辨率

一个区域像素如何被一个像素代替:

  1. Max Pooling,取最大值
  2. Average Pooling,取平均值

输出尺寸计算与卷积操作类似

注意:池化层无可学习参数

池化作用:

  1. 缓解卷积层对位置的过度敏感
  2. 减少冗余
  3. 降低图像分辨率,从而减少参数量

Lenet-5

K=(输出通道,输入通道,核大小)

input=(1, 32, 32)

  1. C1层:卷积核K1=(6, 1, 5, 5), p=1, s=1, output=(6, 28, 28)
  2. S2层:最大池化层,池化窗口=(2, 2), s=2, output=(6, 14, 14)
  3. C3层:卷积核K3=(16, 6, 5, 5), p=1, s=1, output=(16, 10, 10)
  4. S4层:最大池化层,池化窗口=(2, 2), s=2, output=(16, 5, 5)
  5. FC层:3个FC层输出分类(400, 120), (120, 84), (84, 10)

特征提取器(features):C1, S2, C3, S4

分类器(classifier):3个FC层

CNN 进化史

  1. 1980 Neocognitron 福岛邦彦
  2. 1998 Lenet-5 Lecun
  3. 2012 AlexNet Alex
  4. 2014 GoogLenet Google
  5. 2014 VGG-Net VGG
  6. 2015 ResNet Kaiming He
  7. 2017 DenseNet Gao Huang
  8. 2017 Se-Net Jie Hu