使用CycleGAN和谷歌的QuickDraw数据集创建节日祥龙
今天是大年初一是2021年农历新年的开始。在农历新年里,我们会经常看到五颜六色的舞龙。这里我们使用ML的风格来庆祝我们的新年,我使用CycleGAN生成了带有有趣装饰光斑的龙(如上所示),我将在本文中介绍其实现步骤。也许这些由GAN产生的龙也会带来好运!祝大家“恭喜发财”,在新的一年中幸福快乐。我永远不会错过使用俗气双关语的机会,所以GAN Hay Fat Choy!(粤语)
CycleGAN论文是由Berkeley AI Research的研究人员撰写的,他们也发布了代码,这使得该模型的实现非常容易实现。他们的模型可以使用周期一致的对抗网络实现不成对的图像到图像的转换。在进行论文发布之前工,在应用所需的图像转换时,图像到图像的转换需要成对图像的大型数据集。例如,要创建夏季到冬季的照片翻译,您需要在冬季和夏季拥有完全相同图像的大型数据集。但是使用CycleGAN,您只需要夏季风景的数据集A和冬季风景的数据集B,该模型可以学习图像转换,这是非常令人惊叹的创作!
实现CycleGAN
要测试CycleGAN,需要的是图像的数据集a和数据集B,以及一些计算能力。我这个项目的目标是创造节日的龙,用红色、金色和绿色祥龙,就像这只春节的龙。所以,我需要一个龙的数据集a和一个彩色的,响亮的耀斑的数据集B。
根据作者的说法,一个200到1000张图片的数据集应该足够让CycleGAN训练,尽管如果你不介意长时间的训练,越多越好。对于龙族,我使用了谷歌的QuickDraw数据集,它包含了来自他们主办的绘图游戏的众包草图。给定一个单词,玩家必须在20秒内画出它。他们已将所有产生的图形作为开放数据集发布。我是QuickDraw的忠实拥护者,因为它使我们能够窥视世界上不同概念的集体视觉表示。时间限制迫使我们专注于仅包括在视觉上描述给定单词的最重要的细节,从而留出时间来仅绘制概念的实质。翻看许多龙的图画,我始终看到翅膀,爬行动物的尾巴和喷火的气息,我想这是龙的本质。在短短20秒内完成的一些龙形画使我印象深刻。对于我的数据,我为数据集A收集了大约450个龙素描。然后,对于数据集B,我创建了一个包含450个随机形状和填充的数据集-如果愿意,可以使用随机光斑。我在下图中说明了CycleGAN如何使用我的数据集来高级学习图像转换
克隆作者的Github之后,需要在数据集下创建一个文件夹。在该文件夹中,创建“ trainA”,“ trainB”,“ testA”和“ testB”文件夹以容纳您的数据。数据放置到位后,您可以运行以下代码行,根据需要修改数据集位置和模型名称,以开始训练模型.
python train.py --dataroot ./datasets/sketch2festivedragon --name cycle_gan_dragon_rg --model cycle_gan
在NVIDIA GeForce RTX 3090上,批处理大小为1(默认设置),该模型使用约10GB的GPU内存,并在4个多小时内完成了训练(200个轮次)。如果您使用作者的代码,我强烈建议您遵循他们的训练技巧,并运行以下命令以在本地图形Web服务器上启动实时训练可视化。
python -m visdom.server
众所周知,训练GAN十分困难,因为损失图很难解释,也不一定与期望的结果保持一致。相反,将结果可视化非常重要,以便跟踪实现所需图像转换的进度。如果您经常进行测试,您甚至可能会在几个不同的时期看到许多效果不错的实例。默认情况下,代码每5个时间段保存一次模型的权重。训练后,您可以使用任何这些检查点权重返回并测试模型的输出。您所要做的就是运行以下代码行,并修改数据集的位置,模型的名称和轮次。测试图像将保存在结果文件夹中。
python test.py --dataroot ./datasets/sketch2festivedragon --name cycle_gan_dragon_rg --model cycle_gan --epoch 35
观察每轮次的测试输出,我发现在整个训练过程中都有可爱的装饰龙。在我寻找艺术耀斑的时候,龙与耀斑数据集完全相似并不重要。训练快要结束时,龙开始显得太扭曲了,这在模型试图扭曲输入数据以匹配耀斑数据集时是有道理的。我整理了一些收藏,将它们显示在本文开头的图像中,经过几轮训练时表现得不同效果。我特别喜欢在第35轮次前后生成的龙,其中模型的变形为龙的草图增加了炽烈而细腻的色彩飞溅。以下是35轮的一些示例。
网络对如何将随机的彩色形状扭曲为输入图像以形成类似龙的图形的印象也给我留下了深刻的印象。以下是训练结束时网络绘制的一些龙头样本。
今年是牛年,因此我们也要生成一些喜庆的牛,。我收集了约170张类似牛的QuickDraw牛图,并重复了上述步骤,以便在这个新的迷你数据集上训练CycleGAN。训练在大约一个小时40分钟内完成。以下是一些我最喜欢的示例输出。
只是为了好玩,我们龙数据集上训练的模型在牛绘图输入上的表现。以下是使用35轮龙和牛的示例-喷火🐲+🐂
感谢您的阅读,再次感谢,最后祝大家“牛”气冲天! 犇
作者:Tina Tang
原文地址:https://towardsdatascience.com/celebrating-chinese-new-year-with-cyclegan-d200ab235808
deephub翻译组