『SD』文生图-如何生成高分辨率图片?

本文简介

在使用 SD 文生图功能时,我们能选得大模型大致有两类,一类是普通模型,另一类是更加新的 SDXL 模型。

普通模型就是 SD 的一些旧版模型,是将 SD 1.5 或 SD 2.0 作为底模开发出来的模型。这类模型也是我们现阶段用得最多的模型。它的基础分辨率是 512 x 512 像素。

如果我们需要将增加图片分辨率,直接修改文生图的 widthheight 出来的效果并不会很好。有时候会还会出现多头的情况,例如下图这种情况。

01.png

出现这种情况的原因是画面变大了,人家原本擅长绘画的尺寸是 512 x 512 ,而你现在一下子就将画布变大了很多,AI 自由绘画的像素点就变多了,这就有可能出现不合理叠加等问题。

高清修复功能 Hires. fix

介绍

那如果需要生成一张高分辨率的照片,又不想出现这种诡异的情况要怎么办呢?

我们可以使用 SD 提供的 Hires. fix 功能去放大图片。

也就是我们先生成图片,基于这个图片的内容选择一个放大算法去提升图片的分辨率,然后基于这个基础上再整体重绘图片。

看看这个实例:

02.png 03.png
768 x 512 1536 x 1024

左图的分辨率是 768 x 512,右图使用了 Hires. fix 功能放大了 2 倍。

在使用 Hires. fix 出来的效果是不错的,细节也更加丰富,但随之而来的缺点也很明显,启用了 Hires. fix 对图片进行放大,出图的时间会大幅增长,配置不高的设备甚至会爆显存。如果配置不高的电脑尽量不要将图片放大得太多,建议不超2倍。

实操

接下来是实操环境。

咒语:

(best quality, masterpiece, perfect face, beautiful and aesthetic:1.2, colorful, dynamic angle), handsome beautiful woman humanoid woman robot part me
### Stable Diffusion 文本生成像模型底模介绍 Stable Diffusion 是一种基于深度学习的文本到生成模型,其核心组件之一是所谓的“底模”(Base Model),即用于生成初始像的核心神经网络结构。这种底模通常是预训练的大规模模型,能够理解复杂的语义信息并将其转化为高质量的视觉内容。 #### 底模的功能与特点 底模的主要功能是从输入的文本描述中提取特征,并通过一系列计算生成对应的高分辨率像。它通常由以下几个部分组成: 1. **编码器 (Encoder)** 编码器负责将输入的自然语言文本转换为向量表示形式,这些向量捕捉了文本中的语义信息[^1]。例如,在像分割任务中,编码器会解析用户的文字提示,以便后续模块可以根据该提示生成相应的像区域。 2. **解码器 (Decoder)** 解码器的作用是对来自潜在空间的噪声信号进行处理,逐步构建出最终的目标像。这一过程涉及多层卷积操作以及注意力机制的应用,从而确保生成的结果既符合原始文本的要求又具备良好的艺术性和细节表现力[^2]。 3. **扩散过程 (Diffusion Process)** 扩散模型是一种概率性的生成方法,通过对随机噪声逐渐施加约束条件来逼近真实数据分布。具体来说,Stable Diffusion 的扩散阶段会在多次迭代过程中不断调整像素值直至达到稳定状态下的输出效果[^3]。 #### 训练方式和技术优势 为了提升生成质量及泛化能力,Stable Diffusion 的底模往往经过大量多样化样本集上的监督学习完成初始化权重设定;之后还可以针对特定领域或者风格偏好实施微调(fine-tuning),使得新版本更贴合实际应用场景需求。比如在某些情况下可以通过引入额外标注好的实例进一步优化边界清晰度或色彩准确性等方面的表现。 此外值得注意的是,由于采用了Transformer架构作为基础单元之一,因此即使是在资源受限条件下也能高效运行的同时保持较高水准的艺术创作自由度——这对于那些希望利用少量定制素材就能获得理想成果的小团队而言无疑是一大福音! ```python from diffusers import StableDiffusionPipeline, EulerAncestralDiscreteScheduler import torch model_id = "stabilityai/stable-diffusion-2-base" scheduler = EulerAncestralDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler") pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16).to("cuda") prompt = "A beautiful painting of a mountain landscape with trees and waterfalls under the moonlight." image = pipe(prompt).images[0] image.save("./mountain_landscape.png") ``` 上述代码片段展示了如何加载一个基本版的 Stable Diffusion 模型并通过简单的 API 调用执行一次完整的文生流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值