一种基于多个分类器的卷积神经网络快速分类方法与流程

文档序号:11177805阅读:5109来源:国知局
一种基于多个分类器的卷积神经网络快速分类方法与流程

本发明属于深度学习中卷积神经网络的图像分类领域。通过对卷积神经网络进行结构改进,提升网络分类速度,节省图像分类时间。



背景技术:

卷积神经网络(cnn)是一种具代表性的深度学习方法,被广泛高效的应用于计算机视觉问题的研究。这主要得益于其对高维数据特征的优秀学习能力。近年来,随着相关学习技术、优化技术和硬件技术的出现,卷积神经网络取得了爆发式的发展。imagenet大规模视觉识别挑战(imagenetlargescalevisualrecognitionchallenge,ilsvrc)是工人的大规模目标识别标准挑战。近年来,卷积神经网络在imagenet下属的分类比赛中获得了广泛的应用,并取得优异的分类结果。从8层网络alexnet,到19层网络的vggnet,到152层网络的resnet,分类top-5错误率从15.3%降低到6.8%、3.57%,卷积神经网络的深度不断加深,同时分类错误率也不断降低。

但是,随着卷积神经网络的深度的加深,其前向传播所需要的时间能量消耗也在急剧增加。在同样的数据集和实验条件中执行分类任务时,vggnet所需要的运行时间是alexnet的20倍。在工业和商业使用场景下,工程师和开发人员通常需要考虑时间成本。比如线上搜索引擎需要快速响应,云服务需要具备每秒处理成千上万用户图片的能力。另外,智能手机和便携设备通常不具备强力的计算能力,这些设备上的如场景识别等应用也需要快速响应。



技术实现要素:

本发明通过对卷积神经网络的结构进行改进,设计一个包含多个分类器的卷积神经网络cnn-mc(convolutionneuralnetwork–multipleclassifiers)。策略为,在卷积层添加额外的线性分类器,在进行图像分类任务时,监控(使用激活模块,该模块主要包含一个置信值δ)各个分类器的输出,通过激活函数判断分类是否提前结束,以达到缩短分类时间的目的。

为解决以上技术中的难题,本发明采用的技术方案为一种基于多个分类器的卷积神经网络快速分类方法,对卷积神经网络的结构进行改进。卷积神经网络包含输入层(inputlayer)、卷积层(convolutionlayer)、全连接层(fullconnectionlayer)和分类输出层(classificationlayer),其中卷积层为多个,并各有一个池化层(poolinglayer)。该方法包含两个设计方案,即网络训练方法和网络分类方法。

网络训练方法包括确定额外分类器的数目,同时对所有分类器进行训练。

s1.多分类器卷积神经网络(cnn-mc)以标准的卷积神经网络(cnn)为基础改进而来,因此,在构造cnn-mc时,首先需要构造一个标准的卷积神经网络,该卷积神经网络包含一个输入层,若干个卷积层,和一个全连接层,每个卷积层后都有一个池化层,全连接层后是分类器。

s2.标准的cnn构造完成后,使用训练数据集dtrain(如mnist数据集、cifar-10数据集等)和反向传播算法训练网络,损失函数为普遍使用的交叉熵损失函数。由于本方法的目的在于节省分类时间,因此,训练cnn时需要采集单个样本经过完整cnn网络所需要的平均时间。

s3.训练好cnn后,在第一个卷积层后添加一个分类器以及判断分类结果的激活模块。使用dtrain训练该分类器,并采集单样本经过该分类器和激活模块所需要的平均时间。之后调节激活模块的参数,使网络的整体分类准确率达到最高。

s4.额外添加的分类器使易识别的图像提前被分类而节省分类时间。但是对于不能提前分类的样本,它们也需要经过额外的分类器和激活模块,因此会增加额外的时间消耗。若对于若干图像样本,综合节省时间大于额外消耗时间,那么该分类器添加到卷积网络,反之则不添加。

s5.遍历整个神经网络,以此判断每一卷积层是否要添加分类器,最后确定cnn-mc的最终模型。

cnn-mc添加了额外的分类器,因此传统cnn的分类方法流程并不适合,因此,设计了适用于cnn-mc的分类方法。

s1.对于一个要分类的图像样本,通过转化得到其像素特征向量后作为输入,输入到cnn-mc。

s2.图像特征经过一个卷积层后,若该层含有额外的分类器,那么,便将图像特征向量转化为一维向量作为分类器的输入,执行分类任务。

