Stable Diffusion - 超分辨率插件 StableSR v2 (768x768) 配置与使用

news2024/9/24 9:24:28

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/131582734

Stable Diffusion

论文:Exploiting Diffusion Prior for Real-World Image Super-Resolution

StableSR 算法提出了一种新颖的方法,利用预训练的文本到图像扩散模型中封装的先验知识,来实现盲超分辨率(SR)。具体来说,通过使用时间感知编码器,可以在不改变预训练的合成模型的情况下,实现令人满意的恢复结果,从而保留了生成先验并最小化了训练成本。为了弥补扩散模型固有的随机性造成的保真度损失,引入了一个可控的特征包裹模块,允许用户在推理过程中通过简单地调整一个标量值来平衡质量和保真度。此外,开发了一种渐进式聚合采样策略,以克服预训练扩散模型的固定尺寸限制,使其能够适应任何尺寸的分辨率。使用合成和真实世界的基准数据集对我们的方法进行了全面的评估,结果表明它优于当前最先进的方法。

工程:sd-webui-stablesr

网站:https://github.com/pkuliyi2015/sd-webui-stablesr/blob/master/README_CN.md

插件依赖 Tiled Diffusion 和 Tiled VAE。

启动命令:

cd stable-diffusion-webui
conda deactivate
source venv/bin/activate
nohup python -u launch.py --port 9301 --xformers --theme dark > nohup.sd.out &
tail -f nohup.sd.out

1. 模型和插件

下载参考:https://github.com/pkuliyi2015/sd-webui-stablesr/blob/master/README_CN.md

下载 StableSR 模型的v2版本,即768版本,准备使用,建议提前下载 (下载时间大约 40 min):

  • v2-1_768-ema-pruned.ckpt (5.21G): https://huggingface.co/stabilityai/stable-diffusion-2-1/blob/main/v2-1_768-ema-pruned.ckpt
  • webui_768v_139.ckpt (422M): https://huggingface.co/Iceclear/StableSR/blob/main/webui_768v_139.ckpt
  • vqgan_cfw_00011_vae_only.ckpt (746M): https://drive.google.com/file/d/1ARtDMia3_CbwNsGxxGcZ5UP75W4PeIEI/view

需要安装 2 个扩展插件工程:

  • sd-webui-stablesr: https://ghproxy.com/https://github.com/pkuliyi2015/sd-webui-stablesr.git
  • multidiffusion-upscaler-for-automatic1111: https://ghproxy.com/https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111.git

在 GitHub 工程链接之前,加入前缀 https://ghproxy.com/ ,即可快速安装,例如:

https://ghproxy.com/https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111.git 

使用百度云盘下载模型至服务器:

pip install bypy
bypy info
bypy --help
bypy downdir /stable_diffusion/stable_sr/ stable_sr/

复制模型至工程目录:

  • Stable Diffusion 模型,v2-1_768-ema-pruned.ckptstable-diffusion-webui/models/Stable-diffusion
  • VAE 模型,vqgan_cfw_00011_vae_only.ckptstable-diffusion-webui/models/VAE
  • StableSR 模型,webui_768v_139.ckptstable-diffusion-webui/extensions/sd-webui-stablesr/models

模型与插件安装完成之后,重新启动即可,即:

Extensions

2. 参数配置

选择合适的参数配置,出图效果较好。

2.1 配置模型与提示词

修改 Stable Diffusion 模型外挂 VAE 模型 为已准备的模型:

  • Stable Diffusion 模型v2-1_768-ema-pruned.ckpt
  • 外挂 VAE 模型vqgan_cfw_00011_vae_only.ckpt

即:

Model

同时,采样方法使用 Eular a,即可,其余不需修改。

注意:不需勾选 面部修复重绘幅度 使用默认 0.7重回尺寸倍数 也不需修改,默认1倍,其实以 StableSR 脚本为准,脚本设置 2 倍,即缩放 2 倍。

