Stable diffusion的SDXL模型,针不错!(含实操)

与之前的SD1.5大模型不同,这次的SDXL在架构上采用了“两步走”的生图方式:

图片

以往SD1.5大模型,生成步骤为 Prompt → Base → Image,比较简单直接;而这次的SDXL大模型则是在中间加了一步 Refiner。Refiner的作用是什么呢?简单来说就是能够自动对图像进行优化,提高图像质量和清晰度,减少人工干预的需要。

简单来说,SDXL这种设计就是先用基础模型(Base)生成一张看起来差不多的图片,然后再使用一个图像精修模型(Refiner)进行打磨,从而让图片生成的质量更高。而在没有这个之前,我们往往需要通过其他手段,如高清修复或面部修复来进行调优。

除了有出图质量更高这个优势,SDXL还有以下优点:

  • 支持更高像素的图片(1024 x 1024)

  • 对提示词的理解能力更好,比较简短的提示词也能达到不错的效果

  • 相比SD1.5模型,在断肢断手多指的情况上有所改善

  • 风格更为多样化

当然,每件事物不可能是完美的,所以SDXL也有一些局限性:

1、低像素出图质量不高

由于SDXL都是用1024x1024的图片训练的,这既导致它在这个像素级别上生成的质量比较高。但同时也导致了它在低像素级别(如512x512)生成的质量反而比较低,甚至不如SD1.5等模型。

2、与旧Lora不兼容

过去一些适用于SD1.5, 2.x 的Lora和ControlNet模型,大概率无法使用,得重新找一些带有SDXL的模型

图片

**3、**对GPU显存的要求更高(这个下面会着重讲到)

4、出图时间也变久了

好了,简单讲完了SDXL大模型以及它的优缺点,接下来就开始实战了!

一、模型的下载

这次模型的下载有点不同,因为我们需要下载三个模型,分别是:**sd_xl_base_1.0.safetensors、[1]****sd_xl_refiner_1.0.safetensors 和 [2]**sdxl_vae.safetensors[3]

三个模型的地址分别是:

  • https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main

  • https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/tree/main

  • https://huggingface.co/stabilityai/sdxl-vae/tree/main

二、模型的加载

如果你的模型下载好了,就把 sd_xl_base_1.0.safetensors、sd_xl_refiner_1.0.safetensors 丢到根目录的 models\Stable-diffusion,把 sdxl_vae.safetensors 丢到 models\VAE 即可。

需要注意的是 Refiner 模型的加载,看发布日志是 SD1.6.0 的时候才支持,所以如果想使用的话得看你的版本有没有达到。另外就是这里的SD1.6.0指的是内核的版本,并不是模型的版本(不要被各种简写误导了)

图片

内核的版本指的是这里的版本

图片

还有一个需要注意的是貌似升级版本容易有一些不兼容的问题,而且在使用SDXL大模型时也不一定就得用Refiner,单纯使用基础模型(base)也是OK的,只不过效果会差点,所以建议升级前也做一下调研工作。

最后Refiner的位置可能没那么显眼,在生成选项卡里面

图片

三、显存的大小

由于SDXL的模型和出图尺寸比之前的SD1.5大得多,所以也间接导致了它在出图方面所需要的显存和时间也变大了。

那到底需要多少显存呢?网上有一个说法是:跑SDXL最低显存是8G。经过我的测试,这个数据具有一定参考性,在进行一些优化的情况下,8G的显存的确能跑;但如果你什么优化都不做的话,8G的显存是不够的。

我自己的显卡是4060Ti 16G,内存32G,在这个配置的基础上我做了几个小测试(都是1024 x 1024的尺寸)

提示词:

a beatuiful real female play guitar

3.1 不开任何优化 + 不使用Refiner

第一个测试是在不开任何优化的情况下出图,结果还是出人意料的,居然爆显存了

图片

图片

3.2 不开任何优化 + 使用Refiner

第二个测试是在第1个的基础上,加了Refiner,但出乎意料的是,并没有爆显存,但从下方的显存使用看,也几乎达到了极限。为什么加了Refiner就没有爆显存我也不太清楚,希望有大佬留言科普下。

图片

这里也简单说明最下方的A、R、Sys 三个指标:

💡

A,Active:peak amount of video memory used during generation(excluding cache data),个人理解就是出图时使用的显存峰值

R,Reserved:total amount of video memory allocated by the Torch library,个人理解就是Torch 库使用的显存总量

Sys:System:peak amount of video memory allocated by all running programs, out of total capacity,个人理解就是使用显存的占比。

3.3 开启VAE模型半精度优化

