精华内容
下载资源
问答
  • 随着大数据时代的到来,含更多隐含层的深度卷积神经网络(Convolutional neural networks,CNNs)具有更复杂的网络结构,与传统机器学习方法相比具有更强大的特征学习和特征表达能力。使用深度学习算法训练的卷积神经网络...
  • 深度卷积神经网络的发展及其在计算机视觉领域的应用
  • 本代码在keras开源代码框架下,基于深度卷积神经网络,实现猫的图片识别。
  • 基于深度卷积神经网络的多节点间链路预测方法
  • 基于深度卷积神经网络的图像分类算法
  • 深度卷积神经网络的学习过程中,卷积核的初始值通常是随机赋值的.另外,基于梯度下降法的网络参数学习法通常会导致梯度弥散现象.鉴于此,提出一种基于反卷积特征提取的深度卷积神经网络学习方法.首先,采用无监督两层...
  • 用DnCNN网络进行图像去噪。网络中主要使用了批量归一化和ReLU
  • 深度卷积神经网络

    2017-07-31 21:09:25
    深度卷积神经网络
  • 深度卷积神经网络在车牌和人脸检测领域的应用研究
  • 基于深度卷积神经网络的人脸识别研究:传统人脸识别方法而言,卷积神经网络模型不需要人工进行大量而又复杂的特征提取算法设计,仅需要设计一个可行的网络模型,再将大量的人脸训练数据集加载到网络模型中,然后进行自动...
  • 深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解
  • 基于软件流水技术的深度卷积神经网络并行化研究.docx
  • 深度卷积神经网络以多层次的特征学习与丰富的特征表达能力,在目标检测领域取得了突破进展。概括了卷积神经网络在目标检测领域的研究进展,首先回顾传统目标检测的发展及存在的问题,引出卷积神经网络的目标检测基本...
  • 基于深度卷积神经网络的数字调制方式识别一篇文章,通过卷积神经网络识别调制方式
  • 深度卷积神经网络的运动模糊去除核估计
  • 利用深度卷积神经网络对图像进行分类 1_Alex_《ImageNet Classification with Deep Convolutional Neural Networks》2012
  • 提出了一种应用于跨年龄人脸识别的联合学习方法,该方法由深度卷积神经网络构建而成,能在特征学习的 同时学习到最优的测度函数,从而避免不合适的固定阈值所带来的匹配错误. 针对有限的内存、过拟合和计算复杂 性...
  • 深度学习-深度卷积神经网络发展

    万次阅读 2018-07-09 11:12:23
    AlexNet网络现代意义上的深度卷积神经网络起源于AlexNet网络,它是深度卷积神经网络的鼻祖。这个网络相比之前的卷积网络最显著的特点是层次加深,参数规模变大。网络结构如下图所示:这个网络有5个卷积层,它们中的...

    AlexNet网络


    现代意义上的深度卷积神经网络起源于AlexNet网络,它是深度卷积神经网络的鼻祖。这个网络相比之前的卷积网络最显著的特点是层次加深,参数规模变大。网络结构如下图所示:





    这个网络有5个卷积层,它们中的一部分后面接着max-pooling层进行下采样;最后跟3个全连接层。最后一层是softmax输出层,共有1000个节点,对应ImageNet图集中 1000个图像分类。网络中部分卷基层分成2个group进行独立计算,有利于GPU并行化以及降低计算量。


    这个网络有两个主要的创新点:

    1. 新的激活函数ReLU

    2. 标准化(Local Response Normalization

    3. dropout机制。dropout的做法是在训练时随机的选择一部分神经元进行休眠,另外一些神经元参与网络的优化,起到了正则化的作用以减轻过拟合。

    4. 数据增强(data augmentation


    参考:https://blog.csdn.net/guoyunfei20/article/details/78122504

    ZFNet网络

    通过反卷积(转置卷积)进行卷积网络层可视化的方法,以此分析卷积网络的效果,并指导网络的改进,在AlexNet网络的基础上得到了效果更好的ZFNet网络。

    论文是在AlexNet基础上进行了一些细节的改动,网络结构上并没有太大的突破。该论文最大的贡献在于通过使用可视化技术揭示了神经网络各层到底在干什么,起到了什么作用。如果不知道神经网络为什么取得了如此好的效果,那么只能靠不停的实验来寻找更好的模型。使用一个多层的反卷积网络来可视化训练过程中特征的演化及发现潜在的问题;同时根据遮挡图像局部对分类结果的影响来探讨对分类任务而言到底那部分输入信息更重要。下图为典型反卷积网络示意图:



    ZFNet网络结构如下图所示:



    ZFNet在保留AlexNet的基本结构的同时利用反卷积网络可视化的技术对特定卷积层的卷积核尺寸进行了调整,第一层的卷积核从11*11减小到7*7,将stride从4减小到2,Top5的错误率比AlexNet比降低了1.7%。

    参考:https://blog.csdn.net/qq_31531635/article/details/71104334

    GoogLeNet网络


    文献提出了一种称为GoogLeNet网络的结构(Inception-V1)。在AlexNet出现之后,针对图像类任务出现了大量改进的网络结构,总体来说改进的思路主要是增大网络的规模,包括深度和宽度。但是直接增加网络的规模将面临两个问题,首先,网络参数增加之后更容易出现过拟合,在训练样本有限的情况下这一问题更为突出。另一个问题是计算量的增加。GoogLeNet致力于解决上面两个问题。


    GoogLeNet由Google在2014年提出,其主要创新是Inception机制,即对图像进行多尺度处理。这种机制带来的一个好处是大幅度减少了模型的参数数量,其做法是将多个不同尺度的卷积核,池化层进行整合,形成一个Inception模块。典型的Inception模块结构如下图所示:



    上图的模块由3组卷积核以及一个池化单元组成,它们共同接受来自前一层的输入图像,有三种尺寸的卷积核,以及一个max pooling操作,它们并行的对输入图像进行处理,然后将输出结果按照通道拼接起来。因为卷积操作接受的输入图像大小相等,而且卷积进行了padding操作,因此输出图像的大小也相同,可以直接按照通道进行拼接。


    从理论上看,Inception模块的目标是用尺寸更小的矩阵来替代大尺寸的稀疏矩阵。即用一系列小的卷积核来替代大的卷积核,而保证二者有近似的性能。


    上图的卷积操作中,如果输入图像的通道数太多,则运算量太大,而且卷积核的参数太多,因此有必要进行数据降维。所有的卷积和池化操作都使用了1x1卷积进行降维,减少参数量,即降低图像的通道数。因为1x1卷积不会改变图像的高度和宽度,只会改变通道数。


    GoogleNet网络结构如下图所示:



    GoogleNet在ILSVRC 2014的比赛中取得分类任务的第一名,top-5错误率6.67%。相较于之前的AlexNet-like网络,GoogleNet的网络深度达到了22层,参数量减少到AlexNet的1/12,可以说是非常优秀且非常实用的模型。


    为了降低网络参数作者做了2点尝试,一是去除了最后的全连接层,用全局平均池化替代。全连接层几乎占据了AlexNet中90%的参数量,而且会引起过拟合,去除全连接层后模型训练更快并且减轻了过拟合。用全局平均池化层取代全连接层的做法借鉴了Network In Network(以下简称NIN)论文。二是GoogleNet中精心设计的Inception模块提高了参数的利用效率,这一部分也借鉴了NIN的思想,形象的解释就是Inception模块本身如同大网络中的一个小网络,其结构可以反复堆叠在一起形成大网络。不过GoogleNet比NIN更进一步的是增加了分支网络。

    参考:https://www.cnblogs.com/Allen-rg/p/5833919.html

    VGG网络     

    VGG网络由著名的牛津大学视觉组(Visual Geometry Group)2014年提出,并取得了ILSVRC 2014比赛分类任务的第2名(GoogleNet第一名)和定位任务的第1名。同时VGGNet的拓展性很强,迁移到其他图片数据上的泛化性非常好。VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和池化尺寸(2x2)。到目前为止,VGGNet依然经常被用来提取图像特征,被广泛应用于视觉领域的各类任务。


    VGG网络的主要创新是采用了小尺寸的卷积核。所有卷积层都使用3x3卷积核,并且卷积的步长为1。为了保证卷积后的图像大小不变,对图像进行了填充,四周各填充1个像素。所有池化层都采用2x2的核,步长为2。全连接层有3层,分别包括4096,4096,1000个节点。除了最后一个全连接层之外,所有层都采用了ReLU激活函数。下图为VGG16结构图:



    VGG与Alexnet相比,做了以下改进:

    1.去掉了LRN层(局部响应归一化层),作者实验中发现深度卷积网络中LRN的作用并不明显

    2.采用更小的连续3x3卷积核来模拟更大尺寸的卷积核,例如2层连续的3x3卷积层可以达到一层5x5卷积层的感受野,但是所需的参数量会更少,两个3x3卷积核有18个参数(不考虑偏置项),而一个5x5卷积核有25个参数。后续的残差网络等都延续了这一特点


    残差网络


    残差网络(Residual Network)用跨层连接(Shortcut Connections)拟合残差项(Residual Representations)的手段来解决深层网络难以训练的问题,将网络的层数推广到了前所未有的规模,作者在ImageNet数据集上使用了一个152层的残差网络,深度是VGG网络的8倍但复杂度却更低,在ImageNet测试集上达到3.57%的top-5错误率,这个结果赢得了ILSVRC2015分类任务的第一名,另外作者还在CIFAR-10数据集上对100层和1000层的残差网络进行了分析。VGG19网络和ResNet34-plain及ResNet34-redisual网络对比如下:




    之前的经验已经证明,增加网络的层数会提高网络的性能,但增加到一定程度之后,随着层次的增加,神经网络的训练误差和测试误差会增大,这和过拟合还不一样,过拟合只是在测试集上的误差大,这个问题称为退化。


    为了解决这个问题,作者设计了一种称为深度残差网络的结构,这种网络通过跳层连接和拟合残差来解决层次过多带来的问题,这种做法借鉴了高速公路网络(Highway Networks)的设计思想,与LSTM有异曲同工之妙。这一结构的原理如下图所示:



    后面有文献对残差网络的机制进行了分析。得出了以下结论:残差网络并不是一个单一的超深网络,而是多个网络指数级的隐式集成,由此引入了多样性的概念,它用来描述隐式集成的网络的数量;在预测时,残差网络的行为类似于集成学习;对训练时的梯度流向进行了分析,发现隐式集成大多由一些相对浅层的网络组成,因此,残差网络并不能解决梯度消失问题。


    为了进一步证明残差网络的这种集成特性,并确定删除掉一部分跨层结构对网络精度的影响,作者进行了删除层的实验,在这里有两组实验,第一组是删除单个层,第二组是同时删除多个层。为了进行比较,作者使用了残差网络和VGG网络。实验结果证明,除了个别的层之外,删掉单个层对残差网络的精度影响非常小。相比之下,删掉VGG网络的单个层会导致精度的急剧下降。这个结果验证了残差网络是多个网络的集成这一结论。


    第三组实验是对网络的结构进行变动,集调整层的顺序。在实验中,作者打乱某些层的顺序,这样会影响一部分路径。具体做法是,随机的交换多对层的位置,这些层接受的输入和产生的输出数据尺寸相同。同样的,随着调整的层的数量增加,错误率也平滑的上升,这和第二组实验的结果一致。


    但是笔者认为作者的这种解释有些牵强。普通意义上的集成学习算法,其各个弱学习器之间是相互独立的,而这里的各个网络之间共享了一些层,极端情况下,除了一层不同之外,另外的层都相同。另外,这些网络是同时训练出来的,而且使用了相同的样本。

    GoogleNet-Inception-Like网络改进系列

    Inception-V2(GoogleNet-BN)

    作者基于GoogleNet的基本结构进行了改进,Top1错误率相较减少了2个百分点,主要做了以下的改进:

    1.加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯

    2.学习VGG用2个3x3的conv替代Inception模块中的5x5,既降低了参数数量,也加快了计算速度。


    Inception-V3

    Inception-V3一个最重要的改进是卷积核分解(Factorization),将7x7的卷积核分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),我们称为非对称分解,如下图所示。这样做既可以加速计算减少参数规模,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性。

    除此以外作者对训练优化的算法也做了改进:
    1.通过改进AdaGrad提出了RMSProp一种新的参数优化的方式。RMSprop是Geoff Hinton提出的一种自适应学习率方法。AdaGrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解AdaGrad算法学习率下降较快的问题。 实验证明RMSProp在非凸条件下优化结果更好。
    2.采用了Label Smoothing的策略,该方法是一种通过在输出标签中添加噪声,实现对模型进行约束,降低模型过拟合程度的一种正则化方法。

    Inception-V4
    Inception-v4相较于v3版本增加了Inception模块的数量,整个网络变得更深了。

    Xception
    Xception是Google针对Inception v3的另一种改进,主要是采用Depthwise Separable Convolution来替换原来Inception v3中的卷积操作, 在基本不增加网络复杂度的前提下提高了模型的效果。什么是Depthwise Separable Convolution? 通常,在一组特征图上进行卷积需要三维的卷积核,也即卷积核需要同时学习空间上的相关性和通道间的相关性。Xception通过在卷基层加入group的策略将学习空间相关性和学习通道间相关性的任务分离,大幅降低了模型的理论计算量且损失较少的准确度。
    Xception网络结构如下图所示:
    Inception-ResNet v1/v2
    作者基于Inception-v3和Inception-v4将残差网络的思想进行融合,分别得到了Inception-ResNet-v1和Inception-ResNet-v2两个模型。不仅提高了分类精度而且训练的稳定性也得到增强。
    Inception-ResNet-v2 网络结构如下图所示:
    NASNet
    此论文由Google brain出品,是在之前的一篇论文NAS-Neural Architecture Search With Reinforcement Learning的基础做了突破性的改进,使得能让机器在小数据集(CIFAR-10数据集)上自动设计出CNN网络,并利用迁移学习技术使得设计的网络能够被很好的迁移到ImageNet数据集,验证集上达到了82.7%的预测精度,同时也可以迁移到其他的计算机视觉任务上(如目标检测)。该网络的特点为:
    1.延续NAS论文的核心机制,通过强化学习自动产生网络结构。
    2.采用ResNet和Inception等成熟的网络拓扑结构减少了网络结构优化的搜索空间,大型网络直接由大量的同构模块堆叠而成,提高学习效率。
    3.在CIFAR-10上进行了架构搜索,并将最好的架构迁移到ImageNet图像分类和COCO物体检测上。
    下图为采用AutoML设计的Block结构:


    WRN(wide residual network)


    作者认为,随着模型深度的加深,梯度反向传播时,并不能保证能够流经每一个残差模块(residual block)的权重,以至于它很难学到东西,因此在整个训练过程中,只有很少的几个残差模块能够学到有用的表达,而绝大多数的残差模块起到的作用并不大。因此作者希望使用一种较浅的,但是宽度更宽的模型,来更加有效的提升模型的性能。



    ResNet原作者针对CIFAR-10所使用的的网络,包含三种Residual Block,卷积通道数量分别是16、32、64,网络的深度为6*N+2。而在这里,WRN作者给16、32、64之后都加了一个系数k,也就是说,作者是通过增加Residual Block卷积通道的数量来使模型变得更宽,从而N可以保持很小的值,就可以是网络达到很好的效果。 


    CIFAR-10和CIFAR -100性能对比:


       

    上述实验表明单独增加模型的宽度是对模型的性能是有提升的。不过也不能完全的就认为宽度比深度更好,两者只有相互搭配,才能取得更好的效果。


    ResNeXt


    作者提出 ResNeXt 的主要原因在于:传统的提高模型准确率的做法,都是加深或加宽网络,但是随着超参数数量的增加(比如通道数,卷积核大小等),网络设计的难度和计算开销也会增加。因此本文提出的 ResNeXt 结构可以在不增加参数复杂度的前提下提高准确率。


    这篇论文提出了ResNeXt网络,同时采用了VGG堆叠的思想和Inception 的 split-transform-merge 思想,但是可扩展性比较强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。这里提到一个名词cardinality,原文的解释是the size of the set of transformations,如下图(a)(b) cardinality=32所示:



    通过实验给出了下面的结论:

    1.证明ResNeXt比ResNet更好,而且Cardinality越大效果越好

    2.增大Cardinality比增大模型的width或者depth效果更好


    当时取得了state-of-art的结果,虽然后来被其它的网络结构超越,但就在最近Facebook 在图像识别技术上又有了新突破,基于ResNeXt 101-32x48d在ImageNet测试中准确度达到创纪录的 85.4%!(使用了35亿张图像,1.7万主题标签进行模型训练,规模史无前例!!!笔者这里不下什么结论,各位看官自行体会...)


    DenseNet


    DenseNet 是一种具有密集连接的卷积神经网络。在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集,而该层所学习的特征图也会被直接传给其后面所有层作为输入。DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。下面是DenseNet 的一个示意图:



    DenseNet可以有效地减少网络参数规模,达到减轻过拟合的效果,对小数据集合的学习很有效果。但是由于中间输出的feature map数量是多层Concat的结果,导致网络在训练和测试的时候显存占用并没有明显的优势,计算量也没有明显的减少!


    MobileNet


    MobileNets是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络,网络设计的核心Separable Convolution可以在牺牲较小性能的前提下有效的减少参数量和计算量。Separable Convolution将传统的卷积运算用两步卷积运算代替:Depthwise convolution与Pointwise convolution,如下图所示:


    从图中可以明确的看出,由于输入图片为三通道,Depthwise conv的filter数量只能为3,而传统的卷积方法会有3x3总共9个filter。


    后续的MobileNet-v2主要增加了残差结构,同时在Depthwise convolution之前添加一层Pointwise convolution,优化了带宽的使用,进一步提高了在嵌入式设备上的性能。可分离卷积如下图所示:


    参考:https://mp.weixin.qq.com/s/28GtBOuAZkHs7JLRVLlSyg


    展开全文
  • 提出了一种基于深度卷积神经网络的单目视觉深度估计方法,该方法采用端到端学习框架来构建模型。采用残差网络(ResNet)作为神经网络模型框架的编码部分来提取深度信息特征。采用密集连接卷积网络(DenseNet)对编码...
  • 卷积神经网络(CNN)与深度卷积神经网络(DCNN)

    万次阅读 多人点赞 2020-08-19 16:55:18
    深度卷积神经网络,如:AlexNet AlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。 卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界..

    作为小白,看到DCNN,一直想知道与CNN的区别,也没找到明确的说法,以下是自己的一点想法,欢迎指正!

     

    目录

    一、CNN与DCNN

    二、基于pytorch的实现

    1.LeNet-5

    2.AlexNet


    一、CNN与DCNN

    卷积神经网络,如:LeNet

    深度卷积神经网络,如:AlexNet

    AlexNet是第一个现代深度卷积网络模型,首次使用了许多现代深度卷积网络的技术方法,比如,采用ReLu作为非线性激活函数,使用Dropout防止过拟合,是用数据增强提高模型准确率,使用GPU进行并行训练等。

    AlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。

    卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界线。

    (选自书《动手学深度学习》、《神经网络与深度学习》)

    二、基于pytorch的实现

    参考卷积神经网络之 - Lenet

    LeNet、AlexNet模型实现(pytorch)

    1.LeNet-5:

    来自《神经网络与深度学习》

    Input -> conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax

    代码实现与原文存在一定差异

    import torch
    import torch.nn as nn
    import torch.nn.functional as func
    
    class LeNet5(nn.Module):
        def __init__(self,num_classes, grayscale=False):
            """
                  num_classes: 分类的数量
                  grayscale:是否为灰度图
                  """
            super(LeNet5, self).__init__()
    
            self.grayscale = grayscale
            self.num_classes = num_classes
    
            if self.grayscale:  # 可以适用单通道和三通道的图像
                in_channels = 1
            else:
                in_channels = 3
    
            self.conv1 =self.conv1 = nn.Conv2d(in_channels, 6, kernel_size=5)
            self.conv2 = nn.Conv2d(6, 16, kernel_size=5)
            self.fc1 = nn.Linear(16*5*5, 120)
            self.fc2 = nn.Linear(120, 84)
            self.fc3 = nn.Linear(84, num_classes)
    
        def forward(self, x):
            x = func.max_pool2d(self.conv1(x), 2)   # 原始的模型使用的是 平均池化
            x = func.max_pool2d(self.conv2(x), 2)
            x = x.view(x.size(0), -1)
            x = self.fc3(self.fc2(self.fc1(x)))
            x = func.softmax(x,dim=1)
            return x
    
    #(最后模拟了一个输入,输出一个分类器运算后 10 个 softmax 概率值)
    num_classes = 10  # 分类数目
    grayscale = True  # 是否为灰度图
    data = torch.rand((1, 1, 32, 32))
    print("input data:\n", data, "\n")
    model = LeNet5(num_classes, grayscale)
    x= model(data)
    print(x)
    

    2.AlexNet

     

    preview

    来自《神经网络与深度学习》

     

    假设输入为32*32大小图像,代码实现与上文所述存在一定差异。

    import torch
    import torch.nn as nn
    class AlexNet(nn.Module):
        def __init__(self,num_classes, grayscale=False):
    
            super(AlexNet, self).__init__()
            self.grayscale = grayscale
            self.num_classes = num_classes
            if self.grayscale:  # 可以适用单通道和三通道的图像
                in_channels = 1
            else:
                in_channels = 3
    
            self.features = nn.Sequential(
                nn.Conv2d(in_channels, 96, kernel_size=11,padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
                nn.Conv2d(96, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
                nn.Conv2d(256, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
            )
            self.classifier = nn.Sequential(
                nn.Dropout(),
                nn.Linear(256 * 3 * 3, 4096),
                nn.ReLU(inplace=True),
                nn.Dropout(),
                nn.Linear(4096, 4096),
                nn.ReLU(inplace=True),
                nn.Linear(4096, 10),
            )
    
        def forward(self, x):
            x = self.features(x)
            x = x.view(x.size(0), 256 * 3 * 3)
            x = self.classifier(x)
            return x
    
    #最后模拟了一个输入,输出一个分类器运算后的值
    num_classes = 10  # 分类数目
    grayscale = True  # 是否为灰度图
    data = torch.rand((1, 1, 32, 32))
    print("input data:\n", data, "\n")
    model = AlexNet(num_classes,grayscale)
    x=model(data)
    print(x)

    展开全文
  • 关于深度学习, 图像处理.卷积神经网络的大量参考论文文献.
  • 深度卷积神经网络在图像分类任务中取得了极大的成功。现有的基于简化卷积的卷积神经网络结构能够减少网络参数, 但会丢失部分特征信息, 降低网络性能。为了提高图像分类正确率, 提出一种二分支卷积单元。该卷积单元...
  • 深度卷积神经网络之AlexNet

    千次阅读 2019-02-13 22:40:00
    摘要:我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010比赛中的120万张高分辨率图像分成1000个不同的类别。在测试数据上,我们实现了第1位和第5位错误率分别为37.5%和17.0%,大大优于之前的先进水平。...

    Paper原文地址:2012年PDF下载

    摘要:我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010比赛中的120万张高分辨率图像分成1000个不同的类别。在测试数据上,我们实现了第1位和第5位错误率分别为37.5%和17.0%,大大优于之前的先进水平。这个神经网络有6000万个参数和65万个神经元,由5个卷积层、若干个max-pooling层、3个带有1000路softmax的完全连接层。为了使训练更快,我们使用了不饱和神经元和一个非常有效的GPU实现卷积运算。为了减少全连通层的过拟合,我们采用了一种最近发展起来的正则化方法“drop - out”,该方法被证明是非常有效的。我们还在ILSVRC-2012比赛中加入了该模型的一个变体,获得了15.3%的前5名测试错误率,而第二名的测试错误率为26.2%。

    1.引言:

    目前的目标识别方法主要是利用机器学习的方法。为了证明它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过拟合。……新的更大的数据集包括LabelMe和ImageNet,前者由数十万张完全分割的图像组成,后者由超过22,000个类别的超过1,500万张标记的高分辨率图像组成。

    要从数百万幅图像中了解数千个对象,我们需要一个具有强大学习能力的模型。然而,对象识别任务的巨大复杂性意味着即使是像ImageNet这样大的数据集也无法指定这个问题,因此我们的模型还应该具有大量的先验知识来补偿我们没有的所有数据。它们的容量可以通过改变深度和宽度来控制,它们还可以对图像的性质(即统计量的平稳性和像素依赖性的局部性)做出强有力且大部分是正确的假设。因此,与具有相似大小层的标准前馈神经网络相比,CNNs具有更少的连接和参数,因此更容易训练,而其理论上最好的性能可能只会略差。

    尽管CNNs具有吸引人的质量,尽管其本地架构相对高效,但大规模应用于高分辨率图像的成本仍然高得令人望而却步。幸运的是,目前的gpu加上高度优化的2D卷积实现,已经足够强大来帮助训练有趣的大型CNNs,而最近的数据集,如ImageNet,包含了足够多的标记示例来训练这类模型,而不会出现严重的过拟合。

    本文的具体贡献如下:我们对ILSVRC-2010和ILSVRC-2012比赛中使用的ImageNet子集进行了迄今为止最大的卷积神经网络之一的训练,获得了迄今为止在这些数据集上报道的最好的结果。我们编写了一个高度优化的GPU实现2D卷积和所有其他卷积神经网络训练中固有的操作。我们的网络包含了许多新的和不寻常的特性,这些特性提高了网络的性能并减少了网络的训练时间。我们的网络规模使得过拟合成为一个严重的问题,即使有120万个标记的训练例子,所以我们使用了一些有效的技术来防止过拟合。我们最终的网络包含5个卷积层和3个完全连接的层,这个深度似乎很重要:我们发现删除任何卷积层(每个层包含的参数不超过模型参数的1%)都会导致较差的性能。

    最后,网络的大小主要受限于当前gpu上可用的内存和我们愿意接受的训练时间。我们的网络需要5到6天的时间在两个GTX 580 3GB gpu上进行培训。我们所有的实验都表明,只要等待更快的gpu和更大的可用数据集,我们的结果就能得到改善。

    2.数据集

    ImageNet是一个包含超过1500万张高分辨率图像的数据集,属于大约2.2万个类别。这些图片是从网上收集的,并由人类标签员使用亚马逊土耳其机器人众包工具进行标记。从2010年开始,作为Pascal视觉对象挑战赛的一部分,一年一度的ImageNet大规模视觉识别挑战赛(ILSVRC)已经举行。ILSVRC使用ImageNet的一个子集,在1000个类别中的每个类别中包含大约1000个图像。总共大约有120万张训练图像、5万张验证图像和15万张测试图像。

    ImageNet由可变分辨率的图像组成,而我们的系统需要一个恒定的输入维度。因此,我们将图像降采样到256 256的固定分辨率。

    给定一个矩形图像,我们首先对图像进行缩放,使较短的边长度为256,然后从得到的图像中裁剪出中央256*256的小块。我们没有以任何其他方式对图像进行预处理,只是从每个像素中减去训练集上的平均活动。因此,我们将网络训练在像素的原始RGB值上。

    3.架构

    我们的网络架构如图所示。它包含8个学习层——5个卷积层和3个完全连接的层。下面,我们将描述网络架构的一些新颖或不寻常的特性。第3.1-3.4节是根据我们对其重要性的估计进行排序的,其中最重要的是第一个。
    在这里插入图片描述

    3.1 ReLU 非线性

    标准方法模型神经元的输出与输入的关系:f(x)=tanh(x)或f(x)=((1+e^(-x))-1。在梯度下降训练时间方面,这些饱和非线性要比非饱和非线性慢得多f(x) = max(0,x)。我们将这种非线性的神经元称为校正的线性单元(ReLUs)。深度卷积神经网络——使用ReLUs训练比使用tanh训练要快几倍。这在图1显示了一个特定的四层卷积网络在CIFAR-10数据集上为达到25%的训练误差而需要的迭代次数。这张图显示,如果我们使用传统的饱和神经元模型,我们就无法用这么大的神经网络来进行实验。

    在这里插入图片描述

    3.2 多个GPU上训练

    单个GTX 580 GPU只有3GB内存,这限制了可以在其上训练的网络的最大规模·。事实证明,120万个训练样本足以训练一个GPU无法容纳的网络。因此,我们将网络扩展到两个gpu上。当前的gpu特别适合跨gpu并行化,因为它们可以直接读写彼此的内存,而不需要通过主机内存。我们使用的并行化方案实际上是将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在特定的层中通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。但是,第4层中的内核只从驻留在相同GPU上的第3层中的内核映射中获取输入。选择连接模式对于交叉验证来说是一个问题,但是这允许我们精确地调整通信量,直到它是计算量的一个可接受的部分。

    合成体系结构有点类似的“柱状”CNN,除了我们的列不是独立的(参见图2)。这个方案将我们的top-1和top-5错误率分别降低了1.7%和1.2%,相比之下,在一个GPU上训练每个卷积层的内核数量是net的一半。与单gpu net 2相比,双gpu net花费的时间稍微少一些。
    在这里插入图片描述

    3.3 本地响应规范化 (在VGG中没有使用)

    3.4 重叠池

    CNN中的池化层将相邻神经元组的输出汇总到相同的内核映射中。一般的,相邻池化层单元汇总的邻域不重叠。更准确的说,一个池化层可以认为是由间距为s像素组成的网格单元,每个概括了以集合单元的位置为中心的大小为z×z的邻域,**如果我们设置s = z,我们得到CNNs中常用的传统局部池。如果我们设置s < z,就会得到重叠池。**这是我们在整个网络中使用的,s = 2 z = 3。该方案将前1位和前5位错误率降低0.4%和0.3%,与不重叠方案s = 2、z = 2相比,其输出的维数相等。我们通常在培训过程中观察到,具有重叠池的模型不容易过度拟合。

    3.5 总体架构

    现在我们已经准备好描述CNN的整体架构了。如图2所示,这个网络包含了八层权重;前五个是卷积层,其余三个为全连接层。最后的全连接层的输出被送到1000维的softmax函数,其产生1000个类的预测。我们的网络最大化多项逻辑回归目标,这相当于在预测的分布下最大化训练样本中正确标签对数概率的平均值。
    第二,第四和第五个卷积层的内核仅与上一层存放在同一GPU上的内核映射相连(见图2)。第三个卷积层的内核连接到第二层中的所有内核映射。全连接层中的神经元连接到前一层中的所有神经元。响应归一化层紧接着第一个和第二个卷积层。 在3.4节中介绍的最大池化层,后面连接响应归一化层以及第五个卷积层。将ReLU应用于每个卷积层和全连接层的输出。
    在这里插入图片描述

    第一个卷积层的输入为224×224×3的图像,对其使用96个大小为11×11×3、步长为4(步长表示内核映射中相邻神经元感受野中心之间的距离)的内核来处理输入图像。第二个卷积层将第一个卷积层的输出(响应归一化以及池化)作为输入,并使用256个内核处理图像,每个内核大小为5×5×48。第三个、第四个和第五个卷积层彼此连接而中间没有任何池化或归一化层。第三个卷积层有384个内核,每个的大小为3×3×256,其输入为第二个卷积层的输出。第四个卷积层有384个内核,每个内核大小为3×3×192。第五个卷积层有256个内核,每个内核大小为3×3×192。全连接层各有4096个神经元。

    4.减少过拟合

    4.1 数据增广

    在图像数据中减少过拟合最简单、最常用的方法是使用标签保留转换的人为增大数据集。我们采用了两种不同的数据扩充形式,这两种形式都允许从原始图像中生成转换后的图像,而只需很少的计算,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上的Python代码中生成的GPU正在对前一批图像进行训练。因此,这些数据扩充方案实际上是不需要计算的。

    数据增强的第一种形式包括生成图像平移和水平反射。我们通过在256256图像中随机抽取224224的小块(和他们的水平反射),在提取的小块中训练我们的网络。这将我们的训练集的大小增加了2048倍,尽管最终的训练示例当然是高度相互依赖的。如果没有这个方案,我们的网络将遭受严重的过拟合,这将迫使我们使用更小的网络。

    第二种形式的数据增强包括改变训练图像中RGB通道的强度。
    该方案近似地捕获了自然图像的一个重要特性,即物体的特征不随光照强度和颜色的变化而变化。该方案将top-1错误率降低了1%以上。

    4.2 Dropout

    结合许多不同模型的预测是减少测试错误的一个非常成功的方法
    ,但对于已经花了好几天时间来训练的大型神经网络来说,这似乎代价太大了。然而,有一个非常有效的模型组合版本,在培训期间只需要花费大约2倍的成本。最近引入的技术叫做“dropout,它将每个隐藏神经元的输出设置为0,概率为0.5。这些神经元
    以这种方式“退出”,既不贡献前传,也不参与后传。所以每次输入出现时,神经网络都会对不同的架构进行采样,但是所有这些架构都共享权重。这种技术减少了神经元复杂的共适应,因为神经元不能依赖于特定的其他神经元的存在。因此,它被迫学习与其他神经元的许多不同随机子集一起使用的更健壮的特征。在测试时,我们使用所有的神经元,但是将它们的输出乘以0.5,这是一个合理的近似,近似于取指数众多drop - in网络产生的预测分布的几何平均值。

    我们在图2的前两个完全连接层中使用dropout。没有dropout情况下,我们的网络会遭到了大量的过拟合。使用dropout大约是收敛所需迭代次数的两倍。

    5 学习的细节

    6.结果

    我们关于ILSVRC-2010的研究结果总结在表1中。
    在这里插入图片描述
    我们的网络实现了前1和前5的测试集错误率分别为37.5%和17.0%。

    6.1 定性评估

    7.讨论

    我们的研究结果表明,一个大的深层卷积神经网络能够在纯粹使用监督学习的情况下,在极具挑战性的数据集上实现破纪录的结果。值得注意的是,如果移除任何一个卷积层,网络的性能就会下降。例如,删除任何中间层的结果会导致网络性能的top-1错误率下降2%。因此网络的深度对于实现我们的结果真的很重要。

    为了简化我们的实验,我们没有使用任何无监督的预训练方法,尽管这样可能会有所帮助,特别是如果我们获得了足够的计算能力来显著地增加网络的大小而不会相应地增加已标记数据的数量。到目前为止,我们的结果已经获得了足够的进步,因为我们已经使网络更大,并且训练了更长时间。但我们仍然有很大的空间去优化网络,使之能够像人类的视觉系统一样感知。最后,我们希望对视频序列使用非常大的深度卷积神经网路,其中时间结构提供了非常有用的信息,这些信息往往在静态图像中丢失了,或者说不太明显。

    参考:
    1.知乎转载
    2.博客翻译版本
    3. what is top1 and top5
    4.知乎专栏top5解释

    top1就是你预测的label取最后概率向量里面最大的那一个作为预测结果,你的预测结果中概率最大的那个类必须是正确类别才算预测正确。而top5就是最后概率向量最大的前五名中出现了正确概率即为预测正确。

    展开全文
  • 基于深度卷积神经网络的图像分类

    千次阅读 2019-06-14 15:20:03
    基于深度卷积神经网络的图像分类摘要1 引言3 架构3.1 ReLU非线性3.2 多GPU训练3.4 重叠池化3.5 整体架构4 减少过拟合4.1 数据增强4.2 失活(Dropout)6 结果7 探讨 《ImageNet Classification with Deep Convolutional...

    《ImageNet Classification with Deep Convolutional Neural Networks》

    摘要

    我们训练了一个大型的深度卷积神经网络来将ImageNet LSVRC-2010竞赛中的120万高分辨率的图像分到1000不同的类别中。在测试数据上,我们得到了Top-1 37.5%, Top-5 17.0%的错误率,这个结果比目前的最好成绩要好很多。这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1000维的Softmax。为了加快训练速度,我们使用了非饱和神经元(RELU)并对卷积操作进行了非常有效的GPU实现。为了减少全连接层的过拟合,我们采用了一个最近开发的名为Dropout的正则化方法,结果证明是非常有效的。我们也使用这个模型的一个变种网络参加了ILSVRC-2012竞赛,赢得了冠军并且与第二名 top-5 26.2%的错误率相比,我们取得了top-5 15.3%的错误率。

    1 引言

    当前的目标识别方法基本上都使用了机器学习方法。为了提高目标识别的性能,我们可以收集更大的数据集,学习更强大的模型,使用更好的技术来防止过拟合。直到最近,标注图像的数据集都相对较小–在几万张图像的数量级上(例如,NORB[16],Caltech-101/256 [8, 9]和CIFAR-10/100 [12])。简单的识别任务在这样大小的数据集上可以被解决的相当好,尤其是如果通过标签保留变换进行数据增强的情况下。例如,目前在MNIST数字识别任务上(<0.3%)的最好准确率已经接近了人类水平[4]。但真实环境中的对象表现出了相当大的可变性,因此为了学习识别它们,有必要使用更大的训练数据集。实际上,小图像数据集的缺点已经被广泛认识到(例如,Pinto et al. [21]),但收集上百万图像的标注数据仅在最近才变得的可能。新的更大的数据集包括LabelMe [23],它包含了数十万张完全分割的图像,ImageNet[6],它包含了22000个类别上的超过1500万张标注的高分辨率的图像。
    为了从数百万张图像中学习几千个对象,我们需要一个有很强学习能力的模型。然而对象识别任务的巨大复杂性意味着这个问题不能被指定,即使通过像ImageNet这样的大数据集,因此我们的模型应该也有许多先验知识来补偿我们所没有的数据。卷积神经网络(CNNs)构成了一个这样的模型[16, 11, 13, 18, 15, 22, 26]。它们的能力可以通过改变它们的广度和深度来控制,它们也可以对图像的本质进行强大且通常正确的假设(也就是说,统计的稳定性和像素依赖的局部性)。因此,与具有层次大小相似的标准前馈神经网络,CNNs有更少的连接和参数,因此它们更容易训练,而它们理论上的最佳性能可能仅比标准前馈神经网络差一点。
    尽管CNN具有引人注目的质量,尽管它们的局部架构相当有效,但将它们大规模的应用到到高分辨率图像中仍然是极其昂贵的。幸运的是,目前的GPU,搭配了高度优化的2D卷积实现,强大到足够促进有趣地大量CNN的训练,最近的数据集例如ImageNet包含足够的标注样本来训练这样的模型而没有严重的过拟合。
    本文具体的贡献如下:我们在ILSVRC-2010和ILSVRC-2012[2]的ImageNet子集上训练了到目前为止最大的神经网络之一,并取得了迄今为止在这些数据集上报道过的最好结果。我们编写了高度优化的2D卷积GPU实现以及训练卷积神经网络内部的所有其它操作,我们把它公开了。我们的网络包含许多新的不寻常的特性,这些特性提高了神经网络的性能并减少了训练时间,详见第三节。即使使用了120万标注的训练样本,我们的网络尺寸仍然使过拟合成为一个明显的问题,因此我们使用了一些有效的技术来防止过拟合,详见第四节。我们最终的网络包含5个卷积层和3个全连接层,深度似乎是非常重要的:我们发现移除任何卷积层(每个卷积层包含的参数不超过模型参数的1%)都会导致更差的性能。
    最后,网络尺寸主要受限于目前GPU的内存容量和我们能忍受的训练时间。我们的网络在两个GTX 580 3GB GPU上训练五六天。我们的所有实验表明我们的结果可以简单地通过等待更快的GPU和更大的可用数据集来提高。

    2 数据集

    ImageNet数据集有超过1500万的标注高分辨率图像,这些图像属于大约22000个类别。这些图像是从网上收集的,使用了Amazon’s Mechanical Turk的众包工具通过人工标注的。从2010年起,作为Pascal视觉对象挑战赛的一部分,每年都会举办ImageNet大规模视觉识别挑战赛(ILSVRC)。ILSVRC使用ImageNet的一个子集,1000个类别每个类别大约1000张图像。总计,大约120万训练图像,50000张验证图像和15万测试图像。
    ILSVRC-2010是ILSVRC竞赛中唯一可以获得测试集标签的版本,因此我们大多数实验都是在这个版本上运行的。由于我们也使用我们的模型参加了ILSVRC-2012竞赛,因此在第六节我们也报告了模型在这个版本的数据集上的结果,这个版本的测试标签是不可获得的。在ImageNet上,按照惯例报告两个错误率:top-1和top-5,top-5错误率是指测试图像的正确标签不在模型认为的五个最可能的便签之中。
    ImageNet包含各种分辨率的图像,而我们的系统要求不变的输入维度。因此,我们将图像进行下采样到固定的256×256分辨率。给定一个矩形图像,我们首先缩放图像短边长度为256,然后从结果图像中裁剪中心的256×256大小的图像块。除了在训练集上对像素减去平均活跃度外,我们不对图像做任何其它的预处理。因此我们在原始的RGB像素值(中心的)上训练我们的网络

    3 架构

    我们的网络架构概括为图2。它包含八个学习层–5个卷积层和3个全连接层。下面,我们将描述我们网络结构中的一些新奇的不寻常的特性。3.1-3.4小节按照我们对它们评估的重要性进行排序,最重要的最优先。

    3.1 ReLU非线性

    将神经元输出f建模为输入x的函数的标准方式是用f(x) = tanh(x)或f(x) = (1 + e−x)−1。考虑到梯度下降的训练时间,这些饱和的非线性比非饱和非线性f(x) = max(0,x)更慢。根据Nair和Hinton[20]的说法,我们将这种非线性神经元称为修正线性单元(ReLU)。采用ReLU的深度卷积神经网络训练时间比等价的tanh单元要快几倍。在图1中,对于一个特定的四层卷积网络,在CIFAR-10数据集上达到25%的训练误差所需要的迭代次数可以证实这一点。这幅图表明,如果我们采用传统的饱和神经元模型,我们将不能在如此大的神经网络上实验该工作。
    在这里插入图片描述

    图1:使用ReLU的四层卷积神经网络在CIFAR-10数据集上达到25%的训练误差比使用tanh神经元的等价网络(虚线)快六倍。
    为了使训练尽可能快,每个网络的学习率是单独选择的。没有采用任何类型的正则化。影响的大小随着网络结构的变化而变化,这一点已得到证实,但使用ReLU的网络都比等价的饱和神经元快几倍。
    我们不是第一个考虑替代CNN中传统神经元模型的人。例如,Jarrett等人[11]声称非线性函数f(x) = |tanh(x)|与其对比度归一化一起,然后是局部均值池化,在Caltech-101数据集上工作的非常好。然而,在这个数据集上主要的关注点是防止过拟合,因此他们观测到的影响不同于我们使用ReLU拟合数据集时的加速能力。更快的学习对大型数据集上大型模型的性能有很大的影响。

    3.2 多GPU训练

    单个GTX580 GPU只有3G内存,这限制了可以在GTX580上进行训练的网络最大尺寸。事实证明120万图像用来进行网络训练是足够的,但网络太大因此不能在单个GPU上进行训练。因此我们将网络分布在两个GPU上。目前的GPU非常适合跨GPU并行,因为它们可以直接互相读写内存,而不需要通过主机内存。我们采用的并行方案基本上每个GPU放置一半的核(或神经元),还有一个额外的技巧:只在某些特定的层上进行GPU通信。这意味着,例如,第3层的核会将第2层的所有核映射作为输入。然而,第4层的核只将位于相同GPU上的第3层的核映射作为输入。连接模式的选择是一个交叉验证问题,但这可以让我们准确地调整通信数量,直到它的计算量在可接受的范围内。
    除了我们的列不是独立的之外(看图2),最终的架构有点类似于Ciresan等人[5]采用的“columnar” CNN。与每个卷积层一半的核在单GPU上训练的网络相比,这个方案降分别低了我们的top-1 1.7%,top-5 1.2%的错误率。双GPU网络比单GPU网络稍微减少了训练时间。

    3.3LRN

    在这里插入图片描述
    求和运算在n个“毗邻的”核映射的同一位置上执行,N是本层的卷积核数目。核映射的顺序当然是任意的,在训练开始前确定。响应归一化的顺序实现了一种侧抑制形式,灵感来自于真实神经元中发现的类型,为使用不同核进行神经元输出计算的较大活动创造了竞争。常量k,n,α,β是超参数,它们的值通过验证集确定;我们设k=2,n=5,α=0.0001,β=0.75。我们在特定的层使用的ReLU非线性之后应用了这种归一化(请看3.5小节)。

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

    3.4 重叠池化

    CNN中的池化层归纳了同一核映射上相邻组神经元的输出。习惯上,相邻池化单元归纳的区域是不重叠的(例如[17, 11, 4])。更确切的说,池化层可看作由池化单元网格组成,网格间距为 个像素,每个网格归纳池化单元中心位置 大小的邻居。如果设置 ,我们会得到通常在CNN中采用的传统局部池化。如果设置 ,我们会得到重叠池化。这就是我们网络中使用的方法,设置 , 。这个方案分别降低了top-1 0.4%,top-5 0.3%的错误率,与非重叠方案 相比,输出的维度是相等的。我们在训练过程中通常观察采用重叠池化的模型,发现它更难过拟合。

    3.5 整体架构

    现在我们准备描述我们的CNN的整体架构。如图2所示,我们的网络包含8个带权重的层;前5层是卷积层,剩下的3层是全连接层。最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布。我们的网络最大化多项逻辑回归的目标,这等价于最大化预测分布下训练样本正确标签的对数概率的均值。
    在这里插入图片描述

    第2,4,5卷积层的核只与位于同一GPU上的前一层的核映射相连接(看图2)。第3卷积层的核与第2层的所有核映射相连。全连接层的神经元与前一层的所有神经元相连。第1,2卷积层之后是响应归一化层。3.4节描述的这种最大池化层在响应归一化层和第5卷积层之后。ReLU非线性应用在每个卷积层和全连接层的输出上。

    第1卷积层使用96个核对224 × 224 × 3的输入图像进行滤波,核大小为11 × 11 × 3,步长是4个像素(核映射中相邻神经元感受野中心之间的距离)。第2卷积层使用用第1卷积层的输出(响应归一化和池化)作为输入,并使用256个核进行滤波,核大小为5 × 5 × 48。第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 数据增强

    图像数据上最简单常用的用来减少过拟合的方法是使用标签保留变换(例如[25, 4, 5])来人工增大数据集。我们使用了两种独特的数据增强方式,这两种方式都可以从原始图像通过非常少的计算量产生变换的图像,因此变换图像不需要存储在硬盘上。在我们的实现中,变换图像通过CPU的Python代码生成,而此时GPU正在训练前一批图像。因此,实际上这些数据增强方案是计算免费的。
    第一种数据增强方式包括产生图像变换和水平翻转。我们从256×256图像上通过随机提取224 × 224的图像块实现了这种方式,然后在这些提取的图像块上进行训练。这通过一个2048因子增大了我们的训练集,尽管最终的训练样本是高度相关的。没有这个方案,我们的网络会有大量的过拟合,这会迫使我们使用更小的网络。在测试时,网络会提取5个224 × 224的图像块(四个角上的图像块和中心的图像块)和它们的水平翻转(因此总共10个图像块)进行预测,然后对网络在10个图像块上的softmax层进行平均。

    4.2 失活(Dropout)

    将许多不同模型的预测结合起来是降低测试误差[1, 3]的一个非常成功的方法,但对于需要花费几天来训练的大型神经网络来说,这似乎太昂贵了。然而,有一个非常有效的模型结合版本,它只花费两倍的训练成本。这种最近引入的技术,叫做“dropout”[10],它会以0.5的概率对每个隐层神经元的输出设为0。那些“失活的”的神经元不再进行前向传播并且不参与反向传播。因此每次输入时,神经网络会采样一个不同的架构,但所有架构共享权重。这个技术减少了复杂的神经元互适应,因为一个神经元不能依赖特定的其它神经元的存在。因此,神经元被强迫学习更鲁棒的特征,它在与许多不同的其它神经元的随机子集结合时是有用的。在测试时,我们使用所有的神经元但它们的输出乘以0.5,对指数级的许多失活网络的预测分布进行几何平均,这是一种合理的近似。
    我们在图2中的前两个全连接层使用失活。如果没有失活,我们的网络表现出大量的过拟合。失活大致上使要求收敛的迭代次数翻了一倍。

    5 学习细节

    在这里插入图片描述

    我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们在第2,4,5卷积层和全连接隐层将神经元偏置初始化为常量1。这个初始化通过为ReLU提供正输入加速了学习的早期阶段。我们在剩下的层将神经元偏置初始化为0。
    我们对所有的层使用相等的学习率,这个是在整个训练过程中我们手动调整得到的。当验证误差在当前的学习率下停止提供时,我们遵循启发式的方法将学习率除以10。学习率初始化为0.01,在训练停止之前降低三次。我们在120万图像的训练数据集上训练神经网络大约90个循环,在两个NVIDIA GTX 580 3GB GPU上花费了五到六天。

    6 结果

    我们在ILSVRC-2010上的结果概括为表1。我们的神经网络取得了top-1 37.5%,top-5 17.0%的错误率。在ILSVRC-2010竞赛中最佳结果是top-1 47.1%,top-5 28.2%,使用的方法是对6个在不同特征上训练的稀疏编码模型生成的预测进行平均,从那时起已公布的最好结果是top-1 45.7%,top-5 25.7%,使用的方法是平均在Fisher向量(FV)上训练的两个分类器的预测结果,Fisher向量是通过两种密集采样特征计算得到的[24]。
    在这里插入图片描述
    表1:ILSVRC-2010测试集上的结果对比。斜体是其它人取得的最好结果。

    我们也用我们的模型参加了ILSVRC-2012竞赛并在表2中报告了我们的结果。由于ILSVRC-2012的测试集标签不可以公开得到,我们不能报告我们尝试的所有模型的测试错误率。在这段的其余部分,我们会使用验证误差率和测试误差率互换,因为在我们的实验中它们的差别不会超过0.1%(看图2)。本文中描述的CNN取得了top-5 18.2%的错误率。五个类似的CNN预测的平均误差率为16.4%。为了对ImageNet 2011秋季发布的整个数据集(1500万图像,22000个类别)进行分类,我们在最后的池化层之后有一个额外的第6卷积层,训练了一个CNN,然后在它上面进行“fine-tuning”,在ILSVRC-2012取得了16.6%的错误率。对在ImageNet 2011秋季发布的整个数据集上预训练的两个CNN和前面提到的五个CNN的预测进行平均得到了15.3%的错误率。第二名的最好竞赛输入取得了26.2%的错误率,他的方法是对FV上训练的一些分类器的预测结果进行平均,FV在不同类型密集采样特征计算得到的。
    在这里插入图片描述
    表2:ILSVRC-2012验证集和测试集的误差对比。斜线部分是其它人取得的最好的结果。带星号的是“预训练的”对ImageNet 2011秋季数据集进行分类的模型。更多细节请看第六节。
    最后,我们也报告了我们在ImageNet 2009秋季数据集上的误差率,ImageNet 2009秋季数据集有10,184个类,890万图像。在这个数据集上我们按照惯例用一半的图像来训练,一半的图像来测试。由于没有建立测试集,我们的数据集分割有必要不同于以前作者的数据集分割,但这对结果没有明显的影响。我们在这个数据集上的的top-1和top-5错误率是67.4%和40.9%,使用的是上面描述的在最后的池化层之后有一个额外的第6卷积层网络。这个数据集上公开可获得的最好结果是78.1%和60.9%[19]。

    6.1 定性评估

    图3显示了网络的两个数据连接层学习到的卷积核。网络学习到了大量的频率核、方向选择核,也学到了各种颜色点。注意两个GPU表现出的专业化,3.5小节中描述的受限连接的结果。GPU 1上的核主要是没有颜色的,而GPU 2上的核主要是针对颜色的。这种专业化在每次运行时都会发生,并且是与任何特别的随机权重初始化(以GPU的重新编号为模)无关的。
    在这里插入图片描述
    图3:第一卷积层在224×224×3的输入图像上学习到的大小为11×11×3的96个卷积核。上面的48个核是在GPU 1上学习到的而下面的48个卷积核是在GPU 2上学习到的。更多细节请看6.1小节。
    在这里插入图片描述
    在这里插入图片描述
    在图4的左边部分,我们通过在8张测试图像上计算它的top-5预测定性地评估了网络学习到的东西。注意即使是不在图像中心的目标也能被网络识别,例如左上角的小虫。大多数的top-5标签似乎是合理的。例如,对于美洲豹来说,只有其它类型的猫被认为是看似合理的标签。在某些案例(格栅,樱桃)中,网络在意的图片焦点真的很含糊。
    图4:(左)8张ILSVRC-2010测试图像和我们的模型认为最可能的5个标签。每张图像的下面是它的正确标签,正确标签的概率用红条表示(如果正确标签在top 5中)。(右)第一列是5张ILSVRC-2010测试图像。剩下的列展示了6张训练图像,这些图像在最后的隐藏层的特征向量与测试图像的特征向量有最小的欧氏距离。
    探索网络可视化知识的另一种方式是思考最后的4096维隐藏层在图像上得到的特征激活。如果两幅图像生成的特征激活向量之间有较小的欧式距离,我们可以认为神经网络的更高层特征认为它们是相似的。图4表明根据这个度量标准,测试集的5张图像和训练集的6张图像中的每一张都是最相似的。注意在像素级别,检索到的训练图像与第一列的查询图像在L2上通常是不接近的。例如,检索的狗和大象似乎有很多姿态。我们在补充材料中对更多的测试图像呈现了这种结果。
    通过两个4096维实值向量间的欧氏距离来计算相似性是效率低下的,但通过训练一个自动编码器将这些向量压缩为短二值编码可以使其变得高效。这应该会产生一种比将自动编码器应用到原始像素上[14]更好的图像检索方法,自动编码器应用到原始像素上的方法没有使用图像标签,因此会趋向于检索与要检索的图像具有相似边缘模式的图像,无论它们是否是语义上相似。

    7 探讨

    我们的结果表明一个大型深度卷积神经网络在一个具有高度挑战性的数据集上使用纯有监督学习可以取得破纪录的结果。值得注意的是,如果移除一个卷积层,我们的网络性能会降低。例如,移除任何中间层都会引起网络损失大约2%的top-1性能。因此深度对于实现我们的结果非常重要。
    为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们希望它会有所帮助,特别是在如果我们能获得足够的计算能力来显著增加网络的大小而标注的数据量没有对应增加的情况下。到目前为止,我们的结果已经提高了,因为我们的网络更大、训练时间更长,但为了匹配人类视觉系统的下颞线(视觉专业术语)我们仍然有许多数量级要达到。最后我们想在视频序列上使用非常大的深度卷积网络,视频序列的时序结构会提供非常有帮助的信息,这些信息在静态图像上是缺失的或远不那么明显。

    展开全文
  • 基于深度卷积神经网络的人脸识别技术综述基于深度卷积神经网络的人脸识别技术综述
  • 为多变量时间序列开发多通道深度卷积神经网络
  • 自适应深度卷积神经网络模型构建方法
  • 深度卷积神经网络基本介绍

    万次阅读 多人点赞 2018-05-29 18:22:48
    关于深度卷积神经网络的前世今生,就不在此处进行过多的介绍。在此,主要对网络的各个组成部分进行简要介绍:图1 基本的深度卷积网络结构 通过图1可知深度卷积神经网络主要是由输入层、卷积层、激活函数、池化层、...
  • 1、基础卷积神经分类网络 2、One-Stage 3、Two-Stage 4、Anchor-Free 说明 本文综述形式保持格式一致,如下: 1、一页PPT内容总结一篇论文 2、标题格式一致:出处 年份 《标题》 3、内容格式一致:针对XX问题;提出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,831
精华内容 43,932
关键字:

深度卷积神经网络