Stable Diffusion 3 大模型文生图“开源英雄”笔记本部署和使用教程,轻松实现AI绘图自由

本文主要是介绍Stable Diffusion 3 大模型文生图“开源英雄”笔记本部署和使用教程,轻松实现AI绘图自由,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

备受期待的Stable Diffusion 3(以下亦简称SD3)如期向公众开源了(Stable Diffusion 3 Medium),作为Stability AI迄今为止最先进的文本生成图像的开源大模型,SD3在图像质量、文本内容生成、复杂提示理解和资源效率方面有了显著提升,被誉为AI文生图领域的开源英雄

Stable Diffusion 3 Medium特点包括:

  • 模型仅包含20亿参数,具有体积小、适合在个人PC和笔记本电脑上运行的优点,所以我们也可以将其部署到自己的电脑上使用。
  • 图像质量整体提升,能生成照片般细节逼真、色彩鲜艳、光照自然的图像;能灵活适应多种风格,无需微调,仅通过提示词就能生成动漫、厚涂等风格化图像;具有 16 通道的 VAE,可以更好地表现手部以及面部细节。
  • 能够理解复杂的自然语言提示,如空间推理、构图元素、姿势动作、风格描述等。对于「第一瓶是蓝色的,标签是“1.5”,第二瓶是红色的,标签是“SDXL”,第三瓶是绿色的,标签是“SD3”」这样复杂的内容,SD3 依旧能准确生成,而且文本效果比 Midjourney 还要准确。
  • 通过 Diffusion Transformer 架构,SD3 Medium 在英文文本拼写、字距等方面更加正确合理。Stability AI 在发布 SD3 官方公告时,头图就是直接用 SD3 生成的,效果非常惊艳。

