基于深度卷积神经网络的图像分类.docx

上传人:b****6 文档编号:8083900 上传时间:2023-01-28 格式:DOCX 页数:23 大小:840.07KB
下载 相关 举报
基于深度卷积神经网络的图像分类.docx_第1页
第1页 / 共23页
基于深度卷积神经网络的图像分类.docx_第2页
第2页 / 共23页
基于深度卷积神经网络的图像分类.docx_第3页
第3页 / 共23页
基于深度卷积神经网络的图像分类.docx_第4页
第4页 / 共23页
基于深度卷积神经网络的图像分类.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于深度卷积神经网络的图像分类.docx

《基于深度卷积神经网络的图像分类.docx》由会员分享,可在线阅读,更多相关《基于深度卷积神经网络的图像分类.docx(23页珍藏版)》请在冰豆网上搜索。

基于深度卷积神经网络的图像分类.docx

基于深度卷积神经网络的图像分类

之五兆芳芳创作

SHANGHAIJIAOTONGUNIVERSITY

论文题目:

基于卷积神经网络的自然图像分类技巧研究

姓名:

高小宁

专业:

控制科学与工程

基于卷积神经网络的自然图像分类技巧研究

摘要:

卷积神经网络已在图像分类领域取得了很好的效果,但其网络结构及参数的选择对图像分类的效果和效率有较大的影响.为改良卷积网络的图像分类性能,本文对卷积神经网络模型进行了详细的理论阐发,并通过大量的对比实验,得出了影响卷积网络性能的因素.结公道论阐发及对比实验,本文设计了一个卷积层数为8层的深度卷积网络,并结合BatchNormalization、dropout等办法,在CIFAR-10数据集上取得了88.1%的分类精度,有效地提高了卷积神经网络的分类效果.

关头词:

卷积神经网络,图像分类,BatchNormalization,Dropout

ResearchonNaturalImageClassificationBasedonConvolutionNeuralNetwork

Abstract:

Convolutionneuralnetworkhasachievedverygoodresultsinimageclassification,butitsnetworkstructureandthechoiceofparametershaveagreaterimpactonimageclassificationefficiencyandefficiency.Inordertoimprovetheimageclassificationperformanceoftheconvolutionnetwork,aconvolutionalneuralnetworkmodelisanalyzedindetail,andalargenumberofcontrastiveexperimentsareconductedtogetthefactorsthatinfluencetheperformanceoftheconvolutionnetwork.Combiningthetheoryanalysisandcontrastexperiment,aconvolutionlayerdepthconvolutionnetworkwith8layersisdesigned.CombinedwithBatchNormalizationanddropout,88.1%classificationaccuracyisachievedonCIFAR-10dataset.Whichimprovestheclassificationeffectofconvolutionneuralnetwork.

KeyWords:

Convolutionneuralnetwork(CNN),imageclassification,BatchNormalization,Dropout

1引言

1986年,Rumelhart等提出人工神经网络的反向传播算法(Backpropagation,BP),掀起了神经网络在机械学习中的研究热潮.但是由于BP神经网络存在容易产生过拟合、训练时间长的缺陷,90年代兴起的基于统计学习理论的支持向量机具有很强的小样本学习能力.学习效果也优于BP神经网络,导致了神经网络的研究再次跌入低估.

2006年,Hinton等人在Science上提出了深度学习.这篇文章的两个主要不雅点是:

1)多隐层的人工神经网络具有优异的特征学习能力,学习到的数据更能反应数据的实质特征,有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过逐层无监视训练有效克服.理论研究标明为了学习到可暗示高层抽象特征的庞杂函数,需要设计深度网络.深度网络由多层非线性算子组成,典型设计是具有多层隐节点的神经网络.但是随着网络层数的加大,如何搜索深度结构的参数空间成为具有挑战性的任务.近年来,深度学习取得成功的主要原因有:

1)在训练数据上,大范围训练数据的出现(如ImageNet),为深度学习提供了好的训练资源;

2)计较机硬件的飞速成长(特别是GPU的出现)使得训练大范围神经网络成为可能.

