基于深度学习的图片异常检测方法转让专利

申请号 : CN201911079051.7

文献号 : CN110827265B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡祥睿丁晓珂周宝航张莹袁晓洁

申请人 : 南开大学

摘要 :

一种面向图片数据集的基于深度学习的图片异常检测方法。本发明方法是利用正常的图片类别数据作为输入数据,构建基于深度学习的图片异常检测模型,包含两个子模块,一个表示模块用于学习正常类别的图片数据集的特征,一个检测模块用于预测输入图片属于异常图片类别的概率,还使用置信度估计来提高预测准确率,两个模块采用对抗式训练方法,表示模块可以更好的学习到正常类别图片数据集的特征,检测模块则可以给出置信度更高更准确的预测结果。对于异常检测领域的四个常用数据集,本发明的方法克服了异常类别图片种类繁多难以收集的问题,只需要正常类别的图片作为训练数据,同时效果显著优于目前现有的其他面向图片数据集的异常检测方法。

权利要求 :

1.一种基于深度学习的图片异常检测方法,该方法利用正常的图片类别数据作为输入数据,构建基于深度学习的图片异常检测模型,所述模型包含两个子模块:一个表示模块,用于学习正常类别的图片数据集的特征,一个检测模块,用于预测输入图片属于异常图片类别的概率,该方法的具体步骤如下:第1、正常类别图片数据集的预处理

收集正常类别的图片数据集,将正常类别的图片数据集给定标签1;将原始的图片数据集处理成统一的大小和格式,保证接下来的步骤顺利进行;

第2、基于深度学习的图片异常检测模型训练

图片异常检测模型训练包含对表示模块和带有置信度估计的检测模块的训练;通过表示模块学习正常类别的图片数据集的特征,通过检测模块对输入的图片输出异常检测的概率;两模块能够通过对抗式训练获得更好的表现,检测模块增加了置信度估计子模块,能够更准确的输出预测概率;

第2.1、表示模块学习正常类别的图片数据集特征

表示模块由一个对抗自编码器(adversarial autoencoder,AAE)组成,对抗自编码器包含三个子模块:一个编码器,一个解码器和一个编码向量判别器;表示模块接收输入正常类别的图片数据集,通过编码器提取一个编码向量z,并使得解码器能够从编码向量z恢复出原始图像内容;同时由编码器和编码向量判别器组成对抗网络,判别器用来区分输入的编码向量是来自真实的编码向量还是来自预定义的概率分布;整个对抗学习实际通过不断调整让编码器产生的编码向量的概率分布接近预定义的概率分布,让解码器可以通过编码器生成的编码向量尽可能的恢复原始的输入图片;当模型训练完成后,由于编码向量的概率分布接近预定义的概率分布,因此直接通过预定义的概率分布产生随机编码向量,然后借助于解码器产生一个新的图像数据;在这个过程中,整个对抗自编码器学习到了正常类别的图片数据集的特征,并且能够生成一个类似原始输入数据的图片数据;

第2.2、检测模块进行图片异常检测预测

检测模块包含两个子模块:一个图片判别器模块,一个置信度估计模块,图片判别器模块用于区分原始的输入数据和第2.1步中表示模块生成的重构图片,能够输出一个预测概率p;置信度估计模块能够输出一个置信度估计c,表示对于图片判别器输出的预测概率的置信度预测;结合真实的标签yi和置信度估计c来帮助检测模块调整预测概率p得到调整之后的预测概率pi'=c*pi+(1‑c)*yi;对于预测概率p,我们希望检测模块对于真实的图片输入预测概率p接近于1,对于重构出来的图片预测概率p接近于0,因此设定损失函数对于置信度估计c,希望检测模块对真实图片和重构出来的图片的预测概率的置信度估计均接近于1,设定损失函数LC=‑logc;因此训练的总损失函数为L=LD+λ*LC,其中λ为一个权重系数;使用上述的总损失函数L来使得检测模块不断学习,希望检测模块对原始的输入数据的预测概率和置信度估计都接近1,对第2.1步中表示模块中生成的重构图片的预测概率接近0,置信度估计接近1;经过训练,检测模块区分出原始图片和重构图片的细微特征差别,从而能够很好的分辨出正常类别的图片和异常类别的图片;

第2.3、对抗式的模块训练

