基于卷积神经网络的图像分类(经典网络)

作者:Alex Krizhevsky(论文中第一作者的名字为网络名字AlexNet)

单位:加拿大多伦多大学

发表会议时间:NIPS 2012

(NIPS:机器学习领域的顶级会议,属于人工智能的A类会议,很受CV界的学者关注)

Conference and Workshop on Neural Information Processing Systems(NIPS):神经信息处理系统大会

(AlexNet为经典中的经典,虽然,现在用的比较少,但是里边用到的一些网络训练技巧 及 防过拟合技巧,到现在一直在使用,所以非常有必要学习)

摘要

主要介绍了:AlexNet是在2012年被发表的一个经典之作,并在当年取得了1mageNet最好成绩。

1.为了训练的更快,我们使用了非饱和神经元(ReLu)并对卷积操作进行了非常有效的GPU实现。

2.为了减少全连接层的过拟合,我们采用了一个最近开发的名为Dropout正则化方法,结果证明是非常有效的。

3.我们也使用这个模型的一个变种参加了ILSVRC-2012竞赛,赢得了冠军并且与第二名 top-5 26.2%的错误率相比,我们取得了top-5 15.3%的错误率。

引言

1.当前的目标识别方法基本上都使用了机器学习方法。简单的识别任务在这样大小的数据集上可以被解决的相当好,尤其是如果通过标签保留变换进行数据增强的情况下。例如,目前在MNIST数字识别任务上(<0.3%)的最好准确率已经接近了人类水平。

2.但在真实环境中的对象表现出了相当大的可变性,因此为了学习识别它们,有必要使用更大的训练数据集。实际上,小图像数据集的缺点已经被广泛认识到,但收集上百万图像的标注数据仅在最近才变得的可能。

3.新的更大的数据集包括LabelMe,它包含了数十万张完全分割的图像,它包含了22000个类别上的超过1500万张标注的高分辨率的图像

4.为了从数百万张图像中学习几千个对象,我们需要一个有很强学习能力的模型。然而对象识别任务的巨大复杂性意味着这个问题不能被指定,即使通过像ImageNet这样的大数据集,因此,我们的模型应该也有许多先验知识来补偿我们所没有的数据

5.卷积神经网络(CNNs)构成了一个这样的模型。它们的能力可以通过改变它们的广度和深度来控制,它们也可以对图像的本质进行强大且通常正确的假设(也就是说,统计的稳定性和像素依赖的局部性)。

6.CNN大规模的应用到高分辨率图像中仍然是极其昂贵的。幸运的是,目前的GPU,搭配了高度优化的2D卷积实现,强大到足够促进有趣地大量CNN的训练。

7.我们最终的网络包含:5个卷积层和3个全连接层,深度似乎是非常重要的:我们发现移除任何卷积层(每个卷积层包含的参数不超过模型参数的1%)都会导致更差的性能。

数据集

1.ImageNet数据集有超过1500万的标注高分辨率图像,这些图像属于大约22000个类别。这些图像是从网上收集的,使用了Amazon’s Mechanical Turk的众包工具通过人工标注的。

2.在ImageNet上,按照惯例报告两个错误率:top-1和top-5,top-5错误率是指测试图像的正确标签不在模型认为的五个最可能的便签之中。

3.ImageNet包含各种分辨率的图像,而我们的系统要求不变的输入维度。因此,我们将图像进行下采样到固定的256×256分辨率。给定一个矩形图像,我们首先缩放图像短边长度为256,然后从结果图像中裁剪中心的256×256大小的图像块。除了在训练集上对像素减去平均活跃度外,我们不对图像做任何其它的预处理。因此我们在原始的RGB像素值(中心的)上训练我们的网络

3 架构

1.我们的网络架构概括为图2。它包含八个学习层--5个卷积层和3个全连接层。下面,我们将描述我们网络结构中的一些新奇的特别的特性。

3.1 ReLU非线性

1.将神经元 输出f 建模为输入x的函数的标准方式是用 f(x) = tanh(x) f(x) = (1 + e−x)−1。考虑到梯度下降的训练时间,这些饱和的非线性非饱和非线性 f(x) = max(0,x) 更慢。根据 Nair 和 Hinton 的说法,我们将这种非线性神经元称为修正线性单元(ReLU)

2.采用ReLU的深度卷积神经网络训练时间比等价的tanh单元要快几倍。在图1中,对于一个特定的四层卷积网络,在CIFAR-10数据集上达到25%的训练误差所需要的迭代次数可以证实这一点。这幅图表明,如果我们采用传统的饱和神经元模型,我们将不能在如此大的神经网络上实验该工作。

