Project Icon

ComfyUI_omost

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

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

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输出样本:

点击展开JSON ```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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号