快速了解 CNN 经典模型

LeNet

手写字体识别模型LeNet5诞生于1994年,是最早的卷积神经网络之一。LeNet5通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,这个网络也是最近大量神经网络架构的起点。

卷积网络的第一个成功应用是由Yann LeCun在20世纪90年代开发的,其中最著名的是用于读取邮政编码、数字等的LeNet体系结构。

AlexNet

AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的VGG,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。

AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。

AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:

  1. 成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
  2. 训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。
  3. 在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
  4. 提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
  5. 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。
  6. 数据增强,随机地从256x256的原始图像中截取224x224大小的区域(以及水平翻转的镜像),相当于增加了2x(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%。1

ZFNet

论文:Visualizing and Understanding Convolutional Networks

GoogLeNet

GoogLeNet是2014年Christian Szegedy提出的一种全新的深度学习结构,在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如overfit、梯度消失、梯度爆炸等。inception的提出则从另一种角度来提升训练结果:能更高效的利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。

ILSVRC 2014获奖者是来自Szegedy等人的一个复杂网络。来自谷歌。它的主要贡献是开发了一个Inception模块,大大减少了网络中的参数数量(4M,而AlexNet有60M)。此外,本文在ConvNet的顶部使用了平均池而不是完全连接的层,从而消除了大量看起来无关紧要的参数。

2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名,这两类模型结构的共同特点是层次更深了。VGG继承了LeNet以及AlexNet的一些框架结构,而GoogLeNet则做了更加大胆的网络结构尝试,虽然深度只有22层,但大小却比AlexNet和VGG小很多,GoogleNet参数为500万个,AlexNet参数个数是GoogleNet的12倍,VGGNet参数又是AlexNet的3倍,因此在内存或计算资源有限时,GoogleNet是比较好的选择;从模型结果来看,GoogLeNet的性能却更加优越。


GoogLeNet 相关论文参考:
[1] Going Deeper with Convolutions, 6.67% test error, http://arxiv.org/abs/1409.4842
[2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error, http://arxiv.org/abs/1502.03167
[3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error, http://arxiv.org/abs/1512.00567
[4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error, http://arxiv.org/abs/1602.07261

VGGNet

VGGNet由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络。它探索了卷积神经网络的深度和其性能之间的关系,通过反复的堆叠33的小型卷积核和22的最大池化层,成功的构建了16~19层深的卷积神经网络。VGGNet获得了ILSVRC 2014年比赛的亚军和定位项目的冠军,在top5上的错误率为7.5%。目前为止,VGGNet依然被用来提取图像的特征。

扫描二维码关注公众号,回复: 9967183 查看本文章

VGGNet的主要贡献在于表明网络的深度是获得良好性能的关键组件。他们最终的最佳网络包含16个CONV/FC层,并且,引人注目的是,它具有一个极其同质的体系结构,从开始到结束只执行3x3卷积和2x2池。后来发现,尽管VGG-ConvNet的分类性能稍差,但在多个迁移学习任务中,其性能优于GoogLeNet。因此,当从图像中提取CNN特征时,VGG网络是当前社区中最受欢迎的选择。特别是,他们的预训练模型可用于即插即用的咖啡厅。VGGNet的一个缺点是它的计算成本更高,并且使用更多的内存和参数(140M)。


VGGNet 参考论文

[1] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).

代码资源
VGGNet被用来作为预训练也是广为人知的,下面列举几个预训练的模型。

Keras:https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3
Tensorflow: http://download.tensorflow.org/models/vgg_19_2016_08_28.tar.gz
PyTorch各种版本:https://chsasank.github.io/vision/_modules/torchvision/models/vgg.html
VGGNet代码:https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3

ResNet

Kaiming He等人开发的剩余网络。是 ILSVRC 2015 的获胜者。它具有一个有趣的架构,具有特殊的跳过连接,并且大量使用批处理规范化。该体系结构在网络末端也缺少完全连接的层。

ResNet获得2015年ImageNet比赛的冠军,主要创新点在于设计了一种使用了skip connection的残差结构,使得网络达到很深的层次,同时提升了性能。

神经网络随着层数的增加,显示出退化问题,即深层次的网络反而不如稍浅层次的网络性能;而且这并非是过拟合导致的,因为在训练集上就显示出退化差距。所以,一种直觉是:如果神经网络能够轻松的实现层次间的等效映射,即一个block的输入等于这个block的输出,那么更深层次的网络也就不应该出现比浅层网络性能更差的退化问题。所以何博士等设计了一种skip connection结构,使得网络具有更强的identity mapping的能力,从而拓展了网络的深度,同时也提升了网络的性能。


  1. Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105. ↩︎

发布了175 篇原创文章 · 获赞 80 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/quicmous/article/details/104967583