stable diffusion 百宝书

news2024/12/25 12:29:22

文章目录

  • 0. 环境搭建
    • 0.1 Windows
      • 0.1.1 git环境安装
      • 0.1.2 python 环境搭建
        • 0.1.2.1 配置pip国内镜像源
      • 0.1.3 stable diffusion环境搭建
        • 0.1.3.1 远程访问Stable diffusion
        • 0.1.3.2 模型 Lora下载
  • 1. 基础知识
    • 1.1 Stable Diffusion Webui及基础参数
    • 1.2 参数说明
      • 1.2.1 采样方法
        • 1.2.1.1 采样接待步数
      • 1.2.2 提示词相关性
      • 1.2.3 随机种子
  • 参考文献

0. 环境搭建

0.1 Windows

0.1.1 git环境安装

去下方网站获取git的win安装包,之后不断点击下一步就可以了:

https://git-scm.com/

安装完之后,运行Win+R唤出控制台,执行如下命令检验是否安装完成

git --version

0.1.2 python 环境搭建

去下方网站获取python的win安装包,之后不断点击下一步就可以了。在最后一步,一定要选择 Add python.ext to PATH 环境变量。

https://www.python.org/

安装完之后,运行Win+R唤出控制台,执行如下命令检验是否安装完成

python --version

0.1.2.1 配置pip国内镜像源

运行Win+R唤出控制台,输入如下命令

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

0.1.3 stable diffusion环境搭建

  1. 去想要安装的盘符上新建个文件夹用于存放stable diffusion的相关信息
  2. 下载stable diffusion的开源仓库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
  1. 如果没问题的话,在当前目录会存在一个webui-user.bat这个批处理文件,双击运行
  2. 在批处理的控制台会出现如下信息Running at local url:http://127.0.0.1:7860类似的信息,复制这个网址,用浏览器打开

0.1.3.1 远程访问Stable diffusion

远程访问主要有两种方式:

  • 内网穿透:依赖内网穿透软件(比如花生壳),这样可以在公网环境访问你的远端stable diffusion,随时出图。但是这依赖我们在批处理文件之中设置如下的启动参数:
set COMMANDLINE_ARGS= --listen
  • 批处理启动参数:如果你的远端环境可以访问外网,可以在批处理文件中增加如下述的启动命令:
set COMMANDLINE_ARGS= --share

注:不能同时设置listen和share参数,因为listen参数的优先级会更高

0.1.3.2 模型 Lora下载

  1. 访问相关模型网站,笔者常去的是下面的C站:

     https://civitai.com/
    

在这里插入图片描述
2. 点击自己喜欢的模型,选择下载
在这里插入图片描述
3. 将下载后的文件放到stable diffusion指定的目录下盘符:\目录\stable-diffusion-webui\models\Stable-diffusion

注: Lora下载放到这个目录盘符:\目录\stable-diffusion-webui\models\Lora

  1. 点击stable diffusion的刷新按钮,就可以刷新了
    在这里插入图片描述

注:C站目前应该是禁止大陆ip访问了,大家可以科学上网的时候绕过大陆ip

1. 基础知识

Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它是一种潜在扩散模型,它由创业公司Stability AI与多个学术研究者和非营利组织合作开发。目前的SD的源代码和模型都已经开源,在Github上由AUTOMATIC1111维护了一个完整的项目,正在由全世界的开发者共同维护。由于完整版对网络有一些众所周知的需求,国内有多位开发者维护着一些不同版本的封装包。

1.1 Stable Diffusion Webui及基础参数

下图是Stable Diffusion的Web ui展示:
在这里插入图片描述

1.2 参数说明

上图之中存在着很多参数,我这里按照对用户的重要性来逐一说明:

1.2.1 采样方法

