MOSS-Image-SFT提示词增强实战教程:一句话扩写成高质量生图提示词,10分钟出片
【免费下载链接】MOSS-Image-SFT项目地址: https://ai.gitcode.com/OpenMOSS/MOSS-Image-SFT
用一句话画一张带中文文字的海报,结果十次有八次"翻车"?MOSS-Image-SFT 配套的提示词增强 Skill 可以帮你把"冰箱上贴张便签"这种粗糙想法,自动扩写成带场景、光线、文字细节的完整描述,或生成可精确控位的 Layout 提示词。本教程面向新手,从装环境到出图一步到位。
痛点与价值:为什么"一句话提示词"总画不准?
用 AI 画图时,你大概遇到过这些糟心场景:
- 细节全靠模型脑补:提示词只写主体,背景、光线、构图全由模型自由发挥,出图风格飘忽,返工率极高。
- 画面里的文字摆不准:想让中文便签贴在冰箱门上,结果文字要么跑位、要么糊成一团,怎么改提示词都不听。
- 逐字手动写长描述太慢:一条合格的生图提示词往往要写场景、主体、光照、文字内容、排版,新手从零组织文案非常耗时。
MOSS-Image-SFT 的提示词增强(Prompt Enhancer)Skill 就是来解决这三件事的:它扮演"提示词扩写助手",接收你的一句话想法,输出两种结果之一——
| 对比维度 | 自己手写提示词 | 用提示增强 Skill 扩写 |
|---|---|---|
| 细节完整度 | 只写主体,其余交给模型猜 | 自动补全场景、光线、文字内容与排版 |
| 文字控位 | 只能靠描述碰运气 | 生成带坐标的 Layout JSON,逐元素指定位置 |
| 调整成本 | 每次改动都要重写整段文案 | 追问一句即可增删元素;Layout 只需改对应条目 |
| 上手门槛 | 需要熟悉提示词写法 | 给一句话想法即可 |
环境准备:安装 MOSS-Image-SFT 与提示增强 Skill 的完整步骤
- 准备运行环境:Python 3.10+、支持 CUDA 的 NVIDIA GPU,并装好适配 CUDA 环境的 PyTorch 2.9+。
- 安装推理依赖:执行行内命令
pip install "diffusers>=0.38" "transformers>=5.3" "accelerate>=1.10" "safetensors>=0.6" "Pillow>=10"。 - 获取模型文件:本仓库就是 MOSS-Image-SFT 的完整模型目录,结构由 model_index.json 描述,包含 transformer/(扩散主干)、text_encoder/(文本编码)、tokenizer/(分词器)、vae/(VAE)与 scheduler/(调度器)。
- 安装提示增强 Skill:Skill 文件位于 MOSS-Image 主代码仓库的
skills/moss-image-prompt-enhancer/目录(含定义扩写规则的SKILL.md和坐标编译脚本),把它整个文件夹放进你 Agent 的 skills 目录即可;它面向具备本地文件与 Python 工具的 GPT-6 系列 Agent。 - 加载推理管线:用 diffusers 加载模型并指定自定义管线:
pipe = DiffusionPipeline.from_pretrained( "./MOSS-Image-SFT", # 本地模型目录,或换成官方模型仓库名 custom_pipeline="pipeline_moss_image", trust_remote_code=True, )加载成功后pipe对象即为 MOSS-Image-SFT 推理管线,管线实现见根目录 pipeline_moss_image.py。
上手流程:从一句话想法到成图的 4 个动作
Step 1:唤起 Skill 并给足三样输入
在 Agent 中调用$moss-image-prompt-enhancer,提供:你的画面想法(一句话)、期望输出类型(详细描述 Caption 或空间布局 Layout)、目标画布尺寸(可选)。验证点:Agent 正常响应,并确认了输出类型。
Step 2:拿到扩写后的完整描述
Agent 会把"冰箱上的便签"扩写成含场景、主体、光照、文字内容与排版的详细描述。验证点:描述里明确写出了要渲染的文字原文,而不是"一些中文"这种模糊表述。
Step 3:不满意就追问迭代
直接让 Agent 调整语气、增删元素、改变构图,直到满意。整个过程只是本地文本转换,不会调用图像生成服务,放心反复试写。
Step 4:贴进正向提示词,出图验收
把编译后的文本粘贴到 MOSS-Image 的**正向提示词(positive prompt)**位置,按后文推荐参数生图。README 里的示例就是这种风格:
A wide view of a refrigerator beside a kitchen counter with a fruit bowl. A small sticky note on the refrigerator door is handwritten in Chinese: "记得买牛奶和鸡蛋!牛奶两盒,鸡蛋一打。顺便带一袋面包。"
验证点:出图中便签上应出现完整的中文手写文字,画面还原度远高于"冰箱上贴着便签"这种一句话提示词。
进阶控制:Layout 模式让文字和物体"听话就位"
适用场景:海报、信息图、需要精确控位的画面
Layout 模式允许你用 JSON 直接指定"文字写在哪里、物体放哪里",适合文字渲染和版面控制类任务。
- Agent 先在目标画布上以像素坐标草拟各元素的位置;
- 内置脚本把坐标草稿编译成紧凑 JSON,坐标统一为整数居中坐标(对应
bbox_coord_space: "abs_centralized",格式为bbox_format: "yxyx"); - 布局结构包含
summary.caption(场景描述)与items(元素列表),用json.dumps(layout, ensure_ascii=False)序列化后,整个 JSON 字符串就是提示词本身,直接贴进正向提示词即可。
⚠️出图尺寸必须与 Layout 的画布尺寸完全一致:例如画布是 1024×1024,就按 1024×1024 出图,尺寸不匹配会导致坐标错位、元素整体跑偏。
适用场景:小改小调,不想重写整条提示词
Layout 结构天然支持受控编辑:想改一个字,只需修改 JSON 里对应items的文本或框坐标,其余内容原封不动,无需重写整个提示词。改版面、换文案类需求优先用它。
参数速查:MOSS-Image-SFT 推荐采样参数一览表
以下默认值来源于仓库 README.md 与 scheduler/scheduler_config.json:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 采样器 | Flow-matching Euler | 流匹配欧拉采样 |
步数num_inference_steps | 50 | 步数太少文字易糊 |
guidance_scale | 3.0 | 提示词引导强度 |
uncond_skip_layers | [22] | 负向分支第 22 层(零基)跳层;设为[]可关闭 |
| Shift | 5.0 | 调度器默认值,见 scheduler_config.json |
| 负向提示词 | 留空 | 留空即可 |
注意:Python API 的图像宽高必须是 16 的正整数倍,否则无法出图。
踩坑问答:文字位置不对、细节太糙怎么办?
Q1:Layout 出图,元素位置整体不对,怎么办?先确认两件事:出图尺寸与 Layout 画布尺寸完全一致;粘贴的是编译后的 JSON,而不是像素坐标草稿。这两点是坐标错位最常见的原因,排除后问题基本都能解决。
Q2:画面细节还是太糙、文字不清,怎么调?换用详细描述(Caption)模式:扩写后的提示词把文字原文和排版都写进去了,模型才有依据去渲染。另外文字渲染类任务请优先选 MOSS-Image-SFT 而非 Base 版——SFT 在文字分组与版面组织上明显更整齐。
Q3:SFT 版和 Base 版到底选哪个?做文字、版面类任务选 SFT;普通无文字画面两者差别不大。SFT 与 Base 使用同一架构和推理管线,切换模型即可,参数无需另调。
Q4:我的 Agent 不支持本地文件工具,还能用这个 Skill 吗?可以。Skill 的扩写规则完整写在SKILL.md里,没有文件工具的 Agent 也可以照着规则手动完成扩写,只是少了自动编译脚本这一步。
Q5:反复试写会不会产生生图费用?不会。提示增强过程只做本地文本转换,全程不触发生图服务,扩写到满意再出图即可。
收尾:把要点记牢
- 提示增强 Skill 把一句话扩写成详细描述或Layout 提示词,全程本地文本处理,不触发生图服务,可放心迭代。
- 结果直接贴进正向提示词;用 Layout 时出图尺寸必须与画布尺寸一致,且粘贴的是编译后的 JSON。
- 保持
guidance_scale=3.0、50 步 Flow-matching Euler 的默认采样参数,即可获得文字清晰、排版整齐的成图效果。
模型权重与随附推理代码遵循Apache License 2.0(见 LICENSE),可放心用于项目。
【免费下载链接】MOSS-Image-SFT项目地址: https://ai.gitcode.com/OpenMOSS/MOSS-Image-SFT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考