ComfyUI_omost

ComfyUI_omost

ComfyUI区域提示插件实现精准图像生成控制

ComfyUI_omost插件为ComfyUI引入了Omost的区域提示功能。该插件通过LLM聊天生成JSON布局提示,并提供多种区域引导扩散方法,包括ComfyUI内置的区域提示和OmostDenseDiffusion。项目配备画布编辑器,方便操作LLM输出。通过集成TGI或llama.cpp,插件可显著提升LLM推理速度。ComfyUI_omost适用于需要精确控制图像生成的场景,为定制化图像输出提供了有力支持。

ComfyUIOmostAI绘图区域提示LLMGithub开源项目

ComfyUI_omost

ComfyUI对Omost的实现,以及关于区域提示的所有内容。

新闻

待办事项

  • 为聊天节点添加进度条
  • 实现梯度优化区域提示
  • 实现多重扩散区域提示

如何使用

如截图所示,omost包含两个部分:

  • LLM聊天
  • 区域条件

LLM聊天

LLM聊天允许用户与LLM交互以获得类JSON结构。这个包中有3个节点用于与Omost LLM交互:

  • Omost LLM加载器:加载LLM
  • Omost LLM聊天:与LLM聊天以获取JSON布局提示
  • Omost加载画布条件:加载先前保存的JSON布局提示

您可以选择使用show-anything节点来显示json文本并保存以供以后使用。 官方LLM的方法运行速度较慢。每次聊天在4090上大约需要3~5分钟。(但现在我们可以使用TGI部署加速推理。详情请参阅加速LLM。)

示例:

  • 简单LLM聊天:图片
  • 多轮LLM聊天:图片

以下是示例中使用的JSON输出样本:

<details> <summary>点击展开JSON</summary> ```json [ { "rect": [ 0, 90, 0, 90 ], "prefixes": [ "一个亚洲女孩坐在椅子上。" ], "suffixes": [ "这张图片描绘了一个亚洲女孩优雅地坐在椅子上。", "她有长长的飘逸黑发,穿着一件韩国传统服饰韩服,上面装饰着精致的花卉图案。", "她的姿势既放松又优雅,一只手轻轻放在膝盖上,另一只手拿着一把精致的扇子。", "背景是一个简单、中性色调的房间,柔和的自然光从窗户中透进来。", "整体氛围宁静而深思,捕捉了一个安静反思的时刻。", "亚洲女孩,坐姿,椅子,传统服饰,韩服,花卉图案,长黑发,优雅姿势,精致扇子,中性背景,自然光线,宁静氛围,沉思,安静反思,简单房间,优雅,精致图案,飘逸秀发,文化服饰,韩国传统服装,放松姿势。" ], "color": [ 211, 211, 211 ] }, { "color": [ 173, 216, 230 ], "rect": [ 5, 45, 0, 55 ], "prefixes": [ "一个亚洲女孩坐在椅子上。", "窗户。" ], "suffixes": [ "窗户是一个简单的矩形框架,配有透明的玻璃窗格。", "它让自然光线透进房间,在场景上投射出柔和、漫射的光线。", "窗户微微开着,轻柔的微风使窗帘轻轻飘动。", "外面的景色是模糊的,暗示着一个宁静的户外环境。", "窗户增添了开放感和与外界的联系,增强了图像的宁静和沉思氛围。", "窗户,矩形框架,透明玻璃窗格,自然光线,柔和光线,漫射光线,微开的窗户,轻柔微风,飘动的窗帘,模糊景色,宁静户外环境,开放感,与外界联系,宁静氛围,沉思。", "窗户增添了开放感和与外界的联系。", "风格简单自然,注重柔和光线和轻柔微风。", "高质量图像,具有细腻纹理和自然光线。" ] }, { "color": [ 139, 69, 19 ], "rect": [ 25, 85, 5, 45 ], "prefixes": [ "一个亚洲女孩坐在椅子上。", "椅子。" ], "suffixes": [ "女孩坐着的椅子是一把简单优雅的木椅。", "它有光滑的抛光表面和经典设计,带有弯曲的椅腿和高椅背。", "椅子的木材是深棕色的,为整体场景增添了一丝温暖。", "女孩优雅地坐在椅子上,姿势既放松又优雅。", "这把椅子与她的韩国传统服饰相得益彰,增强了图像的文化和优雅氛围。", "椅子,木椅,优雅设计,弯曲椅腿,高椅背,抛光表面,深棕色木材,温暖触感,韩国传统服饰,文化服装,优雅姿势,优雅坐姿,经典设计,简约椅子,高质木材,抛光表面。", "椅子为整体场景增添了一丝温暖和优雅。", "风格经典简约,注重优雅设计和抛光表面。", "高质量图像,具有细腻纹理和自然光线。" ] }, { "color": [ 245, 245, 220 ], "rect": [ 40, 90, 40, 90 ], "prefixes": [ "一个亚洲女孩坐在椅子上。", "精致扇子。" ], "suffixes": [ "女孩手持的精致扇子是一件传统配饰,由精细的竹子制成,带有精致的雕刻。", "扇子上装饰着精美的花卉图案,增添了其美感和文化意义。", "女孩轻轻地持扇,其柔和的动作增强了图像的优雅和雅致氛围。", "扇子是一种精致和传统的象征,为整体场景增添了一丝文化优雅。", "精致扇子,传统配饰,精细竹制,精致雕刻,花卉图案,文化意义,优雅持扇,柔和动作,雅致氛围,精致象征,文化优雅,精致雕刻,精美花卉图案,传统配饰,精湛工艺。", "精致扇子为场景增添了一丝文化优雅和精致。", "风格传统而精致,注重精细雕刻和精美设计。", "高质量图像,具有细腻纹理和自然光线。" ] }, { "color": [ 255, 255, 240 ], "rect": [ 15, 75, 15, 75 ], "prefixes": [ "一个亚洲女孩坐在椅子上。", "亚洲女孩。" ], "suffixes": [ "亚洲女孩是图像的焦点。", "她穿着韩国传统服饰韩服,这是一件由丝绸制成并装饰有精致花卉图案的美丽服装。", "她的黑发又长又飘逸,以柔和的波浪垂落在背后。", "她的表情平静而深思,嘴角带着淡淡的微笑。", "她优雅地坐在椅子上,姿势既放松又端庄。" ] } ] ``` "一只手轻轻放在膝盖上,另一只手握着精致的扇子,为她的形象增添了一丝优雅。"

