使用篇(一):Ai绘图-Stable Diffusion WebUI

news2024/11/23 23:57:55

1.介绍

1.1 概述

Stable Diffusion Web UI是一个基于Stable diffusion AI模型的AI绘画软件。它是一个多功能的AI绘画软件,支持以下几个功能:

  1. 用户可以输入一堆关键词或一句话来生成图片。
  2. 它使用了图像加噪去噪过程中的生成模型—— Duffusion,能够在1000个步骤中将一张完全没有噪点的图像转化为一张充满噪点的无法辨认的图像。
  3. StableDiffusion是一种深度学习的文本到图像生成模型,而 Stable Diffusion Web UI则是对该模型进行封装并提供可操作界面的工具软件。
  4. Stable Diffusion Web UI中,面部修复适用于画真人、三次元的场景,在画全身时尤为有用;高清修复可以让低分辨率的图片变得清晰;而调参区则可以帮助用户调整参数以满足不同的需求。

目前 AI 有两个主流的方向,一个是以 Stable Diffusion 为代表的 AI 图像生成领域,一个是 ChatGPT 为代表的大语言模型领域。

1.2 背景

Stable Diffusion (稳定扩散) 是一个扩散模型,2022年8月由德国CompVis协同Stability AIRunway发表论文,并推出相关程序。

同年,AUTOMATIC1111开发了图形化界面:「Stable Diffusion WebUI」,这是能用AI技术生成图片的开源软件,只要给定一组描述文本,AI就会开始绘图;亦能模仿现有的图片,生成另一张图片。

2.安装运行

本人电脑环境是: Mac Os,内存16G

2.1 安装依赖

# 至于如何Homebrew这里不在叙述
$ brew install cmake protobuf rust python@3.10 git wget

2.2 安装源码:方式一

➜ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
Cloning into 'stable-diffusion-webui'...
remote: Enumerating objects: 28076, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 28076 (delta 20), reused 30 (delta 16), pack-reused 28035
Receiving objects: 100% (28076/28076), 32.57 MiB | 11.53 MiB/s, done.
Resolving deltas: 100% (19652/19652), done.

2.3 安装源码:方式二

安装方式一对于一些朋友来说,可能会由于网络的限制,而无法正常下载,即便上面下载成功,在运行的时候,可能还需要下载依赖项目和模型,之后在运行过程中又是各种坑,为此会把项目和模型进行压缩放到阿里云盘,通过以下方式可以获取

微信搜索【猿码记】公众号,回复stable-diffusion-webui,即可获取完整代码

2.4 运行

➜  ./webui.sh
...
Python 3.11.4 (main, Jul  5 2023, 08:41:25) [Clang 14.0.6 ]
Version: v1.6.0-2-g4afaaf8a
Commit hash: 4afaaf8a020c1df457bcf7250cb1c7f609699fa7
Launching Web UI with arguments: --skip-torch-cuda-test --upcast-sampling --no-half --use-cpu interrogate
no module 'xformers'. Processing without...
No module 'xformers'. Proceeding without it.
Warning: caught exception 'Torch not compiled with CUDA enabled', memory monitor disabled
Loading weights [0873291ac5] from /Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/models/Stable-diffusion/AbyssOrangeMix2_nsfw.safetensors
Creating model from config: /Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/configs/v1-inference.yaml
Running on local URL:  http://127.0.0.1:7860

不出意外的话(大部分都会出意外,短短一行启动代码,到处都是辛酸泪:joy:),运行成功会主动在浏览器打开下面页面

alt

2.5 踩坑点

1.HTTP/2 stream 1 was not closed
# 报错信息如下
➜ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
Cloning into 'stable-diffusion-webui'...

fatal: unable to access 'https://github.com/AUTOMATIC1111/stable-diffusion-webui.git/': HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

解决方法: 执行:git config --global http.version HTTP/1.1

