拒绝低质量!一个技巧,搞定Stable Diffusion高清图片生成

本文探讨了AI生成高清图片时Mj和SD之间的区别,SD在处理高分辨率时遇到的问题,以及如何利用高清修复功能实现小图定轮廓、大图出高清。文章强调了计算资源对AI绘图的限制,并给出了高效工作流建议和AIGC技术的未来发展展望。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成高清图片看起来是一件很简单的事情,似乎我们只要给AI设定一个足够高的分辨率,要求就能够达到。

但实际的操作,比我们设想复杂一些。会涉及到一些技术的问题,需要了解背后的逻辑,然后按照用AI绘图的逻辑来解决。

1. Mj与SD在生成高清图片上的差别

首先我们来看一下Mj和SD在生成高清图片上的一些差别。

  • Mj:默认生成的图像,单张图就是1024x1024,单张图就是1M像素的图片。Mj本身不提供更大分辨率放大的功能。

Mj:默认生成4张1024x1024子图

  • SD:基础模型默认生成的图片都是512x512,画面幅度明显偏小。但是提供了更高清图片的增强功能。

SD:默认512x512,子图数量可设置

SD:图片效果

512x512的像素,在我们日常使用中,属于非常低清晰度的画面、完全无法展示出清晰的细节,发朋友圈都不够用,更不用说业务上使用。因此图片的放大增强,是非常必要的操作。

2、SD中直接设置高分辨率的绘图问题

在SD中直接设置高分辨率的绘图会出现一系列的问题。这是一个SD特有的问题,其实关键的原因就在于它默认的模型是适配于512x512的图片大小的,按照这样的一个尺寸来训练的。

那在这种情况下我们直接要求它生成一个1024x1024,甚至2048x2048的图像,一方面会带来一个非常大的GPU计算资源的压力,另外一方面由于画面设置的过大,对原来的模型来说,它可能会认为你这个画面对应的是多张图片,它会拥有类似于拼接或者生成多个物体的方式来进行绘制。

