Stable Diffusion 常用放大算法详解

常用放大算法

图像放大算法大致有两种:

  • 传统图像放大算法(Lantent、Lanczos、Nearest)
  • AI图像放大算法(4x-UltraSharp、BSRGAN、ESRGAN等)

传统图像放大算法是基于插值算法,计算出图像放大后新位置的像素值。AI图像放大算法,比一般的传统图像放大算法效果更好。

  • 推荐放大算法 ESRGAN系列 和 4X-UltraSharp
  • R-ESRGAN 4x+ 适用于写实图片
  • R-ESRGAN 4x+ Anime6B 适用于二次元类图片或二三次元混合图片

Latent 系列(不常用)

Latent 系列放大算法是在潜空间对图像进行放大,然后重新采样来增加图像的细节。

此外由于不是对图像像素级别的直接放大操作,当高分迭代步数不够或者重绘幅度过低时,生成的图像会模糊或失真。

重绘幅度在0~0.5的时候放大生成的图像是模糊的,因此在使用 Latent 系列算法时,需要一定的重绘幅度,并且随着放大倍数的提高,放大的图像会变得扭曲。

不同 Latent 算法之间的区别。

  • Latent (antialiased):结合抗锯齿 (antialiased) 技术来消除图像中的锯齿状边缘。
  • Latent (bicubic):使用双立法插值 (bicubic) 算法来放大图像,其在每个像素的位置使用一个三次多项式来拟合周围16个邻近像素(4x4的像素网格)的值。该算法考虑了每个像素点与其周围像素点之间的非线性关系,从而能够更准确地模拟图像中复杂的灰度变化,使得图像更加细致。
  • Latent (bicubic antialiased):结合双立法插值 (bicubic) 算法和抗锯齿 (antialiased) 技术,放大图像的同时消除锯齿状边缘,提高图像的分辨率和质量。
  • Latent (nearest):使用最近邻插值 (Nearest Neighbor Interpolation) 算法来放大图像,其在放大图像后,对于新位置的像素直接采用最近的原图像像素作为其值。这导致新像素之间缺乏过渡,容易导致图像边缘出现明显的锯齿状或阶梯状效果,放大后的图像质量不高。适用于像素艺术、图标、文字等强调清晰像素边界的图像,或者在对速度要求较高、对放大后图像质量要求相对较低的情况。
  • Latent (nearest-exact):结合了最近邻插值算法和双线性插值算法,以达到更精确的放大效果。

Lanczos(不常用)

Lanczos放大算法基于Lanczos核函数,对于放大后新位置像素进行插值计算时,该算法会根据源图像中以该像素为中心的一定邻域内的像素值计算加权平均来确定新像素。在保留边缘清晰度和减少锯齿现象方面表现出色。

Nearest(不常用)

使用最近邻插值 (Nearest Neighbor Interpolation) 算法来计算放大图像后新像素,和 Latent (nearest) 不同,是直接放大真实图像。适用于某些简单图像的放大,在复杂图像的放大中,无法获得很好的结果。

4x-UltraSharp(常用)

基于 ESRGAN 做了优化模型。将图像分辨率提升4倍,在提高分辨率的同时保持或增强图像的细节、清晰度和逼真度。一般在纠结哪种算法放大图片时,可以选这个算法,照片级别的,真人模型上的效果可能会更好。

BSRGAN(不常用)

BSRGAN(Bilinear Super-Resolution Generative Adversarial Network)是一种专门针对盲图像超分辨率问题的生成式对抗网络模型。通常包含一个退化模型和一个超分辨率模型(即生成器),两者联合训练。退化模型模拟各种可能的图像退化过程,为超分辨率模型提供多样化的训练样本;超分辨率模型则学习如何从这些退化图像中恢复出高分辨率、高质量的原始图像。

ESRGAN系列(常用)

ESRGAN(Enhanced Super-Resolution Generative Adversarial Network)是一种先进的深度学习模型。ESRGAN沿用了GAN(Generative Adversarial Networks)的基本框架,包含一个生成器和一个判别器。生成器负责从低分辨率图像中生成高分辨率图像,而判别器则用于判断生成的高分辨率图像与真实高分辨率图像之间的差异,二者通过对抗训练共同优化。

  • ESRGAN_4x:一般适用于写实类图片。
  • R-ESRGAN 4x+:特别适合于处理保留细节和纹理的图像,在放大人像照片时,提供更自然的放大效果,尤其在面部、头像细节方面。一般适用于写实类图片。
  • R-ESRGAN 4x+ Anime6B:该算法针对动漫和二次元图像进行了优化。能够更好的处理二次元图像中的色彩、线条和细节。一般适用于二次元类图片。

ScuNET系类(不常用)

  • ScuNET:通过ScuNET可以生成更加清晰,细节更加丰富的图像,是一种真实感图像放大方法。
  • ScuNET PSNR:PSNR(Peak Signal-to-Noise Ratio)指峰值信噪比,是评价图像质量的一种指标,PSNR越高,说明图像质量越好。

