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

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

目录
相关文章
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
26 7
|
3天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
9 1
|
24天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
12天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
17天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
14天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
57 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
18天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
32 0
|
20天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习的奇迹:如何用神经网络识别图像
【10月更文挑战第33天】在这篇文章中,我们将探索深度学习的奇妙世界,特别是卷积神经网络(CNN)在图像识别中的应用。我们将通过一个简单的代码示例,展示如何使用Python和Keras库构建一个能够识别手写数字的神经网络。这不仅是对深度学习概念的直观介绍,也是对技术实践的一次尝试。让我们一起踏上这段探索之旅,看看数据、模型和代码是如何交织在一起,创造出令人惊叹的结果。
26 0