采样方法总结

  • 如果只是想得到一些较为简单的结果:选用欧拉(Eular)或者Heun
  • 对于侧重于速度、融合、新颖且质量不错的结果
  • DPM++ 2M Karras, Step Range:20-30
    
  • UniPc, Step Range: 20-30
    
  • 期望得到高质量的图像,且不关心图像是否收敛
  • DPM ++ SDE Karras, Step Range:8-12 
    
  • DDIM, Step Range:10-15
    
  • Euler : 基于Karras论文,在K-diffusion实现,20-30steps就能生成效果不错的图片,采样器设置页面中的 sigma noise,sigma tmin和sigma churn这三个属性会影响到它
  • Euler a: 使用了祖先采样(Ancestral sampling)的Euler方法,受采样器设置中的eta参数影响
  • LMS:线性多步调度器(Linear multistep scheduler)源于K-diffusion的项目实现
  • heun:基于Karras论文,在K-diffusion实现,受采样器设置页面中的 sigma参数影响
  • DPM2:这个是Katherine Crowson在K-diffusion项目中自创的,灵感来源Karras论文中的DPM-Solver-2和算法2,受采样器设置页面中的 sigma参数影响;DPM2 a使用了祖先采样(Ancestral sampling)的DPM2方法,受采样器设置中的ETA参数影响
  • DPM++ 2S a:基于Cheng Lu等人的论文(改进后,后面又发表了一篇),在K-diffusion实现的2阶单步并使用了祖先采样(Ancestral sampling)的方法,受采样器设置中的eta参数影响;Cheng Lu的github中也提供已经实现的代码,并且可以自定义,1、2、3阶,和单步多步的选择,webui使用的是K-diffusion中已经固定好的版本。对细节感兴趣的小伙伴可以参考Cheng Lu的github和原论文。
  • DPM++ 2M:基于Cheng Lu等人的论文(改进后的版本),在K-diffusion实现的2阶多步采样方法,在Hagging face中Diffusers中被称作已知最强调度器,在速度和质量的平衡最好。这个代表M的多步比上面的S单步在采样时会参考更多步,而非当前步,所以能提供更好的质量。但也更复杂。
  • DPM++ SDE:基于Cheng Lu等人的论文的,DPM++的SDE版本,即随机微分方程(stochastic differential equations),而DPM++原本是ODE的求解器即常微分方程(ordinary differential equations),在K-diffusion实现的版本,代码中调用了祖先采样(Ancestral sampling)方法,所以受采样器设置中的ETA参数影响
  • DPM fast: 基于Cheng Lu等人的论文,在K-diffusion实现的固定步长采样方法,用于steps小于20的情况,受采样器设置中的ETA参数影响
  • DPM adaptive: 基于Cheng Lu等人的论文,在K-diffusion实现的自适应步长采样方法,DPM-Solver-12 和 23,受采样器设置中的ETA参数影响
  • Karras后缀:LMS Karras 基于Karras论文,运用了相关Karras的noise schedule的方法,可以算作是LMS使用Karras noise schedule的版本;

1.2.1.1 采样接待步数

输出画面需要的步数,每一次采样步数都是在上一次的迭代步骤基础上绘制生成一个新的图片,一般来说采样迭代步数保持在 18-30 左右即可,低的采样步数会导致画面计算不完整,高的采样步数仅在细节处进行优化,对比输出速度得不偿失。

1.2.2 提示词相关性

Stable Diffusion 中的提示词相关性指的是输入提示词对生成图像的影响程度。当我们提高提示词相关性时,生成的图像将更符合提示信息的样子;相反,如果提示词相关性较低,对应的权重也较小,则生成的图像会更加随机。
因此,通过调整提示词相关性,可以引导模型生成更符合预期的样本,从而提高生成的样本质量。

  1. 在具体应用中,对于人物类的提示词,一般将提示词相关性控制在 7-15 之间;
  2. 而对于建筑等大场景类的提示词,一般控制在 3-7 左右。这样可以在一定程度上突出随机性,同时又不会影响生成图像的可视化效果。

因此,提示词相关性可以帮助我们通过引导模型生成更符合预期的样本,从而提高生成的样本质量。

1.2.3 随机种子

随机种子是一个可以锁定生成图像的初始状态的值。当使用相同的随机种子和其他参数,我们可以生成完全相同的图像。设置随机种子可以增加模型的可比性和可重复性,同时也可以用于调试和优化模型,以观察不同参数对图像的影响。