根据官方指引,添加 负向提示词,效果更好,即

3d, cartoon, anime, sketches, (worst quality:2), (low quality:2)

2.2 配置 StableSR

点击 图生图 选项,在最下面的脚本中,选择 StableSR,配置参数:

  1. 选择 SR Modelwebui_768v_139.ckpt
  2. Color Fix:选择 Wavelet
  3. 勾选 Pure Noise
  4. 注意:StableSR 的放大倍数,需要与 Tiled Diffusion 的放大倍数保持一致。

即:

StableSR

2.3 配置 Tiled Diffusion 和 Tiled VAE

Tiled DIffusionTiled VAE 都是用于减轻内存消耗,否则显存溢出,无法运行。

  • 参考官网配置:https://github.com/pkuliyi2015/sd-webui-stablesr/blob/master/README_CN.md

Tiled DIffusion:根据官方最新说明,v2版本 (768x768),不需要修改数值,使用默认的 96x96 即可,速度可明显加快。

  • 启用 Tiled DIffusion
  • 修改方案:Mixture of Diffusers
  • 注意:StableSR 的放大倍数,需要与 Tiled Diffusion 的放大倍数保持一致。
  • 其他,如噪声反转分区提示词控制,均使用默认。

即:

Tiled DIffusion

Tiled VAE:启用 Tiled VAE,其余保持默认。

即:

Tiled VAE

3. 图像效果

运行日志,如下:

[StableSR] Target image size: 2048x3072
[Tiled Diffusion] StableSR found, support is enabled.
MixtureOfDiffusers Sampling: : 0it [00:00, ?it/s]Mixture of Diffusers hooked into 'Euler a' sampler, Tile size: 96x96, Tile batches: 9, Batch size: 4.
[Tiled VAE]: the input size is tiny and unnecessary to tile.
MixtureOfDiffusers Sampling: : 0it [00:02, ?it/s]
100%|███████████████████████████████████████████████████████████████████████████████| 30/30 [00:57<00:00,  1.93s/it]
[Tiled VAE]: input_size: torch.Size([1, 4, 384, 256]), tile_size: 256, padding: 11██| 30/30 [00:57<00:00,  1.90s/it]
[Tiled VAE]: split to 2x1 = 2 tiles. Optimal tile size 256x192, original tile size 256x256
[Tiled VAE]: Fast mode enabled, estimating group norm parameters on 170 x 256 image
[Tiled VAE]: Executing Decoder Task Queue: 100%|█████████████████████████████████| 246/246 [00:01<00:00, 205.38it/s]
[Tiled VAE]: Done in 2.509s, max VRAM alloc 10456.432 MB
Total progress: 100%|███████████████████████████████████████████████████████████████| 30/30 [01:07<00:00,  2.26s/it]
Total progress: 100%|███████████████████████████████████████████████████████████████| 30/30 [01:07<00:00,  1.90s/it]

出图效果的差距,非常明显,经过 StableSR 处理的图像,明显细节丰富。使用 Imgsli,如图所示:

v1

眼睛、皮肤、嘴唇等细节差异,也非常明显。右侧是StableSR的图,左侧是原图:

v2

其他

Imgsli 图像对比

图像对比的网站 imgsli,链接:https://imgsli.com/MTg5MzAx/0/1,用于对比图像差异。

Bugfix

Bug1: 遇到 Bug “/tmp/gradio/ 已满,无法缓存文件,导致 图库浏览器 功能无法使用”

原因是:服务器的 /tmp 空间较小,导致 gradio 无法缓存,替换为新的 /tmp 空间,即可。

launch.py 中,添加如下代码:

import tempfile
print(f"[Info] old tempfile: {tempfile.gettempdir()}")
tempfile.tempdir = "/data/chenlong/tmp/"
print(f"[Info] new tempfile: {tempfile.gettempdir()}")

输出日志:

[Info] old tempfile: /tmp
[Info] new tempfile: /data/tmp/

