乐于分享
好东西不私藏

Nuke插件-用 AI 做无痕修图

Nuke插件-用 AI 做无痕修图

用 AI 做“无痕修图”:DBFluxFill 开发日志整理

在传统图像处理流程中,“补画面”“修穿帮”“扩画幅”一直是非常耗时的工作。
而随着生成式 AI 的发展,一类新的工具正在改变这一切——基于 Flux Fill 的图像补全技术

这篇文章,我们来聊一个项目:DBFluxFill,以及它背后的技术逻辑和实际应用价值。

一、这个工具是干嘛的?

简单说一句话:

👉 DBFluxFill = 用 AI 自动“补图”和“改图”的工具

它的核心能力包括:

  • 局部修复(Inpainting)
  • 画面扩展(Outpainting)
  • 内容替换(比如换物体/改背景)
  • AI辅助合成

你可以把它理解为一个更聪明的“PS内容识别填充”,但能力强很多。

二、它是怎么做到的?

DBFluxFill 基于的是一类模型:

👉 Flux Fill(扩散模型的一种)

它的工作方式不是“复制粘贴像素”,而是:

  1. 读取原图
  2. 理解上下文(结构 / 光影 / 材质)
  3. 根据提示词(Prompt)重新生成内容

核心流程是:

原图 + Mask(遮罩) + 文本描述 → AI生成 → 输出新图

和传统工具的最大区别是:

👉 它是在“理解画面”之后再生成,而不是简单填充。

三、为什么它比传统方法更强?

1️⃣ 结构一致性更好

不会出现:

  • 边缘断裂
  • 透视错误
  • 光影不统一

2️⃣ 自动匹配环境

比如你修一块天空,它会自动:

  • 对齐光照方向
  • 匹配云层结构
  • 保持色调一致

3️⃣ 可以“改内容”,而不仅是“补内容”

比如:

  • 把路人换成树
  • 把墙改成窗户
  • 把白天改成夜景

五、它适合用在哪?

🎬 VFX / 后期合成(重点)

这个工具在影视后期里非常实用:

  • 修绿幕抠像破损
  • 补 CG 空洞
  • 扩展画面边缘
  • 去除穿帮元素

👉 本质上就是:减少手工修图时间

DBFluxFill 是一个 Nuke 小工具,它将FLUX.1 Fill Dev 的图像修复功能直接集成到您的 Nuke 工作流程中。连接图像并点击“生成”按钮。结果将作为读取节点返回到您的节点图中,即可进行合成。

它专为那些可能从未用过 ComfyUI、不太熟悉 Python 或不想学习其他工具的 Nuke 艺术家而设计。安装程序会引导用户完成所有步骤,下载模型组件,设置嵌入式 Python 环境,提供 Nuke Indie 选项,甚至还能帮助您设置 init.py 文件。

许可说明: DBFluxFill 是一个免费的开源工具。其底层 FLUX.1 Fill Dev 模型受FLUX.1 [dev] 许可协议约束。

要求

平台:仅限 Windows 10 或 11

Nuke: Nuke 13.2v8 或更高版本(为 13.2 版本构建,但也在更高版本上测试过)

GPU:需要配备 CUDA 12.4 或更高版本驱动程序的 Nvidia GPU

  • 安装程序会在启动时检查驱动程序,如果您的驱动程序过期,则会发出警告。
  • 下载最新的Nvidia驱动程序

