stable diffusion webui 教程:安装与入门

2023-11-16

原理简介

Stable diffusion是一种用于图像处理的算法,主要用于处理图像中的噪声问题。该算法的源代码和实现可以根据不同的编程语言和库进行实现,以下是对Python中使用的源代码进行分析:

1.导入库和模块

import numpy as np
import cv2

该算法主要使用了NumPy和OpenCV库,前者是Python中用于数值计算的基础库,后者是用于计算机视觉的著名库。在代码中,我们还需要使用NumPy中的一些数组操作和OpenCV中的图像操作。

2.定义函数

def stable_diffusion_filter(img, k=0.1, t=50, sigma=10):
    filtered_img = img.astype(np.float32)
    for i in range(t):
        dx = cv2.Sobel(filtered_img, cv2.CV_32F, 1, 0, ksize=3)
        dy = cv2.Sobel(filtered_img, cv2.CV_32F, 0, 1, ksize=3)
        dxx = cv2.Sobel(dx, cv2.CV_32F, 1, 0, ksize=3)
        dyy = cv2.Sobel(dy, cv2.CV_32F, 0, 1, ksize=3)
        dxy = cv2.Sobel(dx, cv2.CV_32F, 0, 1, ksize=3)
        dxy2 = cv2.Sobel(dy, cv2.CV_32F, 1, 0, ksize=3)
        num = dxx * dyy - dxy * dxy2
        den = dxx + dyy + sigma
        filtered_img += k * num / den
    return filtered_img

该函数是对图像进行稳定扩散滤波的主体部分。该函数使用了图像的梯度信息进行计算,并根据梯度的变化对图像进行滤波。在这个函数中,我们需要指定一些参数,如滤波器系数k、迭代次数t以及平滑参数sigma。

在函数中,我们首先将输入的图像转换为浮点数数组,这样我们可以进行计算。然后,我们迭代t次,每次使用Sobel算子计算图像的x和y方向的梯度,并使用这些梯度计算x和y方向的二阶导数dxx和dyy,以及混合导数dxy和dxy2。使用这些导数,我们计算了一个num和den的值,并使用它们来更新过滤图像。最后,我们返回滤波后的图像。

3.调用函数

img = cv2.imread('input.jpg')
filtered_img = stable_diffusion_filter(img)
cv2.imwrite('output.jpg', filtered_img)

在调用该函数之前,我们需要首先读入输入图像。这可以通过OpenCV库中的imread函数实现。然后,我们调用stable_diffusion_filter函数对图像进行滤波,并将结果保存到一个变量中。最后,我们使用OpenCV中的imwrite函数将滤波后的图像保存到磁盘中。Stable diffusion是一种用于图像处理的算法,主要用于处理图像中的噪声问题。该算法的源代码和实现可以根据不同的编程语言和库进行实现,以下是对Python中使用的源代码进行分析:

1.导入库和模块

import numpy as np
import cv2

该算法主要使用了NumPy和OpenCV库,前者是Python中用于数值计算的基础库,后者是用于计算机视觉的著名库。在代码中,我们还需要使用NumPy中的一些数组操作和OpenCV中的图像操作。

2.定义函数

def stable_diffusion_filter(img, k=0.1, t=50, sigma=10):
    filtered_img = img.astype(np.float32)
    for i in range(t):
        dx = cv2.Sobel(filtered_img, cv2.CV_32F, 1, 0, ksize=3)
        dy = cv2.Sobel(filtered_img, cv2.CV_32F, 0, 1, ksize=3)
        dxx = cv2.Sobel(dx, cv2.CV_32F, 1, 0, ksize=3)
        dyy = cv2.Sobel(dy, cv2.CV_32F, 0, 1, ksize=3)
        dxy = cv2.Sobel(dx, cv2.CV_32F, 0, 1, ksize=3)
        dxy2 = cv2.Sobel(dy, cv2.CV_32F, 1, 0, ksize=3)
        num = dxx * dyy - dxy * dxy2
        den = dxx + dyy + sigma
        filtered_img += k * num / den
    return filtered_img

该函数是对图像进行稳定扩散滤波的主体部分。该函数使用了图像的梯度信息进行计算,并根据梯度的变化对图像进行滤波。在这个函数中,我们需要指定一些参数,如滤波器系数k、迭代次数t以及平滑参数sigma。

在函数中,我们首先将输入的图像转换为浮点数数组,这样我们可以进行计算。然后,我们迭代t次,每次使用Sobel算子计算图像的x和y方向的梯度,并使用这些梯度计算x和y方向的二阶导数dxx和dyy,以及混合导数dxy和dxy2。使用这些导数,我们计算了一个num和den的值,并使用它们来更新过滤图像。最后,我们返回滤波后的图像。