参考

  • 如何安装/更新/卸载 Stable Diffusion WebUI 插件?一篇文章帮你弄懂!
  • GitHub - Web UI, How to set it to dark mode?
  • 探索【Stable-Diffusion WEBUI】的图片超分辨插件:StableSR
  • GitHub - 运行web_demo_hf.py时遇到tmp文件写入被拒的问题

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

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

相关文章

【JAVA】JAVA与C++的区别与联系

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言两方介绍CJAVA 不同|Java不支持指针、模板、指针重载、联合等||支持析构函数||条件编译和包含||螺纹支架||默认参数||转到语句||多重继承||异常处理||方法重载和操作符重载|…

对表中的数据操作

目录标题 创建一个工作者的表 &#xff0c;对表中数据进行相关操作worker表要求表中的数据内容 对数据的操作1.显示所有职工的基本信息2.查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号3.求出所有职工的人数4.列出最高工和最低工资5.列出职工的平均工资和总工资6…

卷积神经网络CNN进阶与搭建

目录 Pooling&#xff08;池化&#xff09;ReluResNetGradient VanishingFeature scalingImage NormalizationBatch Normalization Pooling&#xff08;池化&#xff09; 在降采样(Subsampling)中起作用&#xff0c;在不改变feature map的基础上&#xff0c;在卷积出来的基础上…

【LeetCode】217. 存在重复元素

217. 存在重复元素&#xff08;简单&#xff09; 方法一&#xff1a;哈希表长度比较 思路 针对重复元素&#xff0c;很容易就想到 set。我们可以先将 nums 中的所有元素存入set&#xff0c;然后比较两个数据结构的长度&#xff0c;如果相等则说明不存在重复元素&#xff0c;反…

Android View滑动处理大法

原文链接 Android View滑动处理大法 对于触控式操作来说&#xff0c;滑动是一个特别重要的手势操作&#xff0c;如何做到让应用程序的页面滑动起来如丝般顺滑&#xff0c;让用户感觉到手起刀落的流畅感&#xff0c;是开发人猿需要重点解决的问题&#xff0c;这对提升用户体验是…

Python:使用 np.lib.stride_tricks.sliding_window_view 将立方体切割成N个三维小块

函数说明&#xff1a;np.lib.stride_tricks.sliding_window_view(arr, window_shape) 参数说明&#xff1a; arr&#xff1a;要创建滑动窗口视图的数组。 window_shape&#xff1a;滑动窗口的形状&#xff0c;表示切割出的小块的大小。 作用&#xff1a;用于创建滑动窗口视图。…

软件设计模式与体系结构-软件体系-基于事件的软件体系结构

目录 三、基于事件的软件体系结构代码显式调用隐式调用事件系统软件体系结构的概念事件系统的连接机制 例子&#xff1a;图形用户界面事件系统调度策略1.带有分离的派遣模块的事件管理器 观察者模式类图观察者模式应用实例 课程作业 三、基于事件的软件体系结构 计算机中&…

Prototype Completion for Few-Shot Learning

小样本学习的目的是用很少的例子来识别新类。基于预训练的方法有效地解决了通过预训练一个特征提取器&#xff0c;然后通过最近的基于质心的元学习对其进行微调 (pretraining fine-tuning)。然而,结果表明微调步骤使边际改进。在本文中&#xff0c;1)我们找出原因&#xff0c;…

Kafka入门,漏消费和重复消费, 消费者事务,数据积压(二十四)

漏消费和重复消费 重复消费&#xff1a;已经消费了数据&#xff0c;但是offset没提交。 漏消费&#xff1a;先提交offset后消费&#xff0c;有可能会造成数据得漏消费 消费者事务 如果向完成consumer端得进准一次性消费&#xff0c;那么需要Kafka消费端将消费过程和提交offs…

Gradio库中的State模块:保存用户会话状态的神秘组件

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Python Flask构建微信小程序订餐系统 (六)