在 Stable Diffusion 中,常用的随机种子有-1 和其他数值。当输入-1 或点击旁边的骰子按钮时,生成的图像是完全随机的,没有任何规律可言。而当输入其他随机数值时,就相当于锁定了随机种子对画面的影响,这样每次生成的图像只会有微小的变化。因此,使用随机种子可以控制生成图像的变化程度,从而更好地探索模型的性能和参数的影响。

参数含义
采样方法如果只是想得到一些较为简单的结果:选用欧拉(Eular)或者Heun
对于侧重于速度、融合、新颖且质量不错的结果
* DPM++ 2M Karras, Step Range:20-30
* UniPc, Step Range: 20-30
期望得到高质量的图像,且不关心图像是否收敛
* DPM ++ SDE Karras, Step Range:8-12
* DDIM, Step Range:10-15
提示词相关性对于人物类的提示词,一般将提示词相关性控制在 7-15 之间;
而对于建筑等大场景类的提示词,一般控制在 3-7 左右
模型用素材+SD低模(如SD1.5/SD1.4/SD2.1),深度学习之后炼制出的大模型,可以直接用来生图。大模型决定了最终出图的大方向
VAE类似类似美颜工具之中的滤镜,是对大模型的补充,稳定画面的色彩范围
LoRA模型插件,是在基于某个大模型的基础上,深度学习之后炼制出的小模型。需要搭配大模型使用,可以在中小范围内影响出图的风格,或是增加大模型所没有的东西。炼制的时候如果基于SD底模,在不同大模型之间更换使用时的通用性会较好。但如果基于特定的大模型,可能会在和该大模型配合时得到针对性的极佳效果
ControlNet能够基于现有图片得到诸如线条或景深的信息,再反推用于处理图片

在这里插入图片描述

参考文献

  1. Stable Diffusion-采样器篇 --> 1.2.1 采样方法
  2. stable diffusion webui如何工作以及采样方法的对比 --> 1.2.1 采样方法
  3. 万字保姆级教程!Stable Diffusion完整入门指南 --> 1.2 参数说明

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

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

相关文章

【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B

【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B 简介环境配置环境搭建依赖安装 代码及模型权重拉取拉取 Chinese-LLaMA-Alpaca拉取 llama-30b-hf 模型权重及代码拉取 chinese-llama-lora-33b 模型权重及代码 合并模型权重先转换 pth 类型的模型权重&…

docker版jenkins安装node打包vue2

下载node 通过jenkins配置下载因为某些原因会失败,故自己下载安装https://nodejs.org/zh-cn/download解压然后复制到docker的jenkins容器 tar -xvf node-v16.18.1-linux-x64.tar.xzdocker cp ./node-v16.18.1-linux-x64 jenkins:/node配置 jenkins-全局工具配置- …

【Vim编辑器】编码技巧:模板(自动添加信息)+配置参考(~/.vimrc)

前言: 在编写代码时,为了提高代码的可读性和维护性,我们经常在文件的头部添加一些信息提示,如作者、日期、版本号等。本文介绍了如何在 Vim 编辑器中实现自动添加信息提示的功能。 结尾提供~/.vimr参考配置,可提高代码…

短视频seo矩阵+抖音小程序源码开源部署(二)

一、 开发思路: 通过短视频seo矩阵抖音小程序的形式,实现视频的批量制作,小程序内容批量挂载,客户线索批量收集,实现企业运营价值最大化。开发逻辑:通过短视频矩阵布局seo搜索关键词,接入小程序…

Elasticsearch:文档版本控制和乐观并发控制

在今天的文章中,我来详细描述一下 Elasticsearch 文档的版本控制以及如何更新文档。你也可以阅读我之前的文章 “Elasticsearch:深刻理解文档中的 verision 及乐观并发控制”。 版本控制 我们知道 Elasticsearch 的每个文档都有一个相对应的版本。这个版…

GO微服务简介及特性介绍

