本文主要是介绍基于 stable diffusion 制作上世纪90年代的游戏美术风格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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张图片作为训练集,如下所示:
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))
生成的图片结果是:
图1 | 图2 | 图3 |
3.3 利用参考图做风格迁移生成素材(img2img)
此外,我们也可以通过输入一张参考图像,做风格迁移,如下所示,左图是参考图,右图是用我们的 star1 模型进行风格迁移后的图片:
输入图 | 风格迁徙结果 |
---|---|
— | — |
— | — |
可以看出,我们训练的 star1 模型完美抓住了上世纪90年代dos游戏的画风,注意头发的高光、整齐的发际线,以及人物衣服褶皱处的处理。
虽然我们的训练集中使用的全部是人物素材,但这种风格迁移不仅对人物有效,我们发现对于动物照片,同样能够实现画风风格的迁移,如下图所示,是一只大熊猫吃竹子的照片,及我们用 star1 进行风格迁移后的结果:
输入图 | 风格迁徙结果 |
---|---|
我们使用的底层大模型是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"
用最后一次训练存储的权值进行一次生成,可以预览到训练的模型的风格化能力:
这里直接将该软件分享出来给大家吧~
1.stable diffusion安装包
随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。
最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本。
2.stable diffusion视频合集
我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入坑stable diffusion,科学有趣才能更方便的学习下去。
3.stable diffusion模型下载
stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。
4.stable diffusion提示词
提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。
5.SD从0到落地实战演练
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。
这份完整版的stable diffusion资料我已经打包好,需要的点击下方添加,即可前往免费领取!
这篇关于基于 stable diffusion 制作上世纪90年代的游戏美术风格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!