将表示模块和检测模块进行对抗式训练,在训练过程中,表示模块为了使得检测模块对生成的重构图片有很高的预测概率,会不断的学习原始图片的特征,从而让生成的重构图片尽可能的与原始图片相近;而检测模块为了区分出原始图片和生成的重构图片,也会不断学习原始图片的特征,尽可能给出很高的置信度估计和差异比较大的预测概率;通过这种对抗性训练,两个模块都会更好的学习到正常类别的图片的特征,为下一步未知类别的图片异常检测做好准备;

第3、未知类别图片异常检测

训练后的检测模块能够对正常类别的图片数据集给出很高的预测概率和置信度估计,而对于异常类别的图片,由于基于深度学习的图片异常检测模型没有学习过异常的图片的特征,因此模型中的检测模块输出的置信度估计比正常类别的图片的置信度估计低;检测模块给出的置信度估计低于0.9的就可以判定输入图片为异常图片。

说明书 :

基于深度学习的图片异常检测方法

技术领域

[0001] 本发明属于人工智能领域,具体涉及图片数据集数据,界定好正常图片类别之后,对异常类别图片进行分析和检测的方法。

背景技术

[0002] 异常检测旨在识别与数据集中的多数(正常类)模式不同的少见和异常的实例(异常类)。近年来,许多多媒体和计算机视觉方向的研究人员开展了检测和分类方向的研究。他们对图像、视频、音频等多媒体的检测进行了深入的研究。例如,他们研究声学场景和事件中的音频检测,车辆和行人视频中的对象检测以及视频中的动作识别检测。而最近刚刚兴起的异常检测,它在多媒体和计算机视觉领域中发挥着重要作用,在医学诊断、行人检测、诈骗检测和图片去噪等多方面具有广泛的应用。本发明只关注异常检测中的图片异常检测问题,具有重大研究和应用价值。
[0003] 图像异常检测的一个不可忽略的问题是,异常图片的种类繁多,获取所有异常种类的成本很高,因此正常类别的图片数据集是唯一可以利用的信息。因此,通常将图片异常检测问题看做一分类问题,即假设总训练数据集仅包含正常类别图片数据。它旨在对缺乏异常数据的训练样本所定义的分布进行建模。
[0004] 近年来在图像新颖性检测方面有很多研究,研究重点是如何获取正常图片数据的特征分布,不符合正常图片数据的分布的就可以被认为是异常。因此如何对一分类异常检测中的正常图片数据建模引起了广泛的研究,主要的方法包括基于统计的模型,基于距离的模型,基于重构的模型,它们都对数据做出不同的假设。随着深度学习方法成功应用于图像或视频的各种应用中,用于异常检测的自表示方法能够很好地学习正常图片的分布并得到了目前最好的性能。
[0005] 然而,现有的异常检测方法很少能训练端到端检测模型。他们通常训练神经网络作为特征提取器,之后在检测的时候需要额外的计算,比如计算重构的图片与原始图片的差别作为异常分数。额外的计算会占用大量的计算资源和时间,亟需提高效率。此外,现代的神经网络分类器往往置信度估计不佳,训练好神经网络分类器之后,对于分类器没见过的输入,分类器会以较高的预测概率产生不正确的预测。置信度估计不佳对于异常检测这个问题是十分致命的,这些分类器无法识别与训练期间样本不同的输入。因此分类器可能会在完全错误的情况下产生较高的预测概率。综上所述,有关图片数据集的异常检测问题是一项创新的研究问题,具有重要的研究意义和应用价值。

发明内容

