一种提高深度学习图片识别算法鲁棒性的方法与流程

文档序号:14452742阅读:442来源:国知局

本发明属于计算机图像识别技术领域,涉及提高图片识别鲁棒性的一种方法,尤其是深度学习图片识别算法鲁棒性的方法。



背景技术:

图像相比与其他信息源而言,具有易于理解,信息量大,更为直接,是人类最终要的信息源。因此,用计算机对图像进行处理具有重大的研究意义。图像识别是图像处理的重要组成部分。由于大数据时代的来临和计算机处理能力的大幅提高,图像识别开始向高级语义方向发展。图像识别的过程分为预处理,特征提取,识别分类三个步骤。预处理能够降低后续处理难度,提高效率。特征提取是将图片转化为计算机能够识别处理的定量形式,处理的特征主要有颜色特征,纹理特征,形状特征,sift(scale-invarientfeaturetransfrom),hog(histogramoforientedgradient)等。识别分类是依据特征将图片进行分类。图像识别分类目前采用的算法主要有决策树算法,贝叶斯分类器,支持向量机,人工神经网络等。

深度学习使用层次化的模型以从低层次特征学习高层次特征。经过多层抽象学习层次化特征,深度学习可以通过映射输入和输出的关系来学习复杂的函数。近年来,由于数据集不断增大,深度学习应用领域也不断扩大。因此,深度学习得到了广泛和深入的研究。

深度学习由神经网络发展而来。相对于仅有一个输入层,一个隐层,一个输出层的浅层神经网络而言,深度学习采用的神经网络一般具有多个隐层,因此,有较高的非线性运算组合能力,从而具有较强的表示能力。2006年,hinton等人提出了用于深度信任网络(deepbeliefnetwork,dbn)的无监督学习算法。算法采用了贪婪逐层训练算法,解决了因深度增加导致非凸目标函数产生局部最优解的问题。在这篇突破性论文发表后,大量学者对深度学习进行了广泛的研究。bengio和ranzat提出了用无监督学习初始化每一层神经网络。受限玻尔兹曼机(restrictecdboltzmanmachine,rbm)和自动编码机(auto-encoder)是深度学习里应用最广的算法。总的来说,深度学习是一种通过找到数据的内部结构,发现变量之间的真正关系的算法。2006年以来,深度学习成功应用于多个领域,尤其是分类领域,如情感分类,心电图信号分类,句子分类,等等。

近年来,深度学习的研究获得了巨大的进步,然而,对深度学习鲁棒性的研究相对较少,尤其是针对标签有误的情况。图像的识别并判断其应被打上何种标签的问题可以转化为图像的分类问题。使用多层卷积神经网络对图片数量较大的情况下进行分类,可以取得了良好的效果。利用降噪自编码神经网络(denoiseauto-encoder,dae)替代rbm对深度神经网络进行预训练可以取得良好的效果。另外,还提出了周期网络神经元方法,并将其应用与场景标注。但是,这些算法假定训练集的标签不会发生错误。然而,在实际应用中,训练集的标签在很多场合都是人工标注,有可能发生错误。当标签标注错误时,会导致神经网络在被训练时出现误差,而且会随着迭代次数的增加,误差越来越大,最终影响图片分类的效果。



技术实现要素:

为了解决上述现有技术存在的问题,本发明提供一种提高深度学习图片识别鲁棒性的方法,该方法可以在训练前判断样本的标签是否被标注错误,如果判断结果为样本标签标注错误则修改样本的标签,以提高深度学习图片识别的鲁棒性,提高在样本标签标注有错的情况下图片识别的准确率。

本发明采用的技术方案为一种提高深度学习图片识别鲁棒性方法,具体包含如下步骤:

步骤1:对深度学习的神经网络进行随机初始化;

步骤2:将训练样本集和训练标签集作为输入深度学习神经网络,进行前向传播输出深度学习神经网络认为其所属各个类别的概率,如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,则将训练样本标签改为概率最大的类别;

步骤3:将新的样本和其标签进行反向传播,对深度学习神经网络进行调优;

步骤4:在训练了一定数量的样本后,利用测试样本集和测试标签集对训练效果进行测试,输出测试样本集的测试准确率;

