You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Stable Diffusion XL pipeline生成预览图出现全黑问题

问题原因与解决方案

核心问题分析

你的代码在SD1.5中正常但SDXL中生成全黑预览,主要有两个关键原因:

  • 重复的latents缩放:硬编码的1 / 0.18215可能与SDXL内部的latents处理逻辑冲突,导致latents数值溢出,解码后图像被clamp(0,1)强制为0(全黑)。
  • float16解码的数值精度问题:SDXL的VAE在float16 dtype下解码带噪声的latents时,容易出现数值下溢或精度丢失,直接导致输出全黑图像。

修复后的代码

将回调函数修改为以下版本,可解决上述问题:

from diffusers import StableDiffusionXLPipeline
import torch
import os

# 确保预览图保存目录存在
os.makedirs("./imgs", exist_ok=True)

pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda")

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"

def callback(pipe, step_index, timestep, callback_kwargs):
    # 获取latents并分离梯度,避免计算图干扰
    latents = callback_kwargs["latents"].detach()
    
    with torch.no_grad():
        # 使用VAE配置的官方缩放系数,避免硬编码版本差异问题
        latents = latents / pipe.vae.config.scaling_factor
        # 转换为float32解码,提升数值稳定性
        latents = latents.float()
        
        # VAE解码 latent 为图像张量
        image = pipe.vae.decode(latents).sample
        # 将图像从[-1, 1]映射到[0, 1]并限制范围
        image = (image / 2 + 0.5).clamp(0, 1)
        
        # 转换为PIL图像格式并保存
        image = image.cpu().permute(0, 2, 3, 1).float().numpy()
        image = pipe.numpy_to_pil(image)[0]
        image.save(f"./imgs/{step_index}.png")
        
    return callback_kwargs

# 生成图像并触发回调
image = pipe(prompt=prompt, callback_on_step_end=callback).images[0]
image.save("./final.png")

关键修复点说明

  1. 使用官方缩放系数:替换硬编码的缩放值为pipe.vae.config.scaling_factor,确保与当前加载的VAE配置完全匹配,规避版本更新带来的参数变化。
  2. float32解码优化:将latents转换为float32后再传入VAE,解决float16下的精度丢失问题,避免解码输出全黑。
  3. 显式分离梯度:通过.detach()剥离latents的梯度信息,防止计算图对解码过程产生干扰。
  4. 目录预创建:添加os.makedirs确保保存路径有效,避免因路径错误导致的隐性异常。

额外排查建议

  • 扩散早期步骤预览偏暗/噪点多属于正常现象:扩散过程前期的latents包含大量噪声,图像会随步骤推进逐渐清晰,只有所有步骤全黑才属于代码问题。
  • 升级diffusers版本:确保使用v0.20.0及以上版本的diffusers,旧版本存在SDXL回调逻辑的已知bug。

内容的提问来源于stack exchange,提问作者kamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:14:50