当前位置:网站首页>基于ModelArts的动漫头像自动生成丨【华为云至简致远】
基于ModelArts的动漫头像自动生成丨【华为云至简致远】
2022-08-03 13:53:00 【InfoQ】
【摘要】 ModelArts 是面向开发者的一站式 AI 开发平台,具有低门槛,高效率,高性能,易运维的特点。本文使用 ModelArts 平台自动生成动漫头像,包括模型训练、测试模型和展示生成的动漫头像。

- ModelArts简介
- 第一步,点击链接进入 ACGAN-动漫头像自动生成 的案例页面,并完成基础配置。
- 第二步,下载模型和代码
- 第三步,模型训练
- 第四步,测试模型
- 第五步,展示生成的图像
- Tips
ModelArts简介
ModelArts 是面向开发者的一站式 AI 开发平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。另外,ModelArts具有低门槛,高效率,高性能,易运维的特点。即ModelArts能够开箱即用,零基础3步即可构建AI模型;AI 开发全流程可视化管理,生产效率百倍提升,灵活支持多厂商多框架多功能模型统一纳管。
第一步,点击链接进入
ACGAN-动漫头像自动生成
的案例页面,并完成基础配置。
https://developer.huaweicloud.com/develop/aigallery/notebook/detail?id=355a64f7-09fc-4db2-971a-6ef14b23dd00&ticket=ST-1621252-H53ovf2ejqfCH7wai7f4ez3D-sso
点击
Run in ModelArts
,进入 JupyterLab 页面。

JupyterLab 页面:

配置当前运行环境,进行
规格切换
。

选择
[限时免费]GPU: 1*V100|CPU: 8核 64GB
,点击
切换规格
。

切换中。

资源切换完成,点击
确定
。

查看当前运行环境
:
CPU:8核
内存:64GB
GPU:nvidia-p100(32GB) * 1
架构:x86_64
规格:modelarts.vm.gpu.free
价格:限时免费

Select Kernel
:TensorFlow-1.13.1

第二步,下载模型和代码
选择下方代码,点击运行。

运行完成。

第三步,模型训练
分别运行以下三段代码:
加载依赖库:
root_path = './ACGAN/'
os.chdir(root_path)
import os
from main import main
from ACGAN import ACGAN
from tools import checkFolder
import tensorflow as tf
import argparse
import numpy as np
配置参数:
def parse_args():
note = "ACGAN Frame Constructed With Tensorflow"
parser = argparse.ArgumentParser(description=note)
parser.add_argument("--epoch",type=int,default=251,help="训练轮数")
parser.add_argument("--batchSize",type=int,default=64,help="batch的大小")
parser.add_argument("--codeSize",type=int,default=62,help="输入编码向量的维度")
parser.add_argument("--checkpointDir",type=str,default="./checkpoint",help="检查点保存目录")
parser.add_argument("--resultDir",type=str,default="./result",help="训练过程中,中间生成结果的目录")
parser.add_argument("--logDir",type=str,default="./log",help="训练日志目录")
parser.add_argument("--mode",type=str,default="train",help="模式: train / infer")
parser.add_argument("--hairStyle",type=str,default="orange hair",help="你想要生成的动漫头像的头发颜色")
parser.add_argument("--eyeStyle",type=str,default="gray eyes",help="你想要生成的动漫头像的眼睛颜色")
parser.add_argument("--dataSource",type=str,default='./extra_data/images/',help="训练集路径")
args, unknown= parser.parse_known_args()
checkFolder(args.checkpointDir)
checkFolder(args.resultDir)
checkFolder(args.logDir)
assert args.epoch>=1
assert args.batchSize>=1
assert args.codeSize>=1
return args
args =parse_args()
开始训练:
with tf.Session() as sess :
myGAN = ACGAN(sess,args.epoch,args.batchSize,args.codeSize,\
args.dataSource,args.checkpointDir,args.resultDir,args.logDir,args.mode,\
64,64,3)
if myGAN is None:
print("创建GAN网络失败")
exit(0)
if args.mode=='train' :
myGAN.buildNet()
print("进入训练模式")
myGAN.train()
print("Done")
训练结束后运行结果:

