上手 Stable Diffusion:提示词、模型与调参经验
最近被一位文科生朋友刺激了——他笔记本上装 Stable Diffusion,半小时就生成了4K猫娘,效果吊打我折腾了三天的图。我问他的秘诀,就五个词:可爱,喵喵,赛博,霓虹,8K。这让我意识到,用 Stable Diffusion 这玩意儿,方向比努力重要得多。下面是我断断续续摸索出来的经验,从原理到实战,分享出来让新手少走些弯路。
原理其实很简单:扩散模型三步法
别看论文里'潜空间扩散模型'这些词挺唬人,逻辑就三步:
- 你输入文字描述。
- 模型从随机噪声开始,一步一步去噪,让噪声越来越像你描述的画面。
- 最后放大成高清图。
就像小时候玩的'猜画小歌',只不过它背后有个几十亿图片的数据库,速度快到你没法比。官方说法叫 Latent Diffusion Model,核心思路是在一个压缩过的特征空间(潜空间)里进行去噪,再放大还原,这样既省显存又不牺牲画质。
从马赛克到猫娘:去噪流水线
可以用一张动图理解:64×64 的马赛克 → 128×128 → 512×512 → 眨眼猫娘。这背后是三个组件接力:
- CLIP(语言理解模型):把你的提示词转换成一个77维的向量,相当于告诉模型'我要什么'。
- UNet(去噪网络):根据 CLIP 的指导,在潜空间里反复预测并去除噪声,每一步都让图像更清晰一点。
- VAE(变分自编码器):把去噪后的小尺寸潜空间表示解码放大成高清图片,顺便做锐化、调色。
用代码跑起来很简单,我用的是 Hugging Face 的 diffusers 库:
# stable_diffusion_pipeline.py
import torch
from diffusers import StableDiffusionPipeline
# 1. 加载模型,本地路径或 HuggingFace ID 都行
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16, # 半精度,省显存
safety_checker=None, # 别拦我,我要猫娘
requires_safety_checker=False
).to("cuda")
# 2. prompt 越具体,AI 越不摆烂
prompt = "cyberpunk catgirl, neon city background, leather jacket, glowing eyes, masterpiece, 8k"
# 3. 负面 prompt 直接告诉它「别整活」
negative_prompt = "lowres, bad anatomy, extra fingers, jpeg artifacts"
# 4. 生成!batch_size 别作死,8G 显存就 1 张
with torch.no_grad():
image = pipe(
prompt,
negative_prompt=negative_prompt,
num_inference_steps=25, # 步数少→快但糊;多→慢但细
guidance_scale=7.5, # 值越大越听你的话,太高又死板
generator=torch.Generator().manual_seed()
).images[]
image.save()


