2026/9/20 2:59:10

Omost 图像生成工作流完整拆解:LLM 如何用 Canvas 代码构图

Omost 图像生成工作流完整拆解:LLM 如何用 Canvas 代码构图 Omost 图像生成工作流完整拆解LLM 如何用 Canvas 代码构图【免费下载链接】OmostYour image is almost there!项目地址: https://gitcode.com/GitHub_Trending/om/OmostOmost 把 LLM 的写代码能力换成了可渲染的图像合成产物模型不再直接吐长提示词而是写一段操作虚拟 Canvas 的 Python 代码来构图。如果你想在本地跑通一套对话式构图 扩散模型出图的工作流或想研究 LLM 与扩散模型怎么衔接这个项目值得看。它解决什么问题不用手工拼接多模态管道没有 Omost 之前想让扩散模型按左边站着一群人、中间是条龙这样的空间关系出图你得自己干三件事把一句需求扩写成提示词、想办法把空间指令转成区域控制、再处理不满意时重新抽卡。这几块逻辑分散在不同项目里胶水代码全靠自己写。Omost 的做法是让一个专门训练过的 LLM 直接输出 Canvas 代码把描述 → 构图 → 出图串成一条链传统多模态拼法Omost 工作流提示词来源手工写长 prompt区域靠运气LLM 生成带位置、深度、颜色的 Canvas 代码空间控制难以指定元素落点9 位置 × 9 偏移 × 9 面积共 729 种区域组合修改画面整图重抽期望抽中对话式编辑只改单个元素的描述核心机制怎么转从一句话到一张图整条链路是输入 → 中间产物 → 输出三段。输入你在聊天框里写一句自然语言比如战士与龙的激烈战斗。中间产物LLM 不回答文字而是写一段 Python 代码——先set_global_description定全局基调再对每个元素调add_local_description指定位置on the left、面积a large horizontal area、离观察者远近、甚至一块 HTML 颜色名。这段代码被执行后变成一个 Canvas 对象process()把它整理成带 mask 的提示词包和按深度排好序的元素列表。Omost 这个名字读作 almostO 取自 omni多模态most 意为榨出最大价值——合起来暗示每次跑完图都只差临门一脚。canvas omost_canvas.Canvas.from_bot_response(last_assistant) # 从模型回复里取出 Canvas canvas_outputs canvas.process() # 产出 mask、提示词包与层序输出管道 lib_omost/pipeline.py 里的StableDiffusionXLOmostPipeline接住这些条件跑 SDXL 采样出图。它内部把每个元素的提示词按子提示词 75 token的约定贪心分袋编码保证文本编码器不会截断语义交叉注意力处理器则按每个元素的 mask 直接改写注意力分数让对应区域真的听到自己的提示词。画布定义见 lib_omost/canvas.py界面逻辑在 gradio_app.py 里。三分钟跑起来安装与启动指南先克隆仓库克隆完成后进入 Omost 目录后面所有命令都在这个目录里执行git clone https://gitcode.com/GitHub_Trending/om/Omost cd Omost仓库要求 Python 3.10 环境依赖里包含 torch、diffusers、gradio、bitsandbytes 等。装完依赖GPU 显存约 8GB 就能跑默认的 4bit 量化 LLMpip install -r requirements.txt依赖装好后启动 Gradio 服务首次运行会下载底模与 LLM 权重耐心等日志走完python gradio_app.py浏览器打开本地 Gradio 地址、看到左侧聊天框和右侧出图区就算跑通了。注意量化 LLM 依赖bitsandbytes部分 9 系/10 系/20 系显卡会跑不起来这种情况 README 建议直接用官方在线空间。当前基线渲染器的边界说实话现在打开源码能看到的实现有两点比较朴素。其一区域引导用的是无参数注意力改写OmostCrossAttnProcessor靠 mask 把区域外的注意力分数置为 -inf没有训练过任何额外权重。作者自己定位为标准基线好处是不引入风格偏移代价是控制精度停在区域大致正确这一层。其二默认底模在 gradio_app.py 里写死为 SDXL 的 RealVisXL_V4.0默认 LLM 是 4bit 量化的 llama-3-8bCanvas 其实能画出一张色块布局图当初始 latent但diffusion_fn里use_initial_latent默认是关的扩散始终从零噪声起步。另外distance_to_viewer的绝对数值并不可靠代码里只拿它排序图层别指望它当深度估计用。什么时候该选 Omost 想让 LLM 帮你做多元素、有空间关系的画面构图而不是抽一句长 prompt 需要反复微调画面改完一个元素重发对话Canvas 代码会整体重生成 在研究 LLM 与扩散模型结合的方案想读一套无参数的区域注意力基线实现不适用的场景你要像素级精确控制指定具体坐标、像素对齐的布局Canvas 的 729 种离散区域粒度不够用。务实的下一步先把 8GB 显存的本地环境跑通用随机种子复现一个 README 里的对话样例再决定要不要把它接进自己的工作流。【免费下载链接】OmostYour image is almost there!项目地址: https://gitcode.com/GitHub_Trending/om/Omost创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考