微服务特性 一、微服务简介-构建单体应用 互联网技术发展迅速的今天,微服务倍受关注:文章、博客、社交媒体讨论和会议演讲都在谈论。与此同时,也有持怀疑态度的软件社区人员认为微服务没什么新鲜可言。反对者声称它的思想只是面向服务架构的…

Windows系统安装JAVA步骤流程(超详细)

超详细的Windows系统安装JAVA步骤流程,Windows操作系统安装java,先下载JDK,然后配置环境变量,阿里云百科分享详细安装流程如下: 目录 Window操作系统安装java流程 下载JDK 配置环境变量 JAVA_HOME 设置 PATH设置…

Centos安装RabbitMQ

#安装 yum install rabbitmq-server #启动 systemctl start rabbitmq-server #查看状态 systemctl status rabbitmg-server #安装管理插件 rabbitmg-plugins enable rabbitmg_management #新增admin账号 rabbitmqctl add_user admin admin #设置为管理员 rabbitmqctl set_user_…

电子电气架构——车载DoIP通信

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例外的是…

基于FreeRTOS的嵌入式设备管理关键技术研究及实现(学习二)

嵌入式操作系统FreeRTOS FreeRTOS是一个专门为轻量级嵌入式应用设计的迷你操作系统,它的主要功能由IPC、时钟管理、内存管理、任务通知以及任务调度等部分构成。 FreeRTOS的代码可以分解为三个主要区块:任务调度、通讯、硬件库。 任务调度:F…

windows环境安装robotframework-ride

在Windows环境下,可以通过以下步骤安装Robot Framework RIDE: 安装Python 首先,需要在Windows环境下安装Python。建议使用Python 3.x版本,可以从官方网站下载并安装:https://www.python.org/downloads/windows/ 安装w…

shiro登录认证

一,创建数据库 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS user; CREATE TABLE user ( uid int(11) NOT NULL AUTO_INCREMENT, uname va…

opencv中Rect()类与rectangle()函数详解

文章目录 Rect()矩形类1、实例化 Rect() 类:(1)构造函数: 2、Rect类的成员函数(1)rect.size() 和 rect.area() 和 rect.width() 和 rect.height(),用来描述矩形的宽度,高度&#xff…

SQL专家云回溯某时间段内的阻塞

背景 SQL专家云像“摄像头”一样,对环境、参数配置、服务器性能指标、活动会话、慢语句、磁盘空间、数据库文件、索引、作业、日志等几十个运行指标进行不同频率的实时采集,保存到SQL专家云自己的数据库中。因此可以随时对任何一个时间段进行回溯。 趋势…

基于C++、GDAL、OpenCV的矢量数据骨架线提取算法

基于C、GDAL、OpenCV的矢量数据骨架线提取算法 CGAL已经实现了该功能,但由于CGAL依赖于Boost库,编译后过大,因此本文所采用的这套方式实现骨架线提取功能。 效果: 思路: 1、将导入shp按照要素逐一拆分成新的shp 2、…

java中如何将一个集合list转成以逗号隔开的字符串

事例代码 代码&#xff1a; package com.air.app;import java.util.ArrayList; import java.util.List;public class ListToStringTest {public static void main(String[] args) {//定义list集合List<String> list new ArrayList<>();list.add("1");…

SolidUI AI生成可视化,开创性开源项目,版本0.1.0 功能讲解

文章目录 背景项目名字含义登录页含义产品思维0.1.0 版本内涵功能列表数据源管理项目管理设计页面 背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。Solid…

多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

linux_driver_day03

作业1 题目&#xff1a; 通过ioctl函数选择不同硬件的控制&#xff0c;LED 蜂鸣器 马达 风扇 代码&#xff1a; 代码太多只展示 led 部分&#xff0c;点击查看完整代码 led.c #include "led.h" #include "head.h"static void all_led_init(void);stati…

问题1:矩阵置零 问题2:搜索二维矩阵

问题1&#xff1a;矩阵置零 给定一个 *m* x *n* 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路&#xff1a; 1.先遍历一遍矩阵&#xff0c;将元素为0的行和列都标记为true 2.再遍历一遍矩阵&#xff0c…