昇思25天学习打卡营第20天|CycleGAN图像风格迁移互换

模型简介

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

该模型一个重要应用领域是域迁移(Domain Adaptation),可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前,就已经有了域迁移模型,比如 Pix2Pix ,但是 Pix2Pix 要求训练数据必须是成对的,而现实生活中,要找到两个域(画风)中成对出现的图片是相当困难的,因此 CycleGAN 诞生了,它只需要两种域的数据,而不需要他们有严格对应关系,是一种新的无监督的图像迁移网络。

就好比我们人类认知的时候,不可能所有的内容都学一遍,基本都是举一反三的,这个模型更加接近人类学习的过程,基本能做到举一反三。他不是需要严格对应的数据。

python 复制代码
# 可视化
# 通过 create_dict_iterator 函数将数据转换成字典迭代器,然后使用 matplotlib 模块可视化部分训练数据。
import numpy as np
import matplotlib.pyplot as plt

mean = 0.5 * 255
std = 0.5 * 255

plt.figure(figsize=(12, 5), dpi=60)
for i, data in enumerate(dataset.create_dict_iterator()):
    if i < 5:
        show_images_a = data["image_A"].asnumpy()
        show_images_b = data["image_B"].asnumpy()

        plt.subplot(2, 5, i+1)
        show_images_a = (show_images_a[0] * std + mean).astype(np.uint8).transpose((1, 2, 0))
        plt.imshow(show_images_a)
        plt.axis("off")

        plt.subplot(2, 5, i+6)
        show_images_b = (show_images_b[0] * std + mean).astype(np.uint8).transpose((1, 2, 0))
        plt.imshow(show_images_b)
        plt.axis("off")
    else:
        break
plt.show()

这里可以看到现在都是比较正常的图片,颜色,大小都比较合理。

下面是模型转换后的图片结果,可以看到他把水果的颜色做了准确替换,其他部分包括图三人物的颜色被准确保留。

相关推荐
odoo中国11 分钟前
深度学习 Deep Learning 第15章 表示学习
人工智能·深度学习·学习·表示学习
电星托马斯19 分钟前
C++中顺序容器vector、list和deque的使用方法
linux·c语言·c++·windows·笔记·学习·程序人生
清晨朝暮26 分钟前
【算法学习计划】贪心算法(下)
学习
yanxy5122 小时前
【TS学习】(18)分发逆变推断
前端·学习·typescript
Hellyc2 小时前
SpringMVC响应数据:页面跳转与回写数据
java·前端·学习
Qian_ShouYi2 小时前
MATLAB 代码学习
学习·算法·matlab
进取星辰2 小时前
PyTorch 深度学习实战(32):多模态学习与CLIP模型
pytorch·深度学习·学习
云上艺旅2 小时前
K8S学习之基础七十二:Ingress基于Https代理pod
学习·云原生·容器·https·kubernetes
能来帮帮蒟蒻吗3 小时前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
计算机毕设定制辅导-无忧学长3 小时前
HTML 性能优化之路:学习进度与优化策略(二)
学习·性能优化·html