昇思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()

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

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

相关推荐
Keep Running *12 分钟前
Django_学习笔记
笔记·学习·django
今天你TLE了吗13 分钟前
LLM到Agent&RAG——AI概念概述 第五章:Skill
人工智能·笔记·后端·学习
不做无法实现的梦~34 分钟前
显示屏和显卡驱动问题完整解决教程---ubuntu22.04安装显卡驱动解决显示屏黑屏幕问题
linux·学习
Swilderrr1 小时前
学术研读报告:Mem0 面向生产级 AI 智能体的可扩展长期记忆架构
人工智能·学习
乙酸氧铍1 小时前
【imx6ul 学习笔记】移植ubuntu 20.04系统
笔记·学习·ubuntu
鱼鳞_1 小时前
Java学习笔记_Day37(网络编程)
java·网络·笔记·学习
Byron__1 小时前
AI学习_03_LangChain_RAG基础概念
人工智能·学习·langchain
三品吉他手会点灯2 小时前
C语言学习笔记 - 8.C概述 - 学习的目标
c语言·笔记·学习
96772 小时前
python基础学习如何实现一个能计算a+b的程序
学习
三品吉他手会点灯2 小时前
C语言学习笔记 - 10.C概述 - C语言课程总纲要
c语言·笔记·学习