特别注意: 开源的Stable Diffusion 3 Medium模型的授权范围是开放的非商业许可证,也就是说没有官方许可的情况下,模型不得用于商业用途(协议内容:https://huggingface.co/stabilityai/stable-diffusion-3-medium/blob/main/LICENSE)

下载Stable Diffusion 3 Medium模型文件

SD3的模型文件已经上传到了HF上,但是在下载之前需要先注册并填写一份表格,保证自己不会将SD3用于商用用途。然而,注册和填写表格均需要有通畅的网络,这对我们个人不是很友好:

注册或登录

注册或者登录成功之后,我们需要填写表格:

填写表格

老牛同学担心,仅这2个前置的需要通畅网络的操作步骤,就阻挡了一批SD3的爱好者们,这是老牛同学不希望看到的结果。

幸运的是: ModelScope提供了一个可直接下载模型文件的镜像仓库,可直接跳过前面步骤(当然这有点违背Stability AI的初衷,但考虑到我们仅用于学习和非商业用途,也算是殊途同归吧):https://modelscope.cn/models/AI-ModelScope/stable-diffusion-3-medium/files

本仓库有3个基础是模型文件,它们有不同的用途,初次使用建议全部下载到本地:

  • sd3_medium:4.34G,独立主模型,不包含文本编码器(即后面2个文件名带有clip的模型)
  • sd3_medium_incl_clips.safetensors:5.97G,包含 clip_g 和 clip_l 编码器
  • sd3_medium_incl_clips_t5xxlfp8.safetensors:10.87G,包含 clip_g、clip_l 和 t5xxl_fp8 编码器

特别说明: 以上3个模型文件,最后需要放到ComfyUI./models/checkpoints文件夹中(关于ComfyUI的使用下面章节介绍)

另外,本仓库还有2个重要的文件夹,同样建议全部下载到本地:

  • comfy_example_workflows:ComfyUI工作流样例配置文件(关于ComfyUI的使用下面章节介绍)
  • text_encoders:文本编码器模型文件夹,最后模型文件最后也需要放到ComfyUI./models/clip文件夹中(关于ComfyUI的使用下面章节介绍)

因模型文件比较大,直接使用Git无法直接下载到本地,我们通过git-lfs工具包下载:

brew install git-lfs

通过Git复制模型文件到笔记本电脑(文件夹:stable-diffusion-3-medium):

git lfs install
git clone https://www.modelscope.cn/AI-ModelScope/stable-diffusion-3-medium.git stable-diffusion-3-medium

如果因网络不佳等原因,下载可能会中断,我们可以通过以下命令在中断后多次执行继续下载,直到最终下载完成:

git lfs pull

模型文件列表

下载ComfyUI工作流可视化工具

上一章节,我们多次提到了ComfyUI,它是Stable Diffusion的工作流可视化工具之一,也是Stability AI官方推荐使用的可视化工具。

我们下载最新的ComfyUI到笔记本电脑(本地目录:ComfyUI):

git clone https://github.com/comfyanonymous/ComfyUI.git ComfyUI

本次部署教程中,ComfyUI中的models文件夹需要包括下载的模型文件:

% tree ./models 
./models
├── checkpoints
│   └── put_checkpoints_here
├── clip
│   └── put_clip_or_text_encoder_models_here
......其它省略......

checkpoints文件夹:是存放SD3模型文件根目录下的sd3_medium.safetensorssd3_medium_incl_clips.safetensorssd3_medium_incl_clips_t5xxlfp8.safetensors等模型文件的文件夹。

clip文件夹:是存放SD3模型文件text_encoders目录下的clip_g.safetensorsclip_l.safetensorst5xxl_fp8_e4m3fn.safetensorst5xxl_fp16.safetensors等模型文件的文件夹。

启动ComfyUI可视化界面

第一步: 复制模型文件到ComfyUI指定的models文件夹中,因为老牛同学使用的是Mac电脑,可以通过软链接方式实现复制的效果(如果是Windows电脑,请直接复制文件):

% cd ~/JupyterLab/ComfyUI/models/checkpoints
% ln -s ~/JupyterLab/stable-diffusion-3-medium/sd3_medium.safetensors sd3_medium.safetensors
% ln -s ~/JupyterLab/stable-diffusion-3-medium/sd3_medium_incl_clips.safetensors sd3_medium_incl_clips.safetensors
% ln -s ~/JupyterLab/stable-diffusion-3-medium/sd3_medium_incl_clips_t5xxlfp8.safetensors sd3_medium_incl_clips_t5xxlfp8.safetensors
%
% cd ~/JupyterLab/ComfyUI/models/clip
% ln -s ~/JupyterLab/stable-diffusion-3-medium/text_encoders/clip_g.safetensors clip_g.safetensors
% ln -s ~/JupyterLab/stable-diffusion-3-medium/text_encoders/clip_l.safetensors clip_l.safetensors
% ln -s ~/JupyterLab/stable-diffusion-3-medium/text_encoders/t5xxl_fp8_e4m3fn.safetensors t5xxl_fp8_e4m3fn.safetensors
% ln -s ~/JupyterLab/stable-diffusion-3-medium/text_encoders/t5xxl_fp16.safetensors t5xxl_fp16.safetensors

软链接建好之后,我们可以检查一下是否符合预期

% cd ~/JupyterLab/ComfyUI/models
% tree ./checkpoints 
./checkpoints
├── put_checkpoints_here
├── sd3_medium.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/sd3_medium.safetensors
├── sd3_medium_incl_clips.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/sd3_medium_incl_clips.safetensors
└── sd3_medium_incl_clips_t5xxlfp8.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/sd3_medium_incl_clips_t5xxlfp8.safetensors
%
% tree ./clip
./clip
├── clip_g.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/text_encoders/clip_g.safetensors
├── clip_l.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/text_encoders/clip_l.safetensors
├── put_clip_or_text_encoder_models_here
├── t5xxl_fp16.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/text_encoders/t5xxl_fp16.safetensors
└── t5xxl_fp8_e4m3fn.safetensors -> /Users/shizihu/JupyterLab/stable-diffusion-3-medium/text_encoders/t5xxl_fp8_e4m3fn.safetensors

第二步: 启动ComfyUI工作流可视化界面

进入ComfyUI根目录,安装Python依赖包列表:

% pip install -r requirements.txt

启动ComfyUI可视化工具:

% python main.py

ComfyUI启动成功

从启动日志可以看出,ComfyUI启动成功了:http://127.0.0.1:8188

使用ComfyUI通过文本生成图片

浏览器打开ComfyUI页面:http://127.0.0.1:8188 可以看到默认的SD3工作流,我们用自己的工作流完成绘画。

第一步: 修改模型文件./stable-diffusion-3-medium/comfy_example_workflows/sd3_medium_example_workflow_basic.json的第416行,去掉sdv3/2b_1024/sd3_medium.safetensors的相对目录为sd3_medium.safetensors(默认本模型文件,我们已经复制到了ComfyUI指定的目录中,因此无需相对目录):

......前面省略......
"widgets_values": ["sd3_medium.safetensors"
]
......后面省略......

第二步: 加载修改后的工作流配置文件:点击ComfyUILoad按钮,选择修改后的sd3_medium_example_workflow_basic.json文件:

加载工作流配置文件

可以看到工作流有很多参数可供设置,包括:选择模型正面Prompt提示词负面Prompt提示词图片尺寸/数量等输入参数:

工作流配置参数

第三步: 调整参数,生成图片:我们可以修改工作流中任意一个参数(最常修改的是Prompt提示词,包括正面和负面提示词),也可以点击右键增加工作流节点。最终参数调整确定之后,点击Queue Prompt按钮,开始排队生成图片:

生成图片

我们可以看到,生成图片处理中,ComfyUI根据编排好的工作流,按照依赖关系逐个节点执行,最终在Output中展示了根据提示生成的精美图片:

工作流结果

最终生成的图片:

最终图片

Stable Diffusion使用总结

至此,Stable Diffusion 3的部署和使用教程接近尾声了,我们可以尽情使用不同的工作流和调整不同参数来生成我们的图片了。

同时也恭喜你,和老牛同学一起,我们的大模型库又增添了重要的一员:文生图大模型!

SD3 参数调优: 生成写实或人物面部照片,可以将KSampler节点的cfg参数调低至2到3之间(默认为4.5);当包含文本时,使用4.5到5时效果会更好。大家可以多多尝试,探索一些其他参数产生的效果,欢迎留言。

同时SD3模型更适合自然语言提示词,而不是标签式的提示词(和MJ有一点点区别),我们可以详细描述图片的画面内容、构图、色彩、氛围,即使提示词很长,SD3模型也能处理的很好。


关注本公众号,我们共同学习进步👇🏻👇🏻👇🏻

微信公众号:老牛同学

微信公众号:老牛同学

Qwen2-7B 开源大模型

Qwen2阿里最强开源大模型(Qwen2-7B)本地部署、API调用和WebUI对话机器人

Llama-3-8B 开源大模型

玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端

一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南

基于Llama 3搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人

GLM-4-9B 开源大模型

本地部署GLM-4-9B清华智谱开源大模型方法和对话效果体验

ChatTTS 文本转语音模型

ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面

大模型应用

借助AI大模型,三分钟原创一部儿童故事短视频(附完整操作步骤)

高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

Python 小游戏

AI已来,我与AI一起用Python编写了一个消消乐小游戏

Python游戏编程:一步步用Python打造经典贪吃蛇小游戏


这篇关于Stable Diffusion 3 大模型文生图“开源英雄”笔记本部署和使用教程,轻松实现AI绘图自由的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073096

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置