步骤5:在对训练样本集和训练标签集迭代了一定次数后,对深度学习神经网络输入验证样本集,并将深度学习神经网络的输出与验证标签集进行对比,输出深度学习神经网络的验证准确率。

进一步,步骤2中,如果样本的最大概率的类别的概率与次大概率类别的概率的值小于1:1.2并且当前样本训练集迭代次数小于预定值,则将该样本放回训练样本集,并从训练样本集中随机抽取一个样本重新进行前向传播。

进一步,步骤2中,如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,该比值随着迭代次数的增加而降低,但不低于1:1.2时则将训练样本标签改为概率最大的类别。

本发明还提出一种可以实现上述提高深度学习图片识别鲁棒性的方法的系统,其包括训练样本集、训练标签集、深度学习神经网络、验证样本集、验证标签集、测试样本集、测试标签集;

所述训练样本集用来对深度学习神经网络进行训练,训练样本集中有错误样本;

所述训练标签集用来标注训练样本集中每个样本的所属类别;

所述深度学习神经网络包括输入层、隐藏层、输出层。输入层输入所需要训练或者识别的样本,隐藏层对样本进行处理,输出层输出样本所属各个类别的概率;

所述验证样本集是用来在训练过程中对深度学习神经网络的训练能力进行验证;

所述验证标签集用来标注验证样本集的每个样本的类别;

所述测试样本集用来测试深度学习神经网络的最终训练效果;

所述测试标签集用来标注测试样本集每个样本的类别。

与现有技术相比,本发明具有以下的有益效果:

1.在训练样本标签标注错误的情况下,可以降低错误标签带来的对深度学习神经网络训练带来的负面影响,提高深度学习图片识别算法对错误标签的鲁棒性。

2.当训练样本中样本标签标注错误时,可以对标签错误的样本修正其标签,从而提高了训练效果,使得算法在训练样本标签标注错误的情况下有更高的识别成功率。

3.当训练样本中样本标签标注错误,对标签进行修正时,不用对神经网络进行反向传播,计算效率高。

附图说明

图1为提高深度学习鲁棒性方法步骤图;

图2为改进提高深度学习鲁棒性方法步骤图。

具体实施方式

现结合附图对本发明做进一步详细的说明。

本发明提出的提高深度学习图片识别鲁棒性的方法包括如下步骤:

步骤1:对深度学习的神经网络进行随机初始化。

步骤2:将训练样本集和训练标签集作为输入深度学习神经网络,进行前向传播输出深度学习神经网络认为其所属各个类别的概率,如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,则将训练样本标签改为概率最大的类别。

步骤3:将新的样本和其标签进行反向传播对深度学习神经网络进行调优。

步骤4:在训练了一定数量的样本后,利用测试样本集和测试标签集对训练效果进行测试。输出测试样本集的测试准确率。

步骤5:在对训练样本集和训练标签集迭代了一定次数后,对深度学习神经网络输入验证样本集,并将深度学习神经网络的输出与验证标签集进行对比,输出深度学习神经网络的验证准确率。

上述提高深度学习图片识别鲁棒性的方法的优选方案,步骤2中在一定的训练次数前,样本经过前向传播后,如果深度学习神经网络判断其所属各个类别的概率接近,即概率最大的类别的概率与概率次大的类别的概率之比小于1:1.2,则将该样本放回训练样本集,重新选择样本进行训练。

所述一种提高图片识别鲁棒性的方法,在步骤2中,随着训练样本集的迭代次数的增加,概率最大的类别和概率次大的类别的概率值之比逐渐下降,但是不低于1:1.2.

所述一种提高图片识别鲁棒性的方法,在步骤2中,在一定的训练样本集迭代次数之前,不改变样本的标签值,在一定的训练样本集迭代次数之后,随着深度学习神经网络的有了基本的图片识别能力之后,如果样本经过前向传播后,输出样本概率最大的类别大于与样本概率次大的类别的概率之比大于1:1.5,则将样本的标签改为概率最大的类别。

数学证明如下:

假设未标注错误的训练样本的损失函数值为loriginal,标注错误后的训练样本的损失函数值为lerror,经过本发明修改的样本的损失函数值为lmodify,则要使本发明算法有效,则需要:

|loriginal-lerror|>|loriginal-lmodify|

