针对The Foundry Nuke中的坏边问题,对LaMa进行了微调。
我的想法是开发一个足够快速的工具,以便在标准的 Nuke 合成工作流程中使用。它并非旨在修复所有断裂的边缘,而是作为一种辅助工具,帮助艺术家修复损坏的边缘。由于 LaMa 使用的是 FFC(帧连接),因此它在处理重复结构时效果更佳。
该模型专门使用合成数据(黑色背景上的蒙版主体)进行训练。
之前:


工作原理
事先声明:我在数据增强和微调方面投入了大量“手动”工作。但是,Nuke 插件本身是我用 vibecode 编写的。
该节点接收预乘 RGBA 输入。alpha 值定义了边缘修复发生的位置:
- alpha 值被二值化,并由边缘大小像素向内侵蚀。
- 原始 alpha 层和侵蚀后的 alpha 层之间的环被发送到模型。
- 该模型展示了干净利落的边缘应该是什么样子。
- 使用由“混合过渡”控制的柔和过渡效果,将结果混合回去。
插件中嵌入了两种模型变体:bamEdge2A和bamEdge2B,可通过下拉菜单选择。
实用渠道
- 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
- 两个模型文件:下载模型
配置和构建
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 .
- 为 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
夜雨聆风