🔥 账号管理 🔥 展示账户列表 默认情况下的账户列表布局 查询用户信息 查询 所有用户信息 按照 倒序 的方式查询出来 User.query.order_by( User.uid.desc() ).all() ......@route_account.route("/index") def index():#模版文件夹取名叫 "account/login…

【netty】Netty模型

工作原理 1&#xff09;Netty抽象出两组线程池 BossGroup 专门负责接收客户端的连接, WorkerGroup 专门负责网络的读写&#xff1b; 2&#xff09;BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroup 3&#xff09;NioEventLoopGroup 相当于一个事件循环组, 这个组中含有多…

RabbitMQ系列(17)--延迟队列的简介与实现

1、延迟队列的概念 延迟队列内部是有序的&#xff0c;重要的特性体现在它的延迟属性上&#xff0c;延迟队列中的元素希望在指定时间到了之后或之前取出处理&#xff0c;简单的说延迟队列就是用来存放需要在指定时间被处理的元素的队列。 2、延迟队列的应用场景 (1)订单指定时…

Python实现本地电脑启动HTTP服务

在Python中&#xff0c;可以使用Python内置的http.server模块来启动一个简单的HTTP服务器。以下是一个简单的Python代码示例&#xff0c;实现本地电脑启动HTTP服务&#xff1a; import http.server import socketserverport 8081# 在当前目录下启动http服务器 Handler http.…

JavaWeb 速通JavaScript

目录 一、JavaScript快速入门 1.基本介绍 : 2.JavaScript特点 : 3.JavaScript使用方式 : 1 方式一 : 写在 2 方式二 : 以外部文件形式引入 PS : 注意事项 4.JavaScript查错方式 : 二、JavaScript数据类型 1.变量 : 2.数据类型 : 3.特殊值 : 三、JavaScript运算符 1.算…

解决forest低版本请求不安全的网站出现SSL认证不通过问题

文章目录 前言解决问题的步骤1、当然是百度2、官网3、看源码4、GPT5、直接去gitee上看源代码的问题 解决一解决二 前言 先说结论&#xff1a;无法解决 那既然无法解决&#xff0c;为啥还要写这样一篇文章呢&#xff0c;是因为这个问题我弄了一天多&#xff0c;我觉得有必要记…

SpringBoot开启子线程执行任务

目录 一、EnableAsync 二、Async 三、测试 一、EnableAsync 二、Async Service public class IotLocationServiceImpl {Asyncpublic void testA() {try {// 模拟阻塞Thread.sleep(5000);System.out.println("子线程执行完毕");} catch (InterruptedException e) {…

WPS Office AI实战:智能表格化身智能助理

前面我们已经拿 WPS AI 对Word文字、PPT幻灯片、PDF 做了开箱体验&#xff0c;还没有看过的小伙伴&#xff0c;请翻看以前的文章&#xff0c;本文开始对【智能表格】进行AI开箱测验。 表格在日常的数据处理中占绝对地位&#xff0c;但表格处理并不是每一个人都擅长&#xff0c;…

《向量数据库指南》——Milvus 中的向量索引概览和平面索引

目录 Milvus 中的向量索引 索引概览 平面索引 在之前的教程中,我们简单介绍了单词 Embedding 示例,了解了 Embedding 的强大,以及如何在向量数据库中进行向量存储和索引。此外,我们也简单介绍了最近邻搜索算法,这个问题涉及根据所选距离度量找到距离查询向量最接近的向…

spring boot+MySQL智慧食堂”设计与实现(包论文)

“智慧食堂”系统运用springboot框架开发&#xff0c;MIS的总体思想&#xff0c;以及MYSQL等技术的支持下共同完成了该系统的开发&#xff0c;实现了“智慧食堂”系统管理的信息化&#xff0c;使用户体验到更优秀的“智慧食堂”管理系统&#xff0c;管理员管理操作将更加方便&a…