工商注册网站模板,福鼎建设局网站,站长工具是做什么的,兼职做平面模特网站DiAD: A Diffusion-based Framework for Multi-class Anomaly Detection 1、Background
当前主流的三种异常检测方法#xff1a;
基于合成的方法#xff1a;在正常图像上合成异常#xff0c;通过训练模型识别这些合成的异常来提高检测和定位能力。基于嵌入的方法#xff… DiAD: A Diffusion-based Framework for Multi-class Anomaly Detection 1、Background
当前主流的三种异常检测方法
基于合成的方法在正常图像上合成异常通过训练模型识别这些合成的异常来提高检测和定位能力。基于嵌入的方法将图像信息编码到特征空间中使用预训练的网络提取特征并计算特征的相似性作为异常分数。基于重建的方法训练模型在正常数据集上学习模式和特征然后在测试阶段重建异常图像通过比较重建图像和输入图像来定位异常。
最近扩散模型展示了它们强大的图像生成能力。然而直接使用当前主流的扩散模型无法有效解决多类别异常检测问题。 1对于图1a中的去噪扩散概率模型DDPMHo、Jain和Abbeel2020年在执行多类别设置时这种方法可能会遇到生成图像类别错误分类的问题。原因是在向输入图像添加T个时间步的噪声后图像失去了其原始类别信息。在推理过程中基于这种高斯噪声类分布进行去噪可能会生成属于不同类别的样本。
2潜在扩散模型LDMRombach等人2022年具有作为类别条件的嵌入器如图1-b所示它不存在DDPM中发现的类别错误分类问题。然而LDM仍然无法解决生成图像中语义信息丢失的问题。LDM无法同时保留输入图像的语义信息和重建异常区域。例如它们可能无法在螺丝和榛子等对象的方向上保持与输入图像的一致性并且在纹理类别图像上与原始图像有显著差异。
为了解决上述问题我们提出了一个基于扩散的框架DiAD用于多类别异常检测和定位如图2所示包括三个组件像素空间自动编码器、潜在空间去噪网络和特征空间ImageNet预训练模型。
为了在重建异常区域的同时有效地保持与原始图像一致的语义信息我们提出了与稳定扩散SD去噪网络在LDM中连接的语义引导SG网络。
为了进一步提高保留原始图像细节和重建大规模缺陷的能力我们提出了空间感知特征融合SFF块以整合不同尺度的特征。
最后通过预训练的模型传递重建和输入图像以提取不同尺度的特征并计算异常分数。
supplements
去噪扩散概率模型Denoising Diffusion Probabilistic Model, DDPM、潜在扩散模型Latent Diffusion Model, LDMDiAD框架区别 去噪扩散概率模型DDPM 包含两个过程正向扩散过程和逆向去噪过程。正向扩散过程通过逐步添加高斯噪声来生成噪声样本。逆向去噪过程从添加了噪声的样本开始通过模型预测的噪声分布来重建原始数据。模型通过最小化预测噪声和实际噪声之间的差异来训练。 潜在扩散模型LDM 专注于低维潜在空间并引入条件机制。由预训练的自动编码器模型和去噪U-Net网络组成后者基于注意力机制。在潜在表示空间中进行扩散和去噪操作然后通过解码器重建图像。训练目标是最小化预测噪声和实际噪声之间的差异同时考虑条件机制如文本或图像。 DiAD框架的方法 使用预训练的编码器将输入图像编码为潜在空间表示。向潜在表示中添加噪声然后使用与SG网络连接的SD去噪网络进行去噪处理。去噪过程重复与扩散过程相同的时间步。重建的潜在表示通过预训练的解码器恢复到原始图像水平。在异常检测和定位方面输入和重建图像被送入同一个预训练模型以提取不同尺度的特征并计算特征差异。
2、Method
DiAD框架通过结合像素空间的自动编码器、潜在空间的语义引导网络和特征空间的预训练特征提取器实现了对异常区域的有效重建和检测。SFF块的引入进一步提高了模型在不同尺度上的特征融合能力从而提高了异常检测的准确性。 DiAD框架的设计 DiAD框架的组成 像素空间自动编码器用于将输入图像编码和解码。潜在空间语义引导SG网络与稳定扩散SD去噪网络相连用于重建异常区域并保留原始图像的语义信息。特征空间预训练特征提取器用于从输入和重建图像中提取特征并生成异常图。 SG网络的设计 为了解决多类别异常检测中的问题SG网络被提出以改善LDM在重建异常区域时保留输入图像语义信息的能力。输入图像首先被编码为潜在空间表示然后通过添加噪声进行正向扩散过程。在逆向去噪过程中SG网络和SD去噪网络共同工作以重建图像并恢复其原始结构。 空间感知特征融合SFF块 为了同时保留原始样本的正常信息和重建大规模异常区域提出了SFF块。SFF块通过整合不同尺度的特征来增强模型在不同场景下的重建能力无论是细节纹理还是大面积缺陷。 异常检测和定位 在推理阶段通过扩散和去噪过程获得重建图像。使用预训练的特征提取器从输入图像和重建图像中提取特征并计算不同尺度特征图上的差异以生成异常图。通过计算特征图之间的余弦相似性来得到异常分数从而实现异常检测和定位。
pseudo-code
import torch
import torch.nn as nn
from torchvision import models# 假设我们有一个预训练的自动编码器它由编码器E和解码器D组成
class AutoEncoder(nn.Module):def __init__(self):super(AutoEncoder, self).__init__()self.encoder ...self.decoder ...def forward(self, x):encoded self.encoder(x)decoded self.decoder(encoded)return decoded# 假设我们有一个预训练的特征提取器
class FeatureExtractor(nn.Module):def __init__(self):super(FeatureExtractor, self).__init__()# 通常使用预训练的模型如ResNetself.model models.resnet50(pretrainedTrue)# 冻结所有层只使用特征提取部分for param in self.model.parameters():param.requires_grad Falsedef forward(self, x):return self.model(x)# 假设我们有一个语义引导网络SG和稳定扩散网络SD
class SGNetwork(nn.Module):def __init__(self):super(SGNetwork, self).__init__()# 定义SG网络的结构...def forward(self, z):# SG网络的前向传播...class SDNetwork(nn.Module):def __init__(self):super(SDNetwork, self).__init__()# 定义SD网络的结构...def forward(self, z_noisy):# SD网络的前向传播...# 异常检测的主要流程
def anomaly_detection(input_image):# 步骤1: 使用自动编码器的编码器部分将输入图像编码为潜在表示latent_representation autoencoder.encoder(input_image)# 步骤2: 使用SG网络和SD网络重建潜在表示reconstructed_latent sg_network(latent_representation)reconstructed_latent sd_network(reconstructed_latent)# 步骤3: 使用自动编码器的解码器部分重建图像reconstructed_image autoencoder.decoder(reconstructed_latent)# 步骤4: 使用预训练的特征提取器提取输入图像和重建图像的特征features_input feature_extractor(input_image)features_reconstructed feature_extractor(reconstructed_image)# 步骤5: 计算特征之间的差异得到异常分数anomaly_score calculate_anomaly_score(features_input, features_reconstructed)return anomaly_score# 辅助函数计算异常分数
def calculate_anomaly_score(features_input, features_reconstructed):# 这里简化为使用余弦相似度作为异常分数的计算方式anomaly_score 1 - nn.CosineSimilarity(dim1)(features_input, features_reconstructed)return anomaly_score# 初始化模型
autoencoder AutoEncoder()
feature_extractor FeatureExtractor()
sg_network SGNetwork()
sd_network SDNetwork()# 假设input_image是已经预处理的输入图像张量
input_image ...# 执行异常检测
anomaly_score anomaly_detection(input_image)3、Experiments
。。。 4、Conclusion
提出了一个新颖的基于扩散的框架DiAD用于多类别异常检测首先解决了现有扩散方法的去噪网络无法正确重建异常的问题。构建了一个连接到SD去噪网络的SG网络以保持一致的语义信息并重建异常。提出了一个SFF块整合不同尺度的特征进一步提高异常重建能力。