扩散模型这两年把图像生成卷到了新高度,Stable Diffusion 这类开源方案让个人开发者也能玩转 AI 插画。我花了一些时间用 Hugging Face 的 Diffusers 库跑通了完整流程,从原理到调参,记录一下关键步骤和容易踩的坑。
扩散模型到底在干什么
可以把它理解成一个'加噪再去噪'的游戏。正向扩散是给真实图像逐步加噪声,加到完全看不清;逆向去噪则训练神经网络还原出原图。如果在这个过程中插入文本提示词,模型就会学着按描述生成图像,这就是所谓的条件生成。
Stable Diffusion 靠海量图像训练(据说有几十亿张)学会了噪声和画面特征之间的对应关系,所以不仅能出图,还能出细节丰富、风格强烈的图。下面的代码都是基于 Diffusers 库写的,环境用 Python 3.10+,GPU 用 CUDA 加速。
环境搭建
先建个虚拟环境,装好 PyTorch 和 Diffusers。
python -m venv aigc_env
source aigc_env/bin/activate # Windows 用 aigc_env\Scripts\activate
# 安装核心依赖,注意 CUDA 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install diffusers transformers accelerate
pip install Pillow scipy tqdm
模型加载与提示词
默认用 runwayml/stable-diffusion-v1-5,这个模型比较均衡。显存不够就切到 FP16,我在一张 RTX 3080 上跑没什么压力。
from diffusers import StableDiffusionPipeline
import torch
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = """
A dreamy forest at twilight, illuminated by bioluminescent plants,
painted in the style of Alphonse Mucha with intricate Art Nouveau details,
using a palette of deep purples and emerald greens
"""
negative_prompt = "ugly, deformed, blurry, bad anatomy"
提示词写起来很像跟模型聊天。正面描述要具体,负面提示专门排除那些肢体扭曲、模糊之类的东西。实际用下来,加上 bad anatomy 对手指、人脸这类细节帮助挺大。
生成图像与参数调优
核心参数就那么几个,但组合起来效果差别不小。
parameters = {
"prompt": prompt,
"negative_prompt": negative_prompt,
"width": 768,
"height": 768,
"num_inference_steps": 50,
"guidance_scale": 7.5,
:
}
torch.autocast():
image = pipe(**parameters).images[]
image.save()


