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

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

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


回答:

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

  1. 构建一个经典的GAN
  2. 对于生成器的深层(比如说一半的层)使用随机反卷积(sdeconv)
  3. sdeconv只是一个普通的反卷积层,但过滤器会在训练过程中从一组过滤器中随机选择。例如,你的过滤器库形状可以是(16, 128, 3, 3),其中16是过滤器库的数量,128是每个库中的过滤器数量,3×3是尺寸。在每次训练步骤中,你的过滤器集选择是[random uniform 0-16, :, :, :]。未选择的过滤器保持未训练。在TensorFlow中,你还希望为批次中的不同图像选择不同的过滤器集,因为即使未请求,TensorFlow也会保持训练变量(我们认为这是一个错误,TensorFlow对所有变量使用最后已知的梯度,即使它们在当前动态子图中未被使用,因此你需要尽可能多地利用变量)。

就是这样。在每个库中有16个集合的3层sdeconv,实际上你将有16x16x16 = 4096种不同的内部路径组合来生成输出。这对小数据集有什么帮助?- 通常小数据集具有相对较大的“主题”变化,但数据集总体上是同一性质的(例如猫的照片:都是真实的照片,但有不同类型的猫)。在这样的数据集中,GAN会很快崩溃,但是使用sdeconv:

  1. 上层的普通反卷积层学习如何重建“真实照片”的风格
  2. 下层的sdeconv学习子分布:“黑猫”、“白猫”、“红猫”等等
  3. 模型可以被视为弱生成器的集合,每个子生成器都很弱,可能会崩溃,但会被暂时超过判别器的另一个子生成器“支持”。

MNIST是这种数据集的一个很好的例子:高“主题”变化,但数字的风格相同。

GAN+权重归一化+prelu(在1000步后崩溃,2000步后死亡,只能描述一个“主题”):

GAN+权重归一化+prelu+sdeconv,4388步(可以看到子主题的局部多样性退化,但并未全局崩溃,全局视觉多样性得以保留):

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注