基于 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"

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

image.png

这里直接将该软件分享出来给大家吧~

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资料我已经打包好,需要的点击下方添加,即可前往免费领取!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

F1C200S 添加韦根驱动笔记(设备树修改)

参考资料:linux开发笔记(buildroot 增加自己的开发板支持文件)-CSDN博客 首先需要有F1C200S开发板的原理图和buildroot 如果没有可以在我的资源里面下载。 参考上面的文章修改这个目录下的设备树即可。 /home/test/lc/buildroot/board/wi…

Android 开机启动模式源码分析

在机器关机情况下,长按Power键启动机器,如果这时机器低电,会提示低电,机器不会正常启动: 而代码如下: 如果不是低电,正常情况是可以启动的。 在关机情况下,插入USB,机…

【Python深度学习(第二版)(3)】初识神经网络之深度学习hello world

文章目录 一. 训练Keras中的MNIST数据集二. 工作流程1. 构建神经网络2. 准备图像数据3. 训练模型4. 利用模型进行预测5. (新数据上)评估模型精度 本节将首先给出一个神经网络示例,引出如下概念。了解完本节后,可以对神经网络在代码上的实现有一个整体的了…

python数据分析——pandas DataFrame基础知识2

参考资料:活用pandas库 1、分组方式 我们可以把分组计算看作“分割-应用-组合”(split-apply-combine)的过程。首先把数据分割成若干部分,然后把选择的函数(或计算)应用于各部分,最后把所有独立…

如何安全高效地进行分公司文件下发?

确保分公司文件下发过程中的保密性和安全性,是企业信息安全管理的重要组成部分。以下是一些关键步骤和最佳实践: 权限管理:确保只有授权的人员可以访问文件。使用权限管理系统来控制谁可以查看、编辑或下载文件。 加密传输:在文…

Linux|进程地址空间

Linux|内存地址空间 现象基本概念理解如何理解地址空间什么是划分区域&#xff1f;地址空间的理解为什么要有地址空间&#xff1f;如何进一步理解页表和写时拷贝如何理解虚拟地址 Linux真正的进程调度方案 现象 #include <stdio.h> #include <string.h> #include …

Java 区块链应用 | 割韭菜之假如K线涨跌可随意变动修改的实现

大家好&#xff0c;我是程序员大猩猩。 我一直在想&#xff0c;币圈这个行情时涨时跌&#xff0c;不断的割韭菜&#xff0c;不是由市场决定的&#xff01;而是由交易所直接输入一个数值后点击确定按钮而变化的&#xff0c;那么是不是很恐怖的行为。 为了验证这么一个想法&…

Java实现Excel导入和校验

文章目录 效果实现1,添加依赖2,实体类Member.javaMemberVO.java3,校验、监听器ValidationTool.javaExcelReadListener.java4,请求接口参考博文效果 输入:导入测试.xlsx postman调用实例: postman输出结果: 日志输出: 实现 1,添加依赖 easyexcel要去掉poi-ooxm…

Leetcode—295. 数据流的中位数【困难】

2024每日刷题&#xff08;132&#xff09; Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…

未授权访问:Jenkins未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用未授权访问写入webshell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好…

基于JSP动漫论坛的设计与实现(二)

目录 3. 系统开发环境及技术介绍 3.1 开发环境 3.2 开发工具 3.2.1 MyEclipse8.5 3.2.2 MySql 3.3 相关技术介绍 3.3.1 JSP技术简介 3.3.2 JDBC技术技术简介 3.3.3 MVC模式与Struts框架技术 4. 总体设计 4.1 系统模块总体设计 4.1.1 普通用户模块设计 4…

element ui的无法关掉的提示弹框

使用element的$alert组件的属性把X去掉和确定按钮和取消按钮去掉&#xff1b; import { MessageBox } from element-ui; MessageBox.alert(AI功能已到期或暂未开启, 友情提示, {showClose: false,showCancelButton: false,showConfirmButton: false }); 如果在router的路由守…

git 常用命令 git怎么撤销命令 持续更新中!!!!

基本流程 # 拉取仓库 git clone 仓库地址 # 拉取最新版本 git pull # 本地提交 git add . git commit -m "本次提交信息&#xff01;" # 推送上云 git push分支 # 创建分支 git checkout -b cart # 删除本机的分支 git branch -d cart # 切换分支 本地切换到主分支…

引入RabbitMQ

前置条件 docker 安装 mq docker run \-e RABBITMQ_DEFAULT_USERdudu \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hmall \-d \rabbitmq:3.8-management可能会出现&#xff1a;docker: Er…

2024HW Linux应急响应基础学习

首先展示关于Linux的关键目录&#xff0c;这是应急响应查看的关键&#xff1a; 常用命令 top //查看进程资源的占用情况 ps -aux //查看进程 直接写ps aux也可以 netstat -antpl //查看网络连接 ls -alh /proc/pid //查看某个pid对应的可执行程序 pid记得修改 lsof /…

基于Springboot+Vue+Java的校园资料分享平台

&#x1f49e; 文末获取源码联系 &#x1f649; &#x1f447;&#x1f3fb; 精选专栏推荐收藏订阅 &#x1f447;&#x1f3fb; &#x1f380;《Java 精选实战项目-计算机毕业设计题目推荐-期末大作业》&#x1f618; 更多实战项目~ https://www.yuque.com/liuyixin-rotwn/ei3…

word图片水印

一、word中旧水印如何删除 打开word模板&#xff0c;想要删除旧水印&#xff0c;如下图所示操作&#xff0c;但是旧水印删除不掉。 以为上传新水印图片会替换掉旧水印&#xff0c;结果显示了2个水印&#xff0c;要怎么删除呢&#xff1f; 如下截图所示&#xff0c;双击打开页…

SpringCloud:认识微服务

程序员老茶 &#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#…

「短链接教程」如何使用自己的域名生成短链接

在当今数字化时代&#xff0c;短链接的应用越来越广泛。它们不仅能让链接更简洁美观&#xff0c;还便于分享和传播。 但很多时候想用自己的域名生成短链接&#xff1f;搭建短链接平台又比较麻烦&#xff0c;所以&#xff0c;这里以C1N短网址(c1n.cn)为例&#xff0c;介绍下如何…

【EI会议|投稿优惠】2024年电力电网与电子通讯国际会议(ICPGEC 2024)

2024 International Conference on Power Grid and Electronic Communication 一、大会信息 会议名称&#xff1a;2024年电力电网与电子通讯国际会议会议简称&#xff1a;ICPGEC 2024收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等会议官网&#xff1a;htt…