【问题标题】:Training GAN on small dataset of images在小型图像数据集上训练 GAN
【发布时间】:2019-01-15 18:04:08
【问题描述】:

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

我已经收集了大约 1200 张图像,几乎不可能再收集更多。我该怎么办?

【问题讨论】:

  • 试试其他的生成模型?可能是arxiv.org/pdf/1706.02071.pdf
  • 这确实很有趣。我会看看 。但我也想知道如何处理这种情况。不管怎样,谢谢你的好论文!
  • 如果我想通了,我会写一篇论文。对小数据集进行深度学习是一个研究问题。您可以尝试一些智能正则化、微调等。顺便说一句,您是否尝试在这 1200 张图像上训练 GAN,但结果并不好?
  • 是的,我已经尝试为这 1200 张图像训练我的 GAN,但结果并不那么令人满意。

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


【解决方案1】:

我们将在接下来的几周内发布一篇关于生成器的随机反卷积的论文,它可以提高此类问题的稳定性和多样性。如果你有兴趣,我现在可以发送一篇论文的当前版本。但总的来说,这个想法很简单:

  1. 构建经典 GAN
  2. 对于生成器的深层(假设其中一半)使用随机反卷积 (sdeconv)
  3. sdeconv 只是一个普通的 deconv 层,但过滤器是从一组过滤器中随机选择的。例如,您的滤波器组形状可以是 (16, 128, 3, 3),其中 16 - 组数,128 - 每个滤波器组的数量,3x3 - 大小。您在每个训练步骤中选择的过滤器集是 [随机统一 0-16, :, :, :]。未选择的过滤器保持未经训练。在 tensorflow 中,您想为不同的图像批量选择不同的过滤器集,并且即使没有要求,tf 也会保留训练变量(我们认为这是一个错误,tf 对所有变量使用最后已知的梯度,即使它们不是在当前动态子图中使用,因此您必须尽可能多地利用变量)。

就是这样。在每个 bank 中有 3 层,sdeconv 为 16 组,实际上您将有 16x16x16 = 4096 种不同内部路由的组合来产生输出。 它对小型数据集有何帮助? - 通常小数据集具有相对较大的“主题”差异,但通常数据集具有一种性质(猫的照片:都是真实的照片,但猫的类型不同)。在这样的数据集中,GAN 很快就崩溃了,但是使用 sdeconv:

  1. 上层法线反卷积层学习如何重建风格“逼真的照片”
  2. Lo​​wer sdevond 学习子分布:“dark cat”、“white cat”、“red cat”等。
  3. 模型可以看作是弱生成器的集合,每个子生成器都很弱并且可能崩溃,但会被另一个暂时优于判别器的子生成器“支持”。

MNIST 是此类数据集的一个很好的例子:“主题”差异很大,但数字风格相同。

GAN+weight norm+prelu(1000步后崩溃,2000年后死亡,只能描述一个“话题”):

GAN+weight norm+prelu+sdeconv,4388个步骤(子主题的局部多样性退化可见,但全局没有塌陷,全局视觉多样性保留):

【讨论】:

  • 有趣!你的意思是卷积或反卷积层的 dropout?
  • 我在问你是否打算在训练期间随机删除一些过滤器。随机 deconv 层听起来像 dropout,但对于 conv/deconv 层。
  • 并非如此。 DO 假设某些东西“退出”,当在 sdeconv 中为特定步骤从库中随机选择的过滤器都处于活动状态时。所以在动态图中没有任何东西被丢弃,只是图在不同的子图之间交替。
  • 这当然是个有趣的话题。我真的很想在你的论文中阅读更多关于它的信息。如果不是太麻烦,你会把它发给我。感谢您的帮助!
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2021-07-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多