AI绘画Stable DIffusion教程 | 如何利用 Stable Diffusion webui 将图片变得更清晰?全方位对比4种放大方法!

大家好,我是程序员晓晓

1、引言

“高分放大”(有时候也叫“超分放大”或“高清修复”)描述了在确保图像清晰度的前提下提升图片分辨率的过程。例如,将一张512 x 512的图片放大四倍,得到的就是2048 x 2048分辨率的图片,这个过程不仅放大了图片尺寸,也丰富了图像细节以保持图像清晰度。

在SD webui中,直接生成一张2048 x 2048分辨率的图片由于模型底层机制的限制而变得极其困难。这主要有以下3个原因:

1、显存限制: 与512 x 512相比,2048 x 2048的像素点数量增长16倍,生成图片所需的内存也随之增长16倍。基本上,运行SD webui会占用约3G的显存,处理512 x 512分辨率的图像,显存使用将增加约1G。因此,若要直接生成2048x2048的图片,需要约20G的显存,而当前主流显卡通常只配备8G甚至4G的内存,无法支撑生成高分辨率图片。

2、时间限制: 随着显存使用的增加,生成时间也会以指数级别增长,达到正常时间的16倍!

3、模型限制: 用于训练模型的图片分辨率最高为768 x 768,直接生成过高分辨率的图片可能会导致模型产生重复元素的图片,如重复的人物或头部等。

因此,若想获取一张高分辨率的图片,通常需要进行以下步骤:

1、生成一张低分辨率的图片,例如512 x 512、768 x 512、或512 x 768。

2、然后选择合适的方法放大图片。

下面正式开始介绍本期的内容。


2、插件下载和安装

想要使用高分放大功能,需要借助一些插件的帮助。如果你打算按照这个教程进行操作,那么我建议你安装以下插件。每种插件都提供了三种安装方法,请根据需要自行选择。

1、Ultimate SD Upscale 插件安装

Ultimate SD upscale(终极SD放大) 与 SD webui 内置的放大插件类似,只是 Ultimate SD Upscale 插件提供了更多高级选项。

安装该插件的方法有以下3种。

其中第1种和第2种需要魔法,第3种国内网络即可完成

1)通过SD webui 内部安装

① 打开SD webui,点击 extensions(插件),点击 install from URL(从网址安装)

② 在第一行框内输入:https://github.com/Coyote-A/ultimate-upscale-for-automatic1111 (注意需要科学上网)

③ 点击 install(安装)

④ 等待安装完成,然后重启SD webui

⑤ 如果安装成功,你可以在 img2img 标签页的 script(脚本)框的下拉菜单中找到该插件。

2)手动安装

① 下载 Ultimate SD upscale 原文件,下载地址有以下两个,选择其中一个下载:

从 github 下载:https://github.com/Coyote-A/ultimate-upscale-for-automatic1111/archive/refs/heads/master.zip
(如无法下载,请看文末扫描获取)

② 解压文件,并将 ultimate-upscale-for-automatic1111 文件夹转移到 stable-diffusion-webui\extensions 路径下

③ 重启 SD webui,如果安装成功,你可以在 img2img 标签页的 script(脚本)框的下拉菜单中找到该插件。

2、ControlNet 插件安装及模型下载

ControlNet 是 SD webui 中功能非常强大的插件,提供了许多控制图片生成效果的方法。在这个教程中我将利用 ControlNet 对图片进行高分放大。

sd webui 的插件安装基本都是异曲同工的,安装步骤完全相同,因此下面的安装方法将不再配图。

手动安装

① 下载 ControlNet 原文件,下载地址有以下两个,选择其中一个下载:

从 github 下载:https://github.com/Mikubill/sd-webui-controlnet/archive/refs/heads/main.zip (如无法下载,请看文末扫描获取)

② 解压文件,并将 sd-webui-controlnet 文件夹转移到 stable-diffusion-webui\extensions 路径下

③ 重启 SD webui,如果安装成功,你可以在 txt2img 标签页中找到该插件。

