MOSS-Image 布局 JSON 规范
MOSS-Image 用于布局控制的边界框提示词格式,逐字段讲解,并附完整示例。
MOSS-Image 布局 JSON 是一种提示词格式:把一张图描述成一组元素,每个元素有标签、描述、可选的文字内容,以及一个以画布中心为原点、用绝对像素坐标表示的边界框。 你把这段 JSON 粘贴到提示词框里代替一句话,模型就会把每个元素放进对应的框内。本页依据官方用户指南和技术报告记录该格式。
OpenMOSS 将此功能标记为“实验性”。最后核实:2026 年 10 月 20 日。
布局 JSON 提示词长什么样?
下面是官方的旅行海报示例,画布为 1024 × 1024,包含一个文字元素和一个物体元素。
{
"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"
}
每个字段是什么意思?
顶层有四个键:summary、items、bbox_coord_space 和 bbox_format。summary 描述整张图,items 描述各个组成部分,最后两个键声明所有框的读取方式。
| 字段 | 类型 | 含义 |
|---|---|---|
summary.meta | 字符串数组 | 图片类型标签,例如 ["poster"] |
summary.canvas | 字符串 | 单画布填 "single" |
summary.caption | 字符串 | 对整张图的自然语言描述 |
items[].label | 字符串 | text、character 或 object |
items[].caption | 字符串 | 该元素应该是什么样子 |
items[].text | 字符串 | 要渲染的原文;仅用于 text 元素 |
items[].bbox | 4 个整数的数组 | 该元素的框,按两个格式键的声明读取 |
bbox_coord_space | 字符串 | "abs_centralized":绝对像素,原点在画布中心 |
bbox_format | 字符串 | "yxyx":[y_min, x_min, y_max, x_max] |
坐标是如何定义的?
坐标为绝对像素,原点在画布中心,x 向右增大,y 向下增大。在 1024 × 1024 的画布上,两个轴的范围都是 -512 到 +512。要把一个以左上角为原点的普通框转换过来,所有 x 值减去宽度的一半,所有 y 值减去高度的一半。
| 左上角原点的框(1024²) | 居中坐标的框 | 含义 |
|---|---|---|
| y 96 到 224,x 128 到 896 | [-416, -384, -288, 384] | 靠近顶部的标题带 |
| y 320 到 896,x 224 到 800 | [-192, -288, 384, 288] | 中下部的插画 |
记住 yxyx 的顺序:第一个值是 y_min,不是 x_min。框的坐标要和你在生成器中设置的宽高保持一致;框的数值不会自动缩放。
为什么用绝对坐标而不是 0-1000 的相对坐标?
技术报告发现,以零为中心的绝对坐标在模型训练时未见过的分辨率上泛化得更好,优于归一化到 0-1000 范围的相对坐标。这就是 MOSS-Image 没有沿用其他几个布局感知模型惯例的原因。
如何使用布局 JSON 提示词?
把 JSON 粘贴到提示词框中,并把宽高设置为你画框时所用的画布尺寸。在 Python API 中,把 json.dumps(layout, ensure_ascii=False) 作为提示词字符串传入。在 ComfyUI 中,核心节点 MOSS-Image Layout Prompt 会接收 Create Bounding Boxes 节点输出的框,并自动生成这段 JSON。
用户指南还提到,自然语言和结构化输入可以结合使用,因此布局 JSON 提示词可以和风格说明放在一起。
不用图生图,能直接修改布局吗?
可以。因为布局就在提示词里,你可以改一段文字、挪一个框或换一个元素,然后重新生成。论文称之为布局引导的零样本修改,并用它在不依赖任何图像条件的情况下替换文字或重排元素。
布局 JSON 能带来多大提升?
在论文的 RealLayoutArena 人工评测中,JSON 布局提示词的 Elo 得分为 1622.87,详细自然语言提示词为 1509.21,短提示词为 1081.70。在 7Bench 基准上,MOSS-Image 使用布局提示词达到 0.88 mIoU 和 0.70 布局 AUC,而 Ideogram 4 为 0.44 和 0.20。
第二个示例:三步信息图
这个示例使用 768 × 1024 的竖版画布,因此 x 的范围是 -384 到 +384,y 的范围是 -512 到 +512。
{
"summary": {
"meta": ["infographic"],
"canvas": "single",
"caption": "A clean vertical infographic on white with a title and three numbered steps, each with a small green icon on the left and short text on the right."
},
"items": [
{
"label": "text",
"caption": "Bold dark-green title centered at the top.",
"text": "How Compost Works",
"bbox": [-448, -320, -352, 320]
},
{
"label": "object",
"caption": "Flat green icon of a kitchen scrap bowl.",
"bbox": [-256, -320, -128, -192]
},
{
"label": "text",
"caption": "Step one label in dark sans-serif.",
"text": "1. Collect scraps",
"bbox": [-240, -160, -144, 320]
},
{
"label": "object",
"caption": "Flat green icon of layered leaves.",
"bbox": [-64, -320, 64, -192]
},
{
"label": "text",
"caption": "Step two label in dark sans-serif.",
"text": "2. Layer greens and browns",
"bbox": [-48, -160, 48, 320]
},
{
"label": "object",
"caption": "Flat green icon of a garden fork.",
"bbox": [128, -320, 256, -192]
},
{
"label": "text",
"caption": "Step three label in dark sans-serif.",
"text": "3. Turn weekly",
"bbox": [144, -160, 240, 320]
}
],
"bbox_coord_space": "abs_centralized",
"bbox_format": "yxyx"
}
用户指南中的建议
- 坐标要和输出尺寸保持一致,输出尺寸必须是 16 的正整数倍。
text字段放要渲染的原文,caption放它的样式;不要只把文字写在 caption 里。- 推荐用英文写 caption,因为大部分训练数据是英文,但
text字符串可以是中文。 - 在
text字符串中插入\n可以强制换行。 - 代码仓库附带一个提示词增强器 skill,可以把像素坐标草稿转换成带整数居中坐标的紧凑 JSON;官方已预告将发布一个微调过的开源布局增强器,但尚未上线。
常见问题
items[].label 允许哪些取值?
根据 ComfyUI Wiki 对核心节点的描述,允许 text、character 和 object。
summary 块是必需的吗?
官方示例始终包含它。模型从 summary 的 caption 中读取整体风格和背景,所以请保留。
框超出画布会怎样?
用户指南没有说明。请把框控制在 -W/2 到 +W/2 和 -H/2 到 +H/2 的范围内,以保持在有文档记录的行为之内。
布局 JSON 可以用于其他模型吗?
不能直接使用。该格式是 MOSS-Image 专有的。MossImage 即将推出的布局模式会把同样的框转换成详细的自然语言提示词供其他引擎使用,并为 MOSS-Image 导出 JSON。