模型简介
模型特点
模型能力
使用案例
pipeline_tag: 文本生成图像
license: 其他
license_name: stable-cascade-nc-community
license_link: LICENSE
prior:
- stabilityai/stable-cascade-prior
Stable Cascade

该模型基于Würstchen架构,与Stable Diffusion等其他模型的主要区别在于其工作于更小的潜在空间。为何这一点至关重要?潜在空间越小,推理速度越快,训练成本越低。具体有多小?Stable Diffusion采用8倍压缩因子,将1024x1024图像编码为128x128。而Stable Cascade实现了42倍压缩因子,可将1024x1024图像编码至24x24,同时保持清晰的重建效果。文本条件模型随后在高度压缩的潜在空间中进行训练。此架构的早期版本已实现比Stable Diffusion 1.5降低16倍成本。
因此,这类模型非常适合注重效率的应用场景。此外,所有已知扩展功能如微调、LoRA、ControlNet、IP-Adapter、LCM等均可与此方法兼容。
模型详情
模型描述
Stable Cascade是一种扩散模型,能够根据文本提示生成图像。
- 开发机构: Stability AI
- 资助方: Stability AI
- 模型类型: 生成式文本到图像模型
模型来源
研究用途推荐使用我们的StableCascade
GitHub仓库(https://github.com/Stability-AI/StableCascade)。
- 代码库: https://github.com/Stability-AI/StableCascade
- 论文: https://openreview.net/forum?id=gU58d5QeGv
模型概览
Stable Cascade由三个阶段模型组成:阶段A、阶段B和阶段C,构成生成图像的级联系统,故得名"Stable Cascade"。
阶段A&B用于压缩图像,功能类似Stable Diffusion中的VAE。但此架构能实现更高的图像压缩率。当Stable Diffusion模型使用8倍空间压缩因子(将1024x1024图像编码为128x128)时,Stable Cascade达到42倍压缩因子——将1024x1024图像编码为24x24,同时保持精确解码能力。这带来训练和推理成本显著降低的优势。阶段C则负责根据文本提示生成24x24的小型潜在表示。下图直观展示这一过程。

本次发布提供阶段C的两个检查点、阶段B的两个检查点及阶段A的一个检查点。阶段C包含10亿和36亿参数版本,但我们强烈推荐使用36亿版本,因其经过更精细的微调。阶段B的两个版本分别为7亿和15亿参数,均表现优异,但15亿版本在细小细节重建上更出色。因此,建议优先选择各阶段的大参数版本。阶段A包含2000万参数,因其规模较小而保持固定。
性能评估

代码示例
注意: 若要在StableCascadeDecoderPipeline
中使用torch.bfloat16
数据类型,需安装PyTorch 2.2.0或更高版本。由于StableCascadeCombinedPipeline
内部调用StableCascadeDecoderPipeline,其使用torch.bfloat16
时同样需要PyTorch 2.2.0+。
若环境无法安装PyTorch 2.2.0+,可单独使用StableCascadeDecoderPipeline
并搭配torch.float16数据类型。需下载完整精度或bf16变体权重并转换为torch.float16。
pip install diffusers
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "穿着宇航服和头盔的柴犬图像"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", torch_dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
使用阶段B和阶段C的轻量版模型
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "穿着宇航服和头盔的柴犬图像"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")
通过from_single_file
加载原始检查点
可通过StableCascadeUNet中的from_single_file
方法加载原始格式检查点。
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "穿着宇航服和头盔的柴犬图像"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
torch_dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
torch_dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, torch_dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, torch_dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")
使用StableCascadeCombinedPipeline
from diffusers import StableCascadeCombinedPipeline
pipe = StableCascadeCombinedPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16)
prompt = "穿着宇航服和头盔的柴犬图像"
pipe(
prompt=prompt,
negative_prompt="",
num_inference_steps=10,
prior_num_inference_steps=20,
prior_guidance_scale=3.0,
width=1024,
height=1024,
).images[0].save("cascade-combined.png")
用途
直接用途
目前模型主要用于研究目的,潜在研究方向包括:
- 生成模型研究
- 可能产生有害内容模型的安全部署
- 探索生成模型的局限性和偏差
- 艺术创作及设计应用
- 教育或创意工具开发
以下为排除用途说明。
非适用用途
该模型未训练用于生成人物或事件的真实表述,因此此类内容生成超出模型能力范围。禁止以任何形式违反Stability AI可接受使用政策的方式使用本模型。
局限性与偏差
局限性
- 人脸及人物生成可能不准确
- 模型的自动编码部分存在信息损失
使用建议
建议仅将模型用于研究目的。
快速开始
访问 https://github.com/Stability-AI/StableCascade