卷积神经网络(Convolutionalneuralnetworks,CNN)是一种带有卷积结构的神经网络,卷积结构采取权值同享的方法削减了深层网络占用的内存量,也削减了网络的参数个数,减缓模型的过拟合问题.为了包管一定程度的平移、尺度、畸变不变性,CNN设计了局部感触感染野、同享权重和空间或时间下采样,提出用于字符识此外卷积神经网络LeNet-5.LeNet-5由卷积层、下采样层、全连接层组成,该系统在小范围手写数字识别中取得了较好的结果.2012年,Krizhevsky等采取称为AlexNet的卷积网络在ImageNet竞赛图像分类任务中取得了最好的成绩,是CNN在大范围图像分类中的巨大成功.AlexNet网络具有更深层的结构,并设计了ReLU(Rectifiedlinearunit)作为非线性激活函数以及Dropout来避免过拟合.在AlexNet之后,研究者由提出了网络层数更深的神经网络,例如谷歌设计的谷歌Net和MSRA设计的152层的深度残差网络等.表1是ImageNet竞赛历年来图像分类任务的部分领先结果,可以看出,层数越深的网络往往取得的分类效果更好.为了更好地改良卷积神经网络,本文在CIFAR10数据集上研究了不合的网络层设计、损失函数的设计、激活函数的选择、正则化等对卷积网络在图像分类效果方面的影响,本文引入了BatchNormalization与dropout结合的办法,通过加深卷层神经网络的层数,有效地提高了卷积神经网络在图像分类准确率.

表1-1ImageNet历年图像分类任务结果

颁布时间

机构

Top-5错误率(%)

网络名称

网络深度

MSRA

ResNet

152

谷歌

谷歌Net

22

NYU

Clarifai

10

Alexnet

8

2卷积神经网络的模型阐发

卷积神经网络与其他神经网络模型最大的区别是卷积神经网络在神经网络的输入层前面连接了卷积层,这样卷积层就酿成了卷积神经网络的数据输输入.LeNet-5是YanLecun开发的用于手写字符识此外经典卷积神经网络模型,图2-1是其结构图.

图2-1LeNet-5结构图

