我觉得GPT老师的语言功底比大多数的博客主要好(包括我自己),阅读起来更易理解,而且哪里不明白还可以直接问gpt老师,孜孜不倦,尽心尽责,全天待命,究极贴心。有这么厉害的一个老师,不学习简直暴殄天物。
于是乎我准备立一个flag,挑战跟着GPT老师学习365天,每天我都会整理自己的学习心得和脉络(文字大部分都是GPT直接生成的,我觉得比我自己写肯定好多了)感谢gpt老师!跪谢
全系列文章:跟着GPT学习-AI系列
写在前面
本人基于Very Deep Convolutional Networks (VGG) Essential Guide这篇文章进行了内容翻译,并对细节之处进行补充
本文概述了 VGG(也称为 VGGNet),这是一种经典的卷积神经网络 (CNN) 架构。VGG 的开发是为了增加此类 CNN 的深度,从而提高模型性能。
在过去的几年中,深度学习在广泛的计算机视觉任务中取得了巨大的成功。机器学习这一新领域自此发展迅速。深度学习相对于传统机器学习方法的先进性能使其在图像识别、计算机视觉、语音识别、机器翻译、医学成像、机器人技术等领域有了新的应用。
什么是VGG
VGG 代表视觉几何组;它是一种具有多层的标准深度卷积神经网络 (CNN)架构。“深度”指的是层数,VGG-16 或 VGG-19 由 16 和 19 个卷积层组成。
VGG 架构是突破性物体识别模型的基础。VGGNet 是作为深度神经网络开发的,它在ImageNet之外的许多任务和数据集上也超越了基线。此外,它现在仍然是最受欢迎的图像识别架构之一。
什么是VGG16
支持 16 层的 VGG 模型(或 VGGNet)也称为 VGG16,这是牛津大学的 A. Zisserman 和 K. Simonyan 提出的卷积神经网络 (CNN)模型。这两位研究人员在题为《用于大规模图像识别的超深卷积网络》的研究论文中发表了他们的模型。
VGG16 模型在 ImageNet 中实现了近 92.7% 的 top-5 测试准确率。ImageNet 是一个包含近 1000 个类别的 1400 多万幅图像的数据集。此外,它是提交给ILSVRC-2014的最受欢迎的模型之一。它用多个 3×3 内核大小的过滤器一个接一个地替换大型内核大小的过滤器,从而比AlexNet有了显着的改进。VGG16 模型使用 Nvidia Titan Black GPU 进行了数周的训练。
如上所述,VGGNet-16 支持 16 层,可以将图像分类为 1000 个对象类别,包括键盘、动物、铅笔、鼠标等。此外,该模型的图像输入大小为 224 x 224。
什么是VGG19
VGG19 模型(又称 VGGNet-19)的概念与 VGG16 相同,只是它支持 19 层。“16”和“19”代表模型中的权重层(卷积层)数量。这意味着 VGG19 比 VGG16 多出三个卷积层。我们将在本文的后半部分进一步讨论 VGG16 和 VGG19 网络的特点。
VGG架构
VGGNets 基于卷积神经网络 (CNN) 的最基本特征。下图展示了 CNN 工作原理的基本概念:
VGG 网络由非常小的卷积滤波器构成。VGG-16 由 13 个卷积层和 3 个全连接层组成。
我们来简单看一下VGG的架构:
- 输入: VGGNet 接受 224×224 大小的图像输入。对于 ImageNet 竞赛,模型创建者裁剪了每幅图像中心的 224×224 块,以保持图像的输入大小一致。
- 卷积层:VGG 的卷积层利用最小的接受场,即 3×3,这是仍然能够捕捉上下和左右的最小可能尺寸。此外,还有 1×1 卷积滤波器作为输入的线性变换。接下来是 ReLU 单元,这是 AlexNet 的一大创新,可以缩短训练时间。ReLU 代表整流线性单元激活函数;它是一个分段- 线性函数,如果输入为正,则输出输入;否则,输出为零。卷积步长固定为 1 个像素,以保持卷积后的空间分辨率不变(步长是输入矩阵上的像素移位数)。
- 隐藏层: VGG 网络中的所有隐藏层都使用 ReLU。VGG 通常不利用局部响应规范化 (LRN),因为它会增加内存消耗和训练时间。此外,它不会提高整体准确性。
- 全连接层: VGGNet 有三个全连接层。在这三层中,前两层各有 4096 个通道,第三层有 1000 个通道,每个类别 1 个。
VGG16 架构
VGG 名称中的数字 16 表示它是一个 16 层深度神经网络 (VGGnet)。这意味着 VGG16 是一个相当庞大的网络,总共有大约 1.38 亿个参数。即使按照现代标准,这也是一个巨大的网络。然而,VGGNet16 架构的简单性使该网络更具吸引力。仅从其架构来看,可以说它相当统一。
有几个卷积层,后面跟着一个池化层,池化层可以减少高度和宽度。如果我们看看可以使用的过滤器数量,大约有 64 个过滤器可用,我们可以将其增加一倍到大约 128 个,然后再增加到 256 个。在最后的几层中,我们可以使用 512 个过滤器。
复杂性和挑战
我们可以使用的过滤器数量在每一步或每堆叠一个卷积层时都会翻倍。这是设计 VGG16 网络架构的主要原则。VGG16 网络的一个关键缺点是它是一个庞大的网络,这意味着需要更多时间来训练其参数。
由于其深度和全连接层的数量,VGG16 模型的大小超过 533MB。这使得实现 VGG 网络成为一项耗时的任务。
VGG16 模型用于多种深度学习图像分类问题,但GoogLeNet和 SqueezeNet 等较小的网络架构通常更受欢迎。无论如何,VGGNet 是学习目的的绝佳构建模块,因为它易于实现。
VGG 模型的性能
VGG16 大大超越了 ILSVRC-2012 和 ILSVRC-2013 竞赛中模型的先前版本。此外,VGG16 的结果正在争夺分类任务冠军(错误率为 6.7% 的 GoogLeNet),并且远远优于 ILSVRC-2013 的获胜方案 Clarifai。它使用外部训练数据获得了 11.2% 的准确率,不使用外部训练数据获得了 11.7% 左右的准确率。在单网络性能方面,VGGNet-16 模型取得了最佳结果,测试错误率约为 7.0%,从而超越单个 GoogLeNet 约 0.9%。
VGGNet 与 ResNet
VGG 代表可视化几何组,由多个块组成,每个块由 2D 卷积层和最大池化层组成。它有两种型号 - VGG16 和 VGG19 - 分别具有 16 个和 19 个权重层。
随着 CNN 中层数的增加,模型拟合更复杂函数的能力也随之增强。因此,层数越多,性能越好。这不应与人工神经网络(ANN) 混淆,因为层数的增加并不一定会带来更好的性能。
现在的问题是,为什么不使用具有更多层的 VGGNet,例如 VGG20、VGG50 或 VGG100?这就是问题出现的地方。神经网络的权重通过反向传播算法进行更新,该算法对每个权重进行微小更改,从而减少模型的损失。
但它是如何发生的呢?它会更新每个权重,使其朝着损失减少的方向迈出一步。这只不过是这个权重的梯度,可以使用链式法则找到。
然而,随着梯度不断流回初始层,该值会随着每个局部梯度不断增加。这导致梯度变得越来越小,从而使对初始层的更改变得非常小。这反过来又大大增加了训练时间。
怎么解决?
如果局部梯度变为 1,问题就可以解决。这就是ResNet发挥作用的地方,因为它通过恒等函数实现了这一点。因此,当梯度反向传播时,由于局部梯度为 1,其值不会减小。
深度残差网络 (ResNets),例如流行的 ResNet-50 模型,是另一种深度为 50 层的卷积神经网络架构 (CNN)。残差神经网络使用插入快捷连接将普通网络转变为残差网络对应物。与 VGGNets 相比,ResNets 的复杂性较低,因为它们的过滤器较少。
ResNet 又称为残差网络,它不会出现梯度消失问题。跳跃连接充当梯度高速公路,使梯度不受干扰地流动。这也是 ResNet 有 ResNet50、ResNet101 和 ResNet152 等版本的最重要原因之一。
📊 CNN和VGG网络的关键区别
特点 | 通用CNN | VGG网络 |
---|---|---|
架构 | 根据具体设计而异(例如AlexNet, ResNet)。通常包括卷积层、池化层和全连接层。 | 非常深的架构,具有16或19层。使用简单、重复的卷积层和最大池化层结构。 |
滤波器大小 | 可以变化;通常包括11x11, 5x5, 3x3等不同大小。 | 始终使用小的3x3滤波器。 |
深度 | 深度可以显著变化(例如AlexNet有8层,ResNet多达152层)。 | 固定深度,主要是16层(VGG16)或19层(VGG19)。 |
池化 | 池化策略和大小可以变化。 | 始终使用2x2的最大池化,步幅为2。 |
性能 | 性能因架构而异;较新的设计通常在准确性和效率上优于较旧的设计。 | 在图像分类任务中表现优异,尽管较新的架构(如ResNet)在效率上已超越VGG。 |
参数数量 | 可以优化以减少参数数量(例如MobileNet)。 | 由于深度架构,参数数量庞大,计算和内存需求高。 |
使用场景 | 范围广泛,包括目标检测、分割和分类。 | 主要用于图像分类和迁移学习中的特征提取。 |
🚀 对计算机视觉的影响
- CNNs 革新了图像识别技术,实现了目标检测、分割和分类方面的显著进步。
- VGG 网络 提供了一个简单且深度的架构,为更复杂的模型奠定了基础。尽管计算需求较高,VGG网络在各种迁移学习应用中仍被广泛使用。
🔍 结论
理解通用CNN和VGG网络之间的区别,突显了深度学习架构的演变和专业化。尽管VGG网络在深度和简洁性方面提供了重要进步,但更先进的CNN架构(如ResNet)已经出现,提供了更好的性能和效率。
下一篇文章我们将会探讨ResNet的结构