"亚洲女孩,焦点,传统韩国服饰,韩服,复杂的花卉图案,长黑发,飘逸的发型,平静的表情,若有所思,微笑,优雅的姿势,放松,优雅,精致的扇子,文化服饰。"

"气氛宁静而沉思,捕捉了一个安静反思的时刻。"

"风格优雅而传统,注重文化服饰和优雅姿态。"

"高质量图像,纹理细腻,自然光线。"

"一个亚洲女孩坐在椅子上。"

"传统韩国服饰。"

"这件传统韩国服饰,被称为韩服,是一件用丝绸制成的美丽服装。"

"它装饰有复杂的花卉图案,色彩鲜艳,包括红色、蓝色和黄色。"

"这件衣服设计优雅流畅,有精致的褶皱和柔和的动感。"

"女孩自豪地穿着这件服装,其文化意义在其优雅的设计和精致的细节中显而易见。"

"韩服与她优雅的姿态相得益彰,为整个场景增添了一丝文化优雅。"

"传统韩国服饰,韩服,美丽服装,丝绸面料,复杂的花卉图案,鲜艳的颜色,红色,蓝色,黄色,优雅流畅,精致褶皱,柔和动感,文化意义,优雅设计,精致细节,优雅姿态,文化优雅。"

"韩服为场景增添了一丝文化优雅和精致美感。"

"风格传统而优雅,注重复杂的花卉图案和鲜艳的色彩。"

"高质量图像,纹理细腻,自然光线。"

区域条件

根据 https://github.com/lllyasviel/Omost#regional-prompter,有6种方法可以执行区域引导扩散。

方法1:多重扩散 / 扩散器混合

这些方法在不同位置运行UNet,然后使用不同区域的权重或掩码合并估计的epsilon或x0。

待实现

方法2:注意力分解

假设注意力类似于y=softmax(q@k)@v,那么可以实现注意力分解,如y=mask_A * softmax(q@k_A)@v_A + mask_B * softmax(q@k_B)@v_B,其中mask_A、k_A、v_A是区域A的掩码、k和v;mask_B、k_B、v_B是区域B的掩码、k和v。这种方法通常比(1)产生的图像质量略好,有些人称之为注意力耦合或区域提示器注意力模式。但这种方法有一个考虑:掩码只是使区域注意力在数值上成为可能,但并不强制UNet真正关注那些区域的激活。换句话说,注意力确实被掩蔽了,但不能保证注意力softmax真的会在掩蔽区域被激活,也不能保证注意力softmax永远不会在掩蔽区域之外被激活。