这个开了之后(貌似这个不是实时生效的,所以每一次修改后我都会重启),发现其实效果不大,显存的使用率和第二个测试是差不多的。

3.4 开启 VAE + UNet模型半精度优化

加了UNet模型半精度优化,显存使用率下降了一部分(12G差不多能跑),而且出图时间也下降了很多!为什么加了UNet显存使用率会下降明显,看**网上一篇文章[4]**说SDXL用了 larger UNet backbone,猜测是这个原因导致的。

图片

3.5 开启 VAE + UNet模型半精度优化 + 显存优化

前面四个测试都是在不开显存优化的情况下进行的,在第五个测试中,开了显存优化后,显存下降会比之前更加明显(比3.4下降了一半),但是出图时间会略长。

从这里也可以看出,显存优化的作用还是蛮明显的,不过我也试了中等显存(4GB以上)、仅SDXL中等显存(8GB以上),但是两者并没有明显区别。

图片

通过上面的测试,我们也可以初步得到:跑SDXL最低显存是8G的说法是有一定准确性的,不过这个准确性大概率是建立在开了半精度优化和显存优化的基础上。如果你的显存达不到8G,除了上面的手段,也可以试试使用共享显存的优化方案,应该还能降一点。

四、出图测试

4.1 设置图片默认宽高

秋叶安装包默认的宽高是512x512,但是对于SDXL模型,这个尺寸是不适合的,每次刷新页面后又得调整,就想着能不能把默认值改成 1024x1024.

第一步,刷新页面,将尺寸改为 1024x1024

图片

第二步,在设置里面找到“默认设置”

图片

第三步,点击应用按钮即可。如果你想看改了啥,还可以点击“查看更改”按钮

图片

上面的步骤实际改的是ui-config.json 配置的这两个参数,对了,如果要生效必须重启启动器,刷新页面是没用的

txt2img/Width/value
txt2img/Height/value

4.2 提示词理解能力对比

我给的提示词是测试SD3的

Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says “Stable Diffusion 3” made out of colorful energy

可以看到SDXL的对自然语言的提示词的理解能力确定吊打之前的模型

图片

4.3 文字拼写能力测试

看网上说SDXL的文字拼写能力比较强,简单来说就是能按要求在图片写字,提示词如下:

// 用的网上的提示词,字面意思就是在头盔上写 future 英文
# a cyberpunk girl is wearing a helmet,the helmet with the words"future" written on it,

总体感觉能力肯定是进步的,但比SD3还是差了不少,这也是从出的图里面选几张比较好的

图片

4.4 优秀的提示词借鉴

50+ Best SDXL Prompts For Breathtaking Images[5]

这是一位SD资深大神整理的,100款Stable Diffusion超实用插件,涵盖目前几乎所有的,主流插件需求。

全文超过4000字。

我把它们整理成更适合大家下载安装的【压缩包】,无需梯子,并根据具体的内容,拆解成一二级目录,以方便大家查阅使用。

单单排版就差不多花费1个小时。

希望能让大家在使用Stable Diffusion工具时,可以更好、更快的获得自己想要的答案,以上。

如果感觉有用,帮忙点个支持,谢谢了。

想要原版100款插件整合包的小伙伴,可以来点击下方插件直接免费获取

img

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

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

相关文章

知道蛋白uniprot id 进行VFDB注释

https://blog.csdn.net/missinghead/article/details/135699418 【生物信息】VFDB数据库预测毒力因子-CSDN博客 知道蛋白uniprot id 提取蛋白的fasta格式序列:现在uniprot网站下载物种所有蛋白序列文件 conda create -n kp_proteomic conda activate kp_proteomic…

51单片机——串口通信(重点)

1、通信 通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通信; 按照通信的数据同步方式,可分为异步通信和同步通信; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…

【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述

前言 🌟🌟本期讲解关于spring aop的切面表达式和自身实现原理介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &am…

Objective-C语言的软件工程

Objective-C语言的软件工程探讨 引言 在软件工程的领域中,编程语言的选择是至关重要的。Objective-C,作为一种为苹果公司的macOS和iOS操作系统而开发的编程语言,凭借其灵活性和强大的功能被广泛应用于应用开发。然而,随着Swift等…

GO通过SMTP协议发送邮件

什么是SMTP协议 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于发送邮件的协议。当一个邮件服务器需要发送邮件给另一个邮件服务器时,它会使用SMTP协议与目标服务器建立连接,并传输邮件内容。SMTP协议的…

windows下,golang+vscode+delve 远程调试

