首页 > 其他分享 >CartoonGAN论文复现:如何将图像动漫化

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

时间:2022-12-12 11:00:48浏览次数:59  
标签:opt CartoonGAN 动漫 复现 output input os image dir

摘要:本案例是 CartoonGAN: Generative Adversarial Networks for Photo Cartoonization的论文复现案例。

本文分享自华为云社区《​​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 mox
mox.file.copy_parallel('obs://obs-aigallery-zc/clf/code/cartoongan-pytorch','cartoongan-pytorch')


%cd cartoongan-pytorch

运行代码

import torch
import os
import numpy as np
import torchvision.utils as vutils
from PIL import Image
import torchvision.transforms as transforms
from torch.autograd import Variable
import matplotlib.pyplot as plt
from network.Transformer import Transformer
import 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/Hayao
parser.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"]
# setup
if 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 model
model = 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!")

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


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

标签:opt,CartoonGAN,动漫,复现,output,input,os,image,dir
From: https://blog.51cto.com/u_15214399/5929243

相关文章

  • 拓端tecdat|动漫《那年那兔那些事儿》弹幕爬虫采集代写数据分析
    开启弹幕已经成为很多年轻人看剧时的一种习惯。最近大热的几部电视剧,弹幕也十分精彩有趣,甚至出现“弹幕比剧好看”的现象。▼弹幕的出现消解了观影的孤独感,增加了互动性。可......
  • 首届“天权信安&catf1ag”网络安全联合公开赛之RE遗失的物品复现
    这个题目赛后看了看wp,感觉是能做出来的,第一题的checkin脱完魔改的upx壳,最后卡在数据那块了。打开遗失的物品发现是一个apk文件.我们来复习一下apk文件的文件结构一个AP......
  • BUUCTF之[BJDCTF2020]BJD hamburger competition (复现)
    一个老八把我整不会了,看其他师傅的wp才知道,这个是C#和unity开发的游戏,所以我们用dnspy进行反编译下面是复现过程看到是unity程序,上网查了相关参考,一般是用js或者c#进行......
  • 经典网络复现(4)ResNet
       在经过试验发现:网络层数的增加可以有效的提升准确率沒錯,但如果到达一定的层数后,训练的准确率就会下降了,因此如果网络过深的话,会变得更加难以训练。那么我们作这样......
  • LINUX漏洞复现之ShellShock漏洞
    简介ShellShock漏洞,中文称为"破壳漏洞",是UnixShell中的安全漏洞在一些网络服务器的部署中,使用bash来处理某些请求,允许攻击者通过低版本的bash执行任意Shell命令......
  • 实践案例丨CenterNet-Hourglass论文复现
    摘要:本案例是CenterNet-Hourglass论文复现的体验案例,此模型是对ObjectsasPoints中提出的CenterNet进行结果复现。本文分享自华为云社区《CenterNet-Hourglass(物体检......
  • Fastjson漏洞+复现
    1.漏洞介绍​​FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利......
  • 爬虫-爬动漫
    查看源代码面对这种禁止看页面源码的初级手段,一个优雅的通用解决办法是,在连接前加个view-source:view-source:https://www.dmzj.com/view/yaoshenji/41917.htmlBUT使......
  • 复现MySQL的索引选择失误以及通过OPTIMIZER_TRACE分析过程
    复现MySQL的索引选择失误以及通过OPTIMIZER_TRACE分析过程验证环境:MySQL5.7.39windows-pc一、构造数据(生成150万数据)构建一张账户表,带有一级部门id和二级部门id,并且......
  • DASCTF NOV X联合出题人2022年度积分榜争夺赛PWN复现 部分wp
    签个到​居然是没开NX的,而且还有一个可写可执行的段​静态分析:进入get()我们可以看到循环中如果满足heap[i]+4LL与我们送入内容的前8字符相同,且送入内容+8地址内容......