写点什么

CartoonGAN 论文复现:如何将图像动漫化

  • 2022-12-12
    中国香港
  • 本文字数:1573 字

    阅读完需:约 5 分钟

CartoonGAN论文复现:如何将图像动漫化

本文分享自华为云社区《cartoongan 图像动漫化》,作者: HWCloudAI 。


本案例是 CartoonGAN: Generative Adversarial Networks for Photo Cartoonization 的论文复习案例


拷贝数据之后,将你想动漫化的图像放到 cartoongan-pytorch/test_img/文件夹下,运行后面代码即可


可以切换不同生成风格,Hosoda/Shinkai/Paprika/Hayao


参考:https://github.com/venture-anime/cartoongan-pytorch

拷贝代码和数据


import moxing as moxmox.file.copy_parallel('obs://obs-aigallery-zc/clf/code/cartoongan-pytorch','cartoongan-pytorch')

复制代码


%cd cartoongan-pytorch
复制代码

运行代码


import torchimport osimport numpy as npimport torchvision.utils as vutils
from PIL import Imageimport torchvision.transforms as transformsfrom torch.autograd import Variable
import matplotlib.pyplot as plt
from network.Transformer import Transformerimport argparse
parser = argparse.ArgumentParser()parser.add_argument("--input_dir", default="test_img")parser.add_argument("--load_size", default=1280)parser.add_argument("--model_path", default="./pretrained_model")parser.add_argument("--style", default="Hosoda") # 在这里切换风格, Hosoda/Shinkai/Paprika/Hayaoparser.add_argument("--output_dir", default="test_output")parser.add_argument("--gpu", type=int, default=0)
# opt = parser.parse_args()opt, unknown = parser.parse_known_args()valid_ext = [".jpg", ".png", ".jpeg"]
# setupif not os.path.exists(opt.input_dir): os.makedirs(opt.input_dir)if not os.path.exists(opt.output_dir): os.makedirs(opt.output_dir)
# load pretrained modelmodel = Transformer()model.load_state_dict( torch.load(os.path.join(opt.model_path, opt.style + "_net_G_float.pth")))model.eval()
disable_gpu = opt.gpu == -1 or not torch.cuda.is_available()
if disable_gpu: print("CPU mode") model.float()else: print("GPU mode") model.cuda()
for i,files in enumerate(os.listdir(opt.input_dir)): ext = os.path.splitext(files)[1] if ext not in valid_ext: continue # load image input_image = Image.open(os.path.join(opt.input_dir, files)).convert("RGB") input_image = np.asarray(input_image) # RGB -> BGR input_image = input_image[:, :, [2, 1, 0]] input_image = transforms.ToTensor()(input_image).unsqueeze(0) # preprocess, (-1, 1) input_image = -1 + 2 * input_image if disable_gpu: input_image = Variable(input_image).float() else: input_image = Variable(input_image).cuda()
# forward output_image = model(input_image) output_image = output_image[0] # BGR -> RGB output_image = output_image[[2, 1, 0], :, :] output_image = output_image.data.cpu().float() * 0.5 + 0.5 # save vutils.save_image( output_image, os.path.join(opt.output_dir, files[:-4] + "_" + opt.style + ".jpg"), ) original = np.array(Image.open(os.path.join(opt.input_dir, files))) style = np.array(Image.open(os.path.join(opt.output_dir, files[:-4] + "_" + opt.style + ".jpg"))) plt.figure(figsize=(20,20)) # 显示缩放比例 plt.subplot(i+1,2,1) plt.imshow(original) plt.subplot(i+1,2,2) plt.imshow(style) plt.show()
print("Done!")
复制代码



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
CartoonGAN论文复现:如何将图像动漫化_人工智能_华为云开发者联盟_InfoQ写作社区