论文笔记--AlexNet--ImageNet Classification with Deep Convolutional Neural Networks

Datasets:

LabelMe: consists of hundreds of thousands of fully-segmented images

ImageNet: consists of over 15 million labeled high-resolution images in over 22000 categories

这篇论文使用的数据集是ImageNet

多余的话:

ImageNet包含超过1500 0000张的已标记的高清晰度图片,这些图片大约有22000类。这些图片是从网上收集来的,人们使用亚马逊的Mechanical Turk众包工具进行标记。

ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)从2010年开始,每年举行一次,是Pascal Visual Object Challenge的一部分。ILSVRC使用的只是ImageNet的一部分,1000类,每一类大约1000张,总共有120 0000张训练图片,50000张验证图片,150000张测试图片,这些图片的清晰度是不统一的。其中ILSVRC-2010是唯一一次能够获取测试集标签的。比赛通常报告两种错误,top-1 和 top-5。top-5错误率的意思是说模型预测的最可能的5个标签都不是测试图片的正确标签的比例。

步入正题

1.网络结构:

这篇论文主要做的是图片分类,对于我们人来说,拿到一张图片,我们可以很快地知道这张图片上有什么,比如一只猫,一把椅子。但是对于计算机来说,如何对图片进行分类,这就是一个问题,计算机知道的就是一串0和1这些数字。为了达到这个目的,并且效果还不错,它用的模型结构简称AlexNet

总体说来

AlexNet共有8层,有60M以上的参数量。

前五层为卷积层:convolutional layer

后三层为全连接层:fully connected layer

最后一层是1000-way softmax,目标函数是multinorminal logistic regression.

这个是从论文中截下来的原图,这个模型是在两块3GB的GPU上训练的(GTX 580 3GB GPU),是受那个3GB内存的限制,导致能在一块GTX 580 GPU上训练的模型就有限制,所以模型结构图有上下两部分。从图上我们可以看到第2层,第4层和第5层卷积层的kernels只是和在同一GPU上的前一层kernels相连,而第3层卷积层以及全连接层的kernels则是和之前所有的kernels相连。

分层结构:

  • 第1层

(1)输入图片为224 x 224 x 3,表示长宽是224个像素,使用RGB彩色图通道(通道数是3)来表示,所以还要乘以3(学界普遍认为论文中说的224不太合适,讲道理应该是227才对)

(2)使用了96个大小为11 x 11 x 3的filter。在stride为4的设置下,对输入图像进行了卷积操作,得到了 55 x 55 x 96的data map。这三个数字的由来:(227 - 96 )/ 4 + 1 = 55,96就是滤波器的个数。

(3)经过激活函数ReLu,再进行池化操作-maxpooling,滤波器(filter)大小为3 x 3,步长(stride)为2,池化后的输出为27 x 27 x 96。(55 - 3 )/ 2 + 1 = 27. 96 仍为原来的深度。

(4)

  • LRN(Local Response Normalization,局部响应归一化)
  • 其他4层卷积层过程与之类似
  • 第6层

本层的输入为6 x 6 x 256(9216),,全连接层其实就是一个矩阵运算,它完成一个空间上的映射。所以把输入看成一个列向量X(维度为9216),也就是你可以把输入看成一个9216 x 1 的矩阵。然后和参数矩阵W相乘,这里参数矩阵W设置为4096 x 9216,最后全连接层的输出就是 W与X相乘所得,记为Y(维度为4096 x 1)。

  • 第8层

第8层的输出就是1000 x 1的矩阵,即维度为1000的一个列向量,对应softmax regression的1000个标签。

2.网络结构的创新点

  • ReLu(RectifiedLinear Uints,修正线性单元)

f(x)=max(0,x),是一种非饱和非线性激活函数。相较于f(x)=tanh(x)和sigmoid函数:f(x)=(1+e^-x)^-1,这两种饱和非线性激活函数而言,SGD梯度下降的时间更快。

多余的话:

  • 多GPU训练

使用并行机制,将kernels分半放在2块GPU上。这里使用了一个小技巧,GPU之间的通讯只在某些层中进行。例如,第3层的核需要从第2层中所有核映射输入。然而,第4层的核只需要从第3层中位于同一GPU的那些核映射输入。

  • LRN(Local Response Normalization,局部响应归一化)

本质上,这个层也是为了防止激活函数的饱和的。