LeNet-5的体系结构有7层,其中有3个卷积层.第一卷积层由6个特征图(FeatureMaps,FM)组成,故C1包含156可训练参数((6个5X5内核加上6偏值)来创建122304(156*(28*28)-122,304)个连接.在C1层FM的尺寸为28x28,由于鸿沟条件,第二卷积层,C3包含1500权重和16偏置,C3层共有1516个可训练参数以及151600个连接.S2和C3之间的连接如表2-1所示.Lecun设计这些连接最大化的特征由C3提取的数目,同时削减权重的数目.在最后的卷积层C5包含120个FM,输出尺寸为1X1.

LeNet-5的体系结构还包含有两个子采样层:

S2和S4,S2包含6个特征图和S4有16个特征图.层S2有12个可训练的参数与5880连接,而层S4有32个可训练参数与156000连接.

表2-1S2与S3之间的连接

总结LeNet-5的网络结构,我们得到卷积神经网络的根本结构可以分为四个部分:

输入层,卷积层,全连接层和输出层四个部分:

输入层:

卷积输入层可以直接作用于原始输入数据,对于输入是图像来说,输入数据是图像的像素值.

卷积层:

卷积神经网络的卷积层,也叫做特征提取层,包含二个部分.第一部分是真正的卷积层,主要作用是提取输入数据特征.每一个不合的卷积核提取输入数据的特征都不相同,卷积层的卷积核数量越多,就能提取越多输入数据的特征.第二部分是pooling层,也叫下采样层(Subsamping),主要目的是在保存有用信息的根本上削减数据处理量,放慢训练网络的速度.通常情况下,卷积神经网络至少包含二层卷积层(这里把真正的卷积层和下采样层统称为卷积层),即卷积层-pooling层-卷积层-pooling层.卷积层数越多,在前一层卷积层根本上能够提取加倍抽象的特征.

全连接层:

可以包含多个全连接层,实际上就是多层感知机的隐含层部分.通常情况下前面层的神经节点都和前一层的每一个神经节点连接,同一层的神经元节点之间是没有连接的.每一层的神经元节点辨别通过连接线上的权值进行前向传播,加权组合得到下一层神经元节点的输入.

输出层:

输出层神经节点的数目是按照具体应用任务来设定的.如果是分类任务,卷积神经网络输出层通常是一个分类器,通常是Softmax分类器.

卷积,一般利用卷积查对图像进行特征提取,其中最重要的就是卷积核.卷积核的设计一般涉及卷积核的大小(size),卷积核的数目(number)以及卷积核的步长((stride).

从理论上来说,卷积核的个数暗示从上层中通过卷积滤波得到特征图的个数,提取的特征图越多,网络暗示特征空间就越大,学习能力也就越强,最后识别结果就比较准.但卷积核太多(特征图太多),增大网络的庞杂度,增加参数的个数,加大了计较的庞杂度,易出现过拟合现象,所以有时候卷积核也不并是越多越好,而应按照具体的数据集图像的大小确定卷积核的个数.

图像卷积特征提取,通过设定的一个卷积核尺寸为

的滤波器,步长(stride)为

个像素,对一幅新的图像

进行卷积处理,得到一个大小为

的特征图,如图2-2所示.一般来说卷积核尺寸越小,特征提取的质量也就越高,具体大小还应按照输入图像的尺寸决定.

图2-2图像卷积示意图

对输入的图像邻域进行卷积处理得到图像的邻域特征图(FeatureMap),再通过亚采样层使用池化((pooling)技巧将小邻域内进行下采样得到新的特征.通过对上层池化,特征结果可以使得参数削减(下降了特征维数),且增强特征使得最后的特征表达保持了某些不变性(旋转、平移、伸缩等),所以说池化的实质是一个降纬的进程.经常使用的有均值采样(mean-pooling)、最大采样(max-pooling).

据相关理论,特征提取的误差主要来自两个方面:

(1)邻域大小受限造成的估量值方差增大;

(2)卷积层参数误差造成估量均值的偏移.一般来说,mean-pooling能减小第一种误差,更多的保存图像的布景信息,max-pooling能减小第二种误差,更多的保存纹理信息.

在神经网络中经常使用的激活函数有Sigmoid函数、Tanh函数、ReLu函数等,前两种激活函数在传统的BP神经网络使用的较多,ReLu函数在深度学习中使用的较多.

ReLu(rectifiedfinearunit)函数是Hinton提出的修正线性单元(Relu),CNNs在利用ReLu函数进行训练几回之后明显比传统的sigmoid和tanh函数更快.

假定一个神经单元的激活函数为

,其中i暗示隐含层单元的个数,

暗示隐含单元的权值,那么ReLu函数的表达式为:

其函数图像如图2-3所示:

图2-3ReLu函数图像

由于ReLu函数具有线性的、非饱和的形式,单侧抑制,相对宽阔的兴奋鸿沟,稀疏激活性,所以在卷积神经网络中的使用效果好过sigmoid和tanh函数.

在卷积神经网络应用于图像分类任务时,我们在神经网络最后一层全连接层后接一个Softmax分类器用于图像标签的预测.

在softmax回归中,我们解决的是多分类问题(相对于logistic回归解决的二分类问题),类标

可以取

个不合的值(而不是2个).因此,对于训练集

,我们有

.(注意此处的类别下标从1开始,而不是0).

对于给定的测试输入

,我们想用假定函数针对每一个类别j预算出几率值

.也就是说,我们想估量

的每一种分类结果出现的几率.因此,我们的假定函数将要输出一个

维的向量(向量元素的和为1)来暗示这

个估量的几率值.具体地说,我们的假定函数

形式如下:

为了便利起见,我们同样使用符号

来暗示全部的模型参数.在实现Softmax回归时,将

用一个

的矩阵来暗示会很便利,该矩阵是将

按行罗列起来得到的,如下所示:

由上式子可得样本

属于

的几率为:

当每个样本所属类此外条件几率

都最大时,分类器识别率最高,此时等价于最大化如下的似然函数:

为了下降计较量和避免溢出,对似然函数取对数,并适当变形得:

其中1{.}称为示性函数,表达的功效为:

1{true}=1,1{false}=0.此时最大化似然函数

等价于最小化代价函数

,故使用梯度下降法求解

的最小值,从而确定参数

.代价函数

的梯度为:

在实际应用中,我们为了避免过拟合问题,我们通常在代价函数后加正则化项

(L2正则化),这样代价函数变成:

上式中的第二项它会对偏大的参数值进行惩罚,又称权值衰减项.适当的

可以下降权值的数量级,从而控制网络参数的取值,在一定程度上避免了过拟合.

在神经网络的学习中我们主要利用反向传播算法来进行梯度计较,并且用梯度执行参数更新,主要的办法有随机梯度下降法(StochasticGradientDecent,SGD),自适应矩估量法(AdaptiveMomentEstimation,Adam).通常情况下我们的训练数据会议比较大,如何一次性装载所有训练样本进行训练,往往会出现内存溢出问题,所以我们实际中经常采取数据集的一个微型集(mini-batch,数量为N<<|D|,此时的代价函数为:

2.5.1随机梯度下降

随机梯度下降法每次输入一个微型集(mini-batch)对网络进行训练,由于每次的微型集都是随机选取的,所以每次迭代的代价函数会不合,当前bacth的梯度对网络参数的更新影响较大,为了削减这种影响,我们通常情况下会引入动量系数对传统的随机梯度下降法进行改良.

momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保存之前更新的标的目的,同时利用当前batch的梯度微调最终的更新标的目的.这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定解脱局部最优的能力.加动量的随机梯度下降算法迭代公式如下:

其中

是上一次的权值更新量,

为动量系数,暗示要在多大程度上保存原来的更新标的目的,这个值在0-1之间,

为学习率.

特点如下:

Ø下降初期时,使用上一次参数更新,下降标的目的一致,乘上较大的

能够进行很好的加快

Ø下降中前期时,在局部最小值来回震荡的时候,

使得更新幅度增大,跳出陷阱

Ø在梯度改动标的目的的时候,

能够削减更新,总而言之,动量项能够在相关标的目的加快SGD,抑制振荡,从而放慢收敛.

2.5.2自适应矩估量法

Adam(AdaptiveMomentEstimation)实质上是带有动量项的RMSprop,它利用梯度的一阶矩估量和二阶矩估量动态调整每个参数的学习率.Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳.迭代公式如下:

其中,

辨别是对梯度的一阶矩估量和二阶矩估量,可以看作对期望

的估量;

是对

的校正,这样可以近似为对期望的无偏估量.可以看出,直接对梯度的矩估量对内存没有额定的要求,并且可以按照梯度进步履态调整,而

对学习率形成一个动态约束,并且有明确的范围.

特点如下:

Ø具有善于处理稀疏梯度和非平稳目标的优点

Ø对内存需求较小

Ø为不合的参数计较不合的自适应学习率

Ø适用于大多非凸优化问题,也适用于大数据集和高维空间

Ø通常情况下且迭代速度快于SGD,但是其收敛精度一般不如SGD

2.6Dropout

权值衰减(L2正则化)是通过修改代价函数来实现的,但是Dropout通过修改神经网络结构来实现的,它是在训练神经网络时用的一种优化办法.Dropout是指在模型训练时随机让网络部分隐含层单元的不任务,不任务的那些单元可以暂时不作为网络的部分计较,但保存它的权重(暂时不更新),因为下次样本输入时它可能又任务.在训练进程中,Dropout是以一定几率

将隐含层节点的输出清0,而用反向传播更新权值时,不再更新与该节点相连的权值,未设置Dropout与设置Dropout的神经网络结构如下:

(a)无Dropout的神经网络结构

(b)设置Dropout的神经网络结构

图2-4Dropout示意图

2.7BatchNormalization

我们知道,在训练深度神经网络时,经常会产生“梯度弥散”问题,即当我们使用反向传播办法计较梯度导数的时候,随着网络深度的增加,反向传播的梯度(从输出层到网络的最初几层)的幅度值会急剧地减小.一个复杂的例子就是:

,结果就造成了整体的代价函数对最初几层网络的权值的导数很是小.这样,当使用梯度下降法的时候,最初几层的权重变更很是迟缓,以至于它们不克不及够从样本中进行有效的学习.

为了解决梯度弥散问题,谷歌在2015年的ICML大会上提出了BatchNormalization的办法.BatchNormalization嘛,即“批标准化”,即在每次进行随机梯度下降时,通过mini-batch来对相应的激活输出做标准化操纵,使得结果(输出信号各个维度)的均值为0,方差为1.具体的“批标准化”算法如下:

在BatchNormalization中,通过将激活函数的输出标准为均值和方差一致的手段使得原本会减小的输出的变大,从而在很大程度上解决了梯度弥散问题,并放慢了深度神经网络的训练.

3模型设计与实验阐发

CIFAR-10数据集含有6万张

的自然图像,共分为10种类型,由AlexKrizhevsky,VinodNair和GeoffreyHinton收集而来.包含50000张训练图片,10000张测试图片,数据集的数据存在一个

的数组中(按行存储,每一行暗示一副图像),前1024位是R值,中间1024位是G值,最后1024位是B值,数据集样例如图3-1所示.我们对实验数据集仅作复杂的裁剪与白化处理后将像素值送入神经网络中进行训练.

图3-1CIFAR-10数据集样例

3.2模型设计

在上一章中我们对卷积神经网络性能的影响因素进行了阐发,如何选择感触感染野大小、核个数、池化大小、网络的层数等.对此,我们按照这些影响因素并结合CIFAR-10数据集,设计了两个模型.一种是浅层卷积网络模型,一种是深度卷积网络模型,浅层卷积网络模型受谷歌TensorFlow的教学手册启发,深度卷积网络模型是结合了影响卷积网络性能的影响因素设计而成.

浅层卷积网络与深度卷积网络的结构图辨别如图3-2与图3-3所示.

图3-2浅层卷积网络

图3-3深度卷积网络

两个网络的架构图辨别如表3-1与表3-2所示.

表3-1浅层卷积网络架构图

type

PatchSize/strides

FeatureMaps

depth

activation

learningrule

convolution

3×3

32

1

ReLu

SGD+Momentum

maxpool

3×3/

[1,2,2,1]

32

0

convolution

3×3

64

1

maxpool

3×3/

[1,2,2,1]

64

0

Fullconnection

1×3

384/192

2

softmax

10

1

表3-2深度卷积网络架构图

type

PatchSize/strides

FeatureMaps

depth

activation

learningrule

convolution

3×3

32

2

ReLu

SGD+Momentum

maxpool

3×3/

[1,2,2,1]

32

0

convolution

3×3

64

2

maxpool

3×3/

[1,2,2,1]

64

0

convolution

3×3

128

2

maxpool

3×3/

[1,2,2,1]

128

0

convolution

3×3

256

2

maxpool

3×3/

[1,2,2,1]

256

0

Fullconnection

1×3

384/192

2

softmax

10

1

若我们将下采样层(pooling)与归一化层(BatchNormalization)不计入网络层数的计较,则我们设计的浅层网络的深度为5,深度网络的深度为11.

3.3实验结果与阐发

3.3.1实验情况与根本参数设置:

实验中我们采取Python+tensorflow进行编程,tensorflow是谷歌开发的一种深度学习框架,其提供了C++与Python接口,主要支持Linux与MacOS,这种框架主要采取先进的图计较,即便用有向图的节点和边配合描述数学计较.graph中的nodes代表数学操纵,也可以暗示数据输入输出的端点.边暗示节点之间的关系,传递操纵之间相互使用的多位数组(tensors,张量),tensor在graph中流动——这也就是TensorFlow名字的由来.一旦节点相连的边传来了数据流,节点就被分派到计较设备上异步的(节点间)、并行的(节点内)执行,这种灵活的架构允许我们使用相同的API在单或多CPUs或GPU,办事器及移动设备上进行计较.本文的编程情况处于Linux之中,具体的实验室情况如表3-3所示:

表3-3实验情况

CPU

GPU

GTX750ti@2GB

内存

8GB

操纵系统

Linuxmint18

深度学习框架

谷歌TensorFlow(r0.12)

编程语言

为了后续进行对比实验,我们配置了根本的实验参数,后续相关的实验参数也是在根本参数上进行变动.权值衰减的实现是在代价函数中增加惩罚项,随机训练样本会造成这惩罚项产生较大的随机突变,搅扰梯度更新标的目的的稳定性,同时增大训练误差,故惩罚项的参数需要很是小,一般都要小于0.001;另外,对神经元随机失能的比例不克不及太大,不然随机噪声会淹没训练集的作用;批处理尺寸(batchsize)不克不及太大,担任会造成迭代过慢及内存溢出问题,我们在CNN的训练时间、准确率和稳定性之间进行折中后的根本实验参数如表3-4所示.

表3-4根本实验参数

参数

取值

输入图像尺寸(image_size)

批处理尺寸(batchsize)

128

初始学习速率(

学习速率衰减率(

衰减距离(NUM_EPOCHS_PER_DECAY)

350

动量系数(

Dropout比例(

权值衰减项权重(

[0,0.001]

最大迭代步数(max_steps)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1