[ECCV2024]GLAD Towards Better Reconstruction with Global and Local Adaptive Diffusion Models for Unsupervised Anomaly Detection
在工业异常检测任务中,引入并改进扩散模型,通过重建比较实现异常检测。
Background
异常检测(anomaly detection,AD)旨在检测和定位工业产品物体的异常模式,然而:
- 在某些情况下,为所有异常类型收集足够的异常样本具有挑战性。
- 由于产品设计和生产流程不断变化,不可能提前收集所有异常。
无监督异常检测 (un-supervised anomaly detection,UAD) 仅需正常样本,因此在异常检测任务中是一种更常用的设置。
Related works
基于嵌入(embedding-based)的方法:提取图像特征来评估异常。
- 基于知识蒸馏的方法:用正常样本训练学生网络,将预训练的教师网络的特征与学生网络的特征进行比较,以检测和定位异常。
- PaDiM 为正常样本的patch特征建立多元高斯分布,并使用马氏距离作为指标计算异常分数。
- PatchCore 提出了使用memory bank来保存正常图像的特征,并将其与测试图像的特征图进行比较,以区分正常特征和异常特征之间的差异。
基于重建(reconstruction-based)的方法:通过给定样本与其正常样本之间的比较来检测和定位。
这类方法基于假设:在正常样本上训练的模型只能重建正常图像。因此可以通过比较重建前后的样本来检测异常。早期使用的网络架构为AE,最近几年还有GAN、Transformer、diffusion models、UNet架构等。
Motivation
扩散模型具有突出的建模能力。在训练过程中,由于仅使用正常样本,扩散模型只捕捉正常样本的分布。然而使用同样的去噪步骤数并不合理,
首先有不同的样本,每种样本有不同的缺陷,导致需要的去噪数不同;此外过度得去噪会破坏原始正常细节。如下图,第一行表示确实主体的异常,第二行表示划痕异常。可看到小的划痕异常仅需要300 steps去噪就能生成合适的结果;缺失异常需要900 steps才比较合适,但900 steps,对于划痕异常会导致部分细节的缺失。
此外,异常样本中的噪声不可避免大概率不属于标准的高斯分布。
Method
作者针对motivation,提出3点改进。
推理阶段:
- 自适应去噪步数(Adaptive Denoising Step,ADS):自动调整去噪步数,实现重构质量和细节保留的平衡。
- 空间自适应特征融合(Spatial-Adaptive Feature Fusion,SAFF):给非异常的部分加上掩码,避免对正常样本的过度重构。
训练阶段:
- 面向异常的训练范式(Anomaly-oriented Training Paradigm,ATP):调整损失函数,允许噪声预测非高斯噪声。
Preliminary
扩散过程可以表示为:
\(\epsilon\)表示随机高斯噪声,\(\bar{\alpha}\)表示噪声衰减权重,\(\bar{\alpha}=\prod_{i=1}^t\alpha_i\), \(t\)表示步数。
中间结果表示为:
\(\epsilon_{\theta}\)为预训练的模型,用于预测添加的噪声。
生成过程表示为:
形式上,生成过程与扩散过程很像,等式右边两项可以理解为,第一项表示去噪后恢复的部分,第二项表示通过预测的噪声进行调整。
用\(\boldsymbol{x}\)表示正常产品,\(\boldsymbol{x}^a\)表示对应的异常样本,通过扩散、生成过程重建异常样本:\(\boldsymbol{x}^a\xrightarrow{diff}\boldsymbol{x}_t^a\xrightarrow{gen}\hat{\boldsymbol{x}}^a\),理想情况下希望它们的误差\(\|\hat{\boldsymbol{x}}^{a}-\boldsymbol{x}\|_{\infty}<\tau\),其中\(\tau\)表示手动设置的阈值。这样就可以通过比较\(\boldsymbol{x}^a\)和\(\hat{\boldsymbol{x}}^a\)差异来检测和定位异常。
可以认为\(\hat{\boldsymbol{x}}=\boldsymbol{x}+\boldsymbol{n}\),代入Eq. 1:
重建后与正常样本的误差表示为:
误差与\(\sqrt{1-\bar{\alpha}_t}(\epsilon^a-\epsilon)+\sqrt{\bar{\alpha}_t}\boldsymbol{n}\)正相关,因此我们希望于减少这一项的结果。
Adaptive Denoising Steps (ADS)
\(\boldsymbol{x}^a\xrightarrow{add\ T\ steps\ noise}\boldsymbol{x}^a_T\xrightarrow{generate}\hat{\boldsymbol{x}}^a_t\xrightarrow{Eq. 2}\hat{\boldsymbol{x}}^a_{t\rightarrow0}\)
\(\boldsymbol{x}^a\xrightarrow{add\ t\ steps\ noise}\boldsymbol{x}^a_t\xrightarrow{Eq. 2}\boldsymbol{x}^a_{t\rightarrow0}\)
作者认为,\(\boldsymbol{x}^a_t\)保留了一定的异常信息,因此可以比较\(\hat{\boldsymbol{x}}^a_{t\rightarrow0}\)和\(\boldsymbol{x}^a_{t\rightarrow0}\)的异常分数(异常分数稍后介绍)之差,如果它们见的差值小于阈值,说明\(\hat{\boldsymbol{x}}^a_{t\rightarrow0}\)还保留了一些噪声,因此需要继续去噪,反之则去噪结束。这样保证异常能被重建,正常的区域能保留。
Spatial-Adaptive Feature Fusion (SAFF)
作者认为重建整张图并不合理,因为只有异常区域需要大量去噪步骤,因此引入了掩码\(\boldsymbol{m}\),掩码的值表示像素是异常部分的概率。
文中并没有直接给出\(\boldsymbol{m}\)的计算,但根据图可知,应该是根据异常分数得到的。
代入Eq. 1得到:
Anomaly-oriented Training Paradigm (ATP)
回顾下Eq. 5,简化下:
其中\(\epsilon,\ \bar{\alpha},\ \boldsymbol{n}\)都是给定的,因此交换下位置
对于一般的扩散模型仅使用正常样本训练,所有噪声服从高斯分布,因此为了让模型能预测高斯分布外的噪声,对损失进行改进:
如果样本是正常的,那么\(L_{ATP}\)会退化到原始的扩散模型损失。相较于原始的损失函数,它多了个\(\boldsymbol{x}^a\),为了保持无监督的设置,作者使用MemSeg将异常样本与正常样本合成,使训练能够以无监督的方式进行。
然而这种做法依然不能保证模型能预测高斯分布之外的噪声,特别是异常样本本身的噪声。
Anomaly Scoring and Map Construction
前面的步骤,都是为了对异常样本重建生成正常样本,关于特征的提取,作者使用一个预训练的DINO,测试样本特征表示为\(F_t\in\mathbb{R}^{c\times u\times v}\),重建样本的特征为\(F_r\in\mathbb{R}^{c\times u\times v}\)
计算模型\(l\)层的\(F_t,\ F_r\)的余弦相似度:
\((i,j)\)表示矩阵上的每个分量。多层结果相加得到最后的异常map:
关于异常分数的定义:\(M\)的前\(K\)个最大值的平均值。
实验
使用预先训练的潜在扩散模型 (Latent Diffusion Model,LDM)并对 UNet 进行微调以适应数据进行重建。采用 ViT-B/8 架构的DINO用作特征提取模型
消融实验:
直接看可视化实验
相较于其他方法,作者的方法重建得更好,因此能更准确的定位异常。
对比固定去噪步长,ADS确保异常重建并尽可能多地保留有关正常区域的信息。
Reference
- Yao, Hang, et al. "Glad: Towards better reconstruction with global and local adaptive diffusion models for unsupervised anomaly detection." European Conference on Computer Vision. Springer, Cham, 2025.