随着计算机硬件的升级与性能的提高,运算量已不再是阻碍深度学习发展的难题。卷积神经网络(Convolution Neural Network,CNN)是深度学习中一项代表性的工作,其雏形是 1998 年 LeCun 提出的 LeNet-5 模型。如今,卷积神经网络已被广泛应用于计算机视觉领域。本文主要介绍卷积神经网络中的经典网络,包括 LeNet-5, AlexNet 和 VGG-16.
目录
1 LeNet-5
LeNet-5 是经典卷积神经网络之一,1998 年由 Yann LeCun 等人在论文 《Gradient-Based Learning Applied to Document Recognition》中提出。LeNet-5 网络使用了卷积层、池化层和全连接层,实现可以应用于手写体识别的卷积神经网络。
论文链接如下:
《Gradient-Based Learning Applied to Document Recognition》
LeNet-5 包含 2 个卷积层和 3 个全连接层,包含学习参数的网络层有 5 层,这也是 LeNet-5 名字中 5 的由来。LeNet-5 的输入图像大小是 32 x 32,颜色通道数为 1,这表明 LeNet-5 仅支持输入黑白图像。
卷积 / 池化操作 | 图像大小 / 神经元个数 | 待训练的参数个数 | |
Input | 32 × 32 × 1 | / | |
Conv1 | 5 × 5, s = 1 | 28 × 28 × 6 | 150 |
avg pool1 | 2 × 2, s = 2 | 14 × 14 × 6 | / |
Conv2 | 5 × 5, s = 1 | 10 × 10 × 16 | 2,400 |
avg pool2 | 2 × 2, s = 2 | 5 × 5 × 16 | / |
FC1 | 120 | 48,000 | |
FC2 | 84 | 10,080 | |
FC3 (Output) | 10 | 840 |
LeNet-5 网络拥有约 6.1 万个待训练的参数,与如今常见的卷积神经网络不同, LeNet-5 激活层使用了 Sigmoid 函数,池化层采用平均池化,另外最后一层的输出使用 RBF 函数处理(而现在常用的处理方法是 Softmax 函数)。
2 AlexNet
与 LeNet-5 类似,AlexNet 是另一个用于图像识别的经典神经网络。AlexNet 的名字来源于其第一作者 Alex Krizhevsky,于 2012 年 ImageNet 赛事夺冠之后为人们所熟知。AlexNet 沿用了 LeNet-5 的思路,把卷积,池化操作应用于更深层的神经网络中。
论文链接如下:
《ImageNet Classification with Deep Convolutional Neural Networks》
卷积 / 池化操作 | 图像大小 / 神经元个数 | 待训练的参数个数 | |
Input | 224 × 224 × 3 | / | |
Conv1 | 11 × 11, s = 4 | 55 × 55 × 96 | 34,848 |
max pool1 | 3 × 3, s = 2 | 27 × 27 × 96 | / |
Conv2 | 5 × 5, p = 1, s = 1 | 27 × 27 × 256 | 614,400 |
max pool2 | 3 × 3, s = 2 | 13 × 13 × 256 | / |
Conv3 | 3 × 3, p = 1, s = 1 | 13 × 13 × 384 | 884,736 |
Conv4 | 3 × 3, p = 1, s = 1 | 13 × 13 × 384 | 1,327,104 |
Conv5 | 3 × 3, p = 1, s = 1 | 13 × 13 × 256 | 884,736 |
max pool3 | 3 × 3, s = 2 | 6 × 6 × 256 | / |
FC1 | 4,096 | 37,748,736 | |
FC2 | 4,096 | 16,777,216 | |
FC3 (Output) | 1,000 | 4,096,000 |
AlexNet 网络拥有约 6200 万个参数,AlexNet 的创新点包括:
(1)使用 ReLU 作为卷积层的激活函数,避免了 Sigmoid 函数在网络层数增加时梯度消失或爆炸问题;
(2)全连接层使用 DropOut 随机失活方式,屏蔽一部分神经元的输出值,避免模型的过拟合;
(3)使用重叠的最大池化。AlexNet 使用最大池化替代此前人们常用的平均池化,避免了平均池化的模糊问题,并且池化的步长比池化核小,使池化输出有一定的重叠,丰富输出特征。
3 VGG-16
VGG 网络是 Oxford 的 Visual Geometry Group 团队提出,在 2014 年的 ImageNet 赛事中取得亚军。VGG 在 AlexNet 的基础上进一步增加了神经网络的深度,表明当网络层数增加到 16~19 个时可以实现显著改进。
论文链接如下:
《Very Deep Convolutional Networks for Large-Scale Image Recognition》
VGG 网络有两个常见的版本,VGG-16 和 VGG-19,分别对应上图中的模型 D 和模型 E,数字 16 和 19 表示带有待训练权重的网络层数。VGG-16 有 13 个卷积层和 3 个全连接层,VGG-19 比 VGG-16 多 3 个卷积层,有 16 个卷积层和 3 个全连接层。
卷积 / 池化操作 | 图像大小 / 神经元个数 | 待训练的参数个数 | |
Input | 224 × 224 × 3 | / | |
Conv1 | 3 × 3, p = 1, s = 1 | 224 × 224 × 64 | 1,728 |
Conv2 | 3 × 3, p = 1, s = 1 | 224 × 224 × 64 | 36,864 |
max pool1 | 2 × 2, s = 2 | 112 × 112 × 64 | / |
Conv3 | 3 × 3, p = 1, s = 1 | 112 × 112 × 128 | 73,728 |
Conv4 | 3 × 3, p = 1, s = 1 | 112 × 112 × 128 | 147,456 |
max pool2 | 2 × 2, s = 2 | 56 × 56 × 128 | / |
Conv5 | 3 × 3, p = 1, s = 1 | 56 × 56 × 256 | 294,912 |
Conv6 | 3 × 3, p = 1, s = 1 | 56 × 56 × 256 | 589,824 |
Conv7 | 3 × 3, p = 1, s = 1 | 56 × 56 × 256 | 589,824 |
max pool3 | 2 × 2, s = 2 | 28 × 28 × 256 | / |
Conv8 | 3 × 3, p = 1, s = 1 | 28 × 28 × 512 | 1,179,648 |
Conv9 | 3 × 3, p = 1, s = 1 | 28 × 28 × 512 | 2,359,296 |
Conv10 | 3 × 3, p = 1, s = 1 | 28 × 28 × 512 | 2,359,296 |
max pool4 | 2 × 2, s = 2 | 14 × 14 × 512 | / |
Conv11 | 3 × 3, p = 1, s = 1 | 14 × 14 × 512 | 2,359,296 |
Conv12 | 3 × 3, p = 1, s = 1 | 14 × 14 × 512 | 2,359,296 |
Conv13 | 3 × 3, p = 1, s = 1 | 14 × 14 × 512 | 2,359,296 |
max pool5 | 2 × 2, s = 2 | 7 × 7 × 512 | / |
FC1 | 4,096 | 102,760,448 | |
FC2 | 4,096 | 16,777,216 | |
FC3 (Output) | 1,000 | 4,096,000 |
VGG-16 网络拥有约 1.38 亿个参数。它的主要创新之处在于,VGG 使用了多个连续的卷积层,以及尺寸更小的卷积核(3 × 3 大小),替代 AlexNet 中大尺寸的卷积核(11 × 11,5 × 5 等大小),以更好地提取图像的深层特征。
另外,随着神经网络层数的增加,输出图像的宽高减半,卷积层的输出特征数从最初的 64,增加到 128,256 和 512。