具体来看,绘制的图片出现了严重的缺陷:

  • 图2:一只猫双尾巴,一只猫没身体只露头

  • 图3:两只猫(绘图要求是a cat

  • 图4:双头猫

要解决这个问题,我们就需要用到一个关键技巧——高清修复

3. 高清修复功能:小图定轮廓,大图出高清

设置方式

高清修复(Highres-fix)——这个技术看起来是比较复杂,但是其实逻辑很简单。

在它绘制的过程中,实际上分了两步:

  • 第一步,按照一个小图来绘制,比如512x512。

  • 第二步,将小图按照一定的倍数放大成一个大图,比如说我们将放大倍数设置为2,它就可以将512的图放大到1024。(设置方式也可以是直接指定尺寸)

值得注意的是,【放大】的过程,实际上是【重绘】的操作,但是在这个过程中,它会尽可能的遵循原来图像画面,然后通过重绘的技术,将在更大的像素上,把我们画制出更加清晰的细节。

基本的设定非常简单:

  • 高清修复:需要开启√

  • 重绘幅度:也就是参考小图画面的程度,经验值03~0.7之间是较为稳妥的参数

  • 放大倍率:取决于最终想要的输出质量,比如,从512到1024对应的放大比例是2。经验:最终出图尺寸,避免超过2k x 2,放大幅度过大,画面可能出现变形。

SD文生图:高清修复

关于放大算法,这一块其实我们可以不用投入太多的精力,因为我看了很多网上教程,不动设置哪一种,基本上都可以得到一个比较好的结果,按系统的默认设置即可。

放大算法选项

3. 实操效果

2倍放大

看整体,放大后的图像,猫脖子处毛发有明显变化。

看局部,放大后的图片,猫脸细节纹理明显更加细腻:

3倍放大

看整体:3倍放大后,图像有一些明显的变异,猫鼻子、耳朵、眼睛变红,整体脸型变得突出。

看细节:大图上,猫眼的细节神态非常清晰,炯炯有神。

4倍放大

计算资源受限,GPU爆显存:

报错的含义是:OutOfMemoryError:CUDA内存不足。尝试分配4.00 GiB(GPU 0;总容量15.74 GiB;已分配10.21 GiB;剩余3.91 GiB;PyTorch总共保留了10.22 GiB)如果保留的内存远大于分配的内存,请尝试设置max_split_size_mb以避免碎片化。

工作流小结

爆显存的例子可以看出,AI绘图对计算资源消耗很大,即使硬件可以承担,更大的画面要求也意味着更长等待时间。

比较高效的工作流思路是:

第一步:用小图快速迭代

先用小图(512x512)开始绘制,快速迭代多个版本,在生成的系列图中,找到画面布置符合要求的。这是一个海选的过程。

设置批次数量,可以一次生成大量的底图,供筛选:4x4,就是一次输出16个效果。

第二步:放大生成高清

文章使用的AI绘画SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,有需要的小伙伴文末扫码自行获取。

写在最后

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

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

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

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

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

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

三、最新AIGC学习笔记

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

四、AIGC视频教程合集

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

在这里插入图片描述

五、实战案例

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

若有侵权,请联系删除
### 如何复现 Stable Diffusion 模型 #### 准备环境 要成功复现 Stable Diffusion 模型,首先需要准备合适的开发环境。建议使用 Python 和 PyTorch 或 TensorFlow 进行实现。安装必要的库可以通过 pip 完成。 ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 pip install diffusers transformers accelerate safetensors ``` #### 数据集获取与预处理 对于图像生成任务而言,高质量的数据集至关重要。通常情况下会采用公开的大规模图片数据集如 ImageNet 或者 LSUN 来训练模型[^1]。在实际操作前还需要对原始图像做一系列变换处理: - 调整尺寸至统一规格; - 归一化像素值范围; - 可选地应用增强技术提升泛化能力; 这部分工作可通过编写自定义 Dataset 类完成,在 `__getitem__` 方法内加入上述逻辑即可满足需求。 #### 构建网络架构 构建基于 U-net 的编码器解码器结构作为核心组件之一。U-net 是一种经典的卷积神经网络设计模式,特别适合于语义分割以及本案例中的条件分布估计问题。此外还需引入 Time Embedding 层用于捕捉时间维度上的变化特征。 ```python import torch.nn as nn class UNet(nn.Module): def __init__(self, ...): # 参数省略 super().__init__() self.time_embedding = ... self.encoder = ... self.decoder = ... def forward(self, x, timesteps=None): time_emb = self.time_embedding(timesteps) encoded_x = self.encoder(x + time_emb[:, :, None, None]) output = self.decoder(encoded_x) return output ``` #### 训练流程设置 考虑到该类模型存在较长的训练周期特性[^2],因此推荐配置如下优化方案以加快收敛速度并改善最终效果: - **混合精度训练**:利用 FP16 浮点数代替默认的 FP32 表示形式能够有效降低显存占用量的同时提高运算速率。 - **分布式训练**:当具备多张 GPU 卡件时不妨考虑启用 DataParallel 或 DistributedDataParallel 方式让不同设备协同作业分担负载压力。 - **梯度累积机制**:适当增大 batch size 对于某些特定场景下的性能表现有所助益,而无需额外购置昂贵硬件设施就能达成目的的方法就是积累若干次反向传播后的总梯度再执行一次参数更新动作。 最后按照常规 DL 工作流依次经历初始化、迭代读取 mini-batch 输入样本送入 net 中计算 loss 值继而调用 optimizer.step() 执行权值调整直至达到预定轮次数结束整个过程。 #### 预测阶段部署 经过充分训练之后便可以尝试运用已学得的知识去创造全新的艺术作品啦!此时只需简单修改推理脚本里的 few lines of code 就能轻松搞定哦~ 加载保存下来的 checkpoint 文件恢复先前中断处继续前进或者直接拿来即用都毫无障碍~记得把测试集中挑选出来的几张代表性的图喂给 model.predict() 接口看看成果如何吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值