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

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

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

相关推荐
河铃旅鹿3 小时前
Android开发-java版:布局
android·笔记·学习
奋斗的牛马3 小时前
FPGA--zynq学习 PS与PL交互(二) HP接口
单片机·嵌入式硬件·学习·fpga开发·信息与通信
华清远见成都中心4 小时前
分享一个驱动开发工程师学习路线图
驱动开发·学习
im_AMBER4 小时前
React 18
前端·javascript·笔记·学习·react.js·前端框架
d111111111d6 小时前
STM32中为什么会有APB1和APB2两个外设有什么区别
笔记·stm32·单片机·嵌入式硬件·学习
化作星辰7 小时前
深度学习_神经网络中最常用的学习率优化算法
深度学习·神经网络·学习
71-37 小时前
C语言练习题——判断水仙花数(0-100000)
c语言·笔记·学习
FAREWELL000757 小时前
Lua学习记录(3) --- Lua中的复杂数据类型_table
开发语言·学习·lua
Broken Arrows7 小时前
排查网络问题的一些工具的作用和常用使用方法
linux·网络·学习
雍凉明月夜9 小时前
Ⅱ人工智能学习之深度学习(deep-learning)概述
人工智能·深度学习·学习