这是ComfyUI内置的区域提示方法。使用Omost Layout Cond (ComfyUI-Area)节点来应用此方法。

有两种重叠方法:

  • 覆盖:上层完全覆盖下层
  • 平均:重叠区域是所有条件的平均值 图片

方法3:注意力分数操作

这是比(2)更高级的方法。它直接操作注意力分数,以确保每个掩码区域内的激活被鼓励,而掩码外的激活被抑制。公式类似于y=softmax(modify(q@k))@v,其中modify()是一个复杂的非线性函数,包含许多归一化和技巧来改变分数的分布。这种方法超越了简单的掩蔽注意力,真正确保那些层获得所需的激活。典型例子是Dense Diffusion。

这是原始Omost仓库使用的方法。要使用此方法:

注意:ComfyUI_densediffusion不与IPAdapter兼容。

10 06 2024_16 37 22_REC

方法4:梯度优化

由于注意力可以告诉我们每个部分对应哪些提示,我们可以将提示分割成多个段落,然后获取每个提示段落的注意力激活。然后我们将这些激活与外部掩码进行比较以计算损失函数,并反向传播梯度。这些方法通常质量很高,但VRAM消耗大且速度很慢。典型方法有BoxDiff和Attend-and-Excite。

待实现

方法5:使用外部控制模型如gligen和InstanceDiffusion

这些方法在区域遵循方面提供了最高的基准性能,但也会因为它们是训练参数而引入一些基础模型的风格偏移。此外,这些方法需要将提示转换为向量,通常不支持任意长度的提示(但可以与其他注意力方法结合使用以实现任意长度)。

待实现

方法6:一些更多可能的层选项,如layerdiffuse和mulan

待实现

您还可以选择将Omost画布生成的图像作为初始潜在空间传递,如原始Omost仓库所述: 图片

编辑区域条件

您可以使用Omost Load Canvas Conditioning节点上的内置区域编辑器自由操作LLM输出。 图片 图片

加速LLM

现在您可以利用TGI部署LLM服务,实现高达6倍的推理速度。如果您需要长期支持您的工作,强烈推荐使用此方法,可以为您节省大量时间。

准备工作:您需要额外20GB的VRAM来部署8B LLM(用空间换时间)。

首先,您可以使用Docker轻松启动服务,步骤如下:

port=8080
modelID=lllyasviel/omost-llama-3-8b
memoryRate=0.9 # 正常运行需要20GB VRAM,根据部署机器的VRAM调整比率
volume=$HOME/.cache/huggingface/hub # 模型缓存文件

docker run --gpus all -p $port:80 \
    -v $volume:/data \
    ghcr.io/huggingface/text-generation-inference:2.0.4 \
    --model-id $modelID --max-total-tokens 9216 --cuda-memory-fraction $memoryRate

服务成功启动后,您将看到Connected日志消息。

(注意:如果在下载模型时遇到卡住的情况,请尝试使用网络代理。) 然后,测试LLM服务是否成功启动。

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{"inputs":"What is Deep Omost?","parameters":{"max_new_tokens":20}}' \
    -H 'Content-Type: application/json'

接下来,添加一个Omost LLM HTTP Server节点,并输入LLM的服务地址。 image

关于TGI的更多信息,请参考官方文档:https://huggingface.co/docs/text-generation-inference/quicktour

使用llama.cpp HTTP服务器

使用量化的GGUF模型也能显著提升性能。

  1. 下载模型

    你可以在这里下载omost-llama-3-8b-Q8_0-GGUF模型。或者,你也可以使用GGUF-my-repo自行量化其他模型。

  2. 启动HTTP服务器

    克隆并编译llama.cpp。然后,使用以下命令启动服务:

    ./llama-server -m ../model/omost-llama-3-8b-q8_0.gguf -ngl 33 -c 8192 --port 8080

    另外,你也可以直接使用llama-cpp-python启动HTTP服务器。

    参考:llama-cpp-python OpenAI兼容Web服务器

    然而,在我的3090Ti测试中,直接使用llama-server性能更好。生成图像时,使用llama-cpp-python大约需要50-60秒,而使用llama-server只需要30-40秒左右。

  3. 添加节点

    添加一个Omost LLM HTTP Server节点,并输入LLM的服务地址。 image

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多