GANomaly复现总结

文章目录

  • GANomaly复现总结
    • GANomaly介绍
    • 实验结果
    • 代码

GANomaly复现总结

继上次复现了AnoGAN,接着复现GANomaly。
本文适合有一定GAN的相关基础的读者阅读。

GANomaly介绍

贴上原论文中的图:
GANomaly复现总结_第1张图片

  • 生成器由编码器1–>解码器1–>编码器2这样的结构构成;判别器就是普通的判别器。
  • 生成器的损失函数由三部分构成:编码器1得到的隐变量和编码器2得到的隐变量的均方误差;解码器1得到的生成图像与原图像的1范数误差;真实图像在判别器中的隐含层的输出与生成图像在判别器中的隐含层的输出的均方误差。把这三个误差分别按照一定的权重相加就得到总误差。
  • 判别器的损失函数就是经典GAN使用的交叉熵。
  • 内部结构使用DCGAN的结构。
  • 初读完论文我最大的疑问是:生成器的三个误差是分别进行优化,然后分别更新网络参数呢?还是一起进行优化,同时更新网络参数。看了一些github上的代码,他们都是把编码器1–>解码器1–>编码器2整体看作生成器,然后对总体的损失函数进行优化,同时更新编码器1,解码器1,编码器2这三个部分的参数。

实验结果

  • 我在MvTec数据集中的grid上进行仿真。训练时,把训练样本缩小至128*128,然后把图片随机分割为64*64,用于数据增强。最终一共得到13200个64*64的训练样本。测试时,同样把测试样本缩小至128*128,然后每个测试样本分为4个64*64的字块,进行重构。

  • 参数设置:Adam;lr=0.0001;b1=0.5;b2=0.999;隐变量维度100;batchsize=132;epoch=50(其实30左右就差不多)详细见代码

  • 结果
    左(原图)中(重构图像)右(残差)

  • GANomaly复现总结_第2张图片
    残差热力图
    GANomaly复现总结_第3张图片
    残差真值
    GANomaly复现总结_第4张图片
    左(原图)中(重构图像)右(残差)
    GANomaly复现总结_第5张图片
    残差热力图
    GANomaly复现总结_第6张图片
    残差真值
    GANomaly复现总结_第7张图片
    ROC
    GANomaly复现总结_第8张图片

  • auc: 0.9039264828738514

  • best_accuracy: 0.8717948717948718

  • best_thre: 0.1464714982744258

  • best_F1_score: 0.9256198347107438

  • 总体来看,重构效果要比之前的AnoGAN好很多,不过很明显,GANomaly对于检测铁丝网的扭曲这种异常不是很在行。但是很大的一个问题在于,GANomaly使用了自编码器的结构。由于自编码器本身的重构效果就很好,所以很难界定对抗训练究竟在这个模型中起到了多大的作用。

代码

https://github.com/qqsuhao/GANomaly-MvTec-grid

你可能感兴趣的:(GAN,深度学习,计算机视觉,GAN)