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

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

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

相关推荐
陈年老古董42 分钟前
深度学习入门笔记:从神经元到深度神经网络
人工智能·笔记·深度学习·神经网络·学习
2601_967100422 小时前
护眼灯哪个牌子更好更专业耐用?专业长效护眼台灯品牌推荐,品质过硬
学习·护眼·台灯
微露清风3 小时前
快慢指针算法学习记录
学习·算法·快慢指针
sunshine22 girl3 小时前
Angular7,9,学习笔记四 父子组件传值,组件之间传值
笔记·学习
蒸蒸yyyyzwd4 小时前
cpp选手秋招学习笔记 day18
笔记·学习
HugoStudio_SWAN4 小时前
C++ CMD 互动动画:按键触发爆炸效果
开发语言·c++·学习·程序人生
爱学习的小郑4 小时前
IC验证学习
学习
田径他爸来了5 小时前
嵌入式学习第32天(epoll)
学习
a7665989005 小时前
MBTI能预测考试成绩吗?性格偏好不能替代学习条件分析
学习·生活
MartinYeung56 小时前
[论文学习]大语言模型越狱的机械可解释性:基于内部归因图的分析
人工智能·学习·语言模型