1. 项目布景

现在游戏项目中呈现美术产能不足的瓶颈,如果运用 midjourney 之类的第三方生成式人工智能产品生成美术资料的话,一方面需求将咱们的美术资产投喂给第三方企业进行风格练习,有安全性上的危险,另一方面,第三方渠道生成的资料结合了其他数据集,生成的资产在版权问题上有很多不可控因素。本篇文档介绍一种能够保证版权归属于咱们的风格搬迁方案。它是基于 Stable Diffusion 技术进行完成的。

2. Stable Diffusion介绍

Stable Diffusion是2022年发布的深度学习文本到图画生成模型。它首要用于根据文本的描绘产生具体图画,尽管它也能够应用于其他任务,如内补制作、外补制作,以及在提示词指导下产生图生图的翻译。 它是一种潜在分散模型,由慕尼黑大学的CompVis研究团体开发的各种生成性人工神经网络。它是一种开源的算法,且有现成的代码仓库能够调用。

3. 运用 Stable Diffusion 进行风格搬迁

现在,练习Stable Diffusion模型的办法首要有四种,它们分别是:Dreambooth、Textual Inversion、LoRA和Hypernetworks。 DreamBooth是谷歌推出的一个主题驱动的AI生成模型,它能够微调文本到图画分散模型或新图画的成果。Dreambooth具有个性化成果的能力。 只要有少量图片作为输入(一般3-5张),Dreambooth就能够在调整后的Imagen和其他一些分散模型的帮助下,生成具有不同布景的基于主题的个性化图画。一旦有图片输入,调整后的Imagen和其他分散模型就找到仅有标识符,并将其与主题联系起来。在推理时,仅有标识符被用于合成不同上下文中的主题。

3.1 练习集

咱们能够用特定风格的美术图片作为练习集,练习生成特定艺术风格的模型,例如咱们运用《明星志愿1》的人物立绘资料做练习集,练习了一个名为 star1 的模型,专门用来生成上世纪90年代dos游戏风格的图片。咱们仅运用了27张图片作为练习集,如下所示:

基于 stable diffusion 制作上世纪90年代的游戏美术风格

3.2 用图片生成器 + prompt 生成图片 (txt2img)

用 stable diffusion 练习好的图片生成器 + 咱们生成的 star1 模型 + prompt,就能够经过文本生成特定风格的人物立绘。例如下面三张图片,咱们选用的 positive prompt 和 negative prompt 分别是:

((star1)), a handsome 20 year old man, solo, look at viewer, portait, simple background, transparent background

(watermark),sketch, duplicate, ugly, ((text)), ((logo)), monochrome, worst face, (bad and mutated hands:1.3), (worst quality:2.0), (low quality:2.0), (blurry:2.0), horror, geometry, (bad hands), (missing fingers), multiple limbs, bad anatomy, (interlocked fingers:1.2), Ugly Fingers, (extra digit and hands and fingers and legs and arms:1.4), crown braid, ((2girl)), (deformed fingers:1.2), (long fingers:1.2),(bad-artist-anime),extra fingers,fewer fingers,hands up,bad hands, bad feet,shoes, stone, ((bad toe))

生成的图片成果是:

基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
图1 图2 图3

3.3 运用参阅图做风格搬迁生成资料(img2img)

此外,咱们也能够经过输入一张参阅图画,做风格搬迁,如下所示,左图是参阅图,右图是用咱们的 star1 模型进行风格搬迁后的图片:

输入图 风格迁徙成果
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格

能够看出,咱们练习的 star1 模型完美抓住了上世纪90年代dos游戏的画风,注意头发的高光、整齐的发际线,以及人物衣服褶皱处的处理。

虽然咱们的练习集中运用的全部是人物资料,但这种风格搬迁不仅对人物有效,咱们发现对于动物照片,同样能够完成画风风格的搬迁,如下图所示,是一只大熊猫吃竹子的照片,及咱们用 star1 进行风格搬迁后的成果:

输入图 风格迁徙成果
基于 stable diffusion 制作上世纪90年代的游戏美术风格
基于 stable diffusion 制作上世纪90年代的游戏美术风格

咱们运用的底层大模型是stable-diffusion-v1-5,它现已供给丰富的txt2img语义支持。而Dreambooth微调文本到图画分散模型或新图,只负责微调画风。你能够理解为,底模告知机器这是一只熊猫,熊猫的特征是毛烘烘的哺乳动物,它的颜色如何,耳朵什么样,眼睛什么样,四肢什么样;然后 dreamBooth 告知机器,毛烘烘的当地应该怎么画,然后机器能够将画风分散究竟模能够解释的语义的所有当地。

4. 练习运用的参数:

4.1 安装环境

首要配置需求的 DreamBooth 环境:

!wget -q https://github.com/ShivamShrirao/diffusers/raw/main/examples/dreambooth/train_dreambooth.py !wget -q https://github.com/ShivamShrirao/diffusers/raw/main/scripts/convert_diffusers_to_original_stable_diffusion.py %pip install -qq git+https://github.com/ShivamShrirao/diffusers %pip install -q -U --pre triton %pip install -q accelerate transformers ftfy bitsandbytes==0.35.0 gradio natsort safetensors xformers

4.2 引进初始模型

引进初始模型并设置保存路径:

`save_to_gdrive = False #@param {type:”boolean”} if save_to_gdrive: from google.colab import drive drive.mount(‘/content/drive’)

#@markdown Name/Path of the initial model. MODEL_NAME = “runwayml/stable-diffusion-v1-5″ #@param {type:”string”}

#@markdown Enter the directory name to save model at.

OUTPUT_DIR = “stable_diffusion_weights/star01″ #@param {type:”string”} if save_to_gdrive: OUTPUT_DIR = “/content/drive/MyDrive/” + OUTPUT_DIR else: OUTPUT_DIR = “/content/” + OUTPUT_DIR

print(f”[*] Weights will be saved at {OUTPUT_DIR}”)

!mkdir -p $OUTPUT_DIR`

4.3 练习运用的参数

!python3 train_dreambooth.py \ --pretrained_model_name_or_path=$MODEL_NAME \ --pretrained_vae_name_or_path="stabilityai/sd-vae-ft-mse" \ --output_dir=$OUTPUT_DIR \ --revision="fp16" \ --with_prior_preservation --prior_loss_weight=1.0 \ --seed=1337 \ --resolution=512 \ --train_batch_size=1 \ --train_text_encoder \ --mixed_precision="fp16" \ --use_8bit_adam \ --gradient_accumulation_steps=1 \ --learning_rate=1e-6 \ --lr_scheduler="constant" \ --lr_warmup_steps=0 \ --num_class_images=50 \ --sample_batch_size=4 \ --max_train_steps=800 \ --save_interval=10000 \ --save_sample_prompt="star1" \ --concepts_list="concepts_list.json"

用最后一次练习存储的权值进行一次生成,能够预览到练习的模型的风格化能力:

基于 stable diffusion 制作上世纪90年代的游戏美术风格