semantic-draw
在画布上“画”提示词,实时生成可控的多区域AI图像(CVPR 2025)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在画布上“画”提示词,实时生成可控的多区域AI图像(CVPR 2025)
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:设计师在创作海报时,不需要反复调试提示词来控制画面中不同区域的内容——直接在画布上涂抹"语义画笔",每个笔触代表一个独立的文字提示,AI 就能实时生成无缝融合的多区域图像。这不是未来的幻想,而是 SemanticDraw 已经实现的功能。
SemanticDraw 全称「Towards Real-Time Interactive Content Creation from Image Diffusion Models」,是韩国首尔大学 CVLab 实验室(隶属于 KAIST)在大规模视觉学习领域的研究成果,由 Jaerin Lee、Daniel Sungho Jung、Kanggeon Lee 和 Kyoung Mu Lee 四位研究者联合开发,发表于计算机视觉顶级会议 CVPR 2025。
项目的前身名为 StreamMultiDiffusion,于 2024 年 3 月首次发布,核心突破是解决了多区域语义控制下扩散模型的实时生成难题。2024 年 6 月添加 SD3 支持,2025 年 6 月正式在 CVPR 2025 会议上展示,完成从学术研究到实用工具的跨越。
图1:SemanticDraw 核心原理——在画布上用语义画笔控制图像生成区域
传统文本到图像生成工具(如 Midjourney、DALL-E)中,用户只能通过一段统一的提示词控制整张图像。如果想让画面左侧是雪山、右侧是城市,提示词的设计变得极为困难,不同区域的内容还容易互相污染。
SemanticDraw 的创新在于引入了**语义区域掩码(Semantic Mask)**机制。用户不是在写提示词,而是在"画"提示词:
图2:SemanticDraw 实时绘图界面——左侧为语义画笔控制区域,右侧为 AI 实时生成结果
SemanticDraw 的代码架构分为三个核心模块:
1. 语义绘图核心(src/model/semantic_draw.py)
核心类 SemanticDraw 继承自扩散模型推理管线。关键实现:
(prompt, mask) 元组,构成语义区域集合# 核心调用示例
smd = SemanticDraw(device, hf_key='runwayml/stable-diffusion-v1-5')
smd.update_single_layer(idx=0, prompt='background: city', mask=bg_mask)
smd.update_single_layer(idx=1, prompt='foreground: a cat', mask=obj_mask)
while True:
image = smd() # 流式输出
display(image)
2. 多版本 Pipeline(src/model/pipeline_*.py)
项目针对不同 Stable Diffusion 版本分别实现了专用 Pipeline:
pipeline_semantic_draw.py — SD 1.5 及变体pipeline_semantic_draw_sdxl.py — SDXL(配合 Lightning LoRA)pipeline_semantic_draw_3.py — Stable Diffusion 3(使用自定义 diffusers 分支)SD3 版本使用了团队修改版的 diffusers 库(initml/diffusers@clement/feature/flash_sd3),引入了 Flash Diffusion 加速技术。
3. Gradio Web UI(demo/stream/app.py)
基于 Gradio 框架构建的交互界面,支持:
SemanticDraw 的典型使用场景包括:
| 场景 | 描述 |
|---|---|
| 海报设计 | 将不同元素(背景、前景、文字区域)分别用语义画笔标注,一键生成 |
| 图像编辑 | 对已有图像的局部区域进行替换、风格迁移,不影响其他区域 |
| 全景生成 | 生成超宽画幅图像(横向拼接多语义区域),如时代广场夜景、长城远景 |
| 概念探索 | 设计师快速迭代视觉概念,无需反复调整复杂提示词 |
硬件需求方面,测试基于 NVIDIA GTX 1080 Ti(11GB VRAM),最低 8GB VRAM 可运行 512×512 分辨率。
图3:多语义区域实时编辑——不同笔触代表不同内容主题,互不干扰
部署分为三个层次:
本地 conda 环境(推荐)
conda create -n semdraw python=3.12 && conda activate semdraw
git clone https://github.com/ironjr/semantic-draw
cd semantic-draw
pip install -r requirements.txt
# 运行 Gradio UI
cd demo/stream
python app.py --model "runwayml/stable-diffusion-v1-5" --port 8000
# 浏览器访问 http://localhost:8000
HuggingFace 在线体验(无需安装):
Google Colab:提供了 Jupyter Notebook 教程,适合初次体验。
技术门槛中等——需要 Python 3.12 环境、CUDA 驱动和 NVIDIA 显卡。缺少 Docker 支持,对没有 GPU 集群的开发者不太友好。
SemanticDraw 的核心贡献在于将语义区域控制从"事后编辑"变成了"实时创作"——用户不再是"写出提示词→等待生成→看效果",而是"边画边看→实时调整→满意为止"。这种交互范式的转变对于 AIGC 工具的产品设计具有重要参考价值。
不过项目也存在一些局限:
SemanticDraw 代表了 AIGC 工具从"全图控制"向"区域控制"演进的趋势。类似的思路已在 Adobe Firefly、Microsoft Designer 等商业产品中出现,但 SemanticDraw 的独特之处在于将区域控制与实时生成结合——用户可以连续作画,AI 同步演化,这在 2024 年初还是空白。
590 颗 GitHub Stars 虽不算爆款,但考虑到这是研究代码而非产品化项目,且有 CVPR 2025 背书,其学术影响力远大于开源社区影响力。项目的技术路线(基于区域引导向量场的语义解耦)对后续研究具有较高参考价值。
图4:多语义区域生成示例——白天的多洛米蒂山脉与局部夜景对比