第四步,测试模型
修改参数从训练模式为推理模式
args.mode ='infer'
头发和眼睛选择
hair_dict = ['orange hair', 'white hair', 'aqua hair', 'gray hair', 'green hair', 'red hair', 'purple hair',
'pink hair', 'blue hair', 'black hair', 'brown hair', 'blonde hair']
eye_dict = [ 'gray eyes', 'black eyes', 'orange eyes', 'pink eyes', 'yellow eyes',
'aqua eyes', 'purple eyes', 'green eyes', 'brown eyes', 'red eyes', 'blue eyes']
# 选择了黑头发和蓝眼睛
args.hairStyle = 'black hair'
args.eyeStyle = 'blue eyes'
构造预测器
tf.reset_default_graph()
with tf.Session() as sess :
myGAN1 = ACGAN(sess,args.epoch,args.batchSize,args.codeSize,\
args.dataSource,args.checkpointDir,args.resultDir,args.logDir,args.mode,\
64,64,3)
if myGAN1 is None:
print("创建GAN网络失败")
exit(0)
if args.mode=='infer' :
myGAN1.buildForInfer()
tag_dict = ['orange hair', 'white hair', 'aqua hair', 'gray hair', 'green hair', 'red hair', 'purple hair', 'pink hair', 'blue hair', 'black hair',
'brown hair', 'blonde hair','gray eyes', 'black eyes', 'orange eyes', 'pink eyes', 'yellow eyes','aqua eyes', 'purple eyes', 'green eyes',
'brown eyes', 'red eyes','blue eyes']
tag = np.zeros((64,23))
feature = args.hairStyle+" AND "+ args.eyeStyle
for j in range(25):
for i in range(len(tag_dict)):
if tag_dict[i] in feature:
tag[j][i] = 1
myGAN1.infer(tag,feature)
print("Generate : "+feature)
第五步,展示生成的图像
import matplotlib.pyplot as plt
from PIL import Image
feature = args.hairStyle+" AND "+ args.eyeStyle
resultPath = './samples/' + feature + '.png' #确定保存路径
img = Image.open(resultPath).convert('RGB')
plt.figure(1)
plt.imshow(img)
plt.show()
最终生成的动漫头像如下图所示:

Tips
可以通过修改头像的头发和眼睛来改变最终生成的动漫头像。
相应代码的位置:

——END——
参考文献
- https://developer.huaweicloud.com/develop/aigallery/notebook/detail?id=355a64f7-09fc-4db2-971a-6ef14b23dd00&ticket=ST-1621252-H53ovf2ejqfCH7wai7f4ez3D-sso
【华为云至简致远】有奖征文火热进行中:
https://bbs.huaweicloud.com/blogs/352809
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:
进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。想了解更多的华为云产品相关信息,请联系我们: 电话:950808按0转1
边栏推荐
猜你喜欢
随机推荐
552个元宇宙App,70个搞社交,哪款真能交到朋友?
爬虫——代理搭建、爬取视频网站、爬取新闻、BeautifulSoup4介绍、bs4 遍历文档树、bs4搜索文档树、bs4使用选择器
大型连锁百货运维审计用什么软件好?有哪些功能?
js单线程及事件循环、宏任务和微任务
华云数据张华林:投身数字蓝海 绘就云上强国
【二叉树】从二叉树一个节点到另一个节点每一步的方向
大势,又一关乎中美竞争的关键行业,走到关键时刻了
English语法_介词 - 概述
设计思维 | 详看设计工作坊Workshop的11个关键技巧
中英文说明书丨Abbkine AbFluor 488-鬼笔环肽
爱可可AI前沿推介(8.3)
如何合理安排一天,做到高效备考?
驻冰岛使馆提醒旅冰中国公民务必加强安全防护
为什么手动启动GBase 8c数据库中GTM节点
如何使用matlab实现分段函数「建议收藏」
Postman插件下载
Golang interface interface
使用Typora+EasyBlogImageForTypora写博客,无图床快速上传图片
“杀猪盘”宰向环球影城
Golang strings








