Mindspore框架:CycleGAN模型实现图像风格迁移算法
- Mindspore框架CycleGAN模型实现图像风格迁移|(一)CycleGAN神经网络模型构建
- Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子)
- Mindspore框架CycleGAN模型实现图像风格迁移|(三)损失函数计算
- Mindspore框架CycleGAN模型实现图像风格迁移|(四)CycleGAN模型训练
- Mindspore框架CycleGAN模型实现图像风格迁移|(五)CycleGAN模型推理与资源下载
一、 CycleGAN模型推理
- 训练生成CycleGAN网络模型。
- 风格转换推理
import os
from PIL import Image
import mindspore.dataset as ds
import mindspore.dataset.vision as vision
from mindspore import load_checkpoint, load_param_into_net
# 加载权重文件
def load_ckpt(net, ckpt_dir):
param_GA = load_checkpoint(ckpt_dir)
load_param_into_net(net, param_GA)
g_a_ckpt = './CycleGAN_apple2orange/ckpt/g_a.ckpt'
g_b_ckpt = './CycleGAN_apple2orange/ckpt/g_b.ckpt'
load_ckpt(net_rg_a, g_a_ckpt)
load_ckpt(net_rg_b, g_b_ckpt)
# 图片推理
fig = plt.figure(figsize=(11, 2.5), dpi=100)
def eval_data(dir_path, net, a):
def read_img():
for dir in os.listdir(dir_path):
path = os.path.join(dir_path, dir)
img = Image.open(path).convert('RGB')
yield img, dir
dataset = ds.GeneratorDataset(read_img, column_names=["image", "image_name"])
trans = [vision.Resize((256, 256)), vision.Normalize(mean=[0.5 * 255] * 3, std=[0.5 * 255] * 3), vision.HWC2CHW()]
dataset = dataset.map(operations=trans, input_columns=["image"])
dataset = dataset.batch(1)
for i, data in enumerate(dataset.create_dict_iterator()):
img = data["image"]
fake = net(img)
fake = (fake[0] * 0.5 * 255 + 0.5 * 255).astype(np.uint8).transpose((1, 2, 0))
img = (img[0] * 0.5 * 255 + 0.5 * 255).astype(np.uint8).transpose((1, 2, 0))
fig.add_subplot(2, 8, i+1+a)
plt.axis("off")
plt.imshow(img.asnumpy())
fig.add_subplot(2, 8, i+9+a)
plt.axis("off")
plt.imshow(fake.asnumpy())
eval_data('./CycleGAN_apple2orange/predict/apple', net_rg_a, 0)
eval_data('./CycleGAN_apple2orange/predict/orange', net_rg_b, 4)
plt.show()
风格迁移结果:
二、常用风格迁移数据集
1)CycleGAN_apple2orange;
2)monet2photo:训练集中的 A文件夹为1072张莫奈风格油画;训练集中的B文件夹为6287张现实风景照;测试集中的A 文件夹为121张莫奈风格油画;测试集中的B文件夹为751张现实风景照;
以上数据集下载。
参考文献
参考文献
[1] I. Goodfellow. NIPS 2016 tutorial: Generative ad-versarial networks. arXiv preprint arXiv:1701.00160,2016. 2, 4, 5
[2] A. Shrivastava, T. Pfister, O. Tuzel, J. Susskind, W. Wang, R. Webb. Learning from simulated and unsupervised images through adversarial training. In CVPR, 2017. 3, 5, 6, 7