Data-efficient GANs with Adaptive Discriminator Augmentation
引言
GAN
生成对抗网络 (GAN) 是一类流行的生成深度学习模型,通常用于图像生成。它们由一对博弈神经网络组成,称为鉴别器和生成器。鉴别器的任务是区分真实图像和生成(假)图像,而生成器网络试图通过生成越来越逼真的图像来欺骗鉴别器。然而,如果生成器太容易或太难被愚弄,它可能无法为生成器提供有用的学习信号,因此训练 GAN 通常被认为是一项艰巨的任务。
GANS 的数据增强
数据增强是深度学习中的一种流行技术,它是对输入数据随机应用语义保持转换以生成多个真实版本的过程,从而有效地增加可用的训练数据量。最简单的例子是左右翻转图像,在生成第二个唯一训练样本的同时保留其内容。数据增强通常用于监督学习,以防止过度拟合并增强泛化能力。
StyleGAN2-ADA的作者表明,判别器过度拟合可能是 GAN 中的一个问题,尤其是在只有少量训练数据可用的情况下。他们提出了自适应鉴别器增强来缓解这个问题。
然而,将数据增强应用于 GAN 并不简单。由于生成器使用鉴别器的梯度进行更新,如果生成的图像被增强,则增强管道必须是可微的,并且还必须与 GPU 兼容以提高计算效率。幸运的是,Keras 图像增强层满足了这两个要求,因此非常适合这项任务。
可逆数据增强 (Invertible data augmentation)
在生成模型中使用数据增强时可能遇到的困难是“泄漏增强”问题,即当模型生成已经增强的图像时。这意味着它无法将增强与底层数据分布分开,这可能是由使用不可逆数据转换引起的。例如,如果以相等的概率执行 0、90、180 或 270 度旋转,则无法推断图像的原始方向,并且该信息被破坏。
使数据增强可逆的一个简单技巧是仅以一定的概率应用它们。这样,原始版本的图像会更常见,并且可以推断出数据分布。通过适当地选择这个概率,人们可以有效地规范鉴别器而不会使增强泄漏。
Official tutorial:
项目地址 (直接运行会出现数据集方面的问题,较难解决)
算法复现 (修正数据集问题)
Although the official Keras tutorial is very detailed, there will be a download error of tensorflow_data when I run the relevant program. This situation is very distressing. So I clicked the download link of the raw caltech_birds2011 dataset and customized the dataset processing file cub_data_processor.py.
1. Data preprocessing
Download the CUB_200_2011.tgz file and move it to the current project directory.
Then unzip it as follows.
tar -zxvf CUB_200_2011.tgz
2. Run the training program
Run the training program as follows.
python gan_ada.py
项目链接
可用项目地址 (已修正)
评论区