根据这篇博客上(http://blog.csdn.net/cyh_24/article/details/51440344 )作者的理解:通过正则化让激活函数的输入靠近“碗”的中间(避免饱和),从而获得比较大的导数值。从功能上说,跟ReLU是重复的。

作者在论文中提到这么做可以提高网络的泛化能力。

LRN具体说来就是通过这个函数把第i个kernel位于(x,y)处的激励值进行归一化,N是那一层kernels的总数,超参数是常量。

  • 重叠池化

一个池化层可以看做是由间隔s个像素的池化单元网格组成,每个网格对一个以池化单元为中心的z x z大小的邻域进行总结。

如果s = z,就是传统的局部池化;如果s < z,就是重叠池化。

这篇论文在整个网络中,都设置s = 2 ,z = 3。同非重叠池化机制(s = 2, z = 2)相比,这个机制分别使得top-1 和 top-5 错误率减少了 0.4% 和 0.3%。

非重叠池化与重叠池化的输出都是相同的维度。而且使用重叠池化的模型在训练中更不容易过拟合。

3.避免过拟合

  •  data augmentation(数据扩充)

有一种观点认为神经网络是通过大量的数据训练出来的,如果增加训练数据,就能够提升算法的准确率,因为这样可以避免过拟合,而避免了过拟合就可以增大网络结构。当数据有限时,就可以通过一些变化从已有数据中生成一些新的数据,来扩大训练数据的size。

其中,最简单通用的图像数据变形的方式如下:

1.从原始图像(256,256)中随机crop出一些图像(224,224)【平移变换,crop】

2.水平翻转图像【反射变换,flip】

3.给图像增加一些随机的光照【光照、色彩变换,color jittering】

AlexNet对data augmentation的处理:

1.平移变换和反射变换:训练时,对于256 x 256的图片随机crop到224 x 224,然后允许水平翻转,相当于将样本倍增到((256 - 224)** 2)* 2 )= 2048。测试时,对左上、右上、左下、右下、中间做了5次crop,然后翻转(flip),共10个crop,之后对结果求平均。

2.改变训练图像RGB通道的强度:我们在遍及整个ImageNet训练集的RGB像素值集合中执行PCA。对于每个训练图像,我们成倍增加已有主成分,比例大小为对应特征值乘以一个从均值为0,标准差为0.1的高斯分布中提取的随机变量。这样一来,对于每个RGB图像像素,我们增加下面这项:其中分别是RGB像素值的3×3协方差矩阵的第i个特征向量与特征值,是前面提到的随机变量。每个对于特定训练图像的全部像素只提取一次,直到那个图像再次被用于训练,在那时它被重新提取。这个方案大致抓住了自然图像的一个重要属性,即,光照强度与颜色是变化的,而对象识别是不变的。

  • dropout

它做的就是以0.5的概率将每个隐层神经元的输出设置为零以这种方式”dropped out”的神经元既不参与前向传播,也不参与反向传播。所以每次提出一个输入,该神经网络就尝试一个不同的结构,但是所有这些结构之间共享权重。因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。正因如此,要被迫学习更为鲁棒的特征,这些特征在结合其他神经元的一些不同随机子集时有用。前两个全连接层使用dropout。如果没有dropout,我们的网络会表现出大量的过拟合。dropout使收敛所需的迭代次数大致增加了一倍。

4.图片预处理

①大小归一化

将所有图片都归一化为256x256大小,至于为什么直接不归一化到224(227),请参考上文说的扩充数据集的操作。

②减去像素平均值

所有图片每个像素值都减去所有训练集图片平均值

参考博客:

1.http://blog.csdn.net/teeyohuang/article/details/75069166

2.http://blog.csdn.net/cyh_24/article/details/51440344

原文地址:https://www.cnblogs.com/smile-sunshine/p/8467453.html

时间: 2024-10-08 08:11:42

论文笔记--AlexNet--ImageNet Classification with Deep Convolutional Neural Networks的相关文章

论文笔记《ImageNet Classification with Deep Convolutional Neural Network》

一.摘要 了解CNN必读的一篇论文,有些东西还是可以了解的. 二.结构 1. Relu的好处: 1.在训练时间上,比tanh和sigmod快,而且BP的时候求导也很容易 2.因为是非饱和函数,所以基本不会出现梯度消失的情况 Relu只要控制好learing rate,可以说是完胜之前的激活函数,也因此可以帮助我们训练更深层次的网络. 现在对Relu的进一步增强还有研究,有兴趣可以了解. 2.GPU并行计算在当时是个很好思路,不过作者的trick就有点...虽然说是通过cross-validati

