1.GANomaly
生成网络有三部分loss
-
loss1:原始图像与重构图像间的像素级误差
-
loss2:特征匹配误差
-
loss3:原始图像编码与重构图像编码间的误差
判别网络部分的loss:
self.err_d_real = self.bce_criterion(self.out_d_real, self.label)
self.err_d_fake = self.bce_criterion(self.out_d_fake, self.label)
self.err_d = self.err_d_real + self.err_d_fake
loss采用了一个Bceloss
yi为样本真实标签,xi为预测值
2.GAN的使用
1.GAN的原理
https://www.jianshu.com/p/40feb1aa642a
2.GAN的改进
1)DCGAN
◆ 使用步长卷积代替上采样层,卷积在提取图像特征上具有很好的作用,并且使用卷积代替全连接层。
◆ 生成器G和判别器D中几乎每一层都使用batchnorm层,将特征层的输出归一化到一起,加速了训练,提升了训练的稳定性。(生成器的最后一层和判别器的第一层不加batchnorm)
◆ 在判别器中使用leakrelu激活函数,而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是输出层采用tanh
◆ 使用adam优化器训练,并且学习率最好是0.0002,(我也试过其他学习率,不得不说0.0002是表现最好的了)
2)WGAN
- 判别器最后一层去掉sigmoid
- 生成器和判别器的loss不取log
- 每次更新判别器的参数之后把它们的值截断到不超过一个固定常数c
- 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行
3)WGAN-gp
◆ 提出了一种新的lipschitz连续性限制手法—梯度惩罚,解决了训练梯度消失梯度爆炸的问题。
◆ 比标准WGAN拥有更快的收敛速度,并能生成更高质量的样本
◆ 提供稳定的GAN训练方式,几乎不需要怎么调参,成功训练多种针对图片生成和语言模型的GAN架构
3.GAN的训练技巧
- 将输入图像规范化为-1到1之间
- 生成器最后一层的输出使用tanh函数
- 在GAN论文里人们通常用 min (log 1-D) 这个损失函数来优化G,但在实际训练的时候可以用max log D
- 不要让判别器训练得太好,否则生成器难以优化
原因:https://blog.csdn.net/omnispace/article/details/54942668
集成方法:
图像做差,灰度化,二值化,做一个判断
频域变换,通常都为高频信息
网友评论