SwinIR_4x(不常用)

SwinIR(Swin Transformer Image Restoration)是一种基于Transformer架构的图像恢复模型,专门设计用于解决各种图像恢复任务,如图像去噪、超分辨率、去模糊等。

DAT系列

Stable Diffusion WebUI 1.8.0 版本中支持了3个放大模型:DAT x2,DAT x3,DAT x4。

  • 放大图像质量:DAT x2 > DAT x3 > DAT x4
  • 放大生成速度:DAT x4 > DAT x3 > DAT x2

图像放大方式

一、高清修复(Hires-Fix)

高清修复本质就是“图生图”,先绘制一份低分辨率的图像,再根据它画第二幅高分辨率的图像。

缺点:没办法突破显存的限制,电脑能画到多大尺寸,最后还是多大。

常规用法:先在低分辨率下反复画图,确定一个比较满意的图像时,再借助固定随机种子,来进行高清修复,得到分辨率更高的图像。

高清修复有时候会修改图像,增加不必要的元素,可以通过调整重绘幅度进行抑制。如果只是想放大图片,可以设置为(0.3-0.5),如果想要AI自由发挥,可以设置更高的重绘幅度。

二、SD放大(SD Upscale)

图生图中,可以选择 SD Upscale 脚本进行放大。

和高清修复不同,这个是通过把图片均匀切成4块去画图的,画完之后拼合在一起。

优点:这种方式可以突破显存限制获得更大的分辨率(最高4倍),画面精细度高,对细节的丰富效果出色。

注意:如果人脸、身体等关键部位处于分界线,会出现图像错位的问题,可以通过减小重绘幅度保持一致性、增大缓冲区尺寸进行调整

如果只是机械的拆分成4块,图块之间的接缝处会出现生硬的过渡边缘,设置Tile overlap(图块重叠的像素)为64,可以起到缓冲带的作用。

三、附加功能放大算法

一般用在图片生成后的图片处理上,就像是一个重绘幅度为0的高清修复,完全不改变图片内容,放大速度极快。

是在拉伸放大的基础上,适当润滑了线条和色块边缘的模糊区域。

四、使用Ultimate SD upsale

该方法是 Sd upscale 的升级版,也需要额外下载。

下载地址:

https://github.com/Coyote-A/ultimate-upscale-for-automatic1111

安装后记得重启UI界面。

来到图生图界面,使用的还是之前的照片参数,降低重绘幅度和固定种子。然后在脚本中找到 Ultimate SD upsale。

这个脚本也可以搭配controlnet的tiled进行使用。细节会更丰富些。

1、进入Img2Img界面,选择与图片风格相近的大模型。

2、设定正向提示词和反向提示词。

3、导入图片,设定参数

  • 采样方法(Sampling method)选择DPM++ 2M Karras
  • 放大尺寸不需要调整
  • 重绘幅度(Denoising strength)设为0.2

4、设置ControlNet

  • 控制类型选择Tile
  • 预处理器选择tile_resample
  • 模型选择control_v11f1e_sd15_tile

5、设置脚本

  • 脚本选择Ultimate SD upscale
  • Target size type选择Scale from image size,后面的尺度即为放大倍数
  • Upscaler选择R-ESRGAN 4x+,如果是动漫,则选择R-ESRGAN 4x+ Anime6B
  • 类型选Chess,接缝问题会小很多
  • 分块宽度为512,表示每一个放大Tile(小块)都是512x512

相关推荐

  1. 一文详解pyspark算子与API

    2024-04-27 06:22:03       72 阅读
  2. 入门算法

    2024-04-27 06:22:03       61 阅读
  3. STL——算法

    2024-04-27 06:22:03       37 阅读
  4. 算法

    2024-04-27 06:22:03       31 阅读
  5. STL - 算法

    2024-04-27 06:22:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 06:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 06:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 06:22:03       82 阅读
  4. Python语言-面向对象

    2024-04-27 06:22:03       91 阅读

热门阅读

  1. python数据分析与可视化

    2024-04-27 06:22:03       42 阅读
  2. Python笔记|不可变序列之元组

    2024-04-27 06:22:03       31 阅读
  3. golang学习笔记——FAQ 1.22.2

    2024-04-27 06:22:03       36 阅读
  4. mxnet gluon GRU 文档

    2024-04-27 06:22:03       34 阅读
  5. Linux:使用ssl加密网站为https

    2024-04-27 06:22:03       35 阅读
  6. ttcp测试网络吞吐量

    2024-04-27 06:22:03       41 阅读
  7. Nginx安装withSSL模块

    2024-04-27 06:22:03       36 阅读
  8. Socket套接字(TCP流)篇

    2024-04-27 06:22:03       37 阅读