3.2 多GPU训练

1.单个GTX580 GPU只有3G内存,这限制了可以在GTX580上进行训练的网络最大尺寸。事实证明120万图像用来进行网络训练是足够的,但网络太大因此不能在单个GPU上进行训练。因此我们将网络分布在两个GPU上。目前的GPU非常适合跨GPU并行,因为它们可以直接互相读写内存,而不需要通过主机内存。

2.我们采用的并行方案基本上每个GPU放置一半的核(或神经元),还有一个额外的技巧:只在某些特定的层上进行GPU通信。这意味着,例如,第3层的核会将第2层的所有核映射作为输入。然而,第4层的核只将位于相同GPU上的第3层的核映射作为输入。连接模式的选择是一个交叉验证问题,但这可以让我们准确地调整通信数量,直到它的计算量在可接受的范围内。

3.双GPU网络 比 单GPU网络稍微减少了训练时间。

4.LRN层:响应归一化的顺序实现了一种侧抑制形式,灵感来自于真实神经元中发现的类型,为使用不同核进行神经元输出计算的较大活动创造了竞争。常量k,n,α,β是超参数,它们的值通过验证集确定;我们设k=2,n=5,α=0.0001,β=0.75。我们在特定的层使用的ReLU非线性之后应用了这种归一化(请看3.5小节)。

5.这个方案与Jarrett等人[11]的局部对比度归一化方案有一定的相似性,但我们更恰当的称其为“亮度归一化”,因此我们没有减去均值。响应归一化分别减少了top-1 1.4%,top-5 1.2%的错误率。我们也在CIFAR-10数据集上验证了这个方案的有效性:一个乜嘢归一化的四层CNN取得了13%的错误率,而使用归一化取得了11%的错误率

3.4 重叠池化

CNN中的池化层归纳了同一核映射上相邻组神经元的输出。习惯上,相邻池化单元归纳的区域是不重叠的。如果设置,我们会得到通常在CNN中采用的传统局部池化。我们会得到重叠池化。这就是我们网络中使用的方法。这个方案分别降低了top-1 0.4%,top-5 0.3%的错误率,与非重叠方案相比,输出的维度是相等的。我们在训练过程中通常观察采用重叠池化的模型,发现它更难过拟合。

3.5 整体架构

1.现在,我们准备描述我们的CNN的整体架构。如图2所示,我们的网络包含8个带权重的层;前5层是卷积层,剩下的3层是全连接层。

2.最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布。我们的网络最大化多项逻辑回归的目标,这等价于最大化预测分布下训练样本正确标签的对数概率的均值。

3.第2,4,5卷积层的核只与位于同一GPU上的前一层的核映射相连接(看图2)。

4.第3卷积层的核与第2层的所有核映射相连。全连接层的神经元与前一层的所有神经元相连。

5.第1,2卷积层之后是响应归一化层。3.4节描述的这种最大池化层在响应归一化层和第5卷积层之后。

6.ReLU非线性应用在每个卷积层和全连接层的输出上。

7.第1卷积层使用96个核对224 × 224 × 3的输入图像进行滤波,核大小为11 × 11 × 3,步长是4个像素(核映射中相邻神经元感受野中心之间的距离)。

8.第2卷积层使用用第1卷积层的输出(响应归一化和池化)作为输入,并使用256个核进行滤波,核大小为5 × 5 × 48。

9.第3,4,5卷积层互相连接,中间没有接入池化层或归一化层。第3卷积层有384个核,核大小为3 × 3 × 256,与第2卷积层的输出(归一化的,池化的)相连。第4卷积层有384个核,核大小为3 × 3 × 192,第5卷积层有256个核,核大小为3 × 3 × 192。每个全连接层有4096个神经元。

4 减少过拟合

我们的神经网络架构有6000万参数。尽管ILSVRC的1000类使每个训练样本从图像到标签的映射上强加了10比特的约束,但这不足以学习这么多的参数而没有相当大的过拟合。下面,我们会描述我们用来克服过拟合的两种主要方式。

4.1 数据增强

1.图像数据上最简单常用的用来减少过拟合的方法是使用标签保留变换来人工增大数据集。我们使用了两种独特的数据增强方式,这两种方式都可以从原始图像通过非常少的计算量产生变换的图像,因此变换图像不需要存储在硬盘上。