由于对深度学习神经网络的负面影响主要是由错误标签带来的,因此,只要减少错误标签的数量就能提高深度学习神经网络的鲁棒性。设pmodify为算法修改标签的概率,ptoorig为错误样本的标签被修改为原始标签的概率,设训练样本集中g个样本标注正确,h个样本标注错误,则当下式成立时,能够减少错误标签的个数:

h-h×pmodify×ptoorig+g×pmodify×(1-ptoorig)<h

化简,得:

即当样本标签集中正确样本与总样本的比值小于错误样本的标签被修改为原始标签的概率时,可以提高深度学习图片识别的正确率。

可以实现上述提高深度学习的图片识别鲁棒性的方法的系统包括训练样本集、训练标签集、深度学习神经网络、验证样本集、验证标签集、测试样本集、测试标签集。

训练样本集是深度学习神经网络的输入样本的集合,深度学习神经网络利用训练样本集对神经网络进行训练,在训练的过程中,为了提高神经网络的训练效果,需要多次迭代训练样本集进行训练。

训练标签集是标注每个训练样本的标签的集合。标签是用来标注样本所属的类别。训练标签集的每个标签对应了训练样本集的一个样本,在本方法的应用场景中,训练标签有可能被标注错误,亦即训练标签集中的标注的样本的标签不是其真实标签。

深度学习神经网络是用来被样本集训练以提高图片识别能力的一种神经网络。深度学习神经网络由多个神经元组成的层次结构的神经网络,包括输入层,隐藏层,输出层。深度学习神经网络的训练过程包括前向传播和反向传播。前向传播用来判断样本所属类别,反向传播用损失函数对深度学习神经网络进行调优。深度学习神经网络需要先利用训练样本集和训练标签集对神经网络进行训练,并在训练过程中需要迭代多次训练样本集。在利用训练样本集和训练标签集训练完成后,就可以利用训练好的深度学习神经网络对测试标签集进行测试以验证训练效果。

验证样本集是验证样本的集合,验证样本是用来在深度学习神经网络在训练过程中验证神经网络在当前状态下的图片识别能力。在训练深度学习神经网络的过程中,需要每训练一定数量的样本对深度学习神经网络进行验证,因此,验证样本集有可能多次被用来验证深度学习神经网络的图片识别能力。

验证标签集是验证标签的集合。验证标签集的每个标签对应了验证样本集的一个样本。在利用验证样本集对深度学习神经网络进行验证时,如果深度学习神经网络输出的样本的类别和验证标签集对应的标签一致,则说明深度学习神经网络识别图片成功,否则失败。

测试样本集是用来对深度学习神经网络的最终分类能力进行测试的。在训练完成后,需要将测试样本集输入深度学习神经网络,根据其预测准确率来判断深度学习神经网络的训练效果,因此,测试样本集只需要被测试一次。

测试标签集中的每个标签和测试样本集中的一个样本对应。在测试时,当标签对应的测试样本被输入深度学习神经网络并且被输出其对应的深度学习神经网络所判断的类别时,需要用该标签和输出的类别进行比较,如果相同,则深度学习神经网络识别图片成功,否则失败。

为便于本领域的普通技术人员实施本发明的技术方案,现提供以下几个具体实施例。

实施实例1:

如图1所示,一种提高深度学习图片识别鲁棒性的方法如下。

本方法涉及的系统包括训练样本集、训练标签集、深度学习神经网络、验证样本集、验证标签集、测试样本集、测试标签集。

训练样本集是用来训练深度学习神经网络的样本的集合,在训练深度学习神经网络的过程中,为了提高训练效果,需要对训练样本集进行多次迭代,以取得更好的训练效果。

训练标签集中的每个标签和训练样本集的一个样本对应,用来标注训练样本集中的某个样本所属的类别。在本发明的适用环境中,训练标签集中的标签有可能标注错误。

深度学习神经网络是用来被训练样本集训练以提高图片识别能力的一种神经网络。深度学习神经网络是由多个神经元著称的层次结构的神经网络,包括输入层,输出层,隐藏层。输入层用来接收深度学习神经网络的输入,如样本和其对应的标签。输出层输出该样本所属的所有类别的概率。隐藏层用来深度学习神经网络对输入标签进行处理。深度学习神经网络的训练过程包括前向传播和反向传播两个过程。前向传播用来得到训练样本所属的各个类别的概率,并计算其损失函数值。反向传播利用前向传播得到的顺势行数字对神经网络进行调优。深度学习神经网络需要先利用训练样本集和训练标签集对神经网络进行训练,并在训练过程中需要迭代多次训练样本集。在利用训练样本集和训练标签集训练完成后,就可以利用训练好的深度学习神经网络对测试标签集进行测试以验证训练效果。

