Papers About Industrial Anomaly Detection
Papers About Industrial Anomaly Detection
【SOTA-2D】Towards Total Recall in Industrial Anomaly Detection
cold-start problem:fit a model using nominal example images only
也可以认为是One-Class Classification(OCC)分类,即仅采用隶属于一个类别的样本来训练分类器,其通常被用于某种极端场景,即训练样本仅包含正常样本,而异常样本不可得。
提出了PatchCore,在detection和localization上达到sota,评价指标是AUROC,达到99.6%,数据集是MVTecAD
AUROC:Area Under the Receiver Operating Characteristic,关注的是模型的分类能力,是针对不同阈值设置下的分类问题的性能测量,AUC(曲线下区域)ROC(接收器操作特征)曲线。
TP:True Positive,预测为正,且预测正确
TN:True Negative,预测为负,且预测正确
FP:False Positive,预测为正,但预测错误
FN:False Negative,预测为负,但预测错误
Recall:\(\frac{TP}{TP + FN}\),从所有实际中为正的类,有多少预测正确,Recall应该尽可能高
Precision:\(\frac{TP}{TP + FP}\),从我们预测为正的类,有多少是正确的,也应该尽可能高
ROC曲线以TPR(真正率)与FPR(假正率)绘制,其中TPR位于y轴上,FPR在x轴上
TPR = Recall = Sensitivity = \(\frac{TP}{TP + FN}\)(分母是真实正样本的个数)
Specificity = \(\frac{TN}{TN + FP}\)
FPR = 1 - Specificity = \(\frac{FP}{TN + FP}\)
ROC曲线的绘制(同一模型下,根据计算的score遍历选取不同的threshold)
AUROC面积的判断(比较不同模型之间的优劣)
threshold根据预测值列表排序得到
人类只看到少量实例之后,便可以区分数据中的预期方差和异常值
在实际工业生产中,很容易得到正常示例的图像,但是要得到特定的缺陷异常产品是很昂贵和复杂的。
PatchCore-Introduction
只要一个patch是异常的,图像就可以被分类为异常
PatchCore在MVTecAD上几乎完美(99.6%),并且具有很高的样本效率,仅仅使用一小部分正常样例数据训练,就能在性能上与现有的异常检测方法相匹配。
Related Work
现有大多数异常检测模型依赖于学习nominal数据固有的表示的能力,使用在大型外部自然图像数据集ImageNet上预训练的模型。
借鉴了SPADE和PaDiM的思路,预训练+特征袋(bag of feature).
SPADE从预训练的骨干网络中提出的nominal特征的记忆库memory bank,进行图像级和像素级异常检测。PatchCore使用了memory bank,具有领域感知的patch特征。memory bank被coreset下采样,降低推理成本。
Method⭐
Locally aware patch features
使用了在ImageNet上预训练的网络\(\phi\)(ResNet),利用层级特征(低层次->高层次)特征图。为何使用到中间特征,而不是仅仅使用网络最后一层的输出呢?
- 丢失了更多的局部nominal信息
- ImageNet预训练的网络中非常深入和抽象的特征偏向于自然图像分类任务,与cold start工业异常检测任务差距大。
如何保存这些中间层次的特征图?使用memory bank,存储patch级别的特征。[1,2,3,4] -> [2, 3]。
在c*通道的三维张量上进行切片,中心位置(h, w),切片(patch)感受野(边长)p大于1,patch大小(领域大下)不均匀。
在(h, w)位置上,聚合感受野的像素特征。使用了adaptive average pooling,得到locally aware patch-feature。
根据以前工作,多个特征层次的聚合可以提供一些好处。但为了保留所使用的通用性和空间分辨率,PatchCore只使用了两个中间特征层次j和j+1。计算两个层次上的特征再聚集,使用双线性重新缩放。
Coreset-reduced path-feature memory bank
随着训练图片数量增大,memory bank变得非常大。为了缩小M,又不丢失nominal信息,采用了贪心coreset采样方法。减少推理时间同时保持性能。minimax问题。
Anomaly Detection with PatchCore
通过计算测试图片的图像级别的异常分数
【Dataset】Real 3D-AD(3D点云瑕疵检测)[NIPS 2023]
迄今(2023)为止,高精度3D工业异常检测的最大数据集,此前的数据集都是通过单视图扫描得到的RGBD图像(2.5D)
还提出了Reg3D-AD,基于配准的3D异常检测方法作为,提出了ADBENCH-3D
对比优势:
- MVTec 3D-AD:分辨率不够高,有盲点
- Eyescandies:生成模拟数据集,与真实场景有差距,有盲点
总结:目前异常检测大量数据集都是2D的,3D异常检测数据集2021年首次提出,到目前为止仅有2个数据集,MVTec 3D-AD是之前唯一点云的
点云异常分两类
- 残缺
- 冗余
AD模型的任务:
检测三维点云是否异常,如果有异常则定位异常区域 。
Reg3D-AD【Method】
本质上还是提取特征,并和特征库里的特征进行匹配。
采用双特征表示方法来保留训练原型的局部和全局特征,就是特征中点云坐标【局部】+抽象特征PointMAE【全局】
实现了Coreset采样技术来保持内存库的大小。
在计算anomaly分数之前,需要通过RANSAC算法进行配准
RANSAC:随机抽样一致算法, 从一组包含离群的被观测数据中估算出数学模型的参数,相比最小二乘法,它融合了不合格数据的思想,因此对于有部分错误数据的数据样本,能够更快更准的给出辨识结果。
配准之后,通过point-level特征和全局特征的平均分数计算point-level异常分割。具体来说,有两个memory bank,一个是局部特征库,一个是全局特征库,测试对象的对象级异常分数由这两个库计算出的异常分数求平均值。
局部特征异常分数:测试对象的点级特征与其各自最接近的邻居的最大分数(max-min)
对分数进行重加权方法来调整异常分数
few-shot setting
【改进方向】
训练数据太少,每个类别的原型不超过4个,可以使用增强或生成相关技术优化原型数据的利用,保证所获取的点云数据不受空间相对位置的影响。
测试点云边缘被截断,容易被误检测。
使用2D / 视频方面异常检测的方法,应用到3D点云异常检测。
概率密度估计,模拟分布,Denoising Score Matching。
data-efficiency: the ability to learn from few datapoints, like humans
generalization : robustness
【3D】PointCore: Efficient Unsupervised Point Cloud Anomaly Detector Using Local-Global Features
采用多个特征存储库来保存局部和全局特征,计算复杂度高,特征之间不匹配。
提出了PointCore,只需要一个memory bank来存储局部(坐标)和全局(PointMAE)表示,为这些局部-全局特征分配不同的优先级,减少计算成本和推理中的不匹配干扰。为实现鲁棒性,引入了归一化排序方法,将不同尺度的值调整,将密集分布的数据转换为均匀分布。
在Real3D-AD数据集上是SOTA。
Introduction & Related Works
基于三维点云的异常检测任务,在目前的文献中还相对未被探索。
Reg3D-AD此前已经 将PatchCore的方法从二维图像引入到点云异常检测中,采用双特征表示方法,保留训练原型的局部和全局特征,检测精度高,但是推理速度慢。
目前的点云异常检测方法可以分为两类:
- 基于重建reconstruction的方法,通过自编码器对输入点云进行重构,通过比较原始数据和重建数据之间的偏差来识别异常。但这些方法对点云的分辨率很敏感,导致推理速度很慢,精度也很差。
- 基于内存库memory bank的方法,其中内存库用于存储代表特征,以隐式构建正态分布并查找ood(out-of-distributed)缺陷。直接使用预训练的特征提取器encoder构建记忆库具有较快的训练速度,而不受点云分辨率的影响。但多个特征记忆库来保留局部和全局表示,是以计算复杂度和特征之间的不匹配为代价的。
提出了一种基于局部-全局联合特征的无监督异常检测框架PointCore,贡献为:
- 仅一个memory bank存储局部-全局表示,并为特征分配不同的优先级以减少计算成本和推理的不匹配干扰。
- 提出一种基于排序的归一化方法,消除各种anomaly score之间的分布差异,并应用点到平面迭代最近点ICP算法对点云配准结果进行局部优化。
- 具有竞争力的推理时间和最佳性能。
【CVPR2024】Towards Scalable 3D Anomaly Detection and Localization: A Benchmark via 3D Anomaly Synthesis and A Self-Supervised Learning Network
细粒度几何判别问题。
基于ShapeNet生成了Anomaly-ShapeNet,由40个类别下的1600个点云样本组成。为了实现三维异常定位的可扩展表征学习,我们提出了一种自监督方法:迭代掩码重建网络IMRNet。
在训练过程中,我们提出了一个几何感知的采样模块,以在点云下采样期间保留潜在的可能异常的局部区域。
已经创建的3D异常检测数据集
- MVTecAD-3D【single-pose】
- Real3D-AD【complete point clouds】
- MAD【multi-pose】
点云异常检测领域,主要需要解决两个问题:
- 缺乏多样化的分布数据集
- 需要更有效的基于深度学习的方法。
Real3D-AD在正常和异常样本的多样性以及点大小变化过大方面存在局限性。
Anomaly-ShapeNet包含六种典型的异常类型:凸起、凹陷、孔洞、断裂、弯曲和裂缝。每个样本的点数从8000到30000不等。异常部分占整个点云的1%到10%。
提出了一种基于迭代掩码重建的自监督方法IMRNet,IMRNet包括三个主要组成部分:
- 【几何感知点云采样模块GPS】Geometry-aware Point-Cloud Sampling module
- 【Point-Patch掩码重建网络PMR】Point-Patch Reconstruction network
- 【密集特征链接和比较模块DFC】Dense Feature Concatenate
GPS首先采取关键点,然后以关键点为patch中心使用KNN操作生成patch,再送入PMR。PMR网络对这些point-patch进行掩码重建。重构的normal样本和输入点云一起送入DFC模块。DFC模块将重构的normal样本和输入点云的特征点进行比较(特征空间和点坐标空间),得到异常分数。
Dataset statistics
训练集每个类别4个正常样本,测试集每个类别28到40个样本(正常+异常),样本的点云数从8000到30000个点。与Real3DAD(唯一的3D扫描点云异常检测数据集)相比,提供更广泛的类别多样性。
思路
- 基于重建的方法,对每一个输入的点云,结合流模型,残缺点(补全),冗余点(去噪),重建得到重建点云和原始输入点云进行对比,计算出异常分数,分割出异常区域
- 基于特征库比对的方法,从训练数据(正常样本)中筛选出相互正交的代表特征,在推理的时候,与输入点云特征进行对比。
- 或者找出与输入点云最相近的代表特征,然后两个相结合增强重建出增强点云,和输入点云相对比,结合两种方法。
Geometry-aware Point Cloud Sampling
通常使用的均匀采样或者FPS采样,在涉及到点云异常检测时,可能导致异常结构的模糊表示。GPS通过首先计算点的几何特征来自适应采样点云来解决这个问题。
【ECCV2024】R3D-AD: Reconstruction via Diffusion for 3D Anomaly Detection
基于嵌入和基于重构的方法是最流行和最成功的方法。目前的方法在实际应用中存在两个主要挑战:
- 嵌入式模型由于memory bank结构而遭受令人望而却步的计算和存储。
- 基于MAE机制的重构模型无法检测到未屏蔽区域的异常。
本文提出了利用扩散模型重建异常点云,用于精确的3D异常检测。
- 基于嵌入的方法:将预训练编码器提取的特征映射到正态分布上学习,不在区间内的分布被归类为异常。在训练阶段存储一些代表性特征,以隐式构件特征分布。在测试阶段,计算测试对象与存储在内存中的所有模板点云之间的欧式距离来确定异常的存在。
- 基于重建的方法:训练一个能够准确重建正常点云的网络,异常点云由于不包括在训练过程中而无法有效重建的假设。通过对比输入点云与重建点云的差异,生成异常图。IMRNet为代表,利用PointMAE对输入进行多次迭代重建。
【2D】基于流模型的异常检测
基于流模型的方法使用学习分布和flow的双射特性来发现缺陷。
- Cflow-ad: Real-time unsupervised anomaly detection with localization via conditional normalizing flows. In: WACV (2022)
- Same same but differnet: Semi-supervised defect detection with normalizing flows. In: WACV (2021)
- U-flow: A u-shaped normalizing flow for anomaly detection with unsupervised threshold. arXiv preprint (2022)
- Fastflow: Unsupervised anomaly detection and localization via 2d normalizing flows.
【2D-Flow】Same same but differnet: Semi-supervised defect detection with normalizing flows.
为每张图片分配似然,正常样本-高似然,异常样本-低似然。为实现鲁棒性和灵活性,对一张图片进行变换,分别计算对应的似然。根据似然得到score函数,计算score函数的梯度,可以对异常区域进行定位。
基于自编码器的方法失败,因为它们泛化太强,即异常可以像正常样本一样很好地重建。
通过流模型,将图像提取的特征y映射到latent space z,通过最大化py似然。
image-level anomaly detection
【2D-Flow】CFLOW-AD: Real-Time Unsupervised Anomaly Detection with Localization via Conditional Normalizing Flows
卖点:实时,速度快。
【2D-Flow】【CVPR2023】PyramidFlow: High-Resolution Defect Contrastive Localization using Pyramid Normalizing Flow
语义分割需要有监督学习。
目前的工作可以分为两种类型:
- reconstruction-based:依赖生成模型VAE、GAN将缺陷图像进行编码然后重建出正常图像,通过对比两张图像定位缺陷。这种方法能够在单一纹理图像上表现良好,但是无法推广到非纹理图像。
- anomaly-based的方法:利用神经网络区分正常和异常,提取预训练的特征,使用马氏距离活kNN估计它们的概率密度,较低的概率表示图像补丁的异常位置。但是这种方法定位的缺陷分辨率较低,极大地限制了实际工业应用。
马氏距离:是欧氏距离在多变量分布(Multivariate Distributions)下的加强版,用于测量点与分布之间的距离。
基于预训练的方法依赖于与任务无关的外部先验,这限制了在不可预见场景中的泛化。