ControlNet 模型下载:

不同于其他插件,ControlNet 的运作还需要下载它独有的模型。

① 打开ControlNet 模型下载地址:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main (如无法获取请看文末扫描获取)

② 此网址包含了所有可下载的 ControlNet模型,你可以下载所有 .pth 结尾的文件,但这个教程只会使用到其中的 tile 模型,该模型下载链接:https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth,你也可以只下载这个模型,后续有需要再下载其它模型。

③ 将下载的模型放在 stable-diffusion-webui\extensions\sd-webui-controlnet\models 目录下

④ 重启 SD webui,如果安装成功,你应该可以在如下位置找到 tile 模型

生成输入图片

图片的生成参数如下:

模型:ChilloutMix

模型下载链接:

https://huggingface.co/swl-models/chilloutmix/resolve/main/Chilloutmix-non-ema-fp16.safetensors
(如无法下载请看文末扫描获取)

下载的模型移动到 stable-diffusion-webui\models\Stable-diffusion 路径下。

图片生成参数:

Prompt(正向提示词):raw photo, high quality, 1 girl, young, (detailed clear eyes:1.2), radiant skin, white dress, pink short hair, swept bangs, (collorbone:1.1), slim, perfect nose, (pink lip:1.1), highly detailed, flowering land as background, expansive view, upper body, sunlight, side light, (cinematic lighting:1.1), bright color, dramatic, fantasy, stunningly beautiful,8k, uhd,

Negative prompt(反向提示词):nsfw, naked, asymmetric eyes,out of frame, abnormal face, ugly, deformed, distorted, (easynegative:1.2), low contrast, (Pale skin:1.2),open mouth

其它参数:

Sampling method(采样方法):DMP++ 2M Karras

Sampling steps(采样步数):20

Size(尺寸):768 x 512

CFG scale(CFG值):7

Seed(种子):4263532296

Clip skip:2

获得如下图片:

下面的示例都将以此图作为输入进行测试。

高分放大方法

1、Hires. Fix

这个高清修复的方法我简单概述一下这个方法的优缺点:

缺点: 这种方法对显存的占用较高,处理时间较长,且会放大生成的每一张图片。然而,有些图片可能并无需放大,因此这种方法的效率偏低,不是特别推荐使用。(以我的4G显存为例,是无法运行的,高显存请随意)

优点: 有独有的放大算法

接下来,我们将深入探讨另外三种高清修复的方法。

2、AI Upscaler(AI放大法)

AI放大法是 SD webui 中非常基础的一种高分放大方法,操作最简单。这种方法需要使用到AI 放大模型,在 SD webui 中已经内置了几种AI放大模型,如 4xESRGAN、R-ESRGAN 4x+ 和 Lanczos 等等。

更多AI放大模型可以从这个网址下载:https://upscale.wiki/wiki/Model_Database

将下载的模型放在 stable-diffusion-webui/models/ESRGAN 路径下即可。

下面介绍操作步骤。

① 进入 SD webui,点击 Extra(后期处理)标签页

② 拖拽或者上传一张照片到图片框内

③ 改变 Scale by 下的 Resize(调整大小)可以调整放大倍率,默认4倍即可。Scale to 可以放大图片到指定大小

④ 在 Upscaler 1(放大算法1)的下拉菜单中选择 4xESRGAN 4x+,Upscaler 2(放大算法2)选择 4x_CountryRoads_377000_G(这个模型需要自行安装),Upscaler 2 visibility(放大算法2能见度)设置为0.5。由于这张图片的人脸正常,其它设置保持默认

⑤ 点击 Generate(生成),生成图片如下

先来对比一下脸部细节

完全保留了原图的该有的样子,而且清晰度提升非常显著,保留了人脸皮肤的质感。但是会产生一些不太自然的现象,比如眼睛部分,瞳孔模糊,眼角异常。

再来看看其他衣服细节:

可以看出,使用AI放大法对图片进行高分放大后的效果是相当不错的,能够完全保留原图信息,而不做更改。

