热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从VGG到NASNet,一文概览图像分类网络

关键概念虽然计算机视觉研究者们采取的方法各不相同,但是大体而言,他们的实验设置有着如下的趋势。本文将讨论如何进行图像预处理,数据增强用于哪类数据,优化机制以及输出层的实现方法。预处理

关键概念

虽然计算机视觉研究者们采取的方法各不相同,但是大体而言,他们的实验设置有着如下的趋势。本文将讨论如何进行图像预处理,数据增强用于哪类数据,优化机制以及输出层的实现方法。

预处理

通常而言,我们会计算训练集图像的平均像素值,将其从图像中减去。请注意,在 keras 环境下使用这些模型时考虑预处理方法很重要。计算机视觉模型不同,Keras 的「预处理」也不同。

数据增强

图像分类的数据集非常大。尽管如此,依然需要数据增强来提高模型泛化能力。数据增强一般包括重新缩放图像的随机裁剪、随机水平翻转、随机 RGB 颜色与亮度变换等技术。此外,也存在不同的缩放、裁剪等技术(即单尺度训练 vs 多尺度训练)。在测试阶段进行多裁剪评估也是经常使用的途径,不过该方案的计算成本更昂贵且性能改进有限。请注意,随机缩放和裁剪的目标是在不同尺寸和位置上学习对象的重要特征。Keras 并未实现所有数据增强技术的开箱即用,但可以通过 ImageDataGenerator 模块的预处理技术轻松实现。Andrew Howard 提出的数据增强技术更深入地解释了这些关键性的方法,具体参见:

arxiv.org/ftp/arxiv/pap


训练机制

在 keras 中可通过多 GPU 数据并行化训练模型(一般批大小为 256)。动量 SGD 或 RMSProp 是常用的优化技术。学习率的方案相对简单,要么在验证集的损失或准确率开始稳定时调低学习率,要么在固定间隔上调低学习率。通过 keras 中的「ReduceLROnPlateau」回调函数可以轻松模拟这种行为。

最后一层

图像分类网络中最后一层传统上来说是全连接层。这些层的参数量巨大,因为你需要 N×M 个参数才能从 N 个隐藏节点过渡到 M 个节点。现在,这些全连接层已经被平均池化或最大池化层替代,它们要求的参数量和计算时间比较小。在对 keras 中预先训练好的网络进行微调时,这一点非常重要,这能限制所需要添加参数的数量。

VGGNet

VGGNet(arxiv.org/pdf/1409.1556)发布于 2014 年,作者是 Karen Simonyan 和 Andrew Zisserman,该网络表明堆叠多个层是提升计算机视觉性能的关键因素。VGGNet 包含 16 或 19 层,主要由小型的 3×3 卷积操作和 2×2 池化操作组成。

VGG 的优点在于,堆叠多个小的卷积核而不使用池化操作可以增加网络的表征深度,同时限制参数的数量。例如,通过堆叠 3 个 3×3 卷积层而不是使用单个的 7×7 层,可以克服一些限制。首先,这样做组合了三个非线性函数,而不只是一个,使得决策函数更有判别力和表征能力。第二,参数量减少了 81%,而感受野保持不变。另外,小卷积核的使用也扮演了正则化器的角色,并提高了不同卷积核的有效性。

VGG 的缺点在于,其评估的开销比浅层网络更加昂贵,内存和参数(140M)也更多。这些参数的大部分都可以归因于第一个全连接层。结果表明,这些层可以在不降低性能的情况下移除,同时显著减少了必要参数的数量。16 层和 19 层的参数预训练 VGG 在 keras 上是可以使用的。

ResNet

ResNet 架构是由何凯明等人提出的,他们试图通过这个架构训练更深的网络。作者指出,增加网络深度会导致更高的训练误差,这表明梯度问题(梯度消失/爆炸)可能会导致训练收敛性等潜在问题。

ResNet 的主要贡献是增加了神经网络架构的跳过连接(skip connection),使用批归一化并移除了作为最后一层的全连接层。


跳过连接基于这样一种想法:只要神经网络模型能够「适当地」将信息从前一层传递到下一层,它应该能变得「无限」深。如果在更深层没有附加信息进行聚合,那么带有跳过连接的卷积层可以视为一个恒等映射函数。

通过向网络中添加跳过连接,卷积层的默认函数变成了恒等函数。卷积核学到的任何新信息都可以在基本表征中添加或减去,因此这更容易优化残差映射。跳过连接不会增加参数的数量,但可以获得更稳定的训练和显著的性能提升,这是因为可以达到更深的网络(例如深度为 34、50、101 和 152 的网络)。请注意,1×1 的卷积用于减少输出通道的个数。

除跳过连接之外,在每次卷积完成后、激活进行前都采取批归一化。最后,网络删除了全连接层,并使用平均池化层减少参数的数量。由于网络加深,卷积层的抽象能力更强,从而减少了对全连接层的需求。

GoogLeNet

GoogLeNet 与 ResNet 的论文几乎同时发表,但它们引入了不同的改进方案。前面提到的两篇论文着重于提高分类网络的表征深度。

然而,GoogLeNet 仍试图扩大网络(多达 22 层),但也希望减少参数量和计算量。最初的 Inception 架构由 Google 发布,重点将 CNN 应用于大数据场景以及移动端。GoogLeNet 是包含 Inception 模块的全卷积结构。这些模块的目的是:通过构建由多个子模块(比如嵌套网络 - Inception)组成的复杂卷积核来提高卷积核的学习能力和抽象能力。

除了加入 Inception 模块,作者还使用了辅助分类器来提高稳定性和收敛速度。辅助分类器的想法是使用几个不同层的图像表征来执行分类任务(黄色框)。因此,模型中的不同层都可以计算梯度,然后使用这些梯度来优化训练。


Inception v3

Inception v3 架构中结合了几项创新点。在 Inception v3 中,主要的创新在于借鉴了 GoogLeNet 和 VGGNet 的部分原创思想,即使用 Inception 模块并通过一系列较小的卷积核更高效地表示较大的卷积核。除了小卷积之外,作者还尝试了非对称卷积(例如用 n×1 和 1×n 代替 n×n,而非多个 2×2 和 3×3 滤波器)。


作者通过执行批归一化和标签平滑化来改进正则化。标签平滑就是为每个类都分配一些权重,而不是将全权重分配给 ground truth 标签。由于网络对训练标签的过拟合程度较低,因此它应该能够更好地泛化,这与使用 L2 正则化效果相仿。

为了确保该模型在高分辨率图像和低分辨率图像上均表现良好,作者通过 Inception 模块分析了不同尺寸下的图像表征。因此,当 Inception 网络用于目标检测框架时,它们在对小分辨率和低分辨率对象进行分类时表现良好。

NASNet

我要讨论的最后一个图像分类架构是 NASNet(arxiv.org/pdf/1707.0701),它是使用神经结构搜索(NAS)框架构建的。NASNet 的目标是运用数据驱动和智能方法,而非直觉和实验来构建网络架构。尽管我不会详细讨论这个框架,但是可以解释一下它的总体思路。

Inception 论文表明「神经网络单元」中复杂的卷积核组合单元可以显著提升结果。NAS 框架将这种单元的构建过程定义为优化过程,然后通过叠加最佳单元来构建大型网络。


此文选自towardsdatascience,作者:Lars Hulstaert,机器之心编译

推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
author-avatar
有些疯癫的小红帽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有