LayoutDiffusion
基于扩散模型的布局到图像生成,CVPR2023论文,支持精确控制多物体空间位置
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于扩散模型的布局到图像生成,CVPR2023论文,支持精确控制多物体空间位置
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一家电商公司的设计师,需要为上千款商品批量生成主图。以往,每张图都需要手动用PS绘制商品位置、光影效果、文字标注——现在,你只需要给AI一份文字描述的"布局清单",它就能自动生成符合要求的图像。这不是科幻,这是LayoutDiffusion正在做的事。

2022年至2023年,扩散模型(Diffusion Model)在图像生成领域取得了突破性进展。以DALL-E 2、Stable Diffusion为代表的文生图(Text-to-Image)模型,已经能够根据一句文字描述生成质量极高的图像。然而,文生图有一个根本性的局限:它只能生成"大概像"的图像,无法精确控制多个物体的空间位置和大小关系。
在真实工业场景中,设计师往往已经有了明确的布局意图:这张图里,人物要占据画面左侧三分之一,人物右边要有一辆红色汽车,底部要有绿植陪衬。这种"布局约束"(Layout Constraints)在文生图模型中几乎无法精确表达——你告诉AI"左边有人,右边有车",它可能真的生成一个人和一辆车,但它们的位置、大小、遮挡关系完全不可控。
LayoutDiffusion正是为了解决这一问题而诞生的。它由广州大学研究团队开发(通讯作者为西安电子科技大学的Xi Li教授),于2022年11月投稿CVPR 2023,2023年3月正式被接收。论文在arXiv上的编号为2303.17189,代码于2023年3月开源,目前GitHub星标数为332颗。
LayoutDiffusion的核心技术贡献有两个层面。
第一,结构性图像块编码。 传统的Layout-to-Image方法通常将布局(bounding box + 类别标签)和图像分开处理,导致两个模态之间难以充分融合。LayoutDiffusion的解决思路非常巧妙:将带有区域位置信息的图像块(Structural Patch)"翻译"成一种特殊布局格式,然后与原始布局在统一形式下融合。这种"结构化图像块编码"打破了图像和布局之间的模态壁垒。
第二,双注意力机制。 LayoutDiffusion引入了两个关键模块:
Layout Fusion Module(LFM):建模多个物体之间的关系,让模型理解"人物站在汽车前面"这类空间逻辑,而不是孤立地生成每个物体。
Object-aware Cross Attention(OaCA):设计为物体感知且位置敏感的交叉注意力机制,能够精确控制每个物体的空间相关信息——比如确保"桌上的杯子"不会大到超出桌面的边界。
这两个模块共同作用,使得LayoutDiffusion在COCO-stuff和Visual Genome两个主流数据集上,将FID指标(越低越好)相对之前SOTA分别提升了46.35%和44.29%,同时在CAS指标上也分别提升了26.70%和41.82%。
LayoutDiffusion的代码大量基于OpenAI的guided-diffusion项目改造而来,保留了原始DDPM/DDIM扩散模型的核心框架,并在其上增加了面向布局生成任务的核心组件。
整体技术栈:
核心代码模块:
| 模块 | 文件 | 功能 |
|---|---|---|
| 布局编码器 | layout_encoder.py | 基于CLIP ViT架构的Transformer编码器,将bounding box和类别标签编码为统一表示 |
| UNet扩散模型 | layout_diffusion_unet.py | 改造自OpenAI guided-diffusion,加入LFM和OaCA注意力模块 |
| 扩散过程 | gaussian_diffusion.py | 实现了linear和cosine两种beta调度策略,支持DDIM加速采样 |
| 数据集加载 | data_loader.py | 支持COCO-stuff和Visual Genome两种数据集的加载和预处理 |
| Gradio演示 | get_gradio_demo.py | 交互式界面,支持自定义布局拖拽生成 |
数据集依赖:
LayoutDiffusion的训练和评测依赖两个大型数据集:
COCO-stuff 2017:微软发布的Common Objects in Context数据集,包含118,287张训练图像和5,000张验证图像,每个图像都有丰富的物体分割和场景图标注。这是该领域最权威的基准数据集。
Visual Genome:一个包含10万多张图像的大规模视觉数据集,提供物体检测框、属性和关系图谱,比COCO的数据更丰富,但预处理也更复杂。
数据集的下载和预处理脚本参考了Sg2Im项目,用户需要运行 bash/download_coco.sh 和相关VG预处理脚本来准备数据。
LayoutDiffusion为普通用户提供了Gradio网页界面,降低了使用门槛。在 scripts/launch_gradio_app.py 中,定义了从COCO类别标签到物体索引的映射表,包含约90种常见物体类别。
用户可以在界面上:
不过需要注意的是,预训练模型需要从Google Drive手动下载(链接在README中给出),这在网络受限环境下是一个障碍。
LayoutDiffusion虽然技术指标优秀,但也有明显的局限:
没有提供Docker支持:依赖CUDA 11.3 + PyTorch 1.10.1的特定版本组合,在新版GPU环境下复现难度较大。
数据集依赖重:COCO-stuff和VG数据集都需要手动下载,总量超过50GB,且VG的预处理脚本较多。
预训练模型仅从Google Drive分发:在部分国家/地区访问Google Drive较为困难。
不支持中文布局输入:物体类别标签全部为英文,不支持中文描述。
尚未发布Latent Space版本:作者在TODO中提到正在训练基于Stable Diffusion latent space的版本,这将显著降低显存需求并提升生成速度,但目前仍未发布。
LayoutDiffusion代表了从"无条件图像生成"向"可控结构化图像生成"演进的重要方向。在电商主图生成、游戏资产创建、虚拟场景构建、广告素材设计等需要精确空间控制的领域,这类技术有着直接的应用价值。
更重要的是,它证明了扩散模型不仅能做"自由发挥"式的图像生成,还能在结构化约束下保持高质量——这一能力边界在2023年还处于学术前沿探索阶段,LayoutDiffusion是其中的代表性工作之一。
在Papers with Code的Layout-to-Image Generation排行榜上,LayoutDiffusion在COCO-stuff和Visual Genome两个数据集上均取得了第一名的成绩(截至本报告撰写时),体现了其在学术社区的认可度。