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

本地运行StableDiffusionXL输出128x128彩色噪点图像问题

StableDiffusionXL生成128x128彩色噪点问题解决

问题描述

本地通过git lfs clone https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0从HuggingFace下载StableDiffusionXL基础模型,使用diffusers库的StableDiffusionXLPipeline运行,输入提示词"A majestic Trex overlooking a jungle",但最终输出的是128x128的彩色噪点PNG。

运行代码如下:

import torch
from diffusers import StableDiffusionXLPipeline
import torchvision.transforms as transforms

def main():
    print(f"CUDA: {torch.cuda.is_available()}")

    torch.cuda.empty_cache()
    base_directory = "stable_diffusion/stable-diffusion-xl-base-1.0"

    # Load base model
    base = StableDiffusionXLPipeline.from_pretrained(
        pretrained_model_name_or_path=base_directory,
        # pretrained_model_or_path=base_directory,  #for AutoPipeline
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True,
        local_files_only=True,
        cache_dir="stable_diffusion",
    )
    base.enable_model_cpu_offload()
    base.enable_xformers_memory_efficient_attention()
    base.enable_vae_slicing()

    # Parameters
    n_steps = 15
    high_noise_frac = 0.8
    prompt = "A majestic Trex overlooking a jungle"

    # Generate base image
    image = base(
        prompt=prompt,
        num_inference_steps=n_steps,
        denoising_end=high_noise_frac,
        output_type="latent",
    ).images[0]

    # Clear GPU cache (again)
    torch.cuda.empty_cache()

    # Convert tensor to PIL Image
    image_pil = transforms.ToPILImage()(image.cpu().squeeze(0))

    # Save the image
    image_pil.save("test_image.png")

    #Cleanup
    del base
    del image
    del image_pil

if __name__ == "__main__":
    main()

已排查内容

  • 确认CUDA可用(通过torch.cuda.is_available()及任务管理器验证)
  • 尝试调用image.save("test.png")时触发AttributeError: 'Tensor' object has no attribute 'save'
  • 更换为diffusers库的StableDiffusionPipeline类,问题未解决
  • 调整n_steps和noise fraction参数,仍输出彩色噪点图像

问题原因

  1. 指定了output_type="latent",直接输出模型的潜在空间张量(latent),而非解码后的图像;
  2. 添加了denoising_end=0.8参数,让模型只完成80%的降噪步骤就终止,得到的是未完成降噪的噪点latent;
  3. 直接将latent张量转为图像,而SDXL的latent空间尺寸是128x128,因此输出128x128的噪点图。

解决方案

方案1:直接生成完整图像(无需后续refiner处理)

移除denoising_end和output_type="latent"参数,让模型完成全部降噪流程并直接输出PIL图像:

# Generate base image
image = base(
    prompt=prompt,
    num_inference_steps=n_steps,
).images[0]

# 直接保存图像
image.save("test_image.png")

方案2:保留latent用于后续refiner处理

如果需要配合StableDiffusionXL的refiner模型,需保留output_type="latent",但要移除denoising_end让模型完成完整降噪,之后通过VAE解码latent为图像:

# Generate base image (完成完整降噪,得到latent)
image_latent = base(
    prompt=prompt,
    num_inference_steps=n_steps,
    output_type="latent",
).images[0]

# 用VAE解码latent为图像张量
image_tensor = base.vae.decode(image_latent / base.vae.config.scaling_factor, return_dict=False)[0]

# 张量归一化并转为PIL图像
image_tensor = (image_tensor / 2 + 0.5).clamp(0, 1)
image_pil = transforms.ToPILImage()(image_tensor.cpu().squeeze(0))

# 保存图像
image_pil.save("test_image.png")

当前环境依赖版本

accelerate==0.22.0
aiohttp==3.8.5  
aiosignal==1.3.1  
altgraph==0.17.3  
appdirs==1.4.4  
art==6.0  
async-timeout==4.0.3  
attrs==23.1.0  
audioread==3.0.0  
Brotli==1.0.9  
cachetools==5.3.1  
certifi==2023.7.22  
cffi==1.15.1  
charset-normalizer==3.2.0
click==8.1.7  
colorama==0.4.6  
decorator==4.4.2  
diffusers==0.20.2  
docker-pycreds==0.4.0  
filelock==3.12.3  
frozenlist==1.4.0
fsspec==2023.9.0
gitdb==4.0.10
GitPython==3.1.36
google-api-core==2.11.1
google-auth==2.22.0
google-cloud==0.34.0
google-cloud-core==2.3.3
google-cloud-speech==2.21.0
google-cloud-storage==2.10.0
google-crc32c==1.5.0
google-resumable-media==2.5.0
googleapis-common-protos==1.60.0
grpcio==1.57.0
grpcio-status==1.57.0
huggingface-hub==0.17.1
idna==3.4
imageio==2.31.1
imageio-ffmpeg==0.4.8
importlib-metadata==6.8.0
Jinja2==3.1.2
MarkupSafe==2.1.2
moviepy==1.0.3
mpmath==1.2.1
multidict==6.0.4
mutagen==1.46.0
networkx==3.0
numpy==1.25.2
openai==0.27.8
packaging==23.1
pathtools==0.1.2
pefile==2023.2.7
Pillow==10.0.0
pocketsphinx==5.0.2
proglog==0.1.10
proto-plus==1.22.3
protobuf==4.24.0
psutil==5.9.5
setproctitle==1.3.2
six==1.16.0
smmap==5.0.1
sounddevice==0.4.6
soundfile==0.12.1
sympy==1.11.1
tokenizers==0.13.3
torch==2.0.1+cu117
torchaudio==2.0.2+cu117
torchvision==0.15.2+cu117
tqdm==4.66.1
transformers==4.33.1
typing_extensions==4.7.1
urllib3==1.26.16
wandb==0.15.10
websockets==11.0.3
xformers==0.0.21
yarl==1.9.2
youtube-dl==2021.12.17
yt-dlp==2023.7.6
zipp==3.16.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:47:10