1 先在远程服务器安装golang和delve golang的安装,通过官网直接下载安装包安装接口 go install github.com/go-delve/delve/cmd/dlvlatest 如果dlv和golang版本不匹配,这里把latest换成匹配的版本,比如1.20.0 2 编译带调试信息的程序 go bu…

Linux之线程池与单例模式

目录 线程池 线程池代码 单例模式 饿汉模式单例模式 懒汉模式单例模式 在前几期,我们已经学习了多线程的创建和控制,学习了多线程中的同步和互斥,学习了多线程中的条件变量和信号量,基于此我们实现了基于阻塞队列和基于环形队…

青蛙云的云服务器有哪些显著优势?

青蛙云的云服务器具有以下显著优势,这些特点使得它成为企业构建高效IT基础设施的重要选择: 1.高性能硬件 青蛙云服务器采用高性能的服务器硬件进行部署,确保服务的稳定性和高效运行,为用户提供卓越的计算能力。 2. 弹性资源 支持资…

赛车微型配件订销管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 赛车微型配件行业通常具有产品多样性、需求不确定性、市场竞争激烈等特点。配件供应商需要根据市场需求及时调整产品结构和库存,同时要把握好供应链管理和销售渠道。传统的赛车微型配件订销管理往往依赖于人工经验和简单的数据分析,效率低下且容易…

原生js解析token信息

原生js解析token信息: 代码: const tokenString localStorage.getItem(Token) const strings tokenString.split(.) //通过split()方法将token转为字符串数组 //取strings[1]数组中的第二个字符进行解析 const userinfo JSON.parse(decodeURICompon…

KGA:AGeneral Machine Unlearning Framework Based on Knowledge Gap Alignment

文章目录 摘要1 引言2 相关工作3 符号与定义4 我们的 KGA 框架4.1 KGA框架知识差距对齐目标 4.2 KGA在自然语言处理任务中的应用文本分类机器翻译响应生成 5 实验设置数据集评估指标参数设置比较方法 6 实验结果6.1 主要比较结果6.2 KGA 的优越性分析降低语言模型概率比较 6.3 …

swiftUI桥接UIKit

swiftUI桥接UIKit struct TestView: UIViewRepresentable {Binding var text: String // 该文本在swiftUI中可以修改let text: String // 不可修改func makeUIView(context: Context) -> UIView {let view UIView()// 例子asd.frame CGRect(x: 0, y: 0, width: 300, heig…

解决安装dlib失败

安装dlib时失败,报错如下: $pip install dlib Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://mirrors.huaweicloud.com/repository/pypi/simple Collecting dlibDownloading https://mi…

《上古重生》V20241127111039官方中文学习版

《上古重生》官方中文版https://pan.xunlei.com/s/VODab-jcgXUAgJbj2b1-11qUA1?pwdc7di# 一款考验玩家技巧的砍杀游戏,从玩家到敌人,通通身穿古代的厚重盔甲,进行“重量级”的近身搏斗。在充满Cult元素的第一人称视角大冒险中杀出一条血路吧…

什么是负载均衡?NGINX是如何实现负载均衡的?

大家好,我是锋哥。今天分享关于【什么是负载均衡?NGINX是如何实现负载均衡的?】面试题。希望对大家有帮助; 什么是负载均衡?NGINX是如何实现负载均衡的? 1000道 互联网大厂Java工程师 精选面试题-Java资源…

数组排序------冒泡排序

要求:给定一个数组,让数组升序(降序)排序 思路: 假设升序排序: ①:将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大&#xf…

Qt 坐标系统和坐标变换

一、概述:1、QPainter在QPaintDevice上绘图的默认坐标系统是,原点(0,0)在左上角,x轴正方向水平向右,y轴正方向竖直向下的坐标系。 2、为了绘图的方便,QPainter提供了一些坐标变换的功能,通过平移、旋转、缩放等坐标变…

SpringBoot + 九天大模型(文生图接口)

目录 1、先到九天大模型的官网(LLM Studio)上订阅模型的推理服务,得到APIKey,后期需要使用它生成token才能调用模型的推理服务。 2、在SpringBoot项目里面的pom.xml文件中添加九天大模型的相关依赖,后面会使用到其中…

1. npm 常用命令详解

npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …

12. C语言 数组与指针(深入理解)

本章目录: 前言1. 什么是数组?2. 数组的声明与初始化声明数组初始化数组 3. 访问数组元素遍历数组 4. 获取数组长度使用 sizeof 获取长度使用宏定义简化 5. 数组与指针数组名与指针的区别使用指针操作数组 6. 多维数组遍历多维数组 7. 数组作为函数参数8. 高级技巧与…