昇思25天学习打卡营第23天|应用实践之CycleGAN图像风格迁移互换 基本介绍

基本介绍

        从今日开始,要今日应用实践中的生成式模型,将会实践体验用生成式模型进行诸如风格迁移的有趣的应用。今日要实践的模型是CycleGAN,用于图像风格迁移。使用的数据集里面的图片来源于ImageNet,该数据集共有17个数据包,本文只使用了其中的苹果橘子部分。图像被统一缩放为256×256像素大小,其中用于训练的苹果图片996张、橘子图片1020张,用于测试的苹果图片266张、橘子图片248张。本文会先简单介绍CycleGAN模型,然后展示自己的运行结果,不作代码展示,最后进行总结。

CycleGAN模型简介

        CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,来自论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 。该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。

        CycleGAN 网络本质上是由两个镜像对称的 GAN 网络组成,其结构如下图所示(图片来源于原论文):

为了方便理解,这里以苹果和橘子为例介绍。上图中 𝑋 可以理解为苹果,𝑌为橘子;𝐺 为将苹果生成橘子风格的生成器,𝐹为将橘子生成的苹果风格的生成器,𝐷𝑋 和 𝐷𝑌为其相应判别器。模型最终能够输出两个模型的权重,分别将两种图像的风格进行彼此迁移,生成新的图像。该模型一个很重要的部分就是损失函数,在所有损失里面循环一致损失(Cycle Consistency Loss)是最重要的。循环损失的计算过程如下图所示(图片来源于原论文):

图中苹果图片 𝑥经过生成器 𝐺得到伪橘子 𝑌̂,然后将伪橘子 𝑌̂ 结果送进生成器𝐹又产生苹果风格的结果 𝑥̂,最后将生成的苹果风格结果𝑥̂与原苹果图片𝑥一起计算出循环一致损失,反之亦然。循环损失捕捉了这样的直觉,即如果我们从一个域转换到另一个域,然后再转换回来,我们应该到达我们开始的地方

  • 生成器结构

  • 判别器:判别器其实是一个二分类网络模型,输出判定该图像为真实图的概率

CycleGAN代码实践

        官方给的代码实践是经典的深度学习流程。即数据集预处理,模型搭建,模型训练,模型评估,模型推理,详细的可直接参考官方的代码实践,这里给出我自己的运行结果和部分代码

  • 数据集部分可视化结果

  • 模型训练结果

        由于时间原因,我只训练了一轮,这可能会导致风格迁移效果一般,如果有时间最好多训练几轮

  • 模型推理结果

        结果中第一行为原图,第二行为对应生成的结果图。感觉就是换了个颜色,如果多训练,可能效果更好些

总结

        Cycle模型也是GAN模型的一种,主要用于图像风格迁移。之前有所耳闻,接触使用过,挺有意思的,今天由于训练轮次比较少,效果比较差,只有颜色发生变化,多训练一点,会看到不一样的东西,下次有时间训练长一点看看。

Jupyter运行情况

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 11:14:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 11:14:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 11:14:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 11:14:01       69 阅读

热门阅读

  1. AI时代的技术应用与创新:探索未来

    2024-07-17 11:14:01       17 阅读
  2. 新版本 Android Studio 没有BuildConfig ?

    2024-07-17 11:14:01       29 阅读
  3. 前缀匹配工具之IP-Prefix

    2024-07-17 11:14:01       28 阅读
  4. 高精度减法(C++)

    2024-07-17 11:14:01       24 阅读
  5. 谈人工智能在电子档案系统的应用

    2024-07-17 11:14:01       18 阅读
  6. Android 音频通道切换HDMI,蓝牙,喇叭

    2024-07-17 11:14:01       26 阅读
  7. C#拆分单页PDF

    2024-07-17 11:14:01       25 阅读
  8. TCP/IP、UDP、HTTP 协议介绍比较和总结

    2024-07-17 11:14:01       22 阅读
  9. js | 原型链

    2024-07-17 11:14:01       23 阅读
  10. baomidou @DS注解

    2024-07-17 11:14:01       23 阅读
  11. arkts中状态管理

    2024-07-17 11:14:01       25 阅读
  12. mac如何查看cpu和显卡温度

    2024-07-17 11:14:01       26 阅读
  13. 关于HBase、Phoenix、Flume、Maxwell 和 Flink

    2024-07-17 11:14:01       25 阅读