ImageNet Classification with Deep Convolutional Neural Networks

Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton,2012

摘要

训练一个庞大的深层卷积神经网络,将ImageNet LSVRC-2010比赛中的120万张1000种不同类别的高分辨率图像进行分类。在测试数据上,top-1和top-5的误差率分别为37.5%和17%,这比以往的先进水平都要好得多。它具有6000万个参数和650,000个神经元,该神经网络由五个卷积层,其中一些有池化层,和三个全连接层且有1000-way的softmax回归模型组成。使用非饱和神经元和GPU加速加快训练速度,并采用dropout正则化方法来减少全连接层中的过拟合,取得了不错的实验效果。同时,在ILSVRC-2012比赛中加入了该模型的一个变式,以15.3%的top-5误差率胜过第二的26.2%。

1.介绍

本文的主要贡献如下:训练了一个最大的卷积神经网络来训练在ILSVRC-2010和ILSVRC-2012中使用的ImageNet中的子集,并取得了迄今为止最好的结果。我们使用高度优化的GPU实现二维卷积和一些其他固有的方式来训练卷积神经网络,并将其公开。在第3部分介绍了减少训练时间、提高性能的方法;在第4部分介绍了减少过拟合的方法;最后的神经网络由5个卷积层和3个全连接层,其深度至关重要,移除任意一个卷积层都会使结果表现不佳。

2.数据集

ImageNet是一个包含超过1500万张带标签的高分辨率图像的数据集,大约有22,000个类别。从2010年开始,作为Pascal视觉对象挑战赛的一部分,每年都会举办一场ImageNet大规模视觉识别挑战赛(ILSVRC)。ILSVRC使用ImageNet的一个子集,包含1000种类别,每种类别约1000张图像。 总共大约120万张训练图像,50,000张验证图像,以及150,000张测试图像。
在ImageNet上,我们往往使用两种误差率,top-1和top-5,其中 ,top-5是指测试图像上正确标签不属于模型认为最有可能的五个标签的百分比。

3.架构

3.1ReLU 非线性特征


从图中可以看到,具有ReLUs(实线)的四层卷积神经网络在CIFAR-10上当epoch=5时就把训练错误率降到25%,比Tanh激活函数(虚线)的等效网络快六倍左右。 每个网络的学习率都是独立选择的,以尽可能快地进行训练,没有采用任何形式的正则化。 这里展示效果会随网络架构而变化,但具有ReLUs的网络比其他同等饱和神经元的速度快好几倍。
相比于Sigmoid和Tanh激活函数,ReLU激活函数能极大加速随机梯度下降法的收敛速度,而且不存在梯度消失的问题。

3.2多GPU训练

120万的训练样本过于庞大,所以使用两个CPU并行处理,它们可以直接读取和写入彼此的内存,而不需要通过主机内存。这种并行化机制将每个内核(或神经元)的一半各放在两个GPU上,另外还有一个技巧是GPU只在某些层进行通信。比如,第3层的内核从第2层的所有内核映射中获取输入。但第4层的内核只从属于同一GPU上的第3层内核映射中获取输入。 选择连通性模式是交叉验证的问题,但这使我们能精确调整通信量,直到计算量能被我们接受。

3.3局部响应归一化

ReLUs具有理想的属性,不需要输入归一化来防止饱和,局部归一化有助于模型的泛化。

其中,a_(x,y)表示点(x,y)处运用卷积和ReLU非线性后的结果,b_(x,y)是响应归一化的结果,其总和在相同空间位置处的n个“相邻”核映射上运行,n是该层的映射总数。内核映射的排列顺序是任意的,且在训练开始前就确定好了。这种响应归一化实现了一种由真实神经元中激发的侧抑制,在使用不同内核计算的神经元输出之间创造竞争环境。将其余参数设置成确定的超参数:n=5,k=2,alpha=10^-4,beta=0.75。

3.4 重叠池化

CNN中的池化层汇总了相同内核映射中相邻神经元组的输出。通常通过相邻池化单元汇总使得邻近关系不重叠。准确地说,一个池化层可以被认为是由一个间隔为s个像素的池化单元组成的网格,每个都以池化单元的位置为中心的大小为z×z的邻域。如果s等于z,就是CNN中传统的局部池化;如果s小于z,我们可以得到重叠池化,与s=2,z=2相比,令s=2,z=3可以使top-1,top-5分别下降0.4%和0.3%。同时,在训练过程中可以发现,重叠池化较难产生过拟合现象。

