ComfyUI-OmniGen2 插件保姆级教程
1. 插件简介
插件地址: https://github.com/Yuan-ManX/ComfyUI-OmniGen2
ComfyUI-OmniGen2 是一个超级厉害的图片生成插件,就像给你的 ComfyUI 装上了一个万能的图片制作机器。这个插件能做什么呢?
- 文字生图:你说一句话,它就能画出对应的图片,就像有个画家听你的指挥
- 图片编辑:给它一张图片,告诉它你想改什么,它就能帮你修改
- 多图融合:可以同时处理好几张图片,把它们的特点融合到新图片里
- 智能对话:它不是简单地按指令工作,而是能理解你的意图,就像和一个懂画画的朋友聊天
这个插件的核心是 OmniGen2 模型,它由两个大脑组成:一个 3B 的视觉语言模型(负责理解你说的话和看图片)和一个 4B 的扩散模型(负责画图)。
2. 如何安装
第一步:下载插件
# 进入你的 ComfyUI 插件目录
cd ComfyUI/custom_nodes
# 下载插件
git clone https://github.com/Yuan-ManX/ComfyUI-OmniGen2.git
第二步:安装依赖包
# 进入插件目录
cd ComfyUI-OmniGen2
# 安装 PyTorch(选择适合你显卡的版本)
pip install torch==2.6.0 torchvision --extra-index-url https://download.pytorch.org/whl/cu124
# 安装其他必需的包
pip install -r requirements.txt
# 安装 flash-attention(这个能让生成速度更快)
pip install flash-attn==2.7.4.post1 --no-build-isolation
第三步:下载模型
你需要从 HuggingFace 或 ModelScope 下载 OmniGen2 模型文件。
3. 节点详细解析
3.1 Load OmniGen2 Image 节点
这个节点就像一个图片装载机,负责把你的图片"喂"给后面的处理节点。它最多可以同时装载 3 张图片。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image1_path | image1_path | 文件路径字符串 | "assets/demo.png" | 第一张图片的位置,必须填写 | 必需的图像文件路径,用于指定第一个输入图像 | 填写你电脑上图片的完整路径,比如 "/Users/你的用户名/Pictures/cat.jpg" |
| image2_path | image2_path | 文件路径字符串 | "" (空) | 第二张图片的位置,可以不填 | 可选的第二个图像文件路径 | 如果你想用两张图片,就填第二张图片的路径,不用就留空 |
| image3_path | image3_path | 文件路径字符串 | "" (空) | 第三张图片的位置,可以不填 | 可选的第三个图像文件路径 | 如果你想用三张图片,就填第三张图片的路径,不用就留空 |
3.2 Load OmniGen2 Model 节点
这个节点就像一个模型管家,负责把 OmniGen2 这个"画家"请出来,并且设置好它的工作环境。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model_path | model_path | 文件路径字符串 | "OmniGen2/OmniGen2" | 告诉程序模型文件在哪里 | 指定预训练模型的路径或HuggingFace模型ID | 如果你下载到本地就填本地路径,如果用在线模型就填 "OmniGen2/OmniGen2" |
| dtype | dtype | fp32/fp16/bf16 | bf16 | 设置计算精度,就像调节画笔的精细度 | 设置模型权重的数据类型,影响显存占用和计算精度 | bf16 最省显存且效果好,fp32 最精确但占用显存多,fp16 居中 |
| scheduler | scheduler | euler/dpmsolver | dpmsolver | 选择生成图片的算法,就像选择不同的绘画技法 | 选择扩散模型的采样调度器算法 | dpmsolver 通常效果更好,euler 速度更快 |
| offload_type | offload_type | none/sequential_cpu_offload/cpu_offload | cpu_offload | 设置显存节省模式,就像决定工具放在桌上还是抽屉里 | 控制模型在GPU和CPU之间的内存管理策略 | cpu_offload 能节省50%显存且速度影响小,sequential_cpu_offload 最省显存但很慢 |
3.3 OmniGen2 节点
这是整个插件的核心节点,就像一个超级智能的画家工作室,能根据你的要求创作出各种图片。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| pipeline | pipeline | 模型对象 | 来自Load OmniGen2 Model | 接收前面加载好的模型,就像接过画家的画笔 | 接收预加载的OmniGen2Pipeline对象 | 直接连接 Load OmniGen2 Model 节点的输出 |
| input_images | input_images | 图片列表 | 来自Load OmniGen2 Image | 接收要处理的图片,就像给画家看参考图 | 接收预处理后的输入图像列表 | 直接连接 Load OmniGen2 Image 节点的输出 |
| dtype | dtype | fp32/fp16/bf16 | bf16 | 设置计算精度,和前面模型节点保持一致 | 设置推理时的数据类型 | 建议和 Load OmniGen2 Model 节点设置相同 |
| seed | seed | 整数 | 0 | 随机种子,就像画家的心情编号,相同编号画出相同效果 | 控制随机数生成的种子值,确保结果可重现 | 用相同的seed和参数会得到相同的图片,想要不同效果就改变这个数字 |
| width | width | 整数 | 1024 | 生成图片的宽度,单位是像素点 | 输出图像的宽度(像素) | 1024 是标准尺寸,可以根据需要调整,但建议是128的倍数 |
| height | height | 整数 | 1024 | 生成图片的高度,单位是像素点 | 输出图像的高度(像素) | 1024 是标准尺寸,可以根据需要调整,但建议是128的倍数 |
| max_input_image_side_length | max_input_image_side_length | 整数 | 2048 | 输入图片最大边长限制,防止图片太大卡死 | 输入图像的最大边长限制 | 如果你的输入图片很大,这个参数会自动缩小它,2048 通常够用 |
| max_pixels | max_pixels | 整数 | 1048576 | 图片最大像素数限制,就像限制画布大小 | 图像的最大像素总数限制 | 默认是1024×1024=1048576,如果显存不够可以调小 |
| num_inference_step | num_inference_step | 整数 | 30 | 生成步数,就像画家画画的笔画次数,越多越精细 | 扩散模型的推理步数 | 30步通常够用,想要更精细可以调到50,想要更快可以调到20 |
| text_guidance_scale | text_guidance_scale | 浮点数 | 5.0 | 文字指导强度,数值越大越严格按照你的描述画 | 文本引导的强度系数(CFG) | 5.0 是平衡值,想让图片更贴近描述可以调到7.0,想要更自由可以调到3.0 |
| image_guidance_scale | image_guidance_scale | 浮点数 | 2.0 | 图片参考强度,数值越大越像输入的参考图 | 图像引导的强度系数 | 图片编辑用1.3-2.0,多图融合用2.0-3.0,设为0就是纯文字生图 |
| cfg_range_start | cfg_range_start | 浮点数 | 0.0 | 引导开始时机,0表示从一开始就引导 | CFG引导的开始时间点(相对于总步数的比例) | 通常保持0.0,表示从第一步就开始引导 |
| cfg_range_end | cfg_range_end | 浮点数 | 1.0 | 引导结束时机,1表示引导到最后 | CFG引导的结束时间点(相对于总步数的比例) | 通常保持1.0,表示引导到最后一步 |
| num_images_per_prompt | num_images_per_prompt | 整数 | 1 | 每个描述生成几张图,就像让画家画几幅同主题的画 | 每个提示词生成的图像数量 | 1张通常够用,想要多个选择可以设为2-4,但会增加生成时间 |
| instruction | instruction | 文本字符串 | "A dog running in the park" | 你对图片的描述和要求,就像给画家下指令 | 用户的文本提示词,描述想要生成的图像内容 | 用英文描述效果更好,比如 "A beautiful sunset over the ocean with seagulls flying" |
| negative_prompt | negative_prompt | 文本字符串 | 默认负面词汇 | 告诉模型你不想看到什么,就像告诉画家别画什么 | 负面提示词,指定不希望在图像中出现的内容 | 默认值已经很好了,包含了模糊、变形等不想要的效果 |
| role_prompt | role_prompt | 文本字符串 | 默认角色设定 | 给模型设定一个角色,就像告诉画家你是什么风格的艺术家 | 为模型设定角色和行为模式的系统提示词 | 默认设定已经很好,让模型扮演专业的图像生成助手 |
4. 使用技巧和建议
4.1 显存优化技巧
- 显存不够用? 设置
offload_type为cpu_offload,能节省50%显存 - 还是不够? 设置为
sequential_cpu_offload,能节省到3GB以下,但会很慢 - 图片太大? 降低
max_pixels参数,比如改为512*512=262144
4.2 质量提升技巧
- 用高质量输入图片:输入图片至少要512像素以上,太小或太模糊会影响效果
- 详细描述:不要只说"一只猫",要说"一只橘色的长毛猫坐在阳光下的窗台上"
- 用英文描述:OmniGen2 对英文的理解比中文更好
- 调整引导强度:
- 图片编辑:
image_guidance_scale设为 1.2-2.0 - 多图融合:
image_guidance_scale设为 2.5-3.0 - 纯文字生图:
image_guidance_scale设为 0
- 图片编辑:
4.3 不同任务的参数建议
纯文字生图
image_guidance_scale: 0
text_guidance_scale: 5.0
num_inference_step: 30
图片编辑
image_guidance_scale: 1.5
text_guidance_scale: 5.0
num_inference_step: 30
多图融合
image_guidance_scale: 2.5
text_guidance_scale: 4.0
num_inference_step: 40
5. 常见问题解答
Q1: 为什么生成的图片颜色看起来不对?
A: 这是插件的一个已知问题。作者在代码里提到无法直接输出正确颜色的图片,所以采用了先保存到临时文件夹再读取的方法。这个问题不影响最终效果,只是处理流程稍微复杂一点。
Q2: 显存不够怎么办?
A: 按以下顺序尝试:
- 设置
offload_type为cpu_offload - 降低
max_pixels参数 - 减小输出图片尺寸
- 设置
offload_type为sequential_cpu_offload(最后选择,因为很慢)
Q3: 生成速度太慢怎么办?
A:
- 减少
num_inference_step(从30减到20) - 使用
euler调度器而不是dpmsolver - 确保安装了
flash-attn - 不要使用
sequential_cpu_offload
Q4: 生成的图片不符合描述怎么办?
A:
- 增加
text_guidance_scale(从5.0调到7.0) - 使用更详细的英文描述
- 增加
num_inference_step(调到40-50) - 检查
negative_prompt是否包含了你想要的内容
Q5: 如何让生成的图片更像参考图?
A:
- 增加
image_guidance_scale(调到2.5-3.0) - 使用高质量的参考图片
- 在描述中明确指出要参考图片的哪些特征
6. 工作流程示例
基础文字生图工作流程:
- 添加
Load OmniGen2 Model节点,设置模型路径 - 添加
OmniGen2节点 - 将模型节点连接到生成节点的
pipeline输入 - 设置
image_guidance_scale为 0 - 在
instruction中输入你的描述 - 运行生成
图片编辑工作流程:
- 添加
Load OmniGen2 Image节点,设置图片路径 - 添加
Load OmniGen2 Model节点,设置模型路径 - 添加
OmniGen2节点 - 连接所有节点
- 设置
image_guidance_scale为 1.5 - 在
instruction中描述你想要的修改 - 运行生成
7. 总结
ComfyUI-OmniGen2 是一个功能强大的图像生成插件,它就像给你的 ComfyUI 装上了一个智能画家。通过合理设置参数,你可以实现从简单的文字生图到复杂的多图融合等各种功能。
记住几个关键点:
- 显存不够就开启
cpu_offload - 想要高质量就用英文详细描述
- 不同任务用不同的
image_guidance_scale设置 - 耐心调试参数,找到最适合你需求的设置
希望这个教程能帮助你快速上手这个强大的插件!