当前位置: 首页 > news >正文

【Stable Diffusion】(基础篇五)—— 使用SD提升分辨率

使用SD提升分辨率

本系列博客笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili

在前期作画的时候,我有提到过,在第一次作画的时候图像分辨率不宜太高,因为过高的分辨率可能会爆显存,导致整个作画失败,但是分辨率低的图像质量不高,细节不够丰富,本文介绍如何使用AI提升图片分辨率

AI绘画是一个抽卡的过程,在前期,我们先使用低分辨率进行多批次的生成,找到喜欢的画面再对其进行高分辨率的修复,得到高质量的最终作品。在前期直接设置过高分辨率的话不仅有爆显存导致作画失败的风险,还可能出现同一张图中多个人物、肢体的混乱画面。SD为我们提供了多种放大图像分辨率的方法,下面我将为你一一介绍

高清修复

在文生图的众多参数中,有一个高分辨率修复的选项,我们将其选中之后会出来一系列的子菜单,因为高清修复的底层就是图生图功能,所以这些设置也是和图生图类似

  • 迭代步数设置如果为零,它就会和我们上面设置好的迭代步数保持一致

  • 重绘幅度和图生图中的重绘幅度是一个意思,表示在高清修复过程中和原图内容保持多大的一致性,在放大算法中,重绘幅度的设置最好不要超过0.5

  • 放大倍数和宽高:在之前介绍的时候,最好把第一次绘图的分辨率设置为最终出图的等比例缩小,现在就可以直接设置倍数将其放大到我们原先设想的分辨率大小,或者是手动设置最终出图的宽高,放大倍率尽量不要大于2

  • 放大算法:Latent潜变量算法可以帮助你添加更多的画面细节(尤其是二次元画面),如果不知道该如何选择,可以无脑选择R-ESRGAN 4x+ 二次元就算则带有Anime6B,或者在模型的详细介绍页面会有作者为我们提供建议某个模组最适合的放大算法

在这里插入图片描述

如果直接在图生图中操作效果也是一样的,使用高清修复和图生图一样,所以这种方法并没法突破显存的限制

SD Upscale放大

在图生图中,最下方的脚本可以选择SD Upscale,也会有一系列的子菜单选项

放大倍数就是图片大小的具体缩放倍数,放大算法也和上述提到的一样

原理是将图片切割后对每个局部进行高清修复,像素重叠可以将切割后的图片更加合理的拼接回去,使用SD放大时,要在设置好的宽高基础上加上重叠的像素值,比如原图是``600600,重叠像素设置为64,这时就要把原图尺寸设置为664664` ,如果选择放大两倍,得到的结果仍然是1200*1200,如果没有重叠像素的话,相邻图块重新拼回去的时候就会出现非常生硬的过渡边缘,重叠像素的作用类似于缓冲带,让图像拼接更加流畅。

在这里插入图片描述

优点:可以不太受到显存的限制,画面精细度高

缺点:分割的过程较为不可控(人脸等关键部位处于分割线的时候),可能会“加戏”出现原来没有的元素,此时就需要降低重绘幅度,尽量让结果和原图保持一致性

后期处理(最常用)

在SD的webUI中选择后期处理,使用其放大功能,这个操作逻辑和上面两种方法类似,选择合适的缩放比例和放大算法即可,它可以同时使用两种放大算法,很多时候不知道如何使用多种放大算法的话,可以不设置第二种算法,只使用一种算法就可以。其余的参数保持默认就好。

在这里插入图片描述

后期处理通过AI对分辨率实现提升,不涉及重绘,方便,高效,可以批量操作;

不改变图片内容,但细节丰富度等效果不太明显。

【示例】还是使用上一篇文章中lofi模型的例子,最开始生成500*500的图片,然后使用三种方法将其放大后观察效果,可以观察到不同放大功能对于细节增加的不同,如果你亲自实验一下这三种方法可以发现不同方法运行效率的不同

原图500*500:

在这里插入图片描述

高清修复1500*1500

在这里插入图片描述

SD Upscale放大1000*1000

在这里插入图片描述

后期处理1000*1000

在这里插入图片描述

http://www.lryc.cn/news/407543.html

相关文章:

  • 5.CSS学习(浮动)
  • Spring Cloud微服务项目统一封装数据响应体
  • java算法day20
  • web自动化测试-python+selenium+unitest
  • LeetCode题练习与总结:组合两个表--175
  • 数据结构:二叉搜索树(简单C++代码实现)
  • 深入理解Prompt工程
  • 代码随想录算法训练营day6 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1.两数之和
  • vue3 vxe-table 点击行,不显示选中状态,加上设置isCurrent: true就可以设置选中行的状态。
  • Linux没有telnet 如何测试对端的端口状态
  • 花几千上万学习Java,真没必要!(二十九)
  • C#如何引用dll动态链接库文件的注释
  • WordPress原创插件:自定义文章标题颜色
  • Unity分享:继承自MonoBehaviour的脚步不要对引用类型的字段在声明时就初始化
  • .NET Core中如何集成RabbitMQ
  • 嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)
  • .net core docker部署教程和细节问题
  • php数据库链接
  • python+vue3+onlyoffice在线文档系统实战20240726笔记,左侧菜单实现和最近文档基本实现
  • vue中的nexttrick
  • 【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘
  • 深入理解JS中的发布订阅模式和观察者模式
  • 网站IPv6支持率怎么检测?
  • react中简单的配置路由
  • RocketMQ消息短暂而又精彩的一生(荣耀典藏版)
  • Linux中的文件操作
  • [排序]hoare快速排序
  • freertos的学习cubemx版
  • PyQt 信号与槽功能
  • navicat premium安装和破解