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

简介: 本文主要讲解了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的初衷。

目录
相关文章
|
5天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
11天前
|
机器学习/深度学习 搜索推荐 安全
深度学习之社交网络中的社区检测
在社交网络分析中,社区检测是一项核心任务,旨在将网络中的节点(用户)划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法,通过捕获复杂的网络结构信息和节点特征,在传统方法基础上实现了更准确、更具鲁棒性的社区划分。
25 7
|
8天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
12 2
|
8天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
16 1
|
12天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习的奥秘:探索神经网络背后的魔法
【10月更文挑战第22天】本文将带你走进深度学习的世界,揭示神经网络背后的神秘面纱。我们将一起探讨深度学习的基本原理,以及如何通过编程实现一个简单的神经网络。无论你是初学者还是有一定基础的学习者,这篇文章都将为你提供有价值的信息和启示。让我们一起踏上这段奇妙的旅程吧!
|
11天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
33 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
12天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第32天】本文将介绍深度学习中的一个重要分支——卷积神经网络(CNN),以及其在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用Python和TensorFlow库构建一个基本的CNN模型,并对其进行训练和测试。
|
7天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
10天前
|
机器学习/深度学习 算法 计算机视觉
深度学习与生活:如何利用卷积神经网络识别日常物品
【10月更文挑战第24天】在这篇文章中,我们将探索深度学习如何从理论走向实践,特别是卷积神经网络(CNN)在图像识别中的应用。通过一个简单的示例,我们将了解如何使用CNN来识别日常生活中的物体,如水果和家具。这不仅是对深度学习概念的一次直观体验,也是对技术如何融入日常生活的一次深刻反思。文章将引导读者思考技术背后的哲理,以及它如何影响我们的生活和思维方式。