互联网技术 / 互联网资讯 · 2024年4月10日

CycleGAN的图像处理工具

CycleGAN生成对抗网络图像处理工具 1. GAN简介

此GAN饭人非彼干饭人。本文要讲的GAN是Goodfellow2014提出的生成产生对抗模型,即GeneRative AdveRsaRial Nets。那么GAN到底有什么神奇的地方?

常规的深度学习任务如图像分类,目标检测以及语义分割或者实例分割,这些任务的结果都可以归结为预测。图像分类是预测单一的类别,目标检测是预测bbox和类别,语义分割或者实例分割是预测每个像素的类别。而GAN是生成一个新的东西如一个图片。

GAN的原理用一句话来说明:

 通过对抗的方式,去学习数据分布的生成式模型。GAN是无监督的过程,能够捕捉数据集的分布,以便于可以从随机噪声中生成同样分布的数据

GAN的组成:判别式模型和生成式模型的左右手博弈

 D判别式模型:学习真假边界,判断数据是真的还是假的  G生成式模型:学习数据分布并生成数据

CycleGAN生成对抗网络图像处理工具

GAN经典的loSS如下(MinMax体现的就是对抗)

CycleGAN生成对抗网络图像处理工具

2. 实战cycleGAN 风格转换

了解了GAN的作用,来体验的GAN的神奇效果。这里以cycleGAN为例子来实现图像的风格转换。所谓的风格转换就是改变原始图片的风格,如下图左边是原图,中间是风格图(梵高画),生成后是右边的具有梵高风格的原图,可以看到总体上生成后的图保留大部分原图的内容。

CycleGAN生成对抗网络图像处理工具

2.1 cycleGAN简介

cycleGAN本质上和GAN是一样的,是学习数据集中潜在的数据分布。GAN是从随机噪声生成同分布的图片,cycleGAN是在有意义的图上加上学习到的分布从而生成另一个领域的图。cycleGAN假设image-to-image的两个领域存在的潜在的联系。

众所周知,GAN的映射函数很难保证生成图片的有效性。cycleGAN利用cycle consistency来保证生成的图片与输入图片的结构上一致性。我们看下cycleGAN的结构:

CycleGAN生成对抗网络图像处理工具

特点总结如下:

 两路GAN:两个生成器[ G:X->Y , F:Y->X ]  和两个判别器[Dx, Dy], G和Dy目的是生成的对象,Dy(正类是Y领域)无法判别。同理F和Dx也是一样的。  cycle consistency:G是生成Y的生成器, F是生成X的生成器,cycle consistency是为了约束G和F生成的对象的范围,  是的G生成的对象通过F生成器能够回到原始的领域如:x->G(x)->F(G(x))=x

对抗loSS如下:

CycleGAN生成对抗网络图像处理工具

CycleGAN生成对抗网络图像处理工具

CycleGAN生成对抗网络图像处理工具

2.2 实现cycleGAN

2.2.1 生成器

从上面简介中生成器有两个生成器,一个是正向,一个是反向的。结构是参考论文PeRceptual LoSSes foR Real-TiMe style TRansfeR and SupeR-Resolution: SuppleMentaRy MateRial。大致可以分为:下采样 + Residual 残差block + 上采样,如下图(摘自论文):

CycleGAN生成对抗网络图像处理工具

实现上下采样是stRide=2的卷积, 上采样用nn.UpsaMple:

# 残差block  claSS ResidualBlock(nn.module):      def __inIT__(self, in_featuRes):          supeR(ResidualBlock, self).__inIT__()          self.block = nn.Sequential(              nn.ReflectionPad2d(1),              nn.Conv2d(in_featuRes, in_featuRes, 3),              nn.InstancEnoRM2d(in_featuRes),              nn.ReLU(inplACE=TRue),              nn.ReflectionPad2d(1),              nn.Conv2d(in_featuRes, in_featuRes, 3),       &nbsp

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.