显存:取决于您选择的型号(请参阅下方的型号列表

磁盘空间:根据型号不同,可用空间为 23 至 35 GB

Hugging Face账号:必需。下载前,您必须在Hugging Face上接受FLUX.1 Fill Dev许可协议。

安装

步骤 1 — 下载并放置文件夹

<> Code点击页面顶部的绿色按钮。选择Download ZIP并解压缩下载的文件夹。

DBFluxFill-main将其重命名DBFluxFill并复制到您的.nuke目录中:

C:\Users\YourName\.nuke\DBFluxFill\

  如果您不确定.nuke文件夹的位置,请打开 Nuke 并在脚本编辑器中运行以下命令:

print(nuke.pluginPath())

您的.nuke文件夹路径将出现在列出的路径之一中。

步骤 2 — 运行安装程序

在文件夹内DBFluxFill,双击setup.bat

这将启动 DBFluxFill 安装程序,这是一个分步式图形用户界面,可以处理其他所有操作:

  • 必要时下载并安装 Python 3.11
  • 搭建嵌入式 Python 环境
  • 安装所有依赖项(包括正确的 PyTorch CUDA 版本)
  • 从 Hugging Face 下载您选择的模型版本
  • 写入配置文件

安装程序共有六步:

1— 显示系统要求并检查您的 GPU 和 CUDA 版本。如果您的驱动程序版本过旧或未检测到 Nvidia GPU,安装程序会在继续操作前发出警告。

2— 设置临时 PNG/种子/日志文件和输出渲染文件的默认目录,以及默认文件名。已根据您当前的 Nuke 项目预先填充了合理的默认值。每个字段都支持 Nuke TCL 表达式。您也可以在此处设置 Nuke Indie 模式。

3— 选择要下载的 FLUX.1 Fill Dev 版本。请参阅下方的“版本选择”了解完整对比。

4— 输入您的 Hugging Face 令牌并选择模型存储位置。如果您希望手动下载组件,此屏幕上提供了一个指向手动设置路径的链接。

5— 安装程序会设置嵌入式 Python 环境、安装依赖项并下载模型。此过程所需时间取决于您的网络速度。实时日志会显示进度。

6——显示已安装内容的摘要,并显示您需要添加到您的代码片段init.py。请参阅下面的步骤 3。

步骤 3 — 更新你的 init.py 文件

安装程序完成屏幕会显示一段代码片段。请将其添加到您的.nuke/init.py文件中。代码片段内容如下:

import DBFluxFillnuke.pluginAddPath('./DBFluxFill')

  如果你还没有文件夹init.py,完成屏幕会提示您创建一个。安装程序还有一个按钮,可以打开.nuke资源管理器中的文件夹,方便您轻松找到该文件。

完成上述步骤后,重启 Nuke。DBFluxFill 将出现在工具栏中。

FLUX.1 Fill Dev 支持三个版本。所有三个版本都需要您在下载前在 Hugging Face 上接受 FLUX.1 Fill Dev 许可协议。

bf16 fp8 gguf
显存 建议使用 16 GB 以上内存 建议使用 12 GB 以上内存 建议使用 10 GB 以上的存储空间
磁盘 约 34.3 GB 约 22.3 GB 约 23.1 GB
速度 基线 快点 条件
质量 满的 略有取舍 略有取舍
来源 黑森林实验室(官方) AlekseyCalvin + BFL 组件 YarvixPA Q5_1 + BFL 组件

bf16

官方 FLUX.1 Fill Dev 版本,采用完整扩散器格式。最高品质,对显存要求最高。如果您拥有 16GB 以上的显存并追求最佳品质,这是您的最佳选择。

  • HuggingFace:black-forest-labs/FLUX.1-Fill-dev

fp8

使用基于 AlekseyCalvin 仓库的 fp8 量化版本,仅对 config.json 文件进行了少量修改。速度明显快于 bf16,但画质略有损失。需要 Ampere 架构或更新的 GPU(RTX 30xx+)。

下载完成后,安装程序会config.json自动将所需的补丁应用到转换器上。

  • HuggingFace:AlekseyCalvin/FluxFillDev_fp8_Diffusers

gguf

使用 YarvixPA 的 GGUF Q5_1 量化转换器,以及官方的 BFL VAE、编码器和调度器。三种版本中显存占用最低。适用于 10-12 GB 及更老的显卡。

安装程序会应用所需的config.json补丁并将.gguf文件正确放置。

  • HuggingFace:YarvixPA/FLUX.1-Fill-dev-GGUF

如果以后需要切换版本,请重新运行安装程序setup.bat并选择其他版本。安装程序将更新依赖项并重写文件config.json。如果要释放先前版本占用的磁盘空间,请在重新运行安装程序之前删除 models 文件夹。

手动模型设置

如果您更喜欢自行下载模型组件而不是使用 Hugging Face 令牌,请在安装程序的“模型设置”屏幕上选择“我想手动配置模型组件” 。

手动安装界面列出了所有必需组件,并提供指向相应 Hugging Face 代码库的直接链接以及大致文件大小。您只需将安装程序指向每个组件的本地目录,它就会相应地写入配置。

按变体划分的组件

bf16 组件:

所有组件均来自black-forest-labs/FLUX.1-Fill-dev。模型目录下的预期文件夹结构如下:

models/
    transformer/
    vae/
    text_encoder/
    text_encoder_2/
    tokenizer/
    tokenizer_2/
    scheduler/

fp8组件:

所有组件均来自AlekseyCalvin/FluxFillDev_fp8_Diffusers。文件夹结构应与上述 bf16 模型目录相匹配。

下载完成后,必须transformer/config.json用 BFL 仓库中的文件覆盖black-forest-labs/FLUX.1-Fill-dev/transformer/config.json。手动设置屏幕会显示此组件的 config.json 行。

gguf 组件:

  • 转换器文件:flux1-fill-dev-Q5_1.ggufYarvixPA/FLUX.1-Fill-dev-GGUF下载并将其放置在一个transformer/文件夹中
  • transformer/config.json:从black-forest-labs/FLUX.1-Fill-dev复制。手动设置屏幕显示了此组件的 config.json 行。
  • 所有其他组件:来自black-forest-labs/FLUX.1-Fill-dev

设置节点

  1. 从工具栏添加DBFluxFill到节点图(或在节点图中搜索)。
  2. 将图像连接到img输入端口,将蒙版连接到mask输入端口。如果您不想使用 mask 输入端口,可以将 alpha 通道嵌入到 image 输入端口中,该控件支持这两种方式。
  3. 您的图像和蒙版将自动裁剪并缩放至有效的 FLUX 分辨率(16 的倍数,最小 272×272)。如果您的图像在任一方向上大于 2048 像素或小于 512 像素,则该工具会在生成前发出警告。

生成

🧩 主面板(Main tab)参数说明

Prompt(提示词)
用于描述你希望在遮罩区域生成的内容。
👉 通常不是必须的,但可以用来引导生成结果。


Seed(随机种子)

  • 设为 -1:每次运行都会随机生成结果
  • 输入具体数值:可复现相同结果
  • Randomize 按钮
    :自动设为 -1

Steps(迭代步数)
扩散模型的采样步数,默认 20

  • 数值越高 → 细节越丰富
  • 同时 → 生成速度越慢

Guidance(引导强度)
控制生成结果对 Prompt 的遵循程度,默认 2.5

  • 数值高 → 更贴合 Prompt
  • 数值低 → 更自由/更贴近原图

Prev Selector(预览切换)
切换 Viewer 显示内容:

  • 原始输入图像
  • 发送给 FLUX 的“预处理后图像”

👉 用于检查模型实际看到的内容(非常实用)


Mask Overlay(遮罩叠加)
在 Viewer 中叠加红色遮罩

👉 用于查看遮罩覆盖范围


Frame Hold(帧锁定)
指定用于生成的输入帧

👉 默认使用你创建节点时 Viewer 当前帧


Mask Invert(遮罩反转)
反转填充区域:

  • 原本不处理 → 变成处理区域
  • 原本处理 → 变成保留区域

Crop to Mask(裁剪到遮罩)
默认开启

  • 开启:只处理遮罩区域(加 padding) → 更快
  • 关闭:整张图送入模型 → 更慢但更完整

Crop Padding(裁剪边距)
当开启 Crop to Mask 时,在遮罩边界外增加的像素范围

👉 默认:25 像素


📂 路径面板(Paths tab)

默认路径来自安装时生成的 config.json


Temp Dir(临时目录)
生成过程中中间 PNG 文件的存储位置

👉 支持 TCL 表达式


Output Dir(输出目录)
最终生成图像的保存位置

👉 支持 TCL 表达式


Output Name(输出文件名)
最终输出的文件名

👉 所有输出为 16-bit PNG


▶️ 生成相关说明

点击 Generate(生成) 时:

  • Nuke 会弹出一个命令行窗口(Command Prompt)
  • 显示模型推理进度
  • 在此期间:

👉 Nuke 会暂时无响应(卡住)

这是正常行为(详见 Important Notes)


⚡ Generate (Keep Loaded) 模式

这个模式是性能关键👇

Generate (Keep Loaded) 会:

  • 打开一个常驻的 PowerShell 窗口
  • 将模型一直保留在 GPU 显存中

👉 好处:

  • 后续生成 无需重复加载模型
  • 速度大幅提升

Unload Model(卸载模型)

使用完后点击:

  • 关闭 PowerShell 窗口
  • 释放显存(VRAM)
  • 清理临时日志文件

📥 生成结果

当生成完成后:

  • Nuke 会自动在节点图中创建一个 Read 节点
  • 加载生成结果

该 Read 节点包含一个:

👉 DBFluxFill Settings 面板

记录以下信息(只读):

  • Seed
  • Steps
  • Guidance
  • Prompt

👉 用于结果复现和参考

⚠️ 重要说明(Important Notes)


🧊 Nuke 在生成时会卡住(正常现象)

当你点击 Generate(生成) 时:

  • Nuke
     会暂时无响应(卡住)
  • 同时会弹出一个命令行窗口(Command Prompt)
  • 该窗口会显示模型推理进度

👉 这是正常行为

原因:

  • 推理是在子进程(subprocess)中运行
  • 使用独立的 Python 环境
  • 目的是让模型内存(尤其是显存)与 Nuke 隔离

🚀 性能优化建议

使用:

👉 Generate (Keep Loaded)

效果:

  • 模型会常驻 GPU 显存(VRAM)
  • 后续生成不需要重新加载模型
  • 显著加快多次生成速度

💻 仅支持 Windows

该工具:

  • 仅在 Windows 平台开发和测试
  • 不支持 macOS / Linux

⚙️ config.json 配置文件

配置文件路径:

.nuke/DBFluxFill/config.json

该文件保存:

  • 临时目录(Temp Dir)
  • 输出目录(Output Dir)
  • 输出文件名(Output Name)

👉 可以随时手动修改
👉 无需重新运行安装程序


🎬 Nuke 版本要求

  • 最低支持:Nuke 13.2
  • 开发版本:Nuke 13.2v8
  • 已在更高版本中测试可用

🎮 显存(VRAM)说明

文档中的显存要求:

👉 是“建议值”,不是硬性限制

实际情况:

  • 显存不足时仍可能运行
  • 但会出现:
    • 速度变慢
    • 或直接内存溢出(OOM)

📐 分辨率限制

Gizmo 会在以下情况发出警告:

  • 图像尺寸 大于 2048px
  • 或 小于 512px

建议:

  • ❌ 不建议使用超大分辨率(容易爆显存)
  • ❌ 太小的图像会导致:
    • 结果质量差
    • 输出不可预测

⚡ fp8 模式硬件要求

fp8 模型特点:

  • 使用 float8 量化
  • 更节省显存、更快

但要求:

👉 必须使用 Ampere 架构或更新 GPU

支持:

  • RTX 30 系列(30xx)
  • RTX 40 系列(40xx)

不支持:

  • RTX 20 系列(Turing)
  • 更旧显卡

🧾 Nuke Indie 支持

DBFluxFill 支持 Nuke Indie 版本

👉 Indie 模式影响:

  • 文件操作方式
  • UI 对话框行为

使用注意:

安装时:

  • 勾选 Indie mode 选项

或者:

  • 在 config.json 中手动修改该参数

🧠 一句话总结

👉 这是一个:

“外部AI推理 + Nuke桥接”的工具

特点:

  • 稳定 ✔
  • 隔离内存 ✔
  • 但会卡 UI ❗
项目下载链接:
https://github.com/drberkowitz/DBFluxFill