3.调用函数

img = cv2.imread('input.jpg')
filtered_img = stable_diffusion_filter(img)
cv2.imwrite('output.jpg', filtered_img)

在调用该函数之前,我们需要首先读入输入图像。这可以通过OpenCV库中的imread函数实现。然后,我们调用stable_diffusion_filter函数对图像进行滤波,并将结果保存到一个变量中。最后,我们使用OpenCV中的imwrite函数将滤波后的图像保存到磁盘中。

一、源码仓库

https://github.com/AUTOMATIC1111/stable-diffusion-webui

二、模型库地址

https://civitai.com/

三、在 Windows 上自动安装步骤

会linux基本上都懂得用github仓库,本指南主要面向小白,所以以windows为主。

安装Python

  1. 安装 Python 3.10.6 , 并检查 python 是否添加进全局变量.

安装git

安装 git.

下载源代码

运行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git.

编辑 webui-user.bat

下载完之后,进入stable-diffusion-webui目录

@echo off

set PYTHON= { 这里填上你的python的真实地址 }\python.exe
set http_proxy= {这里填上你的vpn的地址}
set https_proxy= {这里填上你的vpn的地址}
set GIT=
set VENV_DIR=

REM 如果没有显卡就加上 --no-half --skip-torch-cuda-test,如果要开通API功能就加上 --api
set COMMANDLINE_ARGS= --no-half --skip-torch-cuda-test --api

git pull
call webui.bat

四、如何打开

  1. 双击运行 webui-user.bat
  2. 启动后就会开始执行python的本地服务器,并监听7860 端口,所以浏览器打开:http://127.0.0.1:7860 即可。

五、依据文字生成图片

在这里插入图片描述

六、API在哪里?

打开链接:http://127.0.0.1:7860/docs
这里面会有接口列表。
sdapi 开头的都是可使用的接口。
在这里插入图片描述

七、用python调用API接口示例

import requests
url = "http://127.0.0.1:7860"

payload = {
    "prompt": "puppy dog",
    "steps": 5
}

response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)

r = response.json()
print(r)

八、如何制作生成精美的图片

1、下载模型

因为模型是别人反复调试配备好的模板,生成的图片质量比较上乘

2、参考(抄袭)别人的提示词

除了模型,还要加上成熟的提示词,(要求英文的)这样才能进行精确的微调与操作

注意事项:生成的图片是比较随机的,所以可以一次性生成多张,方便挑选。

如果没有显卡的话,生成的速度会比较慢。建议加上显卡。

九、如何使用模型

为了让生成的图片更加好看,我们需要使用别人已经训练好的模型。

1. LoRA 是什么?

LoRA[^1],英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。

比如,GPT-3有1750亿参数,为了让它能干特定领域的活儿,需要做微调,但是如果直接对GPT-3做微调,成本太高太麻烦了。

LoRA的做法是,冻结预训练好的模型权重参数,然后在每个Transformer(Transforme就是GPT的那个T)块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,所以,大大减少了需要训练的计算量。

LoRA的微调质量与全模型微调相当。要做个比喻的话,就好比是大模型的一个小模型,或者说是一个插件。

2. LoRA 目录

路径:stable-diffusion-webui\models\Lora
下载完的 LoRA 文件,直接拷贝到这个目录即可。

先试着生成图片,后续再一步步生成精致的图片.


[^1] https://zhuanlan.zhihu.com/p/610031713

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stable diffusion webui 教程:安装与入门 的相关文章

