CycleGAN的解释和盘算机生成艺术的演示CycleGAN指的是GAN的子集,可以拍摄图像并生成反映某种类型转换的新图像。CycleGANs最酷的部门是您不需要配对图像。这对于您可能没有配对图像的情况很是有用。
例如,如果要将斑马的图片转换为马的图片。除非我猜您是否画过斑马和马匹,否则可能无法收集此类数据……如果有足够的缔造力,它们也将对建立实际上看起来还不错的盘算机生成的艺术品有用!> This figure is taken from the original CycleGAN paper. 在这里,我将概述CycleGAN的事情原理。这篇文章确实假定您至少对GAN有所相识。因此,如果您不熟悉GAN,请检察我的博客文章"面向初学者的生成反抗网络(GENs):生身分散注意力的驾驶员图像"。
在这篇文章中,我使用了一个示例CycleGAN,该示例经由了训练,可以将森林图片转换为森林抽象画。我用于生成这些图像的代码可以在我的GitHub上找到。
数据集在这里,数据集由森林图像和抽象绘画组成。我使用关键字"森林"和"著名的抽象画"从Google图片中抓取了这些图片。
为此,我使用了Python软件包Google Images Download。下面是几个示例。该模型在训练CycleGAN时,需要训练四个神经网络:· 生成抽象绘绘图片的生成器(抽象绘画生成器)。· 生成森林图片的生成器(森林图像生成器)。
· 可以区分真实抽象画与假抽象画的区分符(抽象画区分符)。· 可以区分真实的森林图片和假的森林图片的区此外识别符(森林图像识别符)。如果您已经熟悉GAN,就会发现这里确实没有什么新鲜事物。
这些方面的新颖之处在于如何训练这些网络。模型训练在详细先容之前,让我对CycleGAN的训练方式举行高层概述。
首先,我们获取森林图像,使用抽象绘画生成器建立伪造的抽象绘画,然后获取伪造抽象绘画,然后使用森林图像生成器重新建立原始森林图像。我们还朝另一个偏向拍摄抽象绘画,使用森林图像生成器建立伪森林图像,然后获取伪森林图像,然后使用抽象绘画生成器重新建立原始抽象绘画。
这种巧妙的循环观点是CycleGAN的新颖孝敬,如下图所示。需要注意的是,同一生成器用于生成伪造的抽象绘画和抽象绘画的重建,而同一生成器也用于生成伪造的森林图像和森林图像的重建。> CycleGAN training. This figure is adapted from the original CycleGAN paper. 在下面,您可以看到我们的CycleGAN的实际外观。您可以看到真实的图像,这些图像被生成为伪图像,然后被重建为真实图像。
您可能会注意到,尤其是使用抽象绘画时,工具的结构不会发生猛烈变化。这是CycleGAN的常见现象,可能是由于娱乐步骤所致。对于CycleGAN而言,彻底更改图像然后返回其原始版本可能太多了。
好吧,现在让我们进入细节! 训练模型时,基本上有两个步骤:训练生成器,然后训练判别器。· 训练生成器就像任何神经网络一样,我们需要盘算损失(在这种情况下为生成器),并使用带有反向流传的随机梯度下降(即链式规则)来盘算梯度并针对这些梯度更新权重。
可是我们如何盘算发电机损耗呢? 这种损失实际上由几个差别的部门组成。首先,我们盘算抽象绘画生成器的GAN损耗(在"循环"中,我们在下图的黄色阴影部门中)。这是通过拍摄真实的森林图像并将其通过抽象绘画生成器生成伪造的抽象绘画来完成的。
然后,将伪造的抽象绘画放入抽象绘画判别器中。我们可以将判别器的输出视为图片是真实抽象画的概率。
然后用二元交织熵损失评估判别器的输出。这是抽象的令人痛苦的GAN丢失。> GAN loss for abstract painting generator 其次,我们为森林图像生成器盘算GAN损耗(在循环中,我们位于下图的黄色阴影部门)。
这是通过拍摄一张真实的抽象画并将其放入森林图像生成器以生成伪造的森林图像来完成的。然后将伪造的森林图像放入森林图像判别器中。
我们可以将判别器的输出视为图片是真实森林图像的概率。然后用二元交织熵损失评估判别器的输出。
这就是森林形象的甘损失。> GAN loss for forest image generator 好了,现在我们有了一幅假的抽象画和一幅假的森林图像。如上面的高级概述中所述,我们现在必须获取那些伪造的图像,并将其重建为对应的真实图像。因此,第三,我们接纳伪造的抽象绘画并将其放入森林图像生成器中,以生成原始的真实森林图像(在循环中,我们位于下图的黄色阴影部门)。
我们针对具有L1损失的真实森林图像来评估此重建的森林图像(请注意,此处,L1损失通常会乘以某个常数,因此与其他盘算的损失具有相同的比例)。这是森林图像周期一致性损失。最后,我们获取伪造的森林图像,并将其放入抽象绘画生成器中以生成重构的抽象绘画(在循环中,我们位于下图的黄色阴影部门)。
我们将这种重构的抽象绘画与具有L1损耗的实际抽象绘画举行评估(注意,此处,L1损耗通常乘以某个常数,因此它与其他盘算得出的损耗具有相同的比例)。这就是抽象绘画循环一致性的损失。现在我们险些可以盘算出生成器的损耗了(是的,所有这些事情都是针对一个数字的)。我们还需要盘算另一个损失,即身份映射。
盘算身份映射损失是因为,如下图所示,已显示此步骤可保留原始图像的颜色。首先,我们通过森林图像生成器放置真实森林图像,并盘算真实森林图像和生成的森林图像的L1损失。这是森林映像身份映射丢失(请注意,此丢失也要乘以常量)。
其次,我们对抽象绘画做同样的事情,我们通过抽象绘画生成器放置真正的抽象痛苦。这就是抽象绘画身份映射的损失。
> Figure 9 from the CycleGAN paper. 我们终于可以盘算出生成器损耗了,这是所有损耗的总和:生成器损失=抽象痛苦GAN损失+森林图像GAN损失+森林图像周期一致性损失+抽象绘画周期一致性损失+森林图像身份映射损失+抽象绘画身份映射损失然后就此损失更新生成器的权重!2.训练判别器现在我们已经更新了生成器的权重,接下来我们需要训练判别器。首先,我们更新抽象绘画判别器的权重。我们通过抽象绘画判别器放置一幅真实的抽象绘画,并获取此输出并以二进制交织熵损失对其举行评估。
然后,我们将先前生成的假抽象绘画,通过抽象绘画判别器举行处置惩罚,并用二进制交织熵损失对其举行评估。然后,我们取这两个损失的平均值。
这是抽象画判别器的损失。关于该损失,更新了抽象绘画判别器的权重。
其次,我们更新森林图像判别器的权重。我们通过森林图像判别器放置一个真实的森林图像,并获得此输出并通过二进制交织熵损失对其举行评估。然后,我们将先前生成的假森林图像举行处置惩罚,将其通过森林图像判别器举行处置惩罚,并使用二进制交织熵损失对其举行评估。然后,我们取这两个损失的平均值。
这就是森林图像判别器的损失。关于该损失,更新森林图像判别器的权重。架构到现在为止,我已经提到了这些生成器和判别器的存在,可是我还没有说这些神经网络简直切架构。
固然,这些网络的体系结构有许多选择,可是在这里我将简要提及用于生成森林抽象画的体系结构。这些体系结构的详细信息可以在代码中检察。生成器来自以前用于样式通报和超分辨率的体系结构(请参阅Johnson等)。
网络体系结构基本上由一堆ResNet块组成,这些块对网格巨细举行降采样,保持网格巨细稳定,然后对网格巨细举行升采样。有关架构图,请参见下图。
> Generator architecture from Johnson et al. 对于判别符,我们使用了PatchGAN,它基本上试图对图像的每个N x N色块(此处为70 x 70)是真实的还是假的举行分类。有关PatchGAN的更多详细信息,请参见代码和本文。盘算机生成的森林图像经由一段时间的训练,让我们看看我们的盘算机生成的抽象森林图像的外观! 以下是一些示例,可是您可以在我的GitHub上检察所有示例。
还不错! 我为杜克大学(Duke University)的AI艺术竞赛创作了这些图像,最终获得了第一名-单击此处以获取更多信息。结论正如您在上面看到的,在这种情况下,盘算机确实可以通过CycleGAN来生成艺术品。同样,CycleGAN的真正酷的部门是您不需要数据集中的配对图像。令人惊讶的是,这是可能的! 我很想知道在其他领域,例如自然语言处置惩罚(也许已经存在!)中是否可以举行不成对的机械学习。
*** 2020年1月6日更新***:我忘了早些公布,可是这里展示的艺术在杜克大学AI艺术竞赛中获得了第一名。检察形貌这场角逐的文章!(本文翻译自Zach Monge, PhD的文章《CycleGANs to Create Computer-Generated Art》,参考:https://towardsdatascience.com/cyclegans-to-create-computer-generated-art-161082601709)。
本文关键词:kaiyun,CycleGAN,创作,盘算机,生成,的,艺术品,CycleGAN,的
本文来源:kaiyun-www.shsidhd.com