s3.分类器输出的结果将由激活模块进行判断,如果该结果满足激活模块的分类要求,便将分类器的分类结果作为cnn-mc最终的分类结果,结束整个网络的分类进行。反之,则激活下一卷积层,将前一层卷积层的卷积特征向量输入到下一层卷积层继续进行分类。

s4.当图像特征向量达到最后一个卷积层时,由于该层之后的分类器是整个网络最后一个分类器,故其分类结果不再进行判断,直接输出。

附图说明

图1为cnn-mc的训练流程图。

图2为cnn-mc的分类策略流程图。

图3为cnn-mc分类实例

具体实施方式

下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。

如图1所示,网络训练方法主要包括确定额外分类器的数目,同时对所有分类器进行训练。步骤如下:

s1.构造一个标准的卷积神经网络(cnn),包含n个卷积层和1个分类器。使用标准图像数据集dtrain(如mnist手写体数据集、cifar-10数据集等,样本数目设为i个)训练网络,并获取图像经过每层卷积(不包含最后一个卷积层)后的特征向量(vector,v共n-1个)和单样本时间消耗(γorginal,即样本由输入层到分类器输出所需要的时间消耗)。训练依靠反向传播(backpropagation,bp),损失函数使用交叉熵损失函数(crossentropylossfunction)。

s2.在第一个卷积层cl1后添加一个softmax分类器(sc1)和激活模块。将第1步获取的特征向量v1转换为一维向量,并作为sc1的输入,利用交叉熵损失函数训练sc1。由于sc1是第一个卷积层的分类器,故其训练样本的数目为i1=i。

s3.sc1训练完毕后,调整激活函数中的置信值δ,使整个卷积网络的分类准确率达到最高,该值大小一般为0.4-0.7之间。并获取单样本在sc1和激活模块中的平均时间消耗γ1。置信值δ的主要作用是判断分类器的输出是否达到分类要求,符合要求的直接输出分类结果,结束分类过程,反之则将样本输入到下个卷积层。

s4.置信值δ调整完毕后,统计通过激活模块后直接被分类的样本数目i1,未被分类而送入下层卷积的样本数目则为i-i1。

s5.计算i1个样本被提前分类所节省的时间消耗,未被sc1分类的其他i-i1个样本在sc1和激活模块中消耗的额外时间。若(γorignal-γ1)·i1>(i-i1)·γ1,那么便将sc1加入到网络中,即sc1的添加可以缩短整个网络的分类时间消耗。

s6.在第一个卷积层cl1后添加softmax分类器sc2和激活模块,重复步骤s2-s5,判断sc2是否可以添加到网络。并不断重复该步骤,直到最后一层卷积层。最后一层卷积层后是网络原来的分类器,不再进行训练分析。

s7.步骤s1-s6后,将得到一个具有新结构的卷积神经网络,该网络包含多个分类器、多个分类器和激活模块。并且该网络是已经训练完毕的,可以直接执行图像分类任务。

s8.训练过程结束。

如图2所示,网络的图像分类步骤如下:

s1.对需要分类的图像进行初始化,获得图像的像素矩阵。将该矩阵输入到cnn-mc中。

s2.获取第i个(从第一个开始)卷积层的特征向量vi,若该卷积层存在额外的线性分类器sci,便将v1输入到分类器中进行分类。

s3.将sci的输出输入到激活模块,若输出值大于置信值δ,则直接将该分类结果输出,结束整个分类过程。

s4.若sci的输出值小于置信值δ,那么该分类结果不能直接输出,将该卷积层的特征向量vi输入到下层卷积。

s5.重复步骤s2-s4,直到最后一个卷积层,该卷积层后的分类器是网络中最后一个分类器,其分类结果将直接输出作为整个网络的分类结果。

s6.分类过程结束。

图3是分类实例

s1.首先对图像初始化获得像素矩阵m,将m输入到第一个卷积层。

s2.m经卷积后的特征向量m-c-v输入到该层的分类器进行分类。获得分类标签和分类置信值m-c-v-a。

s3.m-c-v-a与激活模块中的置信值δ比较,若大于置信值,则分类器的分类结果直接输出,如图像1的分类结果“dog”,结束分类任务。反之则将m-c-v输入到下一层卷积。

s4.卷积与分类步骤与s2、s3相同。图片2的分类结果在第二个分类器中分类。输出分类结果“automobile”,结束分类过程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1