深度学习修炼(八)—— 经典卷积网络

简介: 本文主要讲解了CNN历史上一些老牌的经典网络

8 经典卷积网络

在前面一讲,我们谈论了关于卷积神经网络的诸多细节。综合来讲,卷积神经网络就是含卷积层的网络。在本讲中,我们将会根据卷积神经网络发展的历史,来看看别人当年使用过哪些经典的卷积神经网络。

8.1 LeNet模型

LeNet是最早出现的卷积神经网络 。这个名字来源于LeNet论文的第一作者Yann LeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果。这个奠基性的工作第一次将卷积神经网络推上舞台,为世人所知。

8.2 Alexnet

在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意。一方面,神经网络计算复杂。虽然20世纪90年代也有过一些针对神经网络的加速硬件,但并没有像之后GPU那样大量普及。因此,训练一个多通道、多层和有大量参数的卷积神经网络在当年很难完成。另一方面,当年研究者还没有大量深入研究参数初始化和非凸优化算法等诸多领域,导致复杂的神经网络的训练通常较困难。

2012年,AlexNet横空出世。这个模型的名字来源于论文第一作者的姓名Alex Krizhevsky。AlexNet使用了8层卷积神经网络,并以很大的优势赢得了ImageNet 2012图像识别挑战赛。它首次证明了学习到的特征可以超越手工设计的特征,从而一举打破计算机视觉研究的前状。

image-20220403142305308

虽然经典,但是从其构成来看,在第一个卷积层中,其使用了11×11的卷积核来大刀阔斧提取特征,而且不加填充和步长4。虽然在当时很经典,但是在现阶段中,Alexnet无疑已经淘汰了。

8.3 VGG

VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。但是VGG模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。它的缺点在于,参数量有140M之多,需要更大的存储空间。但是这个模型很有研究价值。

模型的名称——“VGG”代表了牛津大学的Oxford Visual Geometry Group,该小组隶属于1985年成立的Robotics Research Group,该Group研究范围包括了机器学习到移动机器人。下面是一段来自网络对同年GoogLeNet和VGG的描述:

“GoogLeNet和VGG的Classification模型从原理上并没有与传统的CNN模型有太大不同。大家所用的Pipeline也都是:训练时候:各种数据Augmentation(剪裁,不同大小,调亮度,饱和度,对比度,偏色),剪裁送入CNN模型,Softmax,Backprop。测试时候:尽量把测试数据又各种Augmenting(剪裁,不同大小),把测试数据各种Augmenting后在训练的不同模型上的结果再继续Averaging出最后的结果。”

需要注意的是,在VGGNet的6组实验中,后面的4个网络均使用了pre-trained model A的某些层来做参数初始化。虽然提出者没有提该方法带来的性能增益。

image-20220419122146968

VGG从发展之初到现在已经有多个版本了,对于不同的版本其架构都有微妙的不同。

VGG有很多特点,如下所示:

  • 小卷积核。作者将卷积核全部替换为3x3(极少用了1x1);
  • 小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核;
  • 层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓;
  • 全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。

对于图像分类来说,在不调参数的时候,VGG的效果比Alexnet的效果要好,但是如果假设Alexnet要跑八个小时,那么VGG很有可能要跑3天。

8.4 ResNet

对于深度学习来说,人们总是认为层数越多,模型效果越好,然而在实践中,添加过多的层后训练误差往往不降反升。即使利用批量归一化带来的数值稳定性使训练深层模型更加容易,该问题仍然存在。针对这一问题,何恺明等人提出了残差网络(ResNet)。它在2015年的ImageNet图像识别挑战赛夺魁,并深刻影响了后来的深度神经网络的设计。

我们可以用通俗易懂的话解释ResNet。对于高层数的神经网络来说,明显低层数的神经网络准确率要得多,那如果我想通过继续堆叠层数来提高准确率,那我可以对继续堆叠的层进行一个“选拔”。如果这个继续堆叠的层能够对提高准确率有帮助,那么它就留下,如果不仅没有提高准确率反而还降低准确率了,那么我们就把这一层权重参数和偏置设为0,不用这一层即可。

但是这样的想法有一个问题。如果我们将神经网络无用的一层偏置和权重都设为0,那么通过这一层后数据还能成啥样?基本上就毁了。故我们可以用下面的形式来解决这个问题:

image-20220419124611433

如果在传播的过程中发现下一个层是一个无用层,那么传播会跳过这一层,之前使用其他的通路前往下下层,这样的话既避免数据的破坏,也提高的传播的速度。

我们用再细致一点的口吻再讲一次:

image-20220419125038779

当x输入后通过第一个卷积层,然后通过第二个卷积层,通过这两层后却发现,效果不好,即使调整这两层的参数也没救,那么我们就直接设置一条通路前往第三层,我们设第三层的输入是H(x),而通过一二层的输出是F(x),不通过两层卷积层而采用小道过来的x,那么H(x) = F(x)+x,而如果F(x)不尽人意,那么我们只需将F(x)设置为0,H(x) = x即可,相当于抽卡有了个保底,运气再怎么差我也能抽到。

image-20220419125511081

我们可以把左图看做是VGG,而右图看做是ResNet,可以看出,在层数变高的时候,ResNet效果比VGG要好得多。这实际上也把深度学习救活了,因为在ResNet出来前,人们认为深度学习只能到达一定层数,它不能继续堆叠了,而当ResNet出来后,神经网络的层数得到了进一步的提高,尽管层数提高后提升很少的准确率。

8.5 感受野

我们来谈谈感受野的问题。

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域,如下图所示。

image-20220105125509616

假设我在第三层中只有一个像素点,它是通过第二层中3×3的区域和卷积核做互相关运算得来,而第二层的3×3又是由第一层中5×5的区域和卷积核做互相关运算得来,那么我们称第三层中那一个像素点的感受野为5×5。

那么我们思考这么一件事,如果堆叠3个3×3的卷积核,并且步幅为1,那么感受野就是7×7,这和直接用一个7×7的卷积核貌似没啥区别,那么我们干嘛非要堆叠3个小卷积呢?

我们假设输出的大小是h w c,并且都是用c个卷积核(得到c个特征图),可以来计算一下各自所需参数:

image-20220419130833462

明显地,堆叠小卷积核所需的参数比直接用一个大卷积核所需的参数要少得多,而且如果卷积层堆叠更多,实际上特征提取也会更细致,加入的非线性变换也随着增多,还不会增大 权重参数个数,这就是VGG的初衷。

目录
相关文章
|
9天前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
28 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
10天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
9天前
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
23 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
3天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
11 1
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【深度学习】经典的深度学习模型-02 ImageNet夺冠之作: 神经网络AlexNet
【深度学习】经典的深度学习模型-02 ImageNet夺冠之作: 神经网络AlexNet
10 2
|
7天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
8天前
|
机器学习/深度学习 边缘计算 算法
深度学习之进化神经网络设计
基于深度学习的进化神经网络设计(Evolutionary Neural Networks, ENNs)结合了进化算法(EA)和神经网络(NN)的优点,用于自动化神经网络架构的设计和优化。
15 1
|
8天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
8天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
22 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。