文生图学习步骤
目录
好的,既然你是初学者,我给你设计一个"边学边做"的计划。
核心思路是:
每个学习阶段结束后,都能产出一个可运行的小成果,最终组合成完整的 MVP。
一、学习路线总览
整个学习分 6 个阶段,每个阶段大约 1-2 周:
阶段 1:先跑通一张图(体验文生图)
↓
阶段 2:学会控制风格(LoRA)
↓
阶段 3:学会控制构图(ControlNet)
↓
阶段 4:学会 Prompt 优化(LLM + SD)
↓
阶段 5:学会角色一致性(IP-Adapter)
↓
阶段 6:搭建 MVP 平台(Web + API + 队列)
二、分阶段详细计划
阶段 1:先跑通一张图
目标
在本地或云端跑通文生图,输入一句话,输出一张图。
你要学什么
- Stable Diffusion 是什么
- 扩散模型的基本原理(不用深入数学,知道"加噪→去噪"即可)
- 怎么安装和运行
用什么技术
方案 A:零代码体验(推荐先用这个)
安装 ComfyUI 或 WebUI(A1111):
- ComfyUI:节点式操作,更灵活
- WebUI:界面更直观,适合入门
方案 B:代码方式
用 Python + HuggingFace Diffusers:
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16
)
pipe = pipe.to("cuda")
image = pipe("a cat wearing sunglasses on a beach").images[0]
image.save("output.png")
硬件要求
- 至少 8GB 显存 GPU
- 推荐 12GB 以上
- 如果没有本地 GPU,用云 GPU(AutoDL、Google Colab)
阶段产出
- 能输入一句英文描述,生成一张图
- 理解 positive prompt 和 negative prompt 的作用
- 能调整基本参数(步数、CFG scale、尺寸)
阶段 2:学会控制风格(LoRA)
目标
学会用 LoRA 切换不同的画风。
你要学什么
- LoRA 是什么(一个小的风格插件)
- 怎么下载别人训练好的 LoRA
- 怎么加载 LoRA
- 怎么调节 LoRA 权重
- 怎么叠加多个 LoRA
用什么技术
下载 LoRA
去这些网站找现成的 LoRA:
- Civitai(最大的 SD 模型社区)
- HuggingFace
- LiblibAI(国内)
加载 LoRA
ComfyUI 里直接拖节点。
代码方式:
from diffusers import StableDiffusionXLPipeline
pipe = StableDiffusionXLPipeline.from_pretrained(...)
pipe.load_lora_weights("path/to/ink_painting_lora.safetensors")
image = pipe("一个少女站在山水之间, 水墨风格").images[0]
实践任务
- 下载 3 个不同风格的 LoRA(水墨、动漫、写实)
- 用同一段文字描述,分别加载不同 LoRA,对比效果
- 尝试调节 LoRA 权重(0.3 / 0.5 / 0.8 / 1.0)
阶段产出
- 能用 LoRA 切换风格
- 理解 LoRA 权重对效果的影响
- 建立一个小型"风格库"(3-5 个 LoRA)
阶段 3:学会控制构图(ControlNet)
目标
学会用 ControlNet 控制生成图片的构图、姿势、边缘。
你要学什么
- ControlNet 是什么
- 常用的控制类型:
- Canny(边缘线条)
- OpenPose(人体姿势)
- Depth(深度图)
- Lineart(线稿)
- 怎么使用 ControlNet
用什么技术
ComfyUI 里有现成的 ControlNet 节点。
代码方式:
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline
controlnet = ControlNetModel.from_pretrained("controlnet-canny-sdxl")
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet
)
# 传入一张 canny 边缘图作为构图参考
image = pipe("a warrior in armor", image=canny_image).images[0]
实践任务
- 找一张人物照片,提取 OpenPose 骨架
- 用骨架 + 文字描述生成新图片
- 对比有 ControlNet 和没有 ControlNet 的效果差异
阶段产出
- 能用 ControlNet 控制人物姿势
- 能用线稿控制构图
- 理解不同 ControlNet 类型的适用场景
阶段 4:学会 Prompt 优化(LLM + SD)
目标
用大模型(LLM)把作家的中文文学描述,自动转化为高质量的 SD prompt。
你要学什么
- 为什么作家的文字不能直接当 prompt
- 怎么用 LLM 做 prompt 优化
- 怎么设计 prompt 优化的 System Prompt
用什么技术
LLM 选型
- 本地:Qwen(通义千问)
- API:GPT-4o / Claude / Qwen API / DeepSeek
Prompt 优化模板
[System Prompt]
你是一个专业的 Stable Diffusion prompt 工程师。
用户会给你一段中文文学描述,请你将其转化为高质量的英文 SD prompt。
要求:
1. 输出 positive_prompt(正面描述)
2. 输出 negative_prompt(负面排除)
3. 建议的风格标签
4. 建议的画面比例
用户输入:
"暮色四合,残阳如血,少女倚在斑驳的城墙上,
风吹起她银白色的长发,远处的山脉在薄雾中若隐若现"
LLM 输出
{
"positive_prompt": "a girl leaning on ancient weathered city wall,
sunset, blood-red sky, silver white long hair blowing in wind,
mountains in distant mist, cinematic lighting,
masterpiece, best quality, fantasy illustration",
"negative_prompt": "ugly, deformed, blurry, low quality,
bad anatomy, extra limbs",
"style": "fantasy_illustration",
"aspect_ratio": "16:9"
}
实践任务
- 写一个 Python 脚本
- 输入:一段中文文学描述
- 中间:调用 LLM API 优化 prompt
- 输出:调用 SD 生成图片
- 实现完整的 文学描述 → prompt → 图片 链路
阶段产出
- 一个可运行的脚本
- 输入中文,输出图片
- 体验到 LLM 优化 prompt 对生成质量的巨大提升
阶段 5:学会角色一致性(IP-Adapter)
目标
让同一个角色在不同场景中保持外貌一致。
你要学什么
- IP-Adapter 是什么
- 怎么用参考图控制生成角色
- 怎么结合 LoRA + IP-Adapter
用什么技术
IP-Adapter
用一张角色参考图,控制生成图中角色的外貌特征。
from diffusers import StableDiffusionXLPipeline
from diffusers.utils import load_image
# 加载 IP-Adapter
pipe.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models")
# 角色参考图
ref_image = load_image("character_reference.png")
# 生成不同场景,但角色一致
image1 = pipe("the girl standing in a forest",
ip_adapter_image=ref_image).images[0]
image2 = pipe("the girl fighting a dragon",
ip_adapter_image=ref_image).images[0]
实践任务
- 准备一张角色参考图
- 用 IP-Adapter 生成同一角色在 3 个不同场景中的图片
- 对比角色是否保持一致
阶段产出
- 能用 IP-Adapter 保持角色一致性
- 理解参考图对生成效果的影响
- 能结合 LoRA(风格)+ IP-Adapter(角色)同时使用
阶段 6:搭建 MVP 平台
目标
把前面学到的所有能力,组装成一个可用的 Web 平台。
MVP 功能清单
必须有的功能
- 作家输入中文描述
- 选择风格(从预设风格库选)
- 可选上传角色参考图
- 点击生成
- 一次生成 4 张供选择
- 可以下载图片
可以先不做的
- 用户注册登录(先单用户)
- 计费
- 大规模并发
- 角色管理系统
技术架构
前端(Web)
↓
后端 API(FastAPI)
├── Prompt 优化服务(调 LLM)
├── 风格选择(加载对应 LoRA)
├── 角色参考(IP-Adapter)
└── 图片生成(SD Pipeline)
↓
GPU(本地或云)
↓
图片存储(本地文件 / OSS)
↓
返回图片给前端
技术选型
前端
- Gradio(最快,Python 写前端)
- 或 Streamlit
- 后期可换 React/Vue
后端
- FastAPI(Python)
模型推理
- Diffusers(HuggingFace)
- ComfyUI API 模式
图片存储
- 先本地文件系统
- 后期换 OSS / S3
核心代码骨架
from fastapi import FastAPI
from diffusers import StableDiffusionXLPipeline
import torch
app = FastAPI()
# 加载基础模型(启动时加载一次)
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16
).to("cuda")
# 预加载风格 LoRA 映射
STYLE_LORAS = {
"水墨风": "loras/ink_painting.safetensors",
"动漫风": "loras/anime.safetensors",
"写实风": "loras/realistic.safetensors",
}
@app.post("/generate")
async def generate(
text: str, # 作家的中文描述
style: str, # 风格选择
ref_image: str = None # 角色参考图(可选)
):
# 1. LLM 优化 prompt
sd_prompt = llm_optimize_prompt(text)
# 2. 加载对应风格 LoRA
pipe.load_lora_weights(STYLE_LORAS[style])
# 3. 如果有角色参考图,加载 IP-Adapter
if ref_image:
pipe.load_ip_adapter(...)
# 4. 生成 4 张图
images = pipe(
sd_prompt["positive"],
negative_prompt=sd_prompt["negative"],
num_images_per_prompt=4
).images
# 5. 保存并返回
paths = save_images(images)
return {"images": paths}
阶段产出
- 一个可运行的 Web 应用
- 作家输入中文 → 选风格 → 生成图片
- 支持角色参考图
- 一次出 4 张供选择
三、时间规划建议
| 阶段 | 内容 | 建议时间 | 产出 |
|---|---|---|---|
| 1 | 跑通第一张图 | 3-5 天 | 能生成图片 |
| 2 | LoRA 风格控制 | 3-5 天 | 能切换风格 |
| 3 | ControlNet 构图 | 3-5 天 | 能控制构图 |
| 4 | LLM Prompt 优化 | 3-5 天 | 中文→图片链路 |
| 5 | IP-Adapter 角色一致 | 3-5 天 | 角色一致性 |
| 6 | MVP 平台搭建 | 1-2 周 | 可用的 Web 产品 |
总计大约 5-8 周,你就能从零搭出一个可演示的 MVP。
四、硬件建议
学习阶段
- Google Colab(免费 GPU,够学习用)
- AutoDL(国内云 GPU,便宜)
- 自己的 GPU(至少 8GB 显存)
MVP 阶段
- 一台 24GB 显存的 GPU(如 RTX 4090 / A5000)
- 或云 GPU(A10 / L40)
五、学习资源推荐
入门
- Stable Diffusion WebUI 官方文档
- ComfyUI 官方教程
- HuggingFace Diffusers 文档
进阶
- Civitai(看别人怎么用 LoRA / ControlNet)
- ControlNet 官方 GitHub
- IP-Adapter 官方 GitHub
社区
- Reddit: r/StableDiffusion
- B 站搜"Stable Diffusion 教程"
- GitHub 上各种 ComfyUI workflow
六、一句话总结
从"跑通第一张图"开始,逐步叠加 LoRA(风格)→ ControlNet(构图)→ LLM(Prompt 优化)→ IP-Adapter(角色一致)→ FastAPI + Gradio(Web 平台),大约 5-8 周就能从零搭出一个"作家输入中文描述,自动生成插画"的 MVP。
如果你愿意,我下一步可以直接给你:
- 阶段 1 的详细操作步骤(手把手跑通第一张图)
- 阶段 4 的 LLM Prompt 优化模板(可直接用)
- 阶段 6 的 MVP 完整代码骨架
你想从哪个开始?

浙公网安备 33010602011771号