随机推荐

  • Python 重命名文件或目录(os.rename)

    文章目录 1 概述 2 语法 os rename 2 1 相对路径 2 2 绝对路径 3 扩展 3 1 os 模块详解 1 概述 mermaid svg 9u1Lg7aqBXqPfILR label font family trebuche
  • Python面试常见的30个问题及答案

    Python面试问题 问题1 Python的主要功能是什么 python特性如下 解释型 动态类型 面向对象 简洁明了 免费自由 有一个庞大的社区 Q 2 区分深层和浅层拷贝 深拷贝将对象复制到另一个对象中 这意味着如果您对对象的副本进行更
  • vue-resource的$http.jsonp方法例子

    div class box div
  • svn版本回退

    SVN版本回退 当一不小心把文件改错了或者误删除了文件并提交到了服务器 我们要取消这些修改的话 首先就是将这个文件还原到上一个修订的版本的内容 revert to this rebision 然后将这个文件重新提交 那么服务器上的这个文件就
  • 集成开发工具使用

    集成开发工具使用 Intellij IDEA介绍 下载 安装 IDEA开发Java项目 IDEA快捷键 IDEA常见配置和操作的学习 1 IDEA 1 1 IDEA概述 IDEA全称Intellij IDEA 是用于Java语言开发的集成环
  • Windows Server 2016-OU组织单位日常操作

    技术无所谓贵贱 既然曾经做过就总该是要留下点什么 毕竟做技术这些年给我们留下太多太多的成长经历 总有人问这些已经很皮毛了为什么还要写 其实没那么多花哨理由 就是想着做或者不做这一块总是要对过往做个简单归总 习惯已成自然 虽然因为种种原因频繁
  • 使用http动词篡改的认证旁路

    文章目录 一 漏洞描述 二 解决建议 三 解决方法 Springboot 配置文件增加配置 编写配置类 编写过滤器 提示 以下是本篇文章正文内容 下面案例可供参考 一 漏洞描述 可能会升级用户特权并通过 Web 应用程序获取管理许可权可能会
  • C++小坑:问号表达式的输出

    文章目录 发现问题 解决方案 发现问题 本来只是想写这样一个测试是否连接成功的判断 std cout lt lt Result gt lt lt Avaliable hey you got it hell suck it lt lt std
  • DSView源码阅读笔记(持续更新中···)

    一 DSView源码阅读笔记 主线任务 将源码成功编译运行 提取示波器功能代码 添加示波器通道数量 找到接收数据部分源码 在win平台上使用qt开发环境进行代码重构 支线任务 以下笔记内容部分是猜测内容 DSView pv mainwind
  • RMS正则化 和 STD正则化 的一些见解

    研究styleganv2过程中 记录下它使用的正则化方法的一些见解 RMS 方均根 STD 标准差 stylegan 中的 pixel norm 是 RMS正则化 常见的BN层 IN层 用的是STD 在不减均值的情况下 RMS正则化公式 t
  • 针对于QT5下找不到QApplication头文件的问题界解决

    感谢前辈的总结 这里用了CTRL C CTRL V进行操作 原地址 http bbs csdn net topics 380130389 老版本 C C code 1 2 include
  • 【计算机网络】数据通信的基础知识

    通信系统的一般模型 数据通信系统的组成部分 源点 信源 产生数据 如从键盘输入 产生数字比特流 发送器 对数字比特流进行编码 如调制器 信道 是信号传输的通道 可能是一条简易的传输线路 也可能是一个复杂的网络 接收器 设备的功能与发送设备相
  • 保姆式教学-实现天空盒旋转

    目录 一 天空盒材质设置 1 在菜单栏window gt Rendering gt lighting 2 设置天空盒子材质 替换默认材质 3 认识Rotation变量 二 代码实现让天空盒转起来 在一个小Unity项目中 需要将天空盒旋转
  • 将MATLAB环境下深度学习目标检测模型部署在Jetson TX2开发板

    摘要 在MATLAB2019b环境下训练深度学习目标检测模型 利用MATLABcoder和GPUcoder生成c 代码和CUDA代码 并部署在NVIDIA Jetson TX2开发板上运行 1 利用NVIDIA SDK manager对TX
  • Python的heapq堆模块

    heapq模块 一 heapq内置模块 二 heapq 模块的使用 1 创建堆方法 2 访问堆的方法 2 获取堆的最大值 最小值方法 总结 一 heapq内置模块 Python中的heapq模块提供了一种堆队列heapq类型 这样实现堆排序
  • Java线程与操作系统线程的关系

    操作系统的线程 Linux操作系统启动一个线程 int pthread create pthread t thread const pthread attr t attr void start routine void void arg 再
  • UE4-DeltaTime(时间增量)

    UE4 DeltaTime 时间增量 Time 2020年10月14日13 33 52 Author Yblackd UE4 DeltaTime 1 结论 2 deltaTime 增量时间 3 为什么乘以 时间增量 4 注意误区 5 参考
  • Linux:Xorg占用现存过大问题

    usr lib xorg Xorg占用3692 MB显存 导致程序出现CUDA out of memory问题 解决方案 1 Ctrl Alt F1 F7 关闭图形界面 输入用户名 密码 输入nvidia smi查看GPU使用情况 发现明显
  • 中国电子信息制造产业运营模式及未来投资方向建议报告2022版

    中国电子信息制造产业运营模式及未来投资方向建议报告2022版 修订日期 2022年2月 出版单位 鸿晟信合研究院 对接人员 周文文 内容分析有删减 了解详情可查看咨询鸿晟信合研究院专员 目录 第1章 中国电子信息制造业发展环境分析 1 1
  • stable diffusion webui 教程:安装与入门

    stable diffusion webui 安装与入门 原理简介 一 源码仓库 二 模型库地址 三 在 Windows 上自动安装步骤 安装Python 安装git 下载源代码 编辑 webui user bat 四 如何打开 五 依据文