[0006] 本发明的目的是解决现有的图片异常检测方法缺少端到端的检测模型问题和置信度估计不高问题,提出一种基于深度学习的图片异常检测方法,本发明利用基于深度学习的方法,创新的提出了一分类图片异常检测方法,提高了图片异常检测的效果。
[0007] 本发明的技术方案
[0008] 基于深度学习的图片异常检测方法,该方法利用正常的图片类别数据作为输入数据,构建了一个端到端的基于深度学习的图片异常检测模型,所述模型包含两个子模块:一个表示模块,用于学习正常类别的图片数据集的特征,一个检测模块,用于预测输入图片属于异常图片类别的概率;检测模块中增加了置信度估计来辅助检测,对未分类的图片数据进行图片异常检测;该方法的详细内容如下:
[0009] 第1、正常类别图片数据集的预处理
[0010] 收集正常类别的图片数据集,将正常类别的图片数据集给定标签1;将原始的图片数据集处理成统一的大小和格式,保证接下来的步骤顺利进行;
[0011] 第2、基于深度学习的图片异常检测模型训练
[0012] 基于深度学习的图片异常检测模型含有两个子模块,一个表示模块,一个带有置信度估计的检测模块。通过表示模块学习正常类别的图片数据集的特征,通过检测模块对输入的图片输出异常检测的概率;两模块能够通过对抗式训练获得更好的表现,检测模块中同时增加了置信度估计子模块,能够更准确的输出预测概率;
[0013] 第2.1、表示模块学习正常类别的图片数据集特征
[0014] 表示模块由一个对抗自编码器(adversarial autoencoder,AAE)组成,对抗自编码器包含三个子模块:一个编码器,一个解码器和一个编码向量判别器;表示模块接收输入正常类别的图片数据集,通过编码器提取一个编码向量z,并使得解码器能够从编码向量z恢复出原始图像内容;同时由编码器和编码向量判别器组成对抗网络,判别器用来区分输入的编码向量是来自真实的编码向量还是来自预定义的概率分布;整个对抗学习实际通过不断调整让编码器产生的编码向量的概率分布接近预定义的概率分布,让解码器可以通过编码器生成的编码向量尽可能的恢复原始的输入图片;当模型训练完成后,由于编码向量的概率分布接近预定义的概率分布,因此直接通过预定义的概率分布产生随机编码向量,然后借助于解码器产生一个新的图像数据;在这个过程中,整个对抗自编码器学习到了正常类别的图片数据集的特征,并且能够生成一个类似原始输入数据的图片数据;
[0015] 第2.2、检测模块进行图片异常检测预测
[0016] 检测模块包含两个子模块:一个图片判别器模块,一个置信度估计模块,图片判别器模块用于区分原始的输入数据和第2.1步中表示模块生成的重构图片,能够输出一个预测概率;置信度估计模块能够输出一个置信度估计,表示对于图片判别器输出的预测概率的置信度预测;使用损失函数来使得检测模块不断学习,希望检测模块对原始的输入数据的预测概率和置信度估计都接近1,对第2.1步中表示模块中生成的重构图片的预测概率接近0,置信度估计接近1;经过训练,检测模块区分出原始图片和重构图片的细微特征差别,从而能够很好的分辨出正常类别的图片和异常类别的图片,从而具有很好的预测准确性;
[0017] 第2.3、对抗式的模块训练
[0018] 将表示模块和检测模块进行对抗式训练,在训练过程中,表示模块为了使得检测模块对生成的重构图片有很高的预测概率,会不断的学习原始图片的特征,从而让生成的重构图片尽可能的与原始图片相近;而检测模块为了区分出原始图片和生成的重构图片,也会不断学习原始图片的特征,尽可能给出很高的置信度估计和差异比较大的预测概率;通过这种对抗性训练,两个模块都会更好的学习到正常类别的图片的特征,为下一步未知类别的图片异常检测做好准备;
[0019] 第3、未知类别图片异常检测
[0020] 训练后的检测模块能够对正常类别的图片数据集给出很高的预测概率和置信度估计,而对于异常类别的图片,由于基于深度学习的图片异常检测模型没有学习过异常的图片的特征,因此模型中的检测模块输出的置信度估计比正常类别的图片的置信度估计低。我们根据训练结果对于不同的数据集设定不同的阈值,检测模块给出的置信度估计低于这个阈值的就可以判定输入图片为异常图片。
[0021] 本发明的优点和积极效果:
[0022] 本发明开创性地将针对图片异常检测问题提出了基于深度学习和置信度估计的方法,构建深度学习的图片异常检测模型,采用对抗性训练来对正常的图片数据进行建模,抽取充分的图片特征,并在置信度估计的协同作用下进行图片异常检测。本发明首次关注了带有置信度估计的端到端的异常检测模型,有效地提高了图片异常检测的效果。

附图说明

[0023] 图1为图片异常检测过程示意图。
[0024] 图2为图片异常检测框架示意图。
[0025] 图3为图片异常检测定义图。
[0026] 图4为基于深度学习的图片异常检测模型示意图。
[0027] 图5为常用图片异常检测数据集示例图。
[0028] 图6为基于fashion‑mnist数据集的异常检测结果示意图。

具体实施方式