3.5 整体结构


上图中,明确地展示了两个GPU并行处理的过程,其中一个GPU运行图中上半部分,另一个运行其下半部分,且只在特定的层进行通信。网络的输入是150528(224*224*3),之后的神经元输入分别为:253440(48*48*55*2)–186624(27*27*128*2)–64896(13*13*192*2)–64896–43264(13*13*128*2)–4096(2048*2)–4096–1000

4.减少过拟合

4.1数据增广

在图像中,减少过拟合最简单、最常用的方法是使用标签保留转换扩大数据集。我们采用两种不同形式的数据增广,这两种形式都允许通过很少的计算从原始图像产生变换后的图像,所以变换后的图像不需要存储在磁盘上。在实现的过程中,转换后的图像是在CPU上的用Python生成的,而GPU正在训练上一批图像。因此,这个数据增广方案实际是计算上免费的。
第一种形式包括生成图像转换和水平翻转。在256*256图像中随机提取224*224块(及其水平翻转),用这些块在网络中训练,因此输入数据为224*224*3,使训练规模扩大了2048倍,有效防止了过拟合。在测试时,通过提取5个224×224块(四个角和中心)以及它们的水平翻转(共计10个块)来进行预测,用softmax层来预测它们的平均值。
第二种形式是改变图像中RGB通道的强度。在整个ImageNet训练集的RGB像素集上执行PCA,对每个训练图像,成倍增加已有主成分,比例大小为对应特征值乘以一个从均值为0、标准差为0.1的高斯分布中提取的随机变量。这个方案表现了自然图像的重要属性,即物体的属性是不会随光照强度和颜色变换而变化的,该方案使top-1误差率降低1%以上。

4.2Dropout

Dropout技术是以一定概率将每个隐层神经元的输出置为零。以这种方式 “dropped out” 的神经元既不会前向传播,也不参与反向传播,所以每进行一次迭代,神经网络就尝试一个不同的结构,但是所有这些结构之间共享权重。由于神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的相互适应关系。因此,网络被迫学习更具有鲁棒性。在测试时,将所有神经元的输出乘以0.5,这对于采用指数衰减网络产生的预测分布的几何平均数是一个合理的近似。

5.学习过程

本文采用了随机梯度下降法(SGD)和一批大小为128、动量为0.9、权重衰减为0.0005的样例来训练网络,更新权重方式如下:

i是迭代次数,v是动量
用一个均值为0、标准差为0.01的高斯分布初始化每一层的权重w,第二、第四和第五个卷积层以及全连接隐层的神经元偏置b都初始化为常数1,其余层的偏置b设为0。所有层都使用相同的学习率,在训练过程中手动调整,当验证错误率以当前学习率停止改进时,将学习率除以10。学习率初始化0.01,在终止前减少三次。使用这个网络对120万张图像进行了约90次的训练,需要在NVIDIA GTX 580 3GB GPU上花费五至六天时间。

6.结果

最后使用该方法得到的神经网络,测试后top-1和top-5的误差率分别为37.5%和17.0%。实验结果如下:

本文的创新点:
1.使用两个GPU并行加速处理
2.使用ReLU作为激活函数
3.采用dropout正则化和data augmentation来防止过拟合
4.使用深度卷积神经网络(5个卷积层和3个全连接层)

参考:
1. ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, 2012
2. https://blog.csdn.net/diamonjoy_zone/article/details/64183304

