摘 要: CycleGAN算法能很好地解决在图像未配对的情况下不能完成图像风格转换的问题,并且CycleGAN通过加入循环一致性损失,解决了数据分布捕捉能力不够的問题。实现了基于CycleGAN的图像风格转换算法的Web服务,并基于该Web服务开发了图像风格转换App。结果表明,使用CycleGAN算法可以较好地实现图像风格转换。
关键词: CycleGAN; 图像风格转换; Web服务; 移动应用
《计算机科学与探索》是由中国电子科技集团公司主管、华北计算技术研究所主办的国内外公开发行的计算机学报级高级学术期刊,中国计算机学会会刊。
0 引言
图像风格转换主要是指将图像按照参考的风格图像进行转换,最终得到融合了某种特定的图像风格的目标图像的过程。
在使用神经网络进行图像风格转换前,图像风格转换主要依赖于非参数纹理合成。尽管这种模型有学习纹理转换的能力,但模型不能根据物体的形状进行灵活的融合[1]。与只专注于提取图像局部特征的图像类比方法相比,利用神经网络进行图像风格转换要更复杂,它们通过匹配神经网络训练的早期层的特征映射所得到的格拉姆矩阵统计信息来进行图像风格转换。为了得到更好的转换效果,Duomiln等人[2]实现了允许在预先训练的样式之间进行插值,Huang等人[3]实现了允许实时传输的技术。但即使集成了以上的技术,也只能捕获较低层的纹理信息[4]。
Chunlei Chai等人[5]采用深度神经网络(Deep Neural Networks, DNN)消除了特征提取过程的需要,支持端到端图像学习,实现从原始输入学习然后输出所需图像。由于深度卷积神经网络(Deep Convolutional Neural Networks,DCNNs)在许多计算机视觉任务中表现良好,CNNs也被应用于图像风格转换[6]。但是每一张要生成的图像都需要初始化,并且保持CNN的参数不变,再经过反向传播后得到最终结果,转换效率并不理想。之后使用VGG19并对图像网络进行预训练的结构来进行图像风格转换[7]。
利用基于VGG的网络框架进行风格转换使用了感知损失,感知损失的好处在于将生成问题看作是变换问题,即生成图是从内容图中变化得到的,但是当遇到高分辨率的图像时,图像风格转换的效果不佳。联级优化网络(Cascaded Refinement Network, CRN)的图像合成系统可以实现高分辨率的图像的合成[8],但是它前馈的方法合成的图像过于平滑,真实感欠佳且细节不够清晰。
为了解决图像真实感不够的问题,pix2pix算法[9-10]采用神经网络用作通用图像分析器,可保持原图的真实性,但缺点是训练数据集需要人工标注目标图像或结合裁剪方法对风格转换的内容进行裁剪,并且当训练集图像不配对时pix2pix失效。Ian J. Goodfellow提出了一个通过对抗过程估计生成模型的生成对抗网络(GAN,Generative Adversarial Networks)的框架,但是普通GAN应用于图像风格转换时,对数据分布的捕捉能力不足,且算力消耗巨大。
本文采用一个改进的生成对抗网络CycleGAN[11]解决了pix2pix在没有成对训练数据的情况下不能将图像内容从源数据分布 域(即源域)迁移到目标数据分布域(即目标域)的问题。训练数据不配对的指的是CycleGAN在训练时只需要将源域的图像和目标域的图像作为输入即可,对源域和目标域的图像内容是否匹配并无要求。CycleGAN加入了循环一致性损失限定Loss后使得一对GAN相互循环,获得了比普通GAN更好的数据分布捕捉能力,从而得到了更好的图像风格转换效果。
1 GAN
生成式对抗网络的框架结构主要由生成模型和判别模型组成。生成器和判别器两者通过交替训练互相博弈学习最终产生相当好的输出。生成器和判别器各自提高自己的生成能力和判别能力最终使得生成器能够重现训练数据的分布,如图1所示。
2 CycleGAN
CycleGAN是Jun-Yan Zhu等人于2017年3月份提出的对抗神经网络模型,它本质上是两个镜像对称的GAN构成了一个环形网络。CycleGAN在训练时只需要将源域的图像和目标域的图像作为输入即可,对源域和目标域的图像内容是否是匹配的并无要求。也就是说,CycleGAN能在训练图像不配对的情况下实现不同风格图像之间的相互转换,且可扩展性好及应用更广。CycleGAN的两个镜像对称的GAN共享两个生成器,并各自带一个判别器,即共有两个判别器和两个生成器。一个单向GAN有两个Loss,因而,CycleGAN有四个Loss。CycleGAN总的目标函数为:
如图2所示,该模型通过从域DA获取输入图像,该输入图像被传递到第一个生成器Generator A2B,在这一过程中,来自域DA的待转换的源图像被转换成目标域DB中的图像。这个新生成的图像又被传递到另一个生成器Generator B2A。生成器Generator B2A的任务是将目标域DB中的图像Generated_B转换回原始域DA,这里可以与自动编码器作对比。这个转换回原始域的图像Cyclic_A必须与原始输入图像相似,其意义在于,定义非匹配对数据集中原来不存在的有意义的映射。
3 基于CycleGAN的图像风格转换方法
生成器首先利用卷积神经网络从输入图像中提取特征。将图像压缩成256*256的特征向量后,通过组合图像的不相近特征,将待转换的图像在Discriminator A域中特征向量转换为Discriminator B域中特征向量。转换阶段的神经网络层能够实现在特征向量转换的同时保留原始图像的特征。在编码和转换之后,生成器进入解码阶段,利用反卷积层完成从特征向量中还原出低级特征的任务,最后得到生成图像。
判别器在CycleGAN工作过程中从图像中提取特征,再通过添加产生一维输出的卷积层来确定提取的特征是否属于特定的类别。
通过训练判别器对该风格图像的判别能力以及生成器生成该类风格图像的能力,当两者达到纳什均衡时即生成器和判别器相互优化促进达到两者最优对抗的状态时,认为训练已经达到较为成熟的程度。
以水墨画风格的训练为例,数据集包括500张水墨画和500张风景图。训练过程中,每次从数据集中选取一张水墨画与一张风景图进行一次对应转换训练。每个epoch(训练周期)进行600次迭代。当生成器的参数G与判别器的参数D最后稳定在G=D=0.5左右时,训练过程结束。
4 基于CycleGAN的图像风格转换App的设计与开发
采用Python+PyTorch框架实现基于CycleGAN的图像风格转换Web服务,基于该Web服务采用Android Studio开发了一款Android App,实现了图像风格转换功能。
5 结束语
本文研究了基于CycleGAN的图像风格转换方法,实现了基于CycleGAN的图片风格转换Web服务,并在此基础上设计与开发了图片风格转换App。应用效果表明,该基于CycleGAN的图像风格转换方法能较好的实现不同风格的图像风格转换。
参考文献(References):
[1] David Bau et al.Network dissection:Quantifying interpretability of deepvisual representations[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:6541–6549
[2] Chunlei Chai et al. A one-to-many conditional generative adversarial net-work framework for multiple image-to-image translations[J]. Multimedia Tools and Applications,2018.77(17):22339–22366
[3] Vincent Dumoulin, Jonathon Shlens, and Manjunath Kudlur. A learnedrepresentation for artistic style. Proc. of ICLR2, 2017.