总结一下AI放大的优缺点

优点: 处理时间非常短,占用内存少,不改变原图的内容

缺点: 有较为明显的人工痕迹,且无法处理瑕疵

使用技巧:

1、多试几个放大算法,选择最合适的

2、如果内置的放大算法不能满足你的要求,那么可以下载新的放大算法。


3、Ultimate SD Upscale(终极SD放大法)

在使用AI放大法的时候,可以观察到,放大后的结果是完全忠于输入的图像的,也就是说当你觉得生成的图片已经足够完美了,你不想有任何一点点改动,那么AI放大法是一个很好的高分放大法。

但是如果生成的图片不是那么完美,你希望在放大的时候对其稍微改善,那么终极SD放大法会是一种很不错的方法。

操作步骤:

① 在 txt2img 标签页,点击send to img2img。如果是存在本地的图片,那么先上传到 PNG info 界面,然后再点击 send to img2img。

② 设置 Denoising strength(重绘幅度)为0.25。此值需要根据实际情况选择数值。如果不想让图片有过多的变化,可以使用0.1-0.2的重绘幅度。重绘幅度越大,图片的变化越大,但不能超过0.5。其它保持默认设置,设置好后的界面如下

③ 在 script(脚本)框内选择 Ultimate SD Upscale,其它设置按照下图方式设置

④ 保持 tile width 为512,tile height 为0,此设置会使图片按512x512的大小分别处理

⑤ 点击 Generate(生成),生成图片如下

先来看看脸部细节

效果还是相当不错的,会去除一些瑕疵,比如人脸上的痣,瞳孔也更正常。不过磨皮效果有点过强了,同时眼角还是有点泛白。

再来看一下衣服细节:

总的来说 Ultimate SD Upscale 插件的效果非常不错。在处理复杂图片信息时,终极SD放大法的效果会更为突出

总结一下优缺点

优点: 能够简单处理瑕疵,与SD放大法相比能够添加更多的细节。

缺点: 处理时间相比AI放大法更长,对瑕疵的处理程度还不够强


4、ControlNet tile upscale(瓦片放大法)

这种高分放大方法为进阶方法,需要 ControlNet 和 Ultimate SD Upscale 两种插件的共同参与。

瓦片放大法具有两个比较突出的优点:1、能给原始图片添加更多的细节;2、显存占用低,因此可以绘制分辨率更高的图。

具体的操作步骤如下:

① 在 txt2img 标签页,点击send to img2img。如果是存在本地的图片,那么先上传到 PNG info 界面,然后再点击 send to img2img。

设置 Sampling steps(迭代步数)为20,如果要添加更多细节,可以适当增加迭代步数

设置 Denoising strength(重绘幅度)为0.4,值越大图片的变化越大,反之亦然

打开 ControlNet 界面,将待处理图片上传上去

② 勾选上 Enable(启用),显存小的显卡勾选 Low VRAM(低显存模式),勾选Pixel perfect(完美像素模式)

③ Preprocessor(预处理器)选择 tile_resample(分块重采样)

④ Model(模型)选择 control_v11f1e_sd15_tile,设置好后的界面如下:

⑤ Script(脚本)选择 Ultimate SD upscale,其它设置如下

⑥ 点击 Generate(生成)

先来看看脸部细节对比

只能说效果相当炸裂!注意下眼皮的纹理,瞳孔的纹理,嘴唇的褶皱,细节完全拉满!

再看一下衣服细节

总结一下优缺点

优点: 给图片添加更多细节,是三种方法中效果最好的

缺点: 处理时间更长,是三种方法中最长的

5、总结

下面综合对比以上三种方法生成的效果

人脸部分:

衣服部分:

以下是我对三种方法的个人打分,相对直观的反应了3种高分放大方法的使用体验。

总的来说,无论是使用 Ultimate SD upscale 还是 ControlNet + Ultimate SD upscale 进行放大,其处理时间都会远远大于AI放大法,相应的效果也会更好。而普通的SD放大能真实的还原图片原本信息,不做修改,而且处理时间很短,但也意味着会放大图片本身存在的下次。

