图像分类网络概述

关键概念

虽然计算机视觉领域的不同研究人员倾向于遵循不同的实践,但总体而言,您可以在设置实验时看到以下趋势。我将讨论如何对图像进行预处理,使用何种类型的数据增强,优化机制以及最终图层的实现。

预处理

通常,在训练集上计算平均像素值并从图像中减去。请注意,在与keras一起使用这些模型时考虑到这一点很重要。Keras为每个计算机视觉模型提供了不同的“预处理”功能。

数据增强

图像分类研究数据集通常非常大。尽管如此,通常使用数据增强来改善泛化属性。通常,使用重新缩放图像的随机裁剪以及随机水平平移和随机RGB颜色和亮度偏移。缩放和裁剪图像存在不同的方案(即单尺度和多尺度训练)。测试时间内的多作物评估也经常使用,尽管计算更昂贵并且性能改进有限。请注意,随机缩放和裁剪的目标是学习不同尺度和位置上每个对象的重要特征。Keras并未实现所有这些开箱即用的数据增强技术,但它们可以通过ImageDataGenerator模块的预处理功能轻松实现。数据增强Andrew Howard的技巧更深入地解释了关键方法。

图像分类网络概述

同一张照片的不同作物的例子

培训机制

模型通常使用多GPU数据并行性(批处理大小为256)进行培训,也可在keras中使用。带动量的SGD或RMSProp经常用作优化技术。学习速率方案通常相当简单,当验证丢失或准确性开始稳定时降低学习速率或以固定的时间间隔降低学习速率。通过keras中的'ReduceLROnPlateau'回调,您可以轻松模仿这种行为。

图像分类网络概述

LR减少然后丧失平台的训练过程的一个例子

最终图层

图像分类网络中的最后一层传统上是完全连接的图层。这些图层是巨大的参数,因为您需要NxM参数从N层到M层的隐藏层节点。目前,这些层已被平均或最大池层取代,需要较少的参数和计算时间。在对keras中预先训练好的网络进行微调时,考虑到这一点很重要,以限制添加的参数数量。

VGGNet

最初由凯伦西蒙尼扬和安德鲁·齐塞尔曼发表于2014年,VGGNet表明堆叠多层是一种在计算机视觉性能良好的重要组成部分。他们发布的网络包含16或19层,主要由小型3x3卷积和2x2池化操作组成。

作者的主要贡献表明,堆叠多个小型滤波器而没有汇集可以增加网络的表示深度,同时限制参数的数量。通过堆叠例如三个3×3转换。层而不是使用单个7×7层,克服了几个限制。首先,三个非线性函数被组合而不是单个函数,这使得判定函数更具有判别力和表现力。其次,参数数量减少了81%,而接受区域保持不变。因此,使用较小的滤波器也可用作正则化器并提高不同卷积滤波器的有效性。

VGGNet的缺点是评估费用比浅层网络更昂贵,并且使用更多内存和参数(140M)。很多这些参数可以归因于第一个完全连接的层。结果表明,这些图层可以在不降低性能的情况下移除,同时显着减少必要参数的数量。VGG适用于预先训练过的重量的keras,分别为16层和19层。

RESNET

ResNet架构是由Kaiming He等人开发的。试图训练更深的网络。作者指出,增加网络深度导致较高的训练损失,表明由于梯度问题(爆炸/消失梯度)导致潜在的训练收敛问题。

图像分类网络概述

尽管20层网络的潜在功能的空间被封装在56层网络的空间中,并且具有传统的梯度下降,但是不可能实现相同

他们的主要贡献是增加了对神经网络架构的跳过连接,使用批量规范化并去除了网络末端的完全连接层。

图像分类网络概述

通过跳转连接,卷积层的输入x被添加到输出。因此,网络只能学习'残留'特征,并且容易保留现有学习特征

跳过连接是基于这样一种想法,即只要神经网络模型能够“适当地”将信息从前一层传播到下一层,它应该能够变得“无限期地”深入。如果没有附加信息通过深入聚合,比具有跳过连接的卷积层可以充当标识功能。

通过向网络添加跳过连接,卷积层的默认功能成为识别功能。过滤器学到的任何新信息都可以被减去或添加到基本表示中,因此更容易优化残差映射。跳过连接不会增加参数的数量,但会产生更稳定的训练和显着的性能提升,因为可以获得更深的网络(例如深度34,50,101和152的网络)。请注意,1x1卷积用于将图层输入映射到其输出!

除了跳过连接之外,在每次卷积之后和每次激活之前使用批量归一化。最后,完全连接的层被移除,而是使用平均池层来减少参数的数量。由于更深的网络,卷积层的增加的抽象能力降低了对完全连接的层的需求。

GoogLeNet

该GoogLeNet纸大约在同一时间,因为RESNET论文发表,但不同的引入改善。前两篇论文着重于提高分类网络的表示深度。

最初的Inception架构由Google发布,重点将CNN应用于大数据场景以及移动设置。该体系结构完全是卷积的,由Inception模块组成。这些模块的目标是通过构建由多个构建块组成的复杂滤波器(例如网络中的网络 - 初始)来增加卷积滤波器的学习能力和抽象能力。

图像分类网络概述

Inception模块的一个例子。执行1x1卷积以减小输入/输出的尺寸

除了Inception模块之外,作者还使用辅助分类器来促进更稳定和更好的融合。辅助分类器的思想是使用几种不同的图像表示来执行分类(黄色框)。因此,可以在模型中的不同层计算梯度,然后可以使用这些梯度来优化训练。

图像分类网络概述

GoogLeNet体系结构的可视化表示。黄色框表示存在辅助分类器。

Inceptionv3

Inceptionv3架构结合了几项创新。

在Inceptionv3中,主要重点是重用GoogLeNet和VGGNet的一些原创思想,即使用Inception模块并通过一系列较小的卷积更高效地表达大型过滤器。除了小卷积之外,作者还尝试了非对称卷积(例如用nx1和1xn代替nxn,而不是多个2x2和3x3滤波器)。

图像分类网络概述

一个3x3滤波器和一个1x1滤波器的例子,有效地取代了一个5x5滤波器

标签平滑是为每个班级分配一定重量的做法,而不是将完整的重量分配给地面实况标签。由于网络对培训标签的适应能力较低,因此它应该能够更好地推广,这与使用L2正则化相似。

为了确保该模型在高分辨率图像和低分辨率图像上表现良好,通过Inception模块分析不同尺度下的图像表示,启动了许多关注。因此,当Inception网络用于对象检测框架时,它们在对小分辨率和低分辨率对象进行分类时表现良好。

NASNet

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

在初始文件中,显示了“单元格”中复杂的过滤器组合可以显着改善结果。NAS框架将这种单元的构建定义为优化过程,然后堆叠最佳单元的多个副本以构建大型网络。

图像分类网络概述

相关推荐