2.在我们的实现中,变换图像通过CPU的Python代码生成,而此时GPU正在训练前一批图像。因此,实际上这些数据增强方案是计算免费的。

3.第一种数据增强方式包括产生图像变换和水平翻转。我们从256×256图像上通过随机提取224 × 224的图像块实现了这种方式,然后在这些提取的图像块上进行训练。这通过一个2048因子增大了我们的训练集,尽管最终的训练样本是高度相关的。没有这个方案,我们的网络会有大量的过拟合,这会迫使我们使用更小的网络。

4.

4.2 失活(Dropout)

1.将许多不同模型的预测结合起来是降低测试误差的一个非常成功的方法,但对于需要花费几天来训练的大型神经网络来说,这似乎太昂贵了。然而,有一个非常有效的模型结合版本,它只花费两倍的训练成本。这种最近引入的技术,叫做“dropout”,它会以0.5的概率对每个隐层神经元的输出设为0,那些“dropout”的神经元不再进行前向传播并且不参与反向传播。

2.我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们在第2,4,5卷积层和全连接隐层将神经元偏置初始化为常量1。这个初始化通过为ReLU提供正输入加速了学习的早期阶段。我们在剩下的层将神经元偏置初始化为0。

3.我们对所有的层使用相等的学习率,这个是在整个训练过程中我们手动调整得到的。

4.当验证误差在当前的学习率下停止提供时,我们遵循启发式的方法将学习率除以10。学习率初始化为0.01

6 结果

我们在ILSVRC-2010上的结果概括为表1。我们的神经网络取得了top-1 37.5%,top-5 17.0%的错误率。

1.在ILSVRC-2010竞赛中最佳结果是top-1 47.1%,top-5 28.2%,使用的方法是对6个在不同特征上训练的稀疏编码模型生成的预测进行平均,从那时起已公布的最好结果是top-1 45.7%,top-5 25.7%,使用的方法是平均在Fisher向量(FV)上训练的两个分类器的预测结果,Fisher向量是通过两种密集采样特征计算得到的。

表1:ILSVRC-2010测试集上的结果对比。斜体是其它人取得的最好结果。

6.1 定性评估

1.图3显示了网络的两个数据连接层学习到的卷积核。网络学习到了大量的频率核、方向选择核,也学到了各种颜色点。

图3:第一卷积层在224×224×3的输入图像上学习到的大小为11×11×3的96个卷积核。上面的48个核是在GPU 1上学习到的,而下面的48个卷积核是在GPU 2上学习到的。

在图4的左边部分,我们通过在8张测试图像上计算它的top-5预测定性地评估了网络学习到的东西。

注意:即使是不在图像中心的目标也能被网络识别,例如左上角的小虫。大多数的top-5标签似乎是合理的。例如,对于美洲豹来说,只有其它类型的猫被认为是看似合理的标签。在某些案例(格栅,樱桃)中,网络在意的图片焦点真的很含糊。

1.探索网络可视化知识的另一种方式是思考最后的4096维隐藏层在图像上得到的特征激活。

2.如果两幅图像生成的特征激活向量之间有较小的欧式距离,我们可以认为神经网络的更高层特征认为它们是相似的。图4表明根据这个度量标准,测试集的5张图像和训练集的6张图像中的每一张都是最相似的。注意在像素级别,检索到的训练图像与第一列的查询图像在L2上通常是不接近的。例如,检索的狗和大象似乎有很多姿态。我们在补充材料中对更多的测试图像呈现了这种结果。

图4

3.通过两个4096维实值向量间的欧氏距离来计算相似性是效率低下的,但通过训练一个自动编码器将这些向量压缩为短二值编码可以使其变得高效。这应该会产生一种比将自动编码器应用到原始像素上更好的图像检索方法,自动编码器应用到原始像素上的方法没有使用图像标签,因此会趋向于检索与要检索的图像具有相似边缘模式的图像,无论它们是否是语义上相似。

7 探讨

我们的结果表明一个大型深度卷积神经网络在一个具有高度挑战性的数据集上使用纯有监督学习可以取得破纪录的结果。值得注意的是,如果移除一个卷积层,我们的网络性能会降低。例如,移除任何中间层都会引起网络损失大约2%的top-1性能。因此深度对于实现我们的结果非常重要。

为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们希望它会有所帮助,特别是在如果我们能获得足够的计算能力来显著增加网络的大小而标注的数据量没有对应增加的情况下。

