目录
- 前言
- 1. PatchCore:Towards Total Recall in Industrial Anomaly Detection
- 2. RD4AD:Anomaly Detection via Reverse Distillation from One-Class Embedding
- 3. SimpleNet: A Simple Network for Image Anomaly Detection and Localization
- 4. efficientAD:Accurate Visual Anomaly Detection at Millisecond-Level Latencies
- 5. 补充说明
- 6. 参考链接
前言
无监督工业异常检测训练过程只用到正常样本,使用异常样本进行测试。根据原理主要分为以下三种方法:
- 基于合成的方法
- 原理:利用正常图像加噪声生成伪异常训练网络,进而估计异常区域的边界。
- 问题:实际缺陷各异且难预知,所以模拟的效果会影响性能。
- 基于重建的方法
- 原理:在训练过程中只对正常样本进行重构学习,因此当输入是异常时,那么就会产生与正常样本差异较大的输出,而这种差异的输出称之为异常。
- 问题:神经网络泛化能力较强,导致异常样本也能达到很好的重构效果,从而使得异常检测准确率偏低。
- 基于嵌入的方法
- 原理:使用预训练的CNN来提取广义正态特征。然后采用多元高斯分布、归一化流和内存库等统计算法嵌入正态特征分布,测试时通过将输入特征与学习的分布或记忆的特征进行比对实现检测异常。
- 问题:工业图像与ImageNet分布有差异,直接使用ImageNet的预训练网络可能导致不匹配问题;同时基于统计和内存库搜索(Patchcore等)的方式对于内存消耗大,计算复杂度也更高。
1. PatchCore:Towards Total Recall in Industrial Anomaly Detection
论文链接:https://arxiv.org/pdf/2106.08265
PatchCore是一种基于嵌入的方法,该方法首先会构建一个内存库(Memory Bank),该内存库包含了正常图像的特征向量。这些特征向量是通过预训练的神经网络模型从正常图像中提取出来的,它们有效地捕捉了正常样本的视觉特征。在模型训练阶段,PatchCore仅使用正常图像来构建这个内存库,不涉及任何异常样本。
当有新的测试图像进入模型时,PatchCore会从图像中提取特征向量,并与内存库中存储的正常特征向量进行比较。通过计算测试图像特征向量与内存库中最接近的特征向量之间的距离,可以评估测试图像的异常程度。距离越小,表明测试图像与正常样本越相似,越可能是正常图像;反之,距离越大,表明测试图像与正常样本的差异越显著,越可能是异常图像。
1) Locally aware patch features, 局部补丁特征聚合
使用ImageNet上预训练的特征提取网络。如ResNet-50 / WideResNet-50,采用中间层作为输入可以保留更多的信息,使得在ImageNet上预训练的网络提取出来的特征不那么偏向原数据集,同时从预训练的CNN模型中得到的特征向量会经过自适应平均池化处理,这一步骤确保了不同尺寸的输入图像能够产生具有一致维度的特征向量。而聚合的目的是为了增加感受野的大小并且增加对小的空间变化鲁棒性。
2) Coreset-reduced patch-feature memory bank, 核集缩减局部特征记忆库
使用子采样技术(核心集)近似这些特征并构建一组描述正常模式的补丁特征,以提高效率。使用KNN Greedy CoreSet 采样选取最具代表性的特征点(选择与其他特征点最远的点以实现尽可能平衡的采样,效果类似泊松圆盘),构建特征向量记忆池,只保留1%~10%的特征数,进而实现高效的特征筛选并用于异常检测。
3) 使用patchcore进行异常检测
对于每个点先找最近的邻近区域,然后在这邻近区域中找最远的点的距离作为异常分数。获取到全局得分。为了匹配原始输入分辨率,采用双线性插值上采样,以及高斯滤波进行平滑处理。
2. RD4AD:Anomaly Detection via Reverse Distillation from One-Class Embedding
论文链接:https://arxiv.org/pdf/2201.10703
1) Distillation & Reverse Distillation
Distillation结构如图(a)所示:假设学生在训练期间只处理正常样本,所以当输入是异常时,它可能会生成与教师不同的表示。但是由于师生网络具有相似的或相同的架构和T-S模型在知识传输/蒸馏期间具有相同的数据流,假设并非总是成立。
Reverse Distillation结构如图(a)所示,其具有两个特点:
-
非相似结构: 将教师编码器视为降采样滤波器,将学生解码器视为上采样滤波器,避免了相似或相同架构引起的混淆。
-
紧凑嵌入: 馈送给学生解码器的低维嵌入(OCBE)充当了正常模式恢复的信息瓶颈。
-
学生解码器与教师编码器相比是对称但相反的。相反有助于消除学生网络对于异常的响应,对称可以保持与教师网络维度相同。
-
OCBE模块包含两部分:MFF(multi-scale feature fusion)聚合低层次和高层次特征,构建用于正常模式重建的丰富嵌入; OCB(one-class-Embedding)保留有利于学生解码教师响应的基本信息。
-
在测试/推理中,teacher E提取的多尺度表示可以捕获异常特征,student D无法从相应的瓶颈嵌入(bottleneck embedding)中重构异常特征。student和teacher表示的相似性低则表明高异常分数。
2) One-Class Bottleneck Embedding的作用
-
问题:直接将teacher E中最后的编码模块激活输出馈送给student D存在两个不足之处:
-
teacher E具备较强的特征提取能力,馈送给student D的高自由度和冗余的特征描述对于student D解码关键的无异常特征是有害的。
-
teacher E最后一层编码的激活通常表征输入数据的语义和结构信息,直接将这种高级表示馈送到student D对于低级特征的重建也是不利的。
-
-
解决方法:
-
可训练的one-class嵌入块,将teacher E的高维表示投影到低维空间, 将异常特征定义为正常模式上的扰动。而经过one-class后的紧凑的嵌入块充当了信息瓶颈,有助于阻止不寻常的扰动传播到学生模型,从而增强了T-S模型对异常的表示差异。
-
增加MFF模块在进行one-class嵌入之前将多尺度表示进行拼接,以获得富含信息但紧凑的特征。
-
3. SimpleNet: A Simple Network for Image Anomaly Detection and Localization
论文链接:https://arxiv.org/pdf/2303.15140
SimpleNet利用了基于合成和基于嵌入的方式,主要包含以下几部分:
1) 预训练的特征提取器,用于生成局部特征;首先使用类Resnet骨干网络提取了多个层级的特征,然后再聚合。
2) 浅层特征适配器,工业图像与ImageNet预训练中使用的数据集具有不同分布,因此采用特征适配器将局部特征转移到目标域;由单个全连接层组成。
3) 简单的异常特征生成器,通过向正常特征空间(通常是在图像中加噪声)添加高斯噪声模拟异常特征。
4) 二元异常鉴别器,用于区分异常特征和正常特征;使用2层多层感知器(MLP)结构。
在训练阶段,特征提取器对输入图像进行局部特征提取得到局部特征图,再使用特征适配器对局部特征图进行处理得到适配的特征图,加入高斯噪声随机得到融合异常特征图,适配特征图与融合高斯噪声的特征图进入判别器,获得2个异常得分映射。
在测试阶段,输入测试图片,经过特征提取器得到特征图,再经过特征适配器得到适配特征。将适配特征经过鉴别器得到对应的异常分数图。
4. efficientAD:Accurate Visual Anomaly Detection at Millisecond-Level Latencies
论文链接:https://arxiv.org/pdf/2303.14535v1
efficientAD包含三个网络——教师网络T,学生网络S,AE网络。
工业场景下的异常可分为结构性异常和逻辑性异常,结构性异常(如脏污、划痕等局部异常),可以通过局部特征进行识别定位的。然而越深层次的网络,其可视野越大,提取的特征越偏向于全局,所以浅层网络可以通过更容易将可视野约束在较小范围,且不同patch的异常不会影响到当前patch的特征,从而有利于异常的定位。逻辑性异常一般指违背了逻辑约束的异常(如部件错位/丢失/多余/违背几何约束,如长度等)。而自动编码器(auto encoder)可以学习正常数据的逻辑约束,重构正常图像的逻辑性特征。
1) Efficient Patch Descriptors
如图所示,PDN仅由四个卷积层组成,每个输出神经元具有33×33像素的感受野,因此每个输出特征向量描述一个33×33的patch。由于这种明确的对应关系,因此被称为块描述网络(PDN)。PDN是完全卷积的,并且可以应用于可变大小的图像以在单个前向通过中生成所有特征向量。为了让PDN生成富有表现力的特征,通过最小化其输出与从预训练网络(WideResNet-101)提取的特征之间的均方差,在ImageNet图像上训练PDN。
2) Lightweight Student–Teacher
-
在标准的学生-教师(S-T)框架中存在两个问题:
-
增加训练图像的数量可以提高学生模拟教师对异常情况的能力。这会恶化异常检测的性能。同时,故意减少训练图像的数量可能会抑制关于正常图像的重要信息。
-
教师网络要么是在图像分类数据集上预训练的,要么是预训练网络的蒸馏版本。而学生不进行预训练,仅在正常图像上进行训练。
-
-
解决方法:
-
为了能向学生展示足够的数据,使其能够在正常图像上充分模仿教师,同时避免泛化到异常图像上。参考类似于在线难例挖掘(Online Hard Example Mining)将学生的损失限制在图像的最相关部分,即学生当前模仿教师最少的Patch【“currently mimics the teacher theleast”意味着这是当前学生最难以正确模仿教师输出的图像区域】,提出了一种硬特征损失,它只使用具有最高损失的输出元素进行反向传播。
-
同时训练过程中还使用了一种损失惩罚,S网络对预训练随机采样数据(从ImageNet中随机抽取样本)的输出feature map的二范式,作为惩罚项(以此希望S网络对T网络的预训练数据不敏感,即输出为0),进一步抑制S网络学习到T网络的正常数据之外的特征。
-
L S T = L h a r d + ( C W H ) − 1 ∑ c ∣ ∣ S ( P ) c ∣ ∣ F 2 . L_{ST} = L_{hard} + (CWH)^{-1}\sum_c||S(P)_c||_F^2. LST=Lhard+(CWH)−1c∑∣∣S(P)c∣∣F2.
L S A T E = ( C W H ) − 1 ∑ c ∣ ∣ A ( I ) c − S ′ ( I ) c ∣ ∣ F 2 . L_{SATE} = (CWH)^{-1}\sum_c||A(I)_c-S^{\prime}(I)_c||_F^2. LSATE=(CWH)−1c∑∣∣A(I)c−S′(I)c∣∣F2.
L A E = ( C W H ) − 1 ∑ c ∣ ∣ T ( I ) c − A ( I ) c ∣ ∣ F 2 . L_{AE} = (CWH)^{-1}\sum_c||T(I)_c-A(I)_c||_F^2. LAE=(CWH)−1c∑∣∣T(I)c−A(I)c∣∣F2.
L t o t a l = L S T + L S A T E + L A E L_{total} = L_{ST} + L_{SATE} + L_{AE} Ltotal=LST+LSATE+LAE
3) Logical Anomaly Detection
由于AE对细粒度模式(如细密的背景)的重建有较大误差,所以T和AE之间的差异作为结果可能会造成假阳性检测。所以加倍了学生网络的输出通道数量,并训练它除了预测教师模型的输出外,还要预测自动编码器的输出。在正常样本上,S能够模仿AE的重建能力,例如模糊重建blurry reconstructions。但是在异常样本上,由于S未曾见过该分布,则重建区域和AE输出不一致,按照惯例不一致则为异常,两者之间取平方差,跨通道平均则得到逻辑异常特征图。
以T和S间的差异表征结构性异常,S和AE间的差异表征逻辑性异常。将结构性异常和逻辑性异常先标准化为相似的比例,然后再对其进行平均以获得组合异常图。为了估计正常图像中噪声的比例尺,使用验证集图像,即训练集的未出现的图像,对于上述两种异常计算一个可能出现的最大最小值作为比例尺对齐结构性异常和逻辑性异常的输出。
5. 补充说明
1) 区别
基于合成的方法,其重点在于如何生成接近真实的瑕疵缺陷,主要工作也在于如何设计更好的特征生成算法,而基于重构的方法,大多是如何从异常图像中尽可能恢复正常表征,最大差异化输出。基于嵌入的方法则大多集中如何更高效的建立特征搜索库,平衡特征库的描述能力与推理速度。
2) 如何将异常特征图重塑为热力分布图与异常得分?
异常得分是异常特征图中的最大值,而对异常特征图进行上采样,高斯滤波去除噪声后,再经过min-max-normalization或者clip.(0,1)即可得到热力图。为什么异常得分是最大值而不是取平均?因为对所有值进行平均对于具有小异常区域的样本来说是不公平的。最具响应性的点存在于任何大小的异常区域中,在正常样本的异常分数图中不存在显著的响应。
3) 关于评价指标
图像级异常检测性能是通过标准的接收算子曲线下面积(Area Under the Receiver Operator Curve)进行评估(记为I-AUROC)。对于异常定位,使用异常图评估逐像素AUROC(记为P-AUROC)。
6. 参考链接
- https://blog.csdn.net/Life1213/article/details/139726590
- https://zhuanlan.zhihu.com/p/679343276
- https://zhuanlan.zhihu.com/p/642087017
- https://www.cnblogs.com/EIPsilly/p/17729630.html
- https://blog.csdn.net/matt45m/article/details/137528931
----------后续将继续学习与补充,若有不足,欢迎各位大佬交流与指正!!!----------