2.RuntimeError: Couldn't install requirements for CodeFormer
Installing requirements for CodeFormer
Traceback (most recent call last):
  File "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/launch.py", line 48, in <module>
    main()
  File "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/launch.py", line 39, in main
    prepare_environment()
  File "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/modules/launch_utils.py", line 389, in prepare_environment
    run_pip(f"install -r \"{os.path.join(repo_dir('CodeFormer'), 'requirements.txt')}\"""requirements for CodeFormer")
  File "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/modules/launch_utils.py", line 138, in run_pip
    return run(f'"{python}" -m pip {command} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}", live=live)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/modules/launch_utils.py", line 115, in run
    raise RuntimeError("\n".join(error_bits))
RuntimeError: Couldn't install requirements for CodeFormer.
# 这里是生成后的运行脚本
Command: "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/venv/bin/python3" -m pip install -r "/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/repositories/CodeFormer/requirements.txt" --prefer-binary

这里比较奇怪的是,生成的命令用的python3不是我本地的环境,它自己在项目里又创建了一个,然后就变成了/Users/liuqh/ProjectItem/AiItem/stable-diffusion-webui/venv/bin/python3,我这边的解决方法是,找到 stable-diffusion-webui/modules/launch_utils.py文件在138行,加上-i https://mirrors.aliyun.com/pypi/simple

alt
3. RuntimeError: Input type (float) and bias type (c10::Half) should be the same

修改stable-diffusion-webui/webui-macos-env.sh,

# 把-no-half-vae改成 -no-half 
#export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate"
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half --use-cpu interrogate"

3.使用

3.1 生成图片

访问http://127.0.0.1:7860/

@注意:不指定端口的时候,如果上次的后台进程未能正常退出,再次打开端口会变

alt

3.2 页面参数说明

  • Stable Diffusion checkpoint:选择具体的模型
  • Prompt:正向提示词,描述你想要的图片,比如: girl,long hair,black clothes,big eyes(长发黑衣服大眼睛的女孩)@注意:不支持中文
  • Negative prompt:反向提示次,不想要在图像中出现的词,比如: low quality(低质量)
  • Sampling Method :抽样法,常用于去噪,内置多种算法可供选择。比如 DPM++ 2M Karras,可以很好地平衡了速度和质量。
  • Sampling Steps: 采样步骤数。虽然越多越好,但是值越大生成的时间越长。大部分情况选择: 20 ~ 25
  • Width & Height:输出图像的大小长和宽。长宽也不是随意设置;目前使用 v1 模型时,至少将一变设置为 512。目前已知可选的组合有: 512*512、512*768、768*512
  • Batch Count: 批次数量。
  • Batch size:每一批次要生成的图像数量。
  • CFG scale: 用于控制模型生成的图片,和提示词的符合度。默认为 7,数值越小 AI自由发挥的空间就越大,数值越大相对来说就越刻板(严格按照提示词);
  • Seed:指定一个随机种子,用于初始化图像生成过程。相同的种子值每次都会产生相同的图像集,这对于再现性和一致性很有用,如果将值设置为-1,则每次运行都会生成一个随机种子。
  • Hires.Fix: 高清修复,主要是提高生成的图像的分辨率, 注意:开启后生成图片会很慢;其他选项说明:
    • Upscaler:指的是放大算法,内置了很多算法,其中 R-ESRGAN 4x+:擅长写实图片、R-ESRGAN 4x+ Anime6B:擅长二次元图片
    • Hires setps:高清修复的步数和 Sampling Steps代表的意义一样;
    • Denoising strength: 重绘幅度, AI的自由发挥空间,值越大AI就越放飞自我,值越小就越按照原图重绘;
    • Upscale by: 放大的倍数,和下面两个互斥;
    • Resize width to: 指的是把图片放大后,宽度的像素;
    • Resize height to: 指的是把图片放大后,高度的像素;

更多配置说明可参见文档: https://stable-diffusion.org.cn/t/topic/22

3.3 在线生图

如果你觉得本地部署太麻烦,又想体验下下生图,推荐使用这个网站:在线免费生成图片: www.liblib.ai

1.编写提示词

这里可以写中文,支持一键翻译成英文.

image-20231109150041304
image-20231109150041304
2.设置参数

当勾选面部修复、高分辨率修复后,下面一些参数自动就会生成,无需再一一设置

alt
3. 生成结果

跟本地部署的生成的相比果然清楚好多,侧面说明我们还不太会使用

alt

4.启动参数

4.1 配置参数

-h, --help:显示帮助信息并退出。

--exit:安装后立即终止。

--data-dir:指定存储所有用户数据的基本路径,默认为"./"

--config:用于构建模型的配置文件路径,默认为 "configs/stable-diffusion/v1-inference.yaml"

--ckpt:稳定扩散模型的检查点路径;如果指定,该检查点将被添加到检查点列表并加载。

--ckpt-dir:稳定扩散检查点的目录路径。

--no-download-sd-model:即使没有找到模型,也不下载SD1.5模型。

--vae-dir:变分自编码器模型的路径。

--gfpgan-dir:GFPGAN目录。

--gfpgan-model:GFPGAN模型文件名。

--codeformer-models-path:Codeformer模型文件的目录路径。

--gfpgan-models-path:GFPGAN模型文件的目录路径。

--esrgan-models-path:ESRGAN模型文件的目录路径。

--bsrgan-models-path:BSRGAN模型文件的目录路径。

--realesrgan-models-path:RealESRGAN模型文件的目录路径。

--scunet-models-path:ScuNET模型文件的目录路径。

--swinir-models-path:SwinIR和SwinIR v2模型文件的目录路径。

--ldsr-models-path:LDSR模型文件的目录路径。

--lora-dir:Lora网络的目录路径。

--clip-models-path:CLIP模型文件的目录路径。

--embeddings-dir:用于文本逆向的嵌入目录,默认为 "embeddings"

--textual-inversion-templates-dir:文本逆向模板的目录。

--hypernetwork-dir:超网络目录。

--localizations-dir:本地化目录。

--styles-file:用于样式的文件名,默认为 "styles.csv"

--ui-config-file:用于UI配置的文件名,默认为 "ui-config.json"

--no-progressbar-hiding:不隐藏Gradio UI中的进度条(默认隐藏,因为在浏览器中使用硬件加速会降低机器学习速度)。

--max-batch-count:UI的最大批次计数值,默认为16。

--ui-settings-file:用于UI设置的文件名,默认为 "config.json"

--allow-code:允许从Web UI执行自定义脚本。

--share:使用Gradio的share=True,并使UI通过其网站访问(对我来说不起作用,但您可能会更幸运)。

--listen:使用0.0.0.0作为服务器名称启动Gradio,允许响应网络请求。

--port:使用给定的服务器端口启动Gradio,需要根/管理员权限才能使用1024以下的端口,默认为7860(如果可用)。 34. --hide-ui-dir-config:从Web UI中隐藏目录配置。

--freeze-settings:禁用编辑设置。

--enable-insecure-extension-access:无论其他选项如何,都启用扩展选项卡。

--gradio-debug:使用--debug选项启动Gradio。

--gradio-auth:设置Gradio身份验证,如 "username:password";或逗号分隔多个,如 "u1:p1,u2:p2,u3:p3"

--gradio-auth-path:设置Gradio身份验证文件路径,例如 "/path/to/auth/file",与--gradio-auth的格式相同。

--disable-console-progressbars:不在控制台输出进度条。

--enable-console-prompts:在使用txt2img和img2img生成时,在控制台打印提示。

--api:使用API启动Web UI。

--api-auth:设置API身份验证,如 "username:password";或逗号分隔多个,如 "u1:p1,u2:p2,u3:p3"

--api-log:启用所有API请求的日志记录。

--nowebui:仅启动API,不启动UI。

--ui-debug-mode:不加载模型以快速启动UI。

--device-id:选择要使用的默认CUDA设备(可能需要在此之前设置CUDA_VISIBLE_DEVICES=0,1等环境变量)。

--administrator:管理员权限。

--cors-allow-origins:以逗号分隔的列表形式允许的CORS来源(无空格)。

--cors-allow-origins-regex:以单个正则表达式的形式允许的CORS来源。

--tls-keyfile:部分启用TLS,需要--tls-certfile才能完全生效。

--tls-certfile:部分启用TLS,需要--tls-keyfile才能完全生效。

--server-name:设置服务器主机名。

--gradio-queue:使用Gradio队列;实验性选项;破坏重新启动UI按钮。

--skip-version-check:不检查torch和xformers的版本。

--no-hashing:禁用检查点的sha256哈希,以提高加载性能。

4.2 通用参数

--autolaunch:在启动时使用系统的默认浏览器打开WebUI URL。

--theme:在WebUI中使用指定的主题(“light”或“dark”)。如果未指定,则使用浏览器的默认主题。

--use-textbox-seed:在UI中使用文本框输入种子(没有上/下箭头,但可以输入长种子)。

--disable-safe-unpickle:禁用对PyTorch模型的恶意代码检查。

--ngrok:用于ngrok的自动令牌,是gradio --share的替代方案。

--ngrok-region:ngrok应该在其中启动的区域。

4.3 性能参数


--xformers:启用xformers以加速跨注意层。

--reinstall-xformers:强制重新安装xformers。在升级后使用,但升级后请移除,否则将一直重装xformers。

--force-enable-xformers:无论检查代码是否认为可以运行,都强制启用xformers的跨注意层;如果运行失败,请勿提交错误报告。

--opt-split-attention:强制启用Doggettx的跨注意层优化。默认情况下,对于启用CUDA的系统,此选项已开启。

--opt-split-attention-invokeai:强制启用InvokeAI的跨注意层优化。默认情况下,当CUDA不可用时,此选项已开启。

--opt-split-attention-v1:启用旧版本的分割注意力优化,该版本不会消耗所有可用的显存。

--opt-sub-quad-attention:启用内存高效的子二次交叉注意力层优化。

--sub-quad-q-chunk-size:子二次交叉注意力层优化使用的查询块大小。

--sub-quad-kv-chunk-size:子二次交叉注意力层优化使用的kv块大小。

--sub-quad-chunk-threshold:子二次交叉注意力层优化使用的显存使用率阈值。

--opt-channelslast:为4d张量启用备选布局,仅在具有Tensor核心的Nvidia显卡(16xx及更高版本)上可能导致更快的推理。

--disable-opt-split-attention:强制禁用跨注意层优化。

--disable-nan-check:不检查生成的图像/潜在空间是否包含nan值;在持续集成中运行时无需检查点。

--use-cpu:对指定模块使用CPU作为torch设备。

--no-half:不将模型切换为16位浮点数。

--precision:以此精度进行评估。

--no-half-vae:不将VAE模型切换为16位浮点数。

--upcast-sampling:向上采样。与 --no-half 无效。通常产生与 --no-half 类似的结果,但在使用较少内存的情况下性能更好。

--medvram:启用稳定扩散模型优化,牺牲一点速度以减少显存使用。

--lowvram:启用稳定扩散模型优化,牺牲大量速度以极低的显存使用。

--lowram:将稳定扩散检查点权重加载到显存而非RAM。

--always-batch-cond-uncond:禁用使用 --medvram 或 --lowvram 时为节省内存而启用的条件/无条件批处理。

本文由 mdnice 多平台发布

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

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

相关文章

与set和map相关的OJ题练习

一、两个数组的交集 题目链接&#xff1a; 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给两个数组&#xff0c;求在数组里面共同出现的部分&#xff0c;就是求两个数组的交集&#xff0c;返回顺序不做要求 解题思路&#xff1a; …

视频剪辑:制作视频画中画效果,背景图片的添加方法

随着社交媒体的兴起&#xff0c;视频制作越来越受到人们的关注。在视频制作过程中&#xff0c;除了主要的画面&#xff0c;背景图片往往能够增加视频的层次感和视觉效果。今天&#xff0c;我们就来探讨一下如何使用云炫AI智剪制作视频画中画效果&#xff0c;并添加背景图片。 在…

Java自学第6课:电商项目(2)

1 创建工具类并连接数据库 在工程src右键单击new&#xff0c;新建util包 再创建DBUtil类 数据库交互需要有数据库支持的包&#xff0c;这是官方给出的类库。 先声明1个代码块 // 静态代码块 只加载1次static{try {Class.forName("com.mysql.jdbc.Driver");} catch (…

基于springboot实现高校党务平台管理系统【项目源码】

基于springboot实现高校党务平台管理系统演示 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#x…

可持久化01Trie

例题&#xff1a; 解释&#xff1a; 首先这里要求连续异或&#xff0c;所以存储前缀异或和数组。首先的话&#xff0c;我们只考虑前r个版本的Trie&#xff0c;所以以root[r]为根节点的Trie就是1到r位置数。但是&#xff0c;还有一个l左端点&#xff0c;所以我们对于每一个节点…

python开发过程中注意编码规范~

文章目录 一、 代码编排二、 文档编排三、 空格的使用四、 注释五、 文档描述六、 命名规范总体原则&#xff0c;新编代码必须按下面命名风格进行&#xff0c;现有库的编码尽量保持风格。七 编码建议关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、…

解析虚拟文件系统的调用

Linux 可以支持多达数十种不同的文件系统。它们的实现各不相同&#xff0c;因此 Linux 内核向用户空间提供了虚拟文件系统这个统一的接口&#xff0c;来对文件系统进行操作。它提供了常见的文件系统对象模型&#xff0c;例如 inode、directory entry、mount 等&#xff0c;以及…

【Git】如何安装git,项目中使用git上传到远程仓库,使用git中对多人使用出现的版本问题的解决

前言&#xff1a; 一&#xff0c;Git的介绍&#xff0c;安装&#xff0c;与SVN的对比 1.1Git的介绍 Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控…

c语言练习10周(11~15)

将b串中的所有字母字符连接在a串之后并输出&#xff0c;a,b串最多30个字符。 题干将b串中的所有字母字符连接在a串之后并输出&#xff0c;a,b串最多30个字符。输入样例abcdef 1A2D3C4F5GG输出样例abcdefADCFGG #include<stdio.h> int main() {char a[30], b[30];int i0…

20 VPN详解

1、连接数据中心 1.第一种方式是走公网&#xff0c;但是公网太不安全 2.第二种方式是专线&#xff0c;但是比较贵 3.VPN连接2、vpn的概念 全名Virtual Private Network&#xff0c;虚拟专用网&#xff0c;就是利用开放的公众网络&#xff0c;建立专用数据传输通道&#xff0c…

无人机航迹规划:六种最新智能优化算法(DBO、LO、SWO、COA、LSO、KOA)求解无人机路径规划MATLAB

一、六种算法&#xff08;DBO、LO、SWO、COA、LSO、KOA&#xff09;简介 1、蜣螂优化算法DBO 蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为…

《荒野大镖客》游戏emp.dll丢失的修复方法,快速解决找不到emp.dll问题

《荒野大镖客》是一款备受玩家喜爱的开放世界冒险游戏&#xff0c;然而&#xff0c;有些玩家在游戏中可能会遇到emp.dll文件丢失的问题。emp.dll文件丢失是一个比较常见的问题&#xff0c;它会导致电脑系统出现各种异常情况&#xff0c;比如程序无法正常运行、弹出错误提示等。…

电脑上使用的待办事项便签工具选择哪一款?

电脑是日常办公中必不可少的工具&#xff0c;每一个人每天都要面对纷纷总总的工作待办任务&#xff0c;倘若能当日常工作待办逐一罗列好&#xff0c;提前制定好相关的工作计划后&#xff0c;就可以让各项工作有据可循&#xff0c;在电脑上有哪些可以记录待办事项的工具能实时起…

H5横屏适配方案

横屏模式一般使用场景比较少&#xff0c;特殊情况除外&#xff0c;一般用于游戏、操作性比较大的网页会采用横屏 整体代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" conte…

零基础入门Python基础知识全面梳理!从零开始成为编程高手

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、python程序的组成二、核心的数字类型1.整型 int &#xff08;0、负自然数、正自然数&#xff09;2.浮点数 float &#xff08;带有小数部分的数&#xff0c;小数…

app自动化测试(Android)--显式等待机制

WebDriverWait类解析 WebDriverWait 用法代码 Python 版本 WebDriverWait(driver,timeout,poll_frequency0.5,ignored_exceptionsNone)参数解析&#xff1a; driver&#xff1a;WebDriver 实例对象 timeout: 最长等待时间&#xff0c;单位秒 poll_frequency: 检测的间隔步…

配置中心和注册中心——Nacos

Nacos是一个开源的动态服务发现、配置管理和服务管理平台。它主要包括两个方面的功能&#xff1a;配置中心和注册中心。 1. 配置中心&#xff1a; Nacos作为配置中心&#xff0c;提供了一个集中管理和动态获取应用程序配置的平台。开发人员可以将配置信息存储在Nacos中&#x…

迅为RK3399Qt 实时时钟测试

QClock 测试资料在网盘“iTOP-3399 开发板\iTOP-3399 开发板\02_iTop-RK3399 开发资料汇总&#xff08;不含光盘内容&#xff09;\05_iTOP-3399 开发板 Qt 应用开发资料\3399 开发板 QT 测试-实时时钟”目录下&#xff0c;我们将要运行 QClock程序到开发板的 Qt 系统上。参考第…

力扣最热一百题——每日温度

Python后面的文章&#xff0c;内容都比较多&#xff0c;但是同时我又想保持每天更新的速度&#xff0c;所以Python的文章我继续打磨打磨&#xff0c;先更新一篇算法的文章。 一身正气报国家&#xff0c;旁无乱境不恋她 ヾ(◍∇◍)&#xff89;&#xff9e; 力扣题号&#xff1a…

Python实现从Labelme数据集中挑选出含有指定类别的数据集

Python实现从Labelme数据集中挑选出含有指定类别的数据集 前言前提条件相关介绍实验环境Labelme数据集中挑选出含有指定类别的数据集代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小…