到目前为止,我们的结果已经提高了,因为我们的网络更大、训练时间更长,但为了匹配人类视觉系统的下颞线(视觉专业术语)我们仍然有许多数量级要达到。最后,我们想在视频序列上使用非常大的深度卷积网络,视频序列的时序结构会提供非常有帮助的信息,这些信息在静态图像上是缺失的或远不那么明显。


代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。

论文笔记 - 《ImageNet Classification with Deep Convolutional Neural Networks》 精典相关推荐

  1. 论文《ImageNet Classification with Deep Convolutional Neural Networks》阅读及AlexNet的Tensorflow2复现

    论文<ImageNet Classification with Deep Convolutional Neural Networks>阅读及AlexNet的Tensorflow2复现 论文 ...

  2. 《每日论文》ImageNet Classification with Deep Convolutional Neural Networks

    这篇论文是剖析 CNN 领域的经典之作,也是入门 CNN 的必读论文.作者训练了一个面向数量为 1.2 百万的高分辨率的图像数据集 ImageNet, 图像的种类为 1000 种的深度卷积神经网络. ...

  3. #论文 《ImageNet Classification with Deep Convolutional Neural Networks》

    这个Alex是第一作者,NN名字叫AlexNet,Hinton是第三作者.是第一个提出CNN的,还有dropout等方法. 1 Intro CNN与之前的标准前馈神经网络对比:连接和参数更少,因此更容 ...

  4. 经典DL论文研读(part4)--ImageNet Classification with Deep Convolutional Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 ImageNet Classification with Deep Convolutional Neural Networks 摘要 Introduction ...

  5. AlexNet论文翻译(中英文对照版)-ImageNet Classification with Deep Convolutional Neural Networks

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[AlexNet纯中文版] ImageNet Classification with De ...

  6. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  7. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  8. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (1/3)

    文章目录 Authors and Publishment Authors Bibtex Abstract 1. Introduction 2. The Dataset Authors and Publ ...

  9. 《ImageNet Classification with Deep Convolutional Neural Networks》翻译

    1 引言 2 数据集 3 架构 3.1 ReLU 非线性 3.2 训练多个GPU 3.3 局部响应归一化 3.4 重叠池化 3.5 整体架构 4 减少过拟合 4.1 数据增强 4.2 Dropout ...

  10. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (2/3)

    文章目录 3. The Architecture 3.1. ReLU Nonlinearity 3.2. Training on Multiple GPUs 3.3. Local Response N ...

最新文章

  1. 【php数组函数序列】之array_combine() - 数组合并
  2. HIbernate的优缺点
  3. java中sql去除游标_java.sql.SQLException:-ORA-01000:已超过最大打开游标
  4. mysql数据库2012_SQLServer2012连接mysql5.5
  5. 虚拟机安装Solaris10
  6. Android 闹钟最终版
  7. mysql aes_MYSQL AES加密与解密函数使用
  8. Echarts在手机端y轴数据过大,显示不全
  9. Kinect for Windows SDK开发初体验(二)操作Camera
  10. 比较好的电脑系统_效果好的筛分移动破碎站有优惠吗?
  11. ios开发之手势处理 之手势识别一
  12. mysql5.6主从不报错_mysql5.6.26主从复制报错1050
  13. 计算机网络误区——VLAN中Access和Trunk原理详解
  14. 关于RestTemplate的小笔记
  15. 小程序项目实战—购物商城微信小程序
  16. 生产排程系统_【聚焦】纸箱世界智能制造纸板纸箱厂的高级计划与排程系统应用...
  17. 脚手架的安装及配置过程
  18. 如何清除redis缓存
  19. 罗丹明RB/四甲基罗丹明标记酰胺化果胶Amidated Pectin, Rhodamine B/TRITC labeled;Rhodamine B/TRITC-Amidated Pectin
  20. 技术浅滩到商业深海,MathWorks眼中AI的未来

热门文章

  1. python打印字符金字塔_Python教程第7篇:print打印字符串
  2. 红橙Darren视频笔记 面试题 为什么view获取宽高为0 onCreate onResume view.post源码浅析(继承activity api27)
  3. 设计模式笔记八:过滤器模式
  4. python怎么加载包_如何在Python Interpreter中重新导入更新的包?
  5. Spark排错与优化
  6. Python递归算法
  7. php border-style,border-style
  8. php mencache扩展,【memcache缓存专题(3)】PHP-memcache扩展的安装以及使用
  9. 太极图正确画法_太极图的三种画法你知道吗?
  10. windows操作系统,python环境下django的自动安装