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

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

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

相关推荐
知识分享小能手23 分钟前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 游标 — 语法知识点及使用方法详解(14)
数据库·学习·sqlserver
强子感冒了25 分钟前
JavaScript学习笔记:函数、方法与继承(原型与class)
javascript·笔记·学习
寒秋花开曾相惜26 分钟前
(学习笔记)第2章 信息的表示和处理
笔记·学习
瞎某某Blinder10 小时前
DFT学习记录[4] 电子和空穴的有效质量计算全流程
python·学习
zhangfeng113311 小时前
Warmup Scheduler深度学习训练中,在训练初期使用较低学习率进行预热(Warmup),然后再按照预定策略(如余弦退火、阶梯下降等)衰减学习率的方法
人工智能·深度学习·学习
red_redemption13 小时前
自由学习记录(118)
学习
小猪佩奇TONY14 小时前
OpenCL 学习(5)---- OpenCL 内核和内核参数
学习
01二进制代码漫游日记14 小时前
自定义类型:联合和枚举(一)
c语言·开发语言·学习·算法
非凡ghost14 小时前
小X分身APP(手机分身类工具)
android·windows·学习·智能手机·软件需求
weixin_4588726114 小时前
东华复试OJ每日3题打卡·复盘82~84
学习