乐于分享
好东西不私藏

NUKE插件-AI边缘修复插件

NUKE插件-AI边缘修复插件

针对The Foundry Nuke中的坏边问题,对LaMa进行了微调

我的想法是开发一个足够快速的工具,以便在标准的 Nuke 合成工作流程中使用。它并非旨在修复所有断裂的边缘,而是作为一种辅助工具,帮助艺术家修复损坏的边缘。由于 LaMa 使用的是 FFC(帧连接),因此它在处理重复结构时效果更佳。

该模型专门使用合成数据(黑色背景上的蒙版主体)进行训练。

之前:

之后:

工作原理

事先声明:我在数据增强和微调方面投入了大量“手动”工作。但是,Nuke 插件本身是我用 vibecode 编写的。

该节点接收预乘 RGBA 输入。alpha 值定义了边缘修复发生的位置:

  1. alpha 值被二值化,并由边缘大小像素向内侵蚀。
  2. 原始 alpha 层和侵蚀后的 alpha 层之间的环被发送到模型。
  3. 该模型展示了干净利落的边缘应该是什么样子。
  4. 使用由“混合过渡”控制的柔和过渡效果,将结果混合回去。

插件中嵌入了两种模型变体:bamEdge2AbamEdge2B,可通过下拉菜单选择。

实用渠道

  • bE2_model_mask:传递给模型的边缘带
  • bE2_transition_mask:用于合成的混合权重

获取插件

BamEdge2 Nuke 插件(Linux 版)Nuke 16.0v7

我在一台运行Linux系统、没有GPU的笔记本电脑上用Nuke 16测试了这个版本。

BamEdge2 Nuke 插件(Windows 版)Nuke 17.0v3

我在一台配备 RTX 3090 显卡、运行Windows 系统的工作站上使用 Nuke 17 测试了这个版本。

我只编译了这些版本。如果你想要其他版本,就得自己编译了。:)

建筑

依赖关系

  • 核能
  • Libtorch
  • 两个模型文件:下载模型
  1. 配置和构建

cd nuke/cppmkdir build && cd buildcmake .. \  -DLIBTORCH_INCLUDE_DIR=/path/to/libtorch \  -DNUKE_ROOT=$HOME/Nuke16.0v7 \  -DMODELS_DIR=/path/to/modelscmake --build . -j$(nproc)cmake --install .
  1. 为 Nuke 添加插件

视窗

步骤相同,但需要安装NASM。调整 Nuke 根目录:

cmake .. ^  -DLIBTORCH_DIR=path\to\libtorch ^  -DNUKE_ROOT="C:\path\to\Nuke17.0v2" ^  -DMODELS_DIR=path\to\models  -NASM_EXECUTABLE=path\to\nasm.exe ^cmake --build . --config Releasecmake --install .

安装步骤会创建一个build/bamEdge2/包含插件的文件夹.so.dll

模型与培训

基础模型: Big LaMa FFC-ResNet 生成器,带有傅里叶卷积,18 个残差块,从官方预训练检查点进行微调。

数据准备:

训练数据是人工构建的:

  • 图片来源: CelebA-HQ 和 FFHQ。选择真人作为拍摄对象,因为头发是最难处理的特殊情况。
  • 分割:使用 SAM2 生成掩模,使用 ViTMatte 改进掩模
  • 合成画面:每个片段都合成在黑色背景上——模型永远不会看到真实的制作画面。
  • 边缘掩码:每个分割区域三个腐蚀级别(8/16/24像素),为模型提供不同的边缘宽度以供训练。
  • 规模:基于超过 80 万张分割图像进行训练

训练:我是在 RunPod 上运行的(使用一块 RTX 4090 显卡)。如果我没记错的话,数据增强比训练本身花费的时间更长。由于我做了好几次测试,所以记不太清了,但我觉得两者加起来大概花了 2 天时间。

执照

该插件源代码采用Apache 2.0许可。

预训练模型文件(bam_model_a.pt, )是在FFHQ 数据bam_model_b.pt集上训练的 ,该数据集根据 CC BY-NC-SA 4.0许可发布。

说实话,我完全不知道这对重量意味着什么。时间会证明一切。也许吧。为了安全起见,最好只用于非商业用途。

项目链接:

https://github.com/bewegtbildbau/bamEdge2plugin
自行下载安装。