在小型图像数据集上训练GAN

时间:2018-02-03 21:01:13

标签: machine-learning neural-network deep-learning

我创建了一个DCGAN并且已经为CIFAR-10数据集训练了它。现在,我想为自定义数据集训练它。

我已经收集了大约1200张图片,实际上不可能聚集更多。我该怎么办?

1 个答案:

答案 0 :(得分:2)

我们将在接下来的一周发表关于发电机的随机解卷积的论文,这可以改善这种问题的稳定性和多样性。如果您有兴趣,我现在可以发送当前版本的论文。但总的来说,这个想法很简单:

  1. 构建经典GAN
  2. 对于发电机的深层(假设其中一半)使用随机解卷积(sdeconv)
  3. sdeconv只是一个普通的deconv层,但是从一组过滤器中随机选择过滤器。因此,您的滤波器组形状可以是,例如,(16,128,3,3),其中16个存储体,128个 - 每个滤波器数量,3x3 - 大小。您在每个训练步骤中选择的过滤器集是[随机统一0-16,:,:,]。未选择的过滤器保持未经过培训。在tensorflow中,您希望为批处理中的不同图像选择不同的过滤器集,并且即使没有要求也保持训练变量(我们认为这是一个错误,tf使用所有变量的最后已知梯度,即使它们不是在当前动态子图中使用,因此您必须尽可能多地利用变量。
  4. 就是这样。在每个库中有3层具有16组的sdeconv,实际上你将有16x16x16 = 4096种不同内部路由的组合来产生输出。 它对小型数据集有何帮助? - 通常小数据集具有相对较大的“主题”方差,但通常数据集具有一种性质(猫的照片:所有都是现实主义照片,但具有不同类型的猫)。在这样的数据集中,GAN非常快速地崩溃,但是使用sdeconv:

    1. 高级正常deconv图层学习如何重建风格“逼真的照片”
    2. 下级sdevond学习子分布:“黑猫”,“白猫”,“红猫”等。
    3. 模型可以看作是弱发电机的集合,每个子发电机都很弱并且可以崩溃,但是会被另一个暂时优于鉴别器的子发电机“支持”。
    4. MNIST是这样一个数据集的一个很好的例子:高“主题”方差,但数字样式相同。

      GAN +体重标准+ prelu(1000步后折叠,2000年后死亡,只能描述一个“主题”):

      GAN +权重范数+ prelu + sdeconv,4388步(可看到子主题的局部品种退化,但全局不会崩溃,保留全局视觉品种):