CNN卷积神经网络 ILSVRC-2012相关推荐

  1. DL之CNN:关于CNN(卷积神经网络)经典论文原文(1950~2018)简介总结框架结构图(非常有价值)之持续更新(吐血整理)

    DL之CNN:关于CNN(卷积神经网络)经典论文原文(1950~2018)简介总结框架结构图(非常有价值)之持续更新(吐血整理) 导读       关于CNN,迄今为止已经提出了各种网络结构.其中特别 ...

  2. DL之CNN(paper):关于CNN(卷积神经网络)经典论文原文(1950~2018)简介、下载地址大全(非常有价值)之持续更新(吐血整理)

    DL之CNN(paper):关于CNN(卷积神经网络)经典论文原文(1950~2018)简介.下载地址大全(非常有价值)之持续更新(吐血整理) 导读       关于CNN,迄今为止已经提出了各种网络 ...

  3. CNN(卷积神经网络)概述

    过去几年,深度学习(Deep learning)在解决诸如视觉识别(visual recognition).语音识别(speech recognition)和自然语言处理(natural langua ...

  4. tf2.0先试试图片(七)——CNN卷积神经网络

    之前已经介绍了TenforFlow的基本操作和神经网络,主要是全联接网络的一些概念: tf2.0先试试图片(七)--CNN卷积神经网络 7.0 简介 7.1 全连接网络的问题 7.1.1 局部相关性 ...

  5. CNN卷积神经网络之SENet及代码

    CNN卷积神经网络之SENet 个人成果,禁止以任何形式转载或抄袭! 一.前言 二.SE block细节 SE block的运用实例 模型的复杂度 三.消融实验 1.降维系数r 2.Squeeze操作 ...

  6. 3层-CNN卷积神经网络预测MNIST数字

    3层-CNN卷积神经网络预测MNIST数字 本文创建一个简单的三层卷积网络来预测 MNIST 数字.这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成. MNIST 由 ...

  7. 深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)

    目录 基础理论 一.训练CNN卷积神经网络 1.载入数据 2.改变数据维度 3.归一化 4.独热编码 5.搭建CNN卷积神经网络 5-1.第一层:第一个卷积层 5-2.第二层:第二个卷积层 5-3.扁 ...

  8. plt保存图片_人工智能Keras CNN卷积神经网络的图片识别模型训练

    CNN卷积神经网络是人工智能的开端,CNN卷积神经网络让计算机能够认识图片,文字,甚至音频与视频.CNN卷积神经网络的基础知识,可以参考:CNN卷积神经网络 LetNet体系结构是卷积神经网络的&qu ...

  9. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...

  10. Deep Learning论文笔记之(五)CNN卷积神经网络代码理解

    Deep Learning论文笔记之(五)CNN卷积神经网络代码理解 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但 ...

最新文章

  1. 初识Frida--Android逆向之Java层hook (一)
  2. ambari 维护模式及reset API 操作
  3. Vs2010无法打开文件“Kernel32.lib”、无法打开“libcpmt.lib”msvcprt.lib
  4. linux c文件操作,Linux C 文件的输入/输出操作
  5. java入门学习_Java入门学习进阶知识点
  6. 如何访问局域网的Access数据库?
  7. 魔兽争霸3地图(WarIII Maps):成神之路
  8. Unity之读取身份证信息
  9. 批量网刻安装操作系统之PXE网络克隆图文教程
  10. 《数据安全法》施行在即,政企单位如何构建数据安全治理体系?
  11. MATLAB 中跳出if条件判断
  12. win10共享文件夹的创建、访问凭据一直提示“用户名或密码错误”的解决办法
  13. GBT 31000-2015 社会治安综合治理基础数据规范 数据项 编码
  14. 论文:YOLOX: Exceeding YOLO Series in 2021
  15. 学校校车运营各项安全管理制度_学校校车安全管理制度.doc
  16. ai时代不被取代的职业_如何在AI时代证明您的IT职业生涯
  17. ajax请求或者计算造成浏览器崩溃解决办法
  18. repo 忽视本地修改,强制恢复初始
  19. 如何理解P2P网络?
  20. 国外网站设计与浏览习惯

热门文章

  1. T900------900MHz跳频电台核心模块(兼容P900,远距离)
  2. 计算机的专业的个人陈述,计算机专业留学个人陈述范文
  3. html中有序列表的type,html有序列表的类型type
  4. 基于python的报修系统_基于JSP的学生公寓报修管理系统.doc
  5. Android 隐藏手机号中间四位
  6. 十大算法基础——上(共有25道例题,大多数为简单题)
  7. spring源码阅读--aop实现原理分析
  8. JButton按钮响应
  9. MATLAB--数字图像处理 车牌识别之简易识别程序
  10. Linux基础命令及常用快捷键