异常检测(无监督,生成模型)—DRÆM – A discriminatively trained reconstruction embedding for surfaceanomaly detect

论文:arxiv.org/pdf/2108.07610v2.pdf

代码:GitHub - VitjanZ/DRAEM

注:因为模型分为重构模块和判别模块,比较大,测试时将batch_size设为1cuda内存都不够,在测试代码中加 with torch.no_grad(): 即可


生成模型方法的常见缺点:

      它们只从没有异常的数据中学习模型,并且没有明确地针对判别异常检测进行优化,因为在训练时没有可用的异常样本。合成异常可以被认为是训练有区别的分割方法,但这会导致过度拟合合成外观,并导致学习的决策边界难以推广到真实异常。


异常检测(无监督,生成模型)—DRÆM – A discriminatively trained reconstruction embedding for surfaceanomaly detect_第1张图片

网络三大模块:异常生成模块,重构模块,判别模块 

1.异常生成模块:

产生随机的柏林噪声(通过随机均匀采样的阈值二值化后生成),从另外的数据集dtd中扣取噪声所在位置的像素,将他嵌入到正常样本中,生成异常样本

2.重构模块:

        将合成的异常图像输入重构网络中,网络输出的是正常图像,此网络主要利用异常区域周围正常的像素来推断出异常位置的正常像素。将输出的正常图像和原本的正常图像求MSE损失和SSIM损失 

        重构模块结构:编码器解码器结构,类似于u_net,但是中间没有横向连接

        编码器:经过五个块(每个块包含两套卷积,归一化层,激活函数)        

        解码器:经过四个块(每个块包含一个上采样,三套卷积,归一化层,激活函数),再经过 

                       一层卷积

3.判别模块(U_Net结构)

      将重构模块生成的正常图像与异常生成模块合成的异常图像拼接起来,送入判别网络中,得到分割结果


参考:DRAEM【异常检测:Reconstruction-based】_太简单了的博客-CSDN博客

你可能感兴趣的:(论文粗读,embedding)