把海报写成 JSON:MOSS-Image 的布局提示词
OpenMOSS 开源 5B 文生图模型 MOSS-Image,可以用 JSON 布局提示词写明每行字、每个元素放在哪个框里,海报从一张图变成一份数据。
一、字放在哪里
做过海报的人都知道,难的往往不是画面,而是字。
标题放在哪里,副标题多大,活动日期贴着哪条边,这些才是设计稿反复改的地方。
文生图模型这几年进步很快,画面越来越好看,但"字放在哪里"一直是个老问题。
你在提示词里写"标题在顶部居中",模型大概率能听懂一半。剩下一半,看运气。
怎么解决呢?
有一个思路是:别用自然语言描述位置,直接把坐标写给它。
10 月 16 日,OpenMOSS 团队发布的开源文生图模型 MOSS-Image,就是这么做的。
二、MOSS-Image 是什么
先看基本信息(据 OpenMOSS 官网、GitHub 仓库 和 Hugging Face 模型页)。
1、发布了两个版本:MOSS-Image-Base,以及在精选数据上微调的 MOSS-Image-SFT。
2、模型是 5B 参数的 DiT(Diffusion Transformer),从零训练。
3、提示词最长 4K token。
4、能渲染中文和英文文字,支持动漫和写实两类风格。
5、权重采用 Apache-2.0 许可证。
另外,官方提到训练用的是异构 GPU 平台,也就是不同型号的显卡混在一起训。这对算力不宽裕的团队,是一个值得关注的细节。
需要提醒一句:写实风格如果涉及真人的肖像,商用之前要先取得本人授权。
三、JSON 提示词长什么样
这是本文的重点。
MOSS-Image 的提示词,可以是一段普通的文字,也可以是一份结构化的 JSON。
JSON 分两部分。
1、summary.caption:用一句话描述整张画面。
2、items:画面里的每一个元素,一项一项列出来。
每个元素有四个字段:label 说明它是文字(text)还是物体(object),caption 描述它的样子,text 写要渲染的精确文字,bbox 写它放在哪个框里。
下面是官方 GitHub README 里的原例,画布为 1024×1024(原文照录,来源:OpenMOSS/MOSS-Image README)。
{
"summary": {
"meta": ["poster"],
"canvas": "single",
"caption": "A minimalist travel poster with a cream background, a blue mountain illustration, and the title EXPLORE at the top."
},
"items": [
{
"label": "text",
"caption": "Large dark-blue uppercase title centered at the top.",
"text": "EXPLORE",
"bbox": [-416, -384, -288, 384]
},
{
"label": "object",
"caption": "A flat blue mountain illustration in the lower center.",
"bbox": [-192, -288, 384, 288]
}
],
"bbox_coord_space": "abs_centralized",
"bbox_format": "yxyx"
}
这是一张写着 "EXPLORE" 的极简旅行海报:奶油色底,标题在顶部居中,蓝色山峦在下方。最后两个字段 bbox_coord_space 和 bbox_format,分别声明坐标系和坐标顺序,下一节细说。
这里有两个细节值得注意。
1、要渲染的文字,单独放在 text 字段里,和描述样式的 caption 分开。也就是说,"写什么"和"长什么样"是两件事,不会混在一句话里让模型去猜。
2、文字和物体用同一种格式描述,都是一个框加一段说明。对模型来说,一行标题和一座山,都只是画布上的一个元素。
四、坐标是怎么算的
bbox 的格式值得单独说一下,因为它和很多人的习惯不一样。
第一,顺序是 [y_min, x_min, y_max, x_max],先写纵坐标,再写横坐标。
第二,原点在画布的中心,不在左上角。
以 1024 的画布为例,坐标范围是 −512 到 +512。
大家猜猜看,为什么要把原点放在中心?
官方没有解释原因。我的猜测是:海报的构图大多围绕中心展开,"居中"这件事在中心坐标系里最好写,左右对称的元素,坐标也正好互为相反数。(这只是我的推测。)
不管原因是什么,实际使用时要记住一点:从别的工具里复制过来的左上角坐标,不能直接用,得先换算。官方给的换算办法是:普通的 x 坐标减去画布宽度的一半,y 坐标减去高度的一半;x 向右增大,y 向下增大。
另外,如果你习惯先写 x 再写 y,这里也要倒过来。顺序写反了,框就跑到别的地方去了,而且不会报错,只会画错。
五、为什么这件事有意思
把排版写成 JSON,带来两个好处。
1、位置变成了可以精确指定的东西。 标题在哪里、多大,不再靠模型去猜。
2、修改变成了改数据。 官方说,改 JSON 里的文字、描述或者框,就能做受控编辑。比如活动换了城市,只改 text 那一项,其他元素原样不动。
第二点对设计和运营的意义更大。
以前,一张海报是一张图。以后,一张海报可以是一份数据,再加一个模型。
数据可以进版本管理,可以批量生成,可以让程序去改。同一套布局,换一组文字,就是另一张海报。
当然,这只是工作流上的可能性。生成出来的图好不好看、字有没有错,仍然需要人来把关。
六、热度和社区
据 Silicon Noon 引述量子位的报道(属于二手数据):
1、首四天各 Hugging Face 镜像累计下载约 130 万,登上文生图趋势榜第一。
2、在 LLTB 文字渲染基准上排开源第一,覆盖率 96.3%。
3、盲测设计评测 Elo 1,698.70,仅次于 GPT Image 2。
4、社区已经做出 8 步蒸馏版(下载超过 7.5 万),以及 GGUF、INT8、MLX 等版本。
Silicon Noon 还称,它的文本编码器是冻结的 Qwen3.5-9B。
这些数字都来自转述,并非官方直接公布,引用时请保留出处。
七、怎么使用
官方提供了 Diffusers 的自定义 pipeline。推荐的采样设置是:Flow-matching Euler,50 步,CFG 3,shift 5,负分支在第 22 层跳过。
如果想在本地点点鼠标,可以用 Gradio 界面。它有三种显存模式:GPU 常驻、按组件加载、顺序加载,显卡小一点也有办法。
用 ComfyUI 的同学,官方说 ComfyUI 已经原生支持 MOSS-Image:更新到带支持的 master/nightly 版本,配合 ComfyUI 格式的权重即可,不需要额外装插件。
还有一个小工具很实用:官方提供了一个 "MOSS-Image Prompt Enhancer" Agent skill,能把一句想法转成带居中整数坐标的布局 JSON。
也就是说,你不必手写坐标,可以先让 Agent 起草,再自己微调。
八、我的看法
文生图模型,过去比的是"画得像不像"。MOSS-Image 让人看到另一条路:比的是"听不听话"。
设计行业的大部分工作,并不是天马行空,而是在约束里做事:品牌色、字号、版式、位置。能把约束写成数据交给模型,比多一点画质更有用。
它是开源的,许可证也宽松,这一点我很欣赏。
如果你经常需要做带字的海报和封面,可以试试它。
(完)
来源:OpenMOSS 官网;GitHub 仓库(文中 JSON 示例照录自 README);Hugging Face 模型页;Silicon Noon。下载量、榜单、LLTB、Elo、蒸馏版下载量及文本编码器信息均为 Silicon Noon 引述量子位的二手数据,非官方公布;坐标原点放在中心的原因为作者推测;生成真人形象须先取得本人授权。