[0029] 本发明提出了一种基于深度学习的图片异常检测方法,方法的主要过程如图1所示。该方法的主要过程如下:将正常类别的图片数据输入到该基于深度学习的图片异常检测模型中去,训练完成之后,根据训练结果选定一个阈值,将未分类的图片数据输入到该模型中去,模型的检测模块输出置信度预估结果,置信度预估结果低于这个阈值时,就可以判定输入的图片为异常类别的图片。
[0030] 本发明的具体实施过程分为三个阶段,如图2所示,第一个阶段是数据预处理,第二个阶段是基于深度学习的图片异常检测模型训练,第三个阶段是未分类图片的异常检测,以下是三个阶段实施过程的具体说明:.
[0031] 第1、正常类别图片数据集的预处理
[0032] 图3为图片异常检测的定义图,比如定义含有蝴蝶的图片为正常类别的图片,则其他不含有蝴蝶的图片即为异常类别的图片;左侧训练集中全部为蝴蝶相关的正常类别的图片,这些图片被作为训练集输入到基于深度学习的图片异常检测模型中去,训练完毕后,用图3右侧所示的测试集去进行未知类别的图片异常检测。上面两张为蝴蝶相关的图片,因此应该被检测为正常图片,下面两张不包含蝴蝶相关的图片,因此应该被检测为异常图片。准备常用的四个图片数据集,如MNIST数据集,Fashion‑MNIST数据集,The Coil数据集,Cifar数据集。MNIST数据集包含70000张手写数字图片,分别是0‑9,图片大小为28*28。Fashion‑MNIST数据集包含70000张服饰物品图片,图片分为10类,图片大小为28*28。The Coil数据集包含7200张32*32彩色图片,图片分为100个物体分类,每类图片包含72张。CIFAR10数据集包含60000张彩色32*32图片,图片分为10类,每类包含6000张图片。图5为常用的图片异常检测数据集的示意图。
[0033] 在数据预处理阶段,需要将原始的图片数据集重置成相同大小(28*28或32*32),处理成灰度图像,设定正常类别,并将其他类别的图片作为异常。将正常类别的图片划分为训练集和测试集,将异常类别的图片划分为测试集。将正常类别的图片数据集给定标签1;以MNIST数据集为例,设定包含手写数字0的为正常类别的图片时,其他包含手写数字为1‑9的为异常类别的图片。包含手写数字0的图片按照8:2的比例划分训练集和测试集。将原始的图片数据集处理成统一的大小和格式,保证接下来的步骤顺利进行。
[0034] 第2、基于深度学习的图片异常检测模型训练
[0035] 本发明提出了基于深度学习的神经网络模型来完成图片异常检测。我们需要学习正常类别图片的特征,因此构建一个表示模块学习正常类别的图片数据集的特征,同时还需要一个检测模块对输入的图片进行异常检测;在生成对抗网络模型的启发下,本发明将表示模块和检测模块联合起来,通过两个模块的对抗式训练获得更好的表现。此外,为了克服神经网络分类器固有的置信度估计低的问题,检测模块中增加了置信度估计子模块来提高检测模块的检测准确性。图4为本发明提出的基于深度学习的图片异常检测模型示意图。
[0036] 我们设定PX为正常类别的图片的特征分布,而QX为异常类别的图片的特征分布。给定训练数据x1,x2,...xN,其中xi∈PX,N为训练数据的数量,我们提出的图片异常检测模型就来学习正常的类别的分布。因此,异常检测的定义为:给定一张图片,来自混合分布PX QX,该模型可以判定这张图片是属于正常图片的分布PX还是属于异常图片的分布QX。我们在数据预处理阶段准备好的训练集都满足PX分布,将训练集输入到该基于深度学习的异常检测模型中进行训练。
[0037] 第2.1、表示模块学习正常类别的图片数据集特征
[0038] 表示模块由一个对抗自编码器(adversarial autoencoder,AAE)组成,对抗自编码器包含三个子模块:一个编码器En,一个解码器De和一个编码向量判别器Dz。表示模块接收输入正常类别的图片数据集,通过编码器Dz提取一个编码向量z,并使得解码器De能够从编码向量z重构成图片x',希望重构的图片x'与输入的图片x尽量相近,因此,这一对编码解码器以正常类别的数据分布作为输入,并且产生尽可能与PX相似的分布,在此过程中,编码解码器可以更好的学习正常类别的数据输入;同时由编码器En和编码向量判别器Dz组成对抗网络,编码向量判别器用来区分输入的编码向量是来自真实的编码向量还是来自预定义的概率分布;整个对抗学习实际通过不断调整编码器产生的编码向量的概率分布接近预定义的概率分布,让解码器可以通过编码器生成的编码向量尽可能的恢复原始的输入图片。当模型训练完成后,由于编码向量的概率分布接近预定义的概率分布,因此直接通过预定义的概率分布产生随机编码向量,然后借助于解码器产生一个新的图像数据;在这个过程中,整个对抗自编码器学习到了正常类别的图片数据集的特征,并且能够生成一个类似原始输入数据的图片数据;
[0039] 第2.2、检测模块进行图片异常检测预测的方法
[0040] 检测模块Detector有两个子模块,一个图片判别器模块可以输出预测该张图片为正常图片的概率p,一个置信度估计模块输出预测的置信度估计c。
[0041]
[0042] 我们把真实的图片输入x,和通过表示模块重构出来的图片x'作为输入可以得到两个不同的输出结果,我们希望检测模块可以学到真实的正常图片的分布,即希望可以区分开x与x'。因此,与生成对抗网络类似,我们希望检测模块对于真实的图片输入预测概率p接近于1,对于重构出来的图片预测概率p接近于0,同时还希望检测模块对这两个输出的预测概率的置信度估计均接近于1。
[0043] 因此使用真实的标签yi和置信度估计c来帮助检测模块调整预测概率p得到调整之后的预测概率p′i。
[0044] p′i=c*pi+(1‑c)*yi
[0045] 对于预测概率p,设定损失函数:
[0046]
[0047] p′i是调整之后的预测概率,yi是真实的标签输入。我们希望LD尽可能小,即希望p′i接近yi。
[0048] 对于置信度估计c,设定损失函数:
[0049] LC=‑logc
[0050] 训练的总损失函数为:
[0051] L=LD+λ*LC
[0052] λ为一个权重系数。
[0053] 当置信度估计c接近于1时,意味着该基于深度学习的异常检测模型对于输入图片的预测概率的置信度比较高,所以调整后的接近于p′i于p,那么随着损失函数的最小化优化,p′i接近于真实的标签yi。当置信度估计c接近于0时,即该基于深度学习的异常检测模型对于输入图片的预测概率的置信度比较低,因此预测概率很有可能是不准确的,此时LC很大,在训练中为了进行损失函数的最小化优化,模型接收了真实的标签输入yi来帮助模型进行学习,随着优化,p′i会接近于真实的标签yi,而c也会接近于1。经过训练,检测模块区分出原始图片和重构图片的细微特征差别,从而可以很好的分辨出正常类别的图片和异常类别的图片,从而具有很好的预测准确性。该基于深度学习的异常检测模型可以对正常类别的输入图片给出很高的预测概率和置信度估计。
[0054] 第2.3、对抗式的模块训练
[0055] 我们将表示模块用R表示,将检测模块用D表示,类似生成对抗网络,我们将表示模块和检测模块进行对抗式训练,在训练过程中,表示模块为了使得检测模块对生成的重构图片有很高的预测概率,会不断的学习原始图片的特征,从而让生成的重构图片尽可能的与原始图片相近。而检测模块为了区分出原始图片和生成的重构图片,也会不断学习原始图片的特征,尽可能给出很高的置信度估计和差异比较大的预测概率。通过这种对抗新训练,两个模块都会更好的学习到正常类别的图片的特征,为下一步未知类别的图片异常检测做好准备。
[0056] 第3、未知类别图片异常检测
[0057] 训练后的检测模块可以对正常类别的图片数据集给出很高的预测概率和置信度估计,而对于异常类别的图片,检测模块的置信度估计会比较低,我们根据训练结果对于不同的数据集设定不同的阈值,检测模块给出的置信度估计低于这个阈值的就可以判定输入图片为异常图片。以图6为例,训练过后正常类别图片的置信度估计都高于0.9,因此我们取0.9为阈值,在进行异常检测时,检测模块输出的置信度估计低于0.9的就可以判定为异常类别图片。我们在数据预处理阶段准备的测试集,包含正常类别的图片数据和异常类别的图片数据,将测试集输入到该基于深度学习的异常检测模型中去,根据输出的置信度估计进行异常检测。