图像生成
基于扩散模型的文生图能力说明,覆盖模型选择、参数配置、服务运行与故障排查。
目录
功能概览
能力说明
图像生成模块支持通过自然语言提示词生成图像,适用于概念验证、创意草图和实验场景。
核心概念
- 提示词(Prompt):描述希望生成的图像内容
- 负向提示词(Negative Prompt):约束不希望出现的内容
- 推理步数(Steps):去噪迭代次数,影响质量与耗时
- 引导强度(CFG Scale):模型对提示词的遵循程度
工作原理
graph LR
A[文本提示词] --> B[文本编码]
B --> C[条件向量]
D[随机噪声] --> E[扩散模型]
C --> E
E --> F[迭代去噪]
F --> G[生成图像]
简化流程:
- 文本编码为条件向量
- 以随机噪声为起点
- 多轮去噪得到最终图像
支持模型
| 模型 | 键名 | 体积 | 速度 | 质量 | 建议场景 |
|---|---|---|---|---|---|
| SDXL-Turbo | sdxl-turbo | ~7GB | 很快 | 良好 | 预览与快速迭代 |
| SD v1.5 | stable-diffusion-v1-5 | ~4GB | 中等 | 高 | 通用场景 |
| SD v2.1 | stable-diffusion-2-1 | ~5GB | 中等 | 很高 | 细节要求高 |
| SDXL Base | stable-diffusion-xl-base | ~7GB | 较慢 | 优秀 | 高质量输出 |
使用说明
快速启动
- 使用项目启动脚本:
./quick_start.sh
- 打开页面:
🖼️ 多模态系统→🎨 图像生成 - 加载目标模型(首次可能触发下载)
- 配置参数并点击生成
- 结果保存在
models/generated_images_service/
推荐参数
- Steps:20-100(默认建议 50)
- CFG Scale:1-20(默认建议 7.5)
- 分辨率:512-1024(SDXL 建议 1024x1024)
- Seed:
-1表示随机,可指定固定值复现结果
提示词示例
一只可爱的橘猫在窗边晒太阳,高细节,柔和光线夜晚的未来城市,霓虹灯,赛博朋克风格水彩风格的山间湖泊,清晨薄雾
服务架构与实现
图像生成采用独立服务运行,减少与其他模块依赖冲突并提升稳定性。
from src.search_engine.diffusion_service import DiffusionService
diffusion_service = DiffusionService(output_dir="models/generated_images")
success, message = diffusion_service.load_model("sdxl-turbo")
print(message)
result = diffusion_service.generate_image(
prompt="一只可爱的橘猫在窗边晒太阳",
negative_prompt="模糊, 低清晰度, 水印",
num_inference_steps=4,
guidance_scale=0.0,
width=512,
height=512,
seed=-1,
num_images=1
)
性能与稳定性建议
- 优先使用 GPU(建议显存 4GB 及以上)
- 模型首次下载体积大,建议提前准备网络与缓存
- 大图和高步数会显著增加推理时间
- 生产使用建议增加请求队列与并发控制
常见问题
1) 生成失败
- 检查显存是否足够
- 降低分辨率或步数
- 确认模型已完整加载
- 必要时切换到 CPU 模式验证链路
2) 结果质量不理想
- 提高提示词具体度
- 调整负向提示词
- 提高步数并尝试不同随机种子
- 更换更高质量模型
3) 生成速度慢
- 使用更快模型(如
sdxl-turbo) - 降低分辨率与步数
- 避免一次生成过多图片