-
一、介绍
- 跟上深度学习的最新进展变得非常困难。几乎每天都会出现深度学习的新创新或新应用。然而,这些进步大部分都隐藏在 ArXiv / Springer 等媒体上发表的大量研究论文中。
- 本文包含深度学习的一些最新进展以及 keras 库中的实现代码。我还提供了原始论文的链接,以防您有兴趣阅读或想要参考它们。
- 为了使文章简洁,我只考虑了计算机视觉领域成功的架构。
- 如果您有兴趣,请继续阅读!
- PS:本文假设您具备神经网络知识并熟悉 keras。如果您需要了解这些主题,我强烈建议您先阅读以下文章:
- 深度学习基础知识——从人工神经网络开始-CSDN博客
- 教程:使用 Keras 优化神经网络(带有图像识别案例研究)
- 目录
- 介绍
- 高级架构是什么意思?
- 计算机视觉任务的类型
- 深度学习架构列表
- 1. 亚历克斯网络
- 2.VGG网络
- 3.谷歌网络
- 4. 残差网络
- 5.ResNeXt
- 6.RCNN(基于区域的CNN)
- 7. YOLO(你只看一次)
- 8.挤压网
- 9. 赛格网
- 10.GAN(生成对抗网络)
- 经常问的问题
- 尾注
-
二、高级架构是什么意思?
- 与单一的传统机器学习算法相比,深度学习算法由一组不同的模型组成。这是因为神经网络在构建成熟的端到端模型时提供了灵活性。
- 神经网络有时可以与乐高积木进行比较,您可以在其中构建几乎任何简单到复杂的结构,您的想象力可以帮助您构建。
- 我们可以将高级架构定义为具有作为成功模型的良好记录的架构。这主要出现在像 ImageNet 这样的挑战中,你的任务是使用给定的数据解决问题,比如图像识别。对于那些不知道 ImageNet 是什么的人,它是 ILSVR(ImageNet 大规模视觉识别)挑战赛中提供的数据集。
- 另外,正如下面提到的架构中所描述的,它们中的每一个都有细微差别,这使得它们与通常的模型不同;当他们被用来解决问题时给予他们优势。这些架构也属于“深层”模型的范畴,因此它们的性能可能比浅层模型更好。
-
三、计算机视觉任务的类型
- 本文主要关注计算机视觉,因此很自然地描述计算机视觉任务的范围。计算机视觉; 顾名思义,就是创建可以复制人类执行的视觉任务的人工模型。这本质上意味着我们所看到的和我们所感知的是一个可以在人工系统中理解和实现的过程。
- 计算机视觉的主要任务类型可分为以下几类:
- 对象识别/分类——在对象识别中,您会得到一张原始图像,您的任务是识别该图像属于哪个类别。
- 分类+ 定位 ——如果图像中只有一个物体,而你的任务是找到该物体的位置,那么这个问题的一个更具体的术语就是定位问题。
- 对象检测- 在对象检测中,您的任务是识别对象位于图像中的位置。这些对象可能属于同一类或完全不同类。
- 图像分割——图像分割是一项有点复杂的任务,其目标是将每个像素映射到其正确的类别。
-
四、深度学习架构列表
- 现在我们已经了解了什么是高级架构并探索了计算机视觉的任务,让我们列出最重要的架构及其描述:
-
1. 亚历克斯网络
- AlexNet 是第一个深度架构,由深度学习先驱之一 Geoffrey Hinton 及其同事提出。它是一种简单但功能强大的网络架构,为当今深度学习的突破性研究铺平了道路。这是作者提出的架构的表示。
- 当分解时,AlexNet 看起来像是一个简单的架构,其中卷积层和池化层一个在另一个之上,然后是顶部的全连接层。这是一个非常简单的架构,早在 20 世纪 80 年代就已概念化。该模型的独特之处在于它执行任务的规模以及使用 GPU 进行训练。20 世纪 80 年代,CPU 用于训练神经网络。而 AlexNet 仅使用 GPU 就将训练速度提高了 10 倍。
- 尽管目前有点过时,AlexNet 仍然被用作将深度神经网络应用于所有任务的起点,无论是计算机视觉还是语音识别。
- 原论文 链接
- 代码实现链接
-
2.VGG网络
- VGG 网络是由牛津大学视觉图形小组的研究人员引入的(因此得名 VGG)。该网络的特点是其金字塔形状,其中靠近图像的底层较宽,而顶层较深。
- 如图所示,VGG 包含后续的卷积层和池化层。池化层负责使层更窄。在他们的论文中,他们提出了多种此类网络,并改变了架构的深度。
- VGG的优点是:
- 这是一个非常好的针对特定任务进行基准测试的架构。
- 此外,VGG 的预训练网络可以在互联网上免费获得,因此它通常开箱即用地用于各种应用。
- 另一方面,它的主要缺点是如果从头开始训练,训练速度非常慢。即使在像样的 GPU 上,也需要一周多的时间才能让它工作。
- 原论文链接
- 代码实现链接
-
3.谷歌网络
- GoogleNet(或 Inception Network)是由 Google 研究人员设计的一类架构。GoogleNet 是 ImageNet 2014 的获胜者,它被证明是一个强大的模型。
- 在这个架构中,除了更深入(它包含 22 层,而 VGG 有 19 层)之外,研究人员还提出了一种称为 Inception 模块的新颖方法。
- 如上所示,这与我们之前看到的顺序架构相比是一个巨大的变化。在单个层中,存在多种类型的“特征提取器”。这间接帮助网络表现得更好,因为训练时的网络在解决任务时有很多选项可供选择。它可以选择对输入进行卷积,也可以直接池化。
- 最终的架构包含多个这样的初始模块,这些模块相互堆叠。甚至 GoogleNet 中的训练也略有不同,因为大多数最顶层都有自己的输出层。这种细微差别有助于模型更快地收敛,因为层本身有联合训练和并行训练。
- GoogleNet 的优点是:
- GoogleNet 的训练速度比 VGG 更快。
- 预训练的 GoogleNet 的大小相对较小于 VGG。VGG 模型可以有 >500 MB,而 GoogleNet 的大小只有 96 MB
- GoogleNet 本身并没有直接的缺点,但提出了对架构的进一步改变,这使得模型表现更好。其中一种变化被称为 Xception Network,其中 inception 模块的发散限制(GoogleNet 中为 4,如上图所示)增加。现在理论上它可以是无限的(因此称为极端初始!)
- 原论文链接
- 代码实现链接
-
4. 残差网络
- ResNet 是真正定义深度学习架构深度的怪物架构之一。残差网络(简称ResNet)由多个后续残差模块组成,它们是ResNet架构的基本构建块。残差模块的表示如下
- 简而言之,残差模块有两个选项,要么可以对输入执行一组函数,要么完全跳过这一步。
- 现在与 GoogleNet 类似,这些残差模块一个接一个地堆叠起来,形成一个完整的端到端网络。
- ResNet 引入的其他一些新颖技术是:
- 使用标准 SGD 而不是花哨的自适应学习技术。这是与合理的初始化函数一起完成的,该函数可以保持训练的完整性
- 输入预处理的变化,输入首先被分成补丁,然后输入网络
- ResNet的主要优点是可以使用数百甚至数千个残差层来创建网络然后进行训练。这与通常的顺序网络有点不同,在通常的顺序网络中,您会发现随着层数的增加,性能升级会减少。
- 原论文链接
- 代码实现链接
-
5.ResNeXt
- ResNeXt 据说是当前最先进的物体识别技术。它建立在 inception 和 resnet 的概念之上,带来了一种新的、改进的架构。下图总结了 ResNeXt 模块的残差模块的外观。
- 原论文链接
- 代码实现链接
-
6.RCNN(基于区域的CNN)
- 基于区域的 CNN 架构据说是所有应用于目标检测问题的深度学习架构中最具影响力的。为了解决检测问题,RCNN 所做的就是尝试在图像中存在的所有对象上绘制边界框,然后识别图像中的对象。其工作原理如下:
- RCNN的结构如下:
- 原论文链接
- 代码实现链接
-
7. YOLO(你只看一次)
- YOLO 是当前最先进的基于深度学习的实时系统,用于解决图像检测问题。如下图所示,它首先将图像划分为定义的边界框,然后对所有这些框并行运行识别算法,以识别它们属于哪个对象类。识别出此类后,它会继续智能地合并这些框,以在对象周围形成最佳边界框。
- 所有这些都是并行完成的,因此可以实时运行;每秒处理多达 40 张图像。
- 尽管它的性能比 RCNN 同类产品低,但它仍然具有实时性的优势,可以用于解决日常问题。这是 YOLO 的架构示意图
- 原论文链接
- 代码实现链接
-
8.挤压网
- 挤压网络架构是一种更强大的架构,在移动平台等低带宽场景中非常有用。该架构仅占用 4.9MB 空间,而 inception 占用约 100MB!这种巨大的变化是由一种称为火模块的特殊结构带来的。下图是消防模块的示意图。
- SqueezeNet最终的架构如下:
- 原论文链接
- 代码实现链接
-
9. 赛格网
- SegNet是一种用于解决图像分割问题的深度学习架构。它由一系列处理层(编码器)和一组相应的用于像素分类的解码器组成。下图总结了 SegNet 的工作原理。
- SegNet 的一个关键特征是,由于编码器网络的池化索引与解码器网络的池化索引相连,它保留了分割图像中的高频细节。简而言之,信息传递是直接的,而不是进行卷积。SegNet 是处理图像分割问题时最好使用的模型之一
- 原论文链接
- 代码实现链接
-
10.GAN(生成对抗网络)
- GAN 是一种完全不同的神经网络架构,其中神经网络用于生成全新的图像,该图像不存在于训练数据集中,但足够真实,可以包含在数据集中。例如,下图是 GAN 的详细组成。我在本文中介绍了GAN 的工作原理。如果你好奇的话就去看看吧。
- 原论文链接
- 代码实现链接
- Q1. 深度学习中的神经网络架构是什么?
- A. 深度学习中的神经网络架构是指人工神经网络的结构设计和组织。它包括层的排列和连接性、每层中神经元的数量、使用的激活函数的类型以及特殊层(如卷积层或循环层)的存在。该架构决定了信息如何在网络中流动,并在网络学习和解决复杂问题的能力中发挥着至关重要的作用。
- Q2。CNN 是深度学习架构吗?
- 答:是的,CNN(卷积神经网络)是一种深度学习架构。CNN 是一种专门用于处理和分析结构化网格数据(例如图像和视频)的神经网络。它们的特点是存在卷积层,卷积层执行局部感受野操作以从输入数据中提取相关特征。CNN 在各种计算机视觉任务中取得了显着的成功,使其成为图像识别、目标检测和其他视觉任务领域深度学习的基本组成部分。
- 参考资料:
- https://www.analyticsvidhya.com/blog/2017/08/10-advanced-deep-learning-architectures-data-scientists/
-
五、经常问的问题