论文解读《ImageNet Classification with Deep Convolutional Neural Networks》

这篇论文提出了AlexNet,奠定了深度学习在CV领域中的地位. 1. ReLu激活函数 2. Dropout 3. 数据增强 减小过拟合(Reducing Overfitting) 动机:由于整个网络拥有6000万个参数:尽管ILSVRC的1000个类使得每个训练示例对从图像到标签的映射施加10位约束,十分有必要去考虑过拟合的问题. 数据扩充(Data Augmentation) 图像数据扩充,即人工的扩大数据集, 是减小过拟合现象最简单和常用的方法,作者使用两者不同的数据扩充方法: --第一

ImageNet?Classification?with?Deep?Convolutional?Neural?Networks?阅读笔记 转载

ImageNet Classification with Deep Convolutional Neural Networks 阅读笔记 (2013-07-06 22:16:36) 转载▼ 标签: deep_learning imagenet hinton 分类: 机器学习 (决定以后每读一篇论文,都将笔记记录于博客上.) 这篇发表于NIPS2012的文章,是Hinton与其学生为了回应别人对于deep learning的质疑而将deep learning用于ImageNet(图像识别目前最大的

【Papers】《ImageNet Classification with Deep Convolutional Neural Networks》阅读笔记

参考资料: ImageNet Classification with Deep Convolutional Neural Networks,Alex Krizhevsky,Ilya Sutskever,Geoffrey E. Hinton http://www.cnblogs.com/tornadomeet/p/3258122.html http://blog.sina.com.cn/s/blog_890c6aa30100z7su.html

ImageNet Classification with Deep Convolutional Neural Networks(转载)

ImageNet Classification with Deep Convolutional Neural Networks 阅读笔记 (决定以后每读一篇论文,都将笔记记录于博客上.) 这篇发表于NIPS2012的文章,是Hinton与其学生为了回应别人对于deep learning的质疑而将deep learning用于ImageNet(图像识别目前最大的数据库)上,最终取得了非常惊人的结果,其结果相对原来的state of the art好了非常多(前5选错误率由25%降低为17%). I

2016.4.5 ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf 这个网络也叫做alexnet,因为第一作者的名字是alex,这是个经典的网络,因为这个网络在12年的时候在imagenet上面提升了十个点的准确率.第三作者是hinton

ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 摘要 我们训练了一个大型的深度卷积神经网络,来将在ImageNet LSVRC-2010大赛中的120万张高清图像分为1000个不同的类别.对测试数据,我们得到了top-1误差率37.5%,以及top-5误差率17.0%,这个效果比之前最顶尖的都要好得多.该神经网络有

中文版 ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC-2010竞赛的120万高分辨率的图像分到1000不同的类别中.在测试数据上,我们得到了top-1 37.5%, top-5 17.0%的错误率,这个结果比目前的最好结果好很多.这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1

AlexNet:ImageNet Classification with Deep Convolutional Neural Networks

论文理解  在ImageNet LSVRC-2010上首次使用大型深度卷积神经网络,并获得很好的成果. 数据集:ILSVRC使用ImageNet的一个子集,1000个类别每个类别大约1000张图像.总计,大约120万训练图像,50000张验证图像和15万测试图像. 网络架构:5个卷积层和3个全连接层另外还有无权重的池化层. 激活函数使用了ReLU非线性函数,大大加快了训练时间. 训练方式采用多GPU训练,基于GPU跨GPU并行性好的特点,如翻译中的图2所示,GPU分工明确,只在某些层有数据的交互

《ImageNet Classification with Deep Convolutional Neural Networks》 剖析

CNN 领域的经典之作, 作者训练了一个面向数量为 1.2 百万的高分辨率的图像数据集ImageNet, 图像的种类为1000 种的深度卷积神经网络.并在图像识别的benchmark数据集上取得了卓越的成绩. 该神经网络有6千万个参数,650,000个神经元.包含了五个卷积层(卷积操作层和下采样层统称之为卷积层), 和三个全连接层. 为了使得训练更快,让网络实现在GPU上进行卷积操作运算,为了减小overfitting, 全连接层引入一个最近兴起的方法:dropout.下面是整个网络的大致介绍: