VGG 网络由牛津可视化图形组(Visual Graphics Group)开发,因此其名称为 VGG。该网络的特点是金字塔形,与图像最近的底层比较宽,而顶层很深。 如上图所示,VGG 包含池化层之后的卷积层,池化层负责使层变窄。他们在论文中提出多个此类网络,不同之处在于架构深度的变化。 VGG 的优势: 适合在特定任务上进行基准测试。 VGG 的预训练网络可在互联网上免费获取,因此被广泛用于各种应用。 另一方面,它的主要缺陷在于如果从头训练,则过程缓慢。即使在性能很好的 GPU 上,也需要一周多的时间才能完成训练。 论文:Very Deep Convolutional Networks for Large-Scale Image Recognition 链接:https://arxiv.org/abs/1409.1556 代码实现:https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py 3. GoogleNet GoogleNet(或 Inception 网络)是谷歌研究者设计的一种架构。GoogleNet 是 ImageNet 2014 的冠军,是当时最强大的模型。 该架构中,随着深度增加(它包含 22 层,而 VGG 只有 19 层),研究者还开发了一种叫作「Inception 模块」的新型方法。 如上图所示,它与我们之前看到的序列架构发生了很大改变。单个层中出现了多种「特征抽取器(feature extractor)」。这间接地改善了该网络的性能,因为该网络在训练过程中有多个选项可以选择,来解决该任务。它可以选择与输入进行卷积,也可以直接将其池化。 最终架构包括堆叠在一起的多个 inception 模块。GoogleNet 的训练过程也有稍许不同,即最上层有自己的输出层。这一细微差别帮助模型更快地进行卷积,因为模型内存在联合训练和层本身的并行训练。 GoogleNet 的优势在于: GoogleNet 训练速度比 VGG 快。 预训练 GoogleNet 的规模比 VGG 小。VGG 模型大于 500 MB,而 GoogleNet 的大小只有 96MB。 GoogleNet 本身没有短期劣势,但是该架构的进一步改变使模型性能更佳。其中一个变化是 Xception 网络,它增加了 inception 模块的发散极限(我们可以从上图中看到 GoogleNet 中有 4 个 inception 模块)。现在从理论上讲,该架构是无限的(因此又叫极限 inception!)。 论文:Rethinking the Inception Architecture for Computer Vision 链接:https://arxiv.org/abs/1512.00567 代码实现:https://github.com/fchollet/keras/blob/master/keras/applications/inception_v3.py 4.ResNet ResNet 是一个妖怪般的架构,直播,让我们看到了深度学习架构能够有多深。残差网络(ResNet)包含多个后续残差模块,是建立 ResNet 架构的基础。下图是残差模块的表示图: 简言之,一个残差模块有两个选择:完成输入端的一系列函数,或者跳过此步骤。 类似于 GoogleNet,这些残差模块一个接一个地堆叠,组成了完整的端到端网络。 ResNet 引入的新技术有: 使用标准的 SGD,而非适应性学习技术。它联通一个合理的初始化函数(保持训练的完整性)做到的这一点。 输入预处理的变化,输入首先被区分到图像块中,然后输送到网络中。 ResNet 主要的优势是数百,甚至数千的残差层都能被用于创造一个新网络,然后训练。这不同于平常的序列网络,增加层数量时表现会下降。 论文:Deep Residual Learning for Image Recognition 链接:https://arxiv.org/abs/1512.03385 代码实现:https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py 5. ResNeXt (责任编辑:本港台直播) |