具体应该选择哪种方法,就需要根据个人情况自行选择了。

好啦,本期的内容到这里就结束了!

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

若有侵权,请联系删除
<think>好的,我现在需要帮助用户解决关于Dify循环实现的问题。首先,我需要明确用户的具体需求。他们提到“dify 循环实现”或“dify 如何处理循环”,但Dify本身可能没有直接称为“循环”的功能,所以需要结合现有文档中的信息来推断可能的解决方案。 根据用户提供的引用内容,Dify工作流中有迭代节点[^1]。这可能类似于编程中的循环结构,用于重复执行某个任务。例如,在处理列表数据或需要多次执行同一操作时,迭代节点可以派上用场。我需要详细解释迭代节点的配置和使用步骤,确保用户能够理解如何设置循环次数或遍历数据集。 另外,用户可能对如何处理循环中的错误或性能问题感兴趣。引用[2]提到在Dify中处理PEM文件的问题,这可能涉及在循环中正确处理数据格式,避免错误积累。需要提醒用户在循环中注意错误处理和资源管理,确保每次迭代的稳定性。 引用[3]中的例子展示了如何结合FastAPI和Selenium进行实时监控并生成GIF,这可能涉及循环截取浏览器内容。虽然Dify本身可能不直接控制这类循环,但可以通过外部脚本或定时任务触发工作流,模拟循环执行。这部分需要说明如何将外部循环机制与Dify结合使用。 接下来,我需要组织回答结构。首先介绍迭代节点的基本概念和配置步骤,然后讨论循环中的数据处理和错误处理,最后补充外部触发循环的方法。同时,生成相关问题以帮助用户进一步探索,比如优化循环性能或处理复杂数据结构。 需要确保回答符合格式要求,使用正确的中文表达,行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,所以可能不需要使用。同时,引用标识要自然地添加到相关段落末尾,如、[^2]、[^3]。 最后,检查是否有遗漏点,比如Dify的其他循环相关功能或用户可能遇到的常见问题,确保回答全面且易于理解。</think>在Dify中处理循环逻辑主要通过**迭代节点**实现,以下是具体实现方式和应用场景的解析: ### 一、Dify的循环实现机制 Dify通过**工作流设计器**中的迭代节点处理循环需求,其核心原理类似编程中的`for循环`。迭代节点可遍历以下数据类型: - 数组列表:`["A","B","C"]` - 字典集合:`{"key1":"value1", "key2":"value2"}` - 数值范围:通过`range()`函数生成序列 配置示例: ```python # 模拟迭代节点的数据输入 input_data = { "dataset": [1,2,3,4,5], "process_logic": "item * 2" # 对每个元素执行乘以2的操作 } ``` ### 二、迭代节点的关键配置步骤 1. **数据源绑定**:将数组/字典类型变量连接到迭代节点的输入端口 2. **循环变量命名**:设定当前元素的变量名(默认为`item`) 3. **子流程设计**:在迭代节点内部构建需要重复执行的逻辑模块 4. **结果聚合**:通过`outputs`收集所有迭代结果,支持数组或对象格式 $$ \text{总耗时} = \sum_{i=1}^{n}(单次迭代时间_i) + 系统开销 $$ ### 三、循环中的特殊处理 1. **错误中断控制**: - 启用`continueOnError`参数可跳过失败迭代 - 通过`try-catch`模块包裹敏感操作 2. **并行优化**: ```python # 伪代码示例 Parallel.forEach(dataset, lambda item: process(item)) ``` 3. **结果过滤**: ```python filtered = filter(lambda x: x%2==0, processed_results) ``` ### 四、应用场景案例 1. **批量文件处理**:遍历存储桶中的文件列表进行格式转换 2. **数据清洗**:对数据库查询结果集进行逐条校验 3. **API轮询**:定时循环调用第三方接口直到满足特定条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值