验证样本集是验证样本的集合,验证样本集是用来在训练深度学习神经网络的过程中,验证深度学习神经网络当前状态下的图片识别能力的。在训练深度学习的神经网络过程中,每训练一定次数的训练样本,需要使用验证样本集对深度学习神经网络的训练效果进行验证。在整个过程中,验证样本集有可能被多次用来验证深度学习神经网络的图片识别能力。

验证标签集是验证标签的集合。验证标签集的每个标签对应了验证样本集的一个样本。在利用验证样本集对深度学习神经网络进行验证时,如果深度学习神经网络输出的样本的类别和验证标签集对应的标签一致,则说明深度学习神经网络识别图片成功,否则失败。

测试样本集是用来对深度学习神经网络的最终分类能力进行测试的。在训练完成后,需要将测试样本集输入深度学习神经网络,根据其预测准确率来判断深度学习神经网络的训练效果,因此,测试样本集只需要被测试一次。

测试标签集中的每个标签和测试样本集中的一个样本对应。在测试时,当标签对应的测试样本被输入深度学习神经网络并且被输出其对应的深度学习神经网络所判断的类别时,需要用该标签和输出的类别进行比较,如果相同,则深度学习神经网络识别图片成功,否则失败。

本方法的训练步骤如下:

步骤1:对深度学习的神经网络进行随机初始化。

步骤2:将训练样本集和训练标签集作为输入深度学习神经网络,进行前向传播输出深度学习神经网络认为其所属各个类别的概率,如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,则将训练样本标签改为概率最大的类别。

步骤3:将新的样本和其标签进行反向传播对深度学习神经网络进行调优。

步骤4:在训练了一定数量的样本后,利用测试样本集和测试标签集对训练效果进行测试。输出测试样本集的测试准确率。

步骤5:在对训练样本集和训练标签集迭代了一定次数后,对深度学习神经网络输入验证样本集,并将深度学习神经网络的输出与验证标签集进行对比,输出深度学习神经网络的验证准确率。

实施实例2:

如图2所示,一种提高深度学习图片识别鲁棒性的方法如下:

步骤1:对深度学习的神经网络进行随机初始化。

步骤2:将训练样本集和训练标签集作为输入深度学习神经网络,进行前向传播输出深度学习神经网络认为其所属各个类别的概率,如果样本的最大概率的类别的概率与次大概率类别的概率的值小于1:1.2并且当前样本训练集迭代次数小于预定值,则将该样本放回训练样本集,并从训练样本集中随机抽取一个样本重新进行步骤2.如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,则将训练样本标签改为概率最大的类别。

步骤3:将新的样本和其标签进行反向传播对深度学习神经网络进行调优。

步骤4:在训练了一定数量的样本后,利用测试样本集和测试标签集对训练效果进行测试。输出测试样本集的测试准确率。

步骤5:在对训练样本集和训练标签集迭代了一定次数后,对深度学习神经网络输入验证样本集,并将深度学习神经网络的输出与验证标签集进行对比,输出深度学习神经网络的验证准确率。

实施实例3:

如图1所示,一种提高深度学习图片识别鲁棒性的方法如下:

步骤1:对深度学习的神经网络进行随机初始化。

步骤2:将训练样本集和训练标签集作为输入深度学习神经网络,进行前向传播输出深度学习神经网络认为其所属各个类别的概率,如果概率最大的类别与概率次大的类别的概率之比超过1:1.5,该比值随着迭代次数的增加而降低,但是不低于1:1.2,则将训练样本标签改为概率最大的类别。

步骤3:将新的样本和其标签进行反向传播对深度学习神经网络进行调优。

步骤4:在训练了一定数量的样本后,利用测试样本集和测试标签集对训练效果进行测试。输出测试样本集的测试准确率。

步骤5:在对训练样本集和训练标签集迭代了一定次数后,对深度学习神经网络输入验证样本集,并将深度学习神经网络的输出与验证标签集进行对比,输出深度学习神经网络的验证准确率。

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