文章目录
skip-GANomaly复现总结
介绍
skip-GANomaly结合了UNet和GANomaly这两种模型,使用了skip-connection的网络结构。如下图所示
- skip-GANomaly由一个自编码器和判别器组成。也可以把自编码器的部分看作是一个生成器。编码器与解码器之间有skip-connection连接。
- 生成器通过三个损失函数按照一定的权重相加得到的总损失函数进行优化。这三个损失函数分别为:原图像和生成图像的重构误差;生成器生成的图像经过判别器判别得到的交叉熵(也可以称作对抗损失);生成图像与真实图像经过判别器隐含层的输出的均方误差。
- 判别器通过真实图像与生成图像的交叉熵进行优化(经典的GAN的优化方法)
实验结果
- 数据集:MvTec-grid;将训练数据缩小至128*128并进行随机分割,分割大小为64*64小图片;扩增后的训练数据一共有13200个
- 参数设置:Adam;lr=0.002;opech=50,batchSize=132;其他参数见代码
- 结果
左(原始图像);中(重构图像);右(残差)
残差真值
残差热力图
左(原始图像);中(重构图像);右(残差)
残差真值
残差热力图
- ac: 0.9423558897243107
- best_accuracy: 0.9358974358974359
- best_thre: 0.18796310469498784
- best_F1_score: 0.9661016949152543
- 从测试结果来看,对于铁丝网扭曲的这种类型的缺陷,检测效果不是很好;但是对于有异物出现在网格上的这种缺陷,检测效果还是比较好的。
总结
谈谈我对于skip-GANomaly的看法
- 优点:
- 加入了skip-connections确实提高了重构效果。
- skip-GANomaly的生成器是image-to-image的,生成器中全部使用的是卷积层或者反卷积层,没有用到全连接层。这样带来一点好处就是生成器的输入不受图像大小的约束。
- 缺点:
- 我在仿真的时候按照论文中的设置,给自编码器的每一层都加上了skip-connection,结果导致在测试样本上的重构效果太好,以至于连缺陷都重构出来。skip-connection太多会导致模型过拟合,输入和输出直接划等号。经过调参,最终保留最下边一层的skip-connection。即使是这样,仍然会把缺陷部分轻微地重构出来。
- 我一直觉得skip-GANomaly和GANomaly都已经不能再称之为GAN。因为模型中作出主要贡献的实际上是自编码器。自编码器使用精确的一对一的均方误差来衡量生成图像与原始图像的差距;而GAN使用我们神经网络以一种我们也不清楚的方式来衡量生成图像与原始图像的差距。skip-GANomaly和GANomaly将两种衡量方式以很直观的方式结合到一起,这就会导致说不清楚这两种方式究竟谁在起主导作用。不过论文中的实验参数以及我自己的调参结果说明:是自编码器在起主导作用
最后的感想
数据集很理想,尽管有旋转,有位移,有光照变换,但是想要真正实际情况中让模型起到作用还有很长一段路要走。
代码
https://github.com/qqsuhao/skip-GANomaly-MvTec-grid