1. 引言
深度学习的快速发展将图像异常检测的能力带入了工厂车间,在现代制造业中,缺陷检测往往在制造过程的最后用于识别产品缺陷,如果缺陷超过阈值则产品不合格。从历史上看,大多数异常检测任务都是由人工完成的,而人工存在以下诸多缺点:一、无法避免人类的疲劳导致的误报现象;二、长时间高强度的异常检测工作可能会导致健康问题如视力障碍;三、定位异常情况需要大量员工,从而增加运营成本 [1] 。因此为减少人力成本,往往使用效果越来越好的深度学习方法。而基于监督学习的方法严重依赖于标注数据,大量的标注数据人工成本较高,除此外随着产线工艺的改进,有缺陷的样品越来越少,同时全监督学习需要提前知道所有可能的缺陷类型,然而缺陷类型并不能完全囊括,以及标注数据时可能会无意中引入注释噪音 [2] 。因此大多数研究集中在无监督异常检测上,基于异常样本的收集需要巨大的人力和财力成本的假设,训练集中一般只包含正常样本,而测试集中则包含异常和正常样本。在MVTec AD [3] 数据集发布后,工业图像中的异常检测方法可以大致分为两类:基于特征嵌入和基于重构。基于重构的方法 [4] 假设只用正常数据训练的深度网络无法准确重建异常区域,像素级的重建错误被视为异常定位的异常分数;基于特征嵌入通过比较目标图像和正常图像的深度嵌入特征来区分异常,而其特征提取部分通常选择在大规模数据库(如ImageNet)上预训练的模型。目前,更多的异常检测技术是基于特征嵌入的。
一分类模型是基于特征嵌入的方法之一,异常检测可以被视为分类正常和异常的一分类问题,这启发了一些研究。如一分类问题中的经典算法SVDD [5] ,该方法在训练过程中训练一个网络,将训练数据映射到特征空间中的一个小超球体中,用找到的超球体来区分正常样本特征和异常样本特征。而一类分类技术十分依赖异常样本,如果生成的异常样本质量较差,该方法的性能将受到严重影响。最近,SimpleNet [6] 提出一个新的方法合成异常样本,该方法通过域适应将ImageNet上预训练的骨干网络提取的特征转换成更适合训练集的特征,并在该特征中加噪声合成异常特征,用简单的易于训练和应用的架构得出了更好的效果,性能优异且推理速度快。基于广泛使用的WideResnet50骨干网络,提出的SimpleNet在MVTec AD数据集上超过先前发表的异常检测方法在准确性和效率上的表现。然而该模型并没有注意到正常样本特征之间也具有微小差异,这导致模型将微小瑕疵的正常样本误判为缺陷。
本研究受到上述模型的启发,同时观察到MVTec AD缺陷数据集中存在几种类别容易受到微小扰动影响而被误判为缺陷的数据集,为了解决正常样本受到这种随机性干扰和SimpleNet将微小瑕疵的正常样本误判为缺陷的问题,同时由于其使用基于正常特征加噪生成异常特征的方法可以产生较好的区分效果,基于此提出一个名为“TrisimpleNet”的新模型。第一,提出生成伪造正常特征,而不是仅生成缺陷特征,新生成的伪造正常特征可以降低模型假阴性:第二,根据三元组损失相应的对损失函数进行改进,让缺陷样本和正常样本与伪造正常样本距离增加,正常样本和伪造正常样本距离减少,并将损失并入总损失。相比于其他同类型模型,本模型对正常样本有较好的鲁棒性,能够较好的识别正常样本,并且由于结合了域适应以及在特征上加噪声的特点,经过训练在SimpleNet的指标上获得了一定的提升,实验中AUROC达到99.7%,对比于一分类模型以及缺陷合成方法的同类模型,本模型取得了较大的提升。
2. 相关工作
基于嵌入的方法最近取得了最先进的性能,这些方法将特征嵌入到一个特征空间中。异常特征在这个特征空间中跟远离正常特征分布。典型的方利用在ImageNet上预先训练的网络进行特征提取。使用预训练模型,PaDiM [7] 通过多元高斯分布嵌入提取的异常补丁特征。PatchCore [8] 使用最大代表性的正常补丁特征存储库,在测试中采用马氏距离或最大特征距离对输入特征进行评分。然而,工业图像通常与ImageNet有不同的分布,直接使用预训练特征可能会导致不匹配问题。
经典的一类单类分方法根据测试样本特征和超球体的相对位置来判断样本是否异常,但一类分类技术十分依赖异常样本,如果生成的异常样本的质量较差,该方法的性能将受到严重影响。由于训练集不包含异常样本,一些方法会人为地创建异常样本以提高超球体的准确性,典型的如CutPaste [9] 提出在图像上剪切一个图像块,并将其粘贴到大图像的随机位置,一个卷积神经网络被训练来区分来自正常和增强数据分布的图像。
合成缺陷的方法通常在无异常的图像上直接合成异常。DiffusionAD [10] 异常合成策略通过向正常样本中添加在视觉上不一致的外观,获得合成的异常样本。然而,合成异常的外观与真实异常的外观并不十分匹配。在实践中,由于缺陷各种各样且难以预测,生成一个包含所有离群值的异常集是不可能的。与在图像上合成异常不同,SimpleNet并不直接在图像上合成缺陷,而是在在特征空间中合成缺陷特征,并作出改进合成伪造正常特征。
距离度量学习在图像检索、行人再识别、聚类等领域有着较好的效果,为了距离度量能学习到样本到特征的映射函数,合理的距离度量损失函数一个重要因素。最常见的对比损失 [11] [12] 函数能使正样本对的特征向量之间的距离最小化,同时负样本对特征向量之间间隔一定的距离。三元组损失 [13] [14] 利用正样本对与负样本对构建三元组结构,不仅考虑了对比损失中的差异对比,还深入探究了类内样本间距离的紧密程度与类间样本间距离的疏远程度。通过这种方法,正样本对在经过映射后的特征空间中,相对于负样本对会展现出更为接近的距离关系,在本模型中按照这种思想来设计损失函数。
3. 方法
模型结构如图1所示,下文将根据不同模块介绍模型。
3.1. 特征提取
将图像放入骨干网络Resnet提取特征,对不同层提取的特征进行整合后得到特征图。用Resnet作为特征提取器获取局部特征,设
为训练集和测试集
的图像,
用预训练网络
从L个不同层次提取特征,对
提取第l层
提取的特征即为:
,
、
和
为l层的特
征图的长、宽和通道数,将
表示为以坐标
为中心的p邻域,p领域为:
(3.1)
对p领域的特征使用平均池化
,即:
(3.2)
不同层次的特征
线性调整为相同大小
并拼接起来,得到特征图
,即:
(3.3)
记
为特征图
坐标为
切片。简化为:
(3.4)
3.2. 特征域适应
由于工业图像通常与用于骨干预训练的数据集具有不同的分布,使用简单的多层感知机特征域适应器
实现域适应,将训练特征转移到目标域,使得转换后的特征的方差紧凑,达到可以通过加入噪音后,或者存在异常特征时,能将两者分开的目的,即
(3.5)
3.3. 特征生成器
以往的无缺陷样本的训练,在加噪声生成缺陷样本的过程中往往是在经过一定与处理的图片上进行加噪,而这样的加噪得往往效果不好,有些噪声并不能很好的体现缺陷的特征,因此有些论文如 [9] 依赖额外数据合成缺陷图像,DiffusionAD [10] 在使用一些方法生成一些更加贴合实际的缺陷,而该论文选择在提取出的特征中加噪声,得到了较好的效果,这种方法优于那些被操纵的方法。在转换后的特征图的每一个坐标
的特征切片
加入独立同分布于
的高斯噪声
,得缺陷特征图。即
(3.6)
由于进行了特征域适应,因此,在区分异常特征和正常特征时,特征空间倾向于紧凑。特征生成器中伪造正常特征所用高斯噪声的方差控制着合成的伪造正常特征与正常特征之间的距离,具体来说
会影响合成的伪造正常特征与正常特征的欧几里德距离。而为解决对正常样本的误判,除此外本文在特征生成器中增加一个生成伪造正常特征的结构,该结构在正常特征上加入微小扰动,而加了之后的伪造正常特征数据分布和原正常特征分布近似。微小扰动使用比在生成异常特征中所用高斯噪声
的方差
更小的高斯噪声
,其方差为
,除去加入方差的大小不同外其他的设置相同,均为独立同分布,此时一个正常特征
,对应生成一个异常特征
和一个伪造正常特征
,其中
为:
(3.7)
3.4. 鉴别器
将对应的正常特征图和缺陷特征图拼接后的
,放入使用简单全连接层的鉴别器
,得到正常样本和缺陷样本对应的评分,鉴别器
会对正常特征图的每一个坐标
都生成一个对应位置的正值评分简记为
,以及异常特征图的对应位置的负值评分简记为
。
为正常特征与伪造正常特征拼接,将配对拼接的
和
一同放入鉴别器
中训练,并得到对应评分,即:
(3.8)
(3.9)
3.5. 损失函数
为了使模型能对正常特征输出正的评分,对异常特征输出负的评分,使用损失函数将特征图的每一个位置
对应产生的两个正负值评分区分开。使用以下损失:
(3.10)
和
是防止过拟合的截断项。默认情况下,它们被设置为0.5和−0.5。
基于三元组损失的思想,增加一项让正常分数与异常评分分开,并且对
和
使用减少正常特征和伪造特征的距离的损失,这个损失会一同加入总损失:
(3.11)
然后将
和
加总,
(3.12)
,
为防止过拟合的截断项,默认情况设置为1。然后将所有位置的损失加和后求平均,得到训练目标的总损失是:
(3.13)
训练目的便是将这个总损失变小。
3.6. 推理和评分方法
在推理阶段不使用异常生成部分,依次将每个
输入到上述特征提取器
和特征域适应器
中,以获得特征
,使用鉴别器
生成
的异常分数:
(3.14)
由此获得异常图:
(3.15)
对
进行插值,使其具有与输入样本相同的分辨率,并使用高斯滤波以获得平滑边界。将异常图中最大的分数作为图像的异常检测分数:
(3.16)
伪代码算法下表1所示。
4. 实验
4.1. 训练集处理
同样在MVTec AD [3] 异常检测基准测试上进行了实验,MVTec AD包含了5种纹理和10种物体类别的图像,共计5354张。该数据集由用于训练的正常图像和用于测试的包含各种缺陷类型的异常图像组成。并且为缺陷样本图像提供了像素级标注。同样将图像居中裁剪为256 × 256和224 × 224 [7] ,没有应用数据增强,在数据集中的地毯、瓷砖、螺丝、药丸、牙刷五个类别的正常训练样本上分别训练一个一分类器。
4.2. 评估指标
图像级异常检测性能通过ROC曲线下面积(I-AUROC)来衡量,使用上述异常检测分数公式
(公式3.16)。基于之前的研究 [7] [8] ,在MVTec AD上计算了类别平均AUROC和整体类别的平均AUROC,用于检测,并用SimpleNet [6] 、PaDiM [7] 、PatchCore [8] 、指标作为基线对比。
4.3. 实验配置细节
实验中使用的骨干网络是在ImageNet上预训练的WideResNet50的架构,在特征提取部分被用作特征提取器,如3.1中所述。特征提取器的特征维度设置为1536,大小为36*36。后续的特征适配器是一个无偏置且输入和输出特征维度相同的全连接层。异常特征生成器向正常特征的每个切片添加独立同分布的高斯噪声
。原论文的异常特征生成器默认情况下设置
为0.015,改进部分加入的异常特征生成器设置
为0.00015。鉴别器由一个线性层、一个批标准化层、一个Leaky ReLU(斜率为0.2)和一个线性层组成。方程中3.10的th+和th-都设置为0.5。方程3.11中
设置为1。使用Adam优化器,将特征适配器和鉴别器的学习率分别设置为0.0001和0.0001,权重衰减设置为0.00001。每个数据集的训练周期设置为160,批量大小为4。
4.4. 实验结果
MVTec AD上的异常检测结果以及与基线模型对比如表2所示,图像级异常分数由异常图的最大分数给出,如方程3.16所示。经实验验证模型在易受微小噪声扰动的几种类别中均在原基础上有提升。相比与SimpleNet,模型在它的0.7%的错误率的基础上下降了43%达到了99.6%。相比于一分类模型的PaDiM和缺陷合成的PatchCore本模型得到了较大的提升,其中黑体表示,横向对比最好的结果。由于类似三元组损失的损失函数设置试图增加正负样本评分的距离,降低了对微小扰动的过拟合,因此减小了存在极小瑕疵被误判为缺陷即假阴性的概率。
![](Images/Table_Tmp.jpg)
Table 2. System resulting data of standard experiment (%, bold indicates optimal horizontal comparison)
表2. AUROC对比(%,粗体表示横向对比最优)
5. 结论
本文提出了一种名为TrisimpleNet的模型,为解决模型对缺陷样本过拟合而易受到扰动影响导致假阴性概率提升的问题,并受到以往研究以及度量学习三元组损失的启发,在模型中加入合成正常特征的模块,在提取的正常特征中加入微小噪声生成伪造正常特征,将正常特征及伪造正常特征与一同生成的异常特征一起训练,通过三元组损失对这三者的损失进行改进,最终在MVtec AD的无监督异常检测分类任务中获得了提升。