Show HN: FeyNoBg – 自动背景移除模型及训练库

Hacker News Top 模型

摘要

FeyNoBg 是一款最先进的自动背景移除模型,在八个基准测试中的四个上取得了最高分,其余四个与领先者差距在2%以内。配套的 NoBg 库是开源的,可用于运行或训练自定义模型。

大家好,我是Feyn的Shreyash。我们帮助公司利用其数据构建定制模型。<p>今天,我们发布了 FeyNoBg,一款自动背景移除模型。同时,我们开源了用于训练和运行该模型的 Python 库 NoBg。<p>在此处试用模型:<a href="https:&#x2F;&#x2F;huggingface.co&#x2F;spaces&#x2F;feyninc&#x2F;feynobg" rel="nofollow">https:&#x2F;&#x2F;huggingface.co&#x2F;spaces&#x2F;feyninc&#x2F;feynobg</a>。在此处查看库:<a href="https:&#x2F;&#x2F;github.com&#x2F;feyninc&#x2F;nobg" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;feyninc&#x2F;nobg</a><p>一些示例输出:<p>(1) 足球任意球:<a href="https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1MZkAGLwbhNVOZ0Oi7XvpCfSEu9QPCbwj&#x2F;view?usp=sharing" rel="nofollow">https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1MZkAGLwbhNVOZ0Oi7XvpCfSEu9Q...</a><p>(2) 风中头发:<a href="https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1Odc2m0XMVH9uZtvI_KjaRbXzhLLdGK8Z&#x2F;view?usp=sharing" rel="nofollow">https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1Odc2m0XMVH9uZtvI_KjaRbXzhLL...</a><p>(3) 可见辐条的自行车:<a href="https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1h99ahjfrtS1MFQJJgiKE2fuM3HZyQ-QJ&#x2F;view?usp=sharing" rel="nofollow">https:&#x2F;&#x2F;drive.google.com&#x2F;file&#x2F;d&#x2F;1h99ahjfrtS1MFQJJgiKE2fuM3HZ...</a><p>(4) 实时演示视频:<a href="https:&#x2F;&#x2F;youtu.be&#x2F;b1heHPvY8BM" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;b1heHPvY8BM</a><p>背景移除将图像主体从背景中分离出来。我们多数人都尝试过。通常是为了将主体复用到其他作品中。如今,用它制作聊天贴纸很常见。这是人工智能最常见的应用之一,但却常被低估。它其实也出奇地复杂。模型很容易被伪装、运动模糊或头发等精细结构所迷惑。<p>该任务需要两项技能。首先,模型必须识别前景。其次,它必须追踪前景的边界,并估算每个像素的不透明度值。通常,这些技能是通过不同的数据集训练的。这就会造成一个薄弱点。糟糕的训练组合可能会在提升一项技能的同时牺牲另一项。我们在受控评估中发现了这一点。仅使用 MaskFactory 数据集的训练在 CAMO 基准上表现提升,但在 DIS5K 上却退步了。<p>对于 FeyNoBg,我们采用了一种以可解释性为先的训练方法。我们首先研究了 BiRefNet 的各个阶段如何贡献于前景发现和边界重建。我们发现其特征提取器的第三阶段包含了大量信息。定位和边界重建都高度依赖于这里生成的特征图。<p>这促使我们将该阶段从18个块扩展到24个块,同时保留了预训练权重。然后我们在从10个数据集中收集的2.61万个多样化示例上训练了FeyNoBg。目标是同时提升前景识别和边界精度,而不牺牲任何一方。<p>在八个基准测试中,FeyNoBg 在四个上取得了已公布的最佳分数,其余四个与领先者差距在2%以内。<p>构建FeyNoBg也暴露了工具方面的问题。图像抠图模型通常以孤立的仓库形式发布,包含不兼容的预处理、训练和评估代码。我们构建了NoBg来解决这个问题。NoBg将这些工作流程整合到一个Python接口中。目前它支持BiRefNet,未来将支持更多架构。希望你能用它构建出令人兴奋的作品!<p>欢迎提问!
查看原文
查看缓存全文

缓存时间: 2026/07/27 19:46

# FeyNoBg:一款用于背景移除的SOTA模型 — Feyn 来源:https://usefeyn.com/blog/feynobg/ 三辆共享单车停放在繁忙的城市人行道上 原始图像背景移除后 我们推出了 FeyNoBg,一款用于自动背景移除的顶级模型。**在八个基准测试中,它在四个测试上取得了已发表的最佳 S-measure,并在剩余测试中与领先者差距在 2% 以内。** | 基准测试 | **UHRSD-TE** | | --- | --- | | FeyNoBg | **0.981** | | BiRefNet | **0.957** | | 描述 | 测试超高分辨率图像(包括 4K 和 8K 场景)中的显著目标掩码。 | 我们还发布了 NoBg,这是我们用来训练模型的库。使用 NoBg 运行 FeyNoBg,或训练你自己的背景移除模型。 两者均为开源。在 Hugging Face (https://huggingface.co/feyninc/FeyNobg) 下载 FeyNoBg,或在 GitHub (https://github.com/feyninc/nobg) 上使用 NoBg 进行构建。 ## 移除需要组合能力 在计算机中,图像以像素网格的形式存储。背景移除算法的目标是为每个像素预测一个不透明度值,使背景像素变为透明,前景像素保持不透明,边界像素变为半透明。 生成这种不透明度图需要两种技能。首先,模型必须将前景与背景分开。当主体位于纯色背景下时,通过比较颜色即可轻松完成。然而,在低对比度、拥挤或伪装的图像中,模型必须利用形状、纹理和上下文来识别哪些像素构成主体。 其次,模型必须追踪前景的边界。在简单图像中,颜色或纹理的急剧变化提供了强烈的边缘信号。但真实的边界要复杂得多。头发、毛发、细线和运动模糊会使前景和背景元素混合在一起。模型必须测量边缘像素属于主体的程度,并相应设置其不透明度。这被称为图像抠图。 通常,这些技能是通过不同类型的数据集来训练的。这会造成一个缺陷。训练集的混合不当会产生不平衡的模型,其中一种技能的提升以牺牲另一种技能为代价。输出要么遗漏主体部分,要么缺少干净的边缘。 真实图像是复杂的,需要在前景识别和边界精度上都保持灵巧。这是我们训练 FeyNoBg 时的关键洞察。 ## 创造学习空间 我们选择 BiRefNet 作为 FeyNoBg 的基础,因为它的架构已经符合我们的目标。BiRefNet 赋予模型的两个部分互补的责任。其定位模块负责寻找前景,而重建模块负责追踪主体的边界。 模型首先让输入图像通过一个四阶段运行的特征提取器。早期阶段捕获局部细节。后期阶段将收集到的细节组合成更广泛的图像表示,称为特征图。定位模块利用这些图来寻找主体,而重建模块则利用它们来恢复边界。 特征提取器的第三阶段任务最为艰巨。它看到了足够多的图像来推理整个主体,同时保留表示其形状所需的空间细节。定位和边界重建都严重依赖于此阶段生成的特征图。 考虑到这一阶段包含丰富的图像表示,我们预期在这里增加深度将有助于模型更好地保留信息,从而提升性能。因此,我们将第三阶段从 18 个块扩展到 24 个块。这使得模型参数从 2.22 亿适度增加到 2.63 亿。 | 原始模型 | BiRefNet | 2.22 亿参数 | | --- | --- | --- | | `depths=[2, 2, 18, 2]` | | 扩展后模型 | FeyNoBg | 2.63 亿参数 | | `depths=[2, 2, 24, 2]` | 在扩展过程中,我们保留了所有兼容的预训练权重。只有六个新块是从头开始训练的。这使得 FeyNoBg 在获得额外学习能力的同时,不会忘记基础模型已经掌握的知识。 有了更多的学习空间,是时候教老模型一些新技巧了。 ## 多样化数据的力量 我们的第一次训练运行使用了 MaskFactory,这是一个为精确前景分割而创建的合成图像与掩码对集合。这是本次运行使用的唯一数据集。 如果我们的直觉正确,所得到的模型会在某些基准测试上提升,而在另一些上退步。这正是我们在控制评估中看到的情况:模型在 CAMO 基准测试上有所提升,但在 DIS5K 上退步了。 接下来,我们专注于构建一个更多样化的数据集。我们从 10 个数据集中汇集了 26,100 张图像,涵盖拥挤场景、伪装、高分辨率主体、肖像和动漫,然后训练了 7,000 步。我们的目标是让模型在训练过程中接触尽可能多的场景。 | 数据集 | **S3OD** | | --- | --- | | 新增内容 | 旨在帮助模型超越熟悉图像集合进行泛化的合成场景。 | 在最终运行之前,我们修订了最初的混合数据集。我们添加了来自 S3OD 的 4,000 张图像,将动漫减少到 500 张,并移除了 ThinObject-5K、HIM-2K 和 COIFT。这使我们保留了那些提供最有用、最一致训练样本的来源。 组合这些数据集引入了两个问题。首先,它们在大小上差异很大。如果没有限制,最大的来源将主导训练,导致我们之前看到的专业分化。因此,我们将每个来源的上限设定为 4,000 张图像,然后将它们混合在一起。 其次,这些数据集使用了不同的标注。分割数据集提供前景掩码,而抠图数据集提供 Alpha 遮罩。我们将两者都转换为二进制前景掩码,以便每张图像共享相同的训练目标。 因此,抠图数据集贡献的是轮廓清晰的主体,而非软透明度监督。 这为我们提供了一个一致的训练集,其中包含了经过精心设计的多样化图像。现在,我们的模型可以在更广泛的场景中学习识别和勾勒前景。 ## 结果 为了了解性能,我们记录了 S-measure。S-measure 评分范围从 0 到 1,将预测的前景与正确的掩码进行比较。它奖励完整的主体和忠实于原形的形状。分数越高越好。 我们将 FeyNoBg 的 S-measure 与八个基准测试中已发表的最佳结果进行了比较,这些基准测试涵盖了伪装、低对比度场景、精细结构、高分辨率图像和视频。FeyNoBg 在四个测试上领先,并在其余四个测试中与领先者差距在 2% 以内。 | UHRSD-TE | HRSOD-TE | DIS5K | DAVIS-S | | --- | --- | --- | --- | | DUTS-TE | COD10K-TE | DUT-OMRON | CAMO-TE | 值得注意的是,更广泛的训练集将我们在 DIS5K 上的退步转变为了一个领先基准测试的结果。 ## NoBg 库 图像抠图模型通常以孤立的代码仓库形式发布。比较模型或微调一个模型需要编写多个适配器,然后才能开始实验。这种设置很快就会变得混乱且令人沮丧,从而难以做好工作。 为了解决这个问题,我们创建了 NoBg。它是一个 Python 库,为运行和训练背景移除模型提供了一致的接口。我们自己也用它来训练 FeyNoBg。 为了鼓励该领域的进一步发展,我们将 NoBg 开源。你可以用它来运行 FeyNoBg,或训练你自己的模型。 ### 高性能且便捷 一致的接口不应以牺牲性能为代价。我们分别以批大小 1、2 和 4 将 NoBg 的 BiRefNet 与原始实现进行了比较。NoBg 在每个批大小下都实现了更高的吞吐量、更低的延迟和更低的 GPU 峰值内存。 ### 运行 FeyNoBg NoBg 在推理前会调整图像大小并进行归一化。然后它将模型输出转换为原始尺寸的 Alpha 遮罩,并将抠图保存为透明 PNG。 ``` import torch from loadimg import load_img from nobg import AutoModel, AutoProcessor model = AutoModel.from_pretrained("feyninc/FeyNobg").eval() processor = AutoProcessor.from_pretrained("feyninc/FeyNobg") image = load_img("input.jpg").convert("RGB") inputs = processor(image, return_tensors="pt") with torch.inference_mode(): outputs = model(pixel_values=inputs["pixel_values"]) alpha = processor.post_process_alpha_matting( outputs, target_sizes=[(image.height, image.width)], )[0] processor.cutout(image, alpha).save("output.png") ``` ### 训练你自己的模型 NoBg 提供了训练 BiRefNet 所需的模型、处理器和损失函数,只需使用你自己的图像和掩码对即可。它还能与 Hugging Face 的 `Trainer` 配合使用,后者负责训练循环、检查点和评估。给定一个包含 `image` 和 `mask` 列的数据集,训练过程如下: ``` from nobg import AutoModel, AutoProcessor from transformers import Trainer, TrainingArguments model = AutoModel.from_pretrained("feyninc/FeyNobg") processor = AutoProcessor.from_pretrained("feyninc/FeyNobg") def collate(examples): batch = processor( images=[example["image"] for example in examples], segmentation_maps=[ example["mask"].convert("L") for example in examples ], return_tensors="pt", ) return { "pixel_values": batch["pixel_values"], "labels": batch["labels"], } trainer = Trainer( model=model, args=TrainingArguments( output_dir="outputs", learning_rate=2e-5, ), train_dataset=dataset, data_collator=collate, ) trainer.train() ``` ## 开始使用 从 Hugging Face (https://huggingface.co/feyninc/FeyNobg) 下载 FeyNoBg,并使用 NoBg 运行该模型。在我们的 Hugging Face Space (https://huggingface.co/spaces/feyninc/feynobg) 中在线尝试。 使用 `pip install nobg` 安装 NoBg。你也可以在 GitHub (https://github.com/feyninc/nobg) 上找到它。 FeyNoBg 和 NoBg 由 Feyn 构建。在 X (https://usefeyn.com/blog/feynobg/x.com/feynai)、GitHub (https://github.com/feyninc) 或 LinkedIn (https://www.linkedin.com/company/107081181/) 上找到我们。 ## 致谢 FeyNoBg 建立在 BiRefNet 以及 Peng Zheng、Dehong Gao、Deng-Ping Fan、Li Liu、Jorma Laaksonen、Wanli Ouyang 和 Nicu Sebe 的工作之上。我们还感谢发布本工作中使用的模型、代码和数据集的团队。 参考文献 [1] Zheng 等人. "Bilateral Reference for High-Resolution Dichotomous Image Segmentation." *CAAI Artificial Intelligence Research* 3 (2024). *arXiv:2401.03407*. [2] Sargsyan 和 Navasardyan. "FlowDIS: Language-Guided Dichotomous Image Segmentation with Flow Matching." *CVPR* 2026. *arXiv:2605.05077*. [3] Kupyn, Kataoka 和 Rupprecht. "S3OD: Towards Generalizable Salient Object Detection with Synthetic Data." *arXiv:2510.21605* (2025). 引用本文 ``` @note{feynobg2026, title = {FeyNoBg: Better Background Removal Without Forgetting}, author = {Hichri, Hafedh and Nigam, Shreyash and Feyn Research}, year = {2026}, venue = {Feyn Field Notes} } ```

相似文章

fottoai/remove-bg-2

Replicate Explore

fottoai/remove-bg-2 是一个开源的背景去除模型,可在 Replicate 上使用,运行在 A100 GPU 上,推理时间约2秒,每次运行费用为$0.0018。

851-labs/background-remover

Replicate Explore

851-labs/background-remover 是一个开源AI模型,用于移除图像背景。可在Replicate上使用,在Nvidia T4 GPU上推理成本低且速度快。

lucataco/remove-bg

Replicate Explore

一个用于去除图像背景的AI模型,采用tracer_b7神经网络,可在Replicate上使用,代码开源。

开源背景移除应用及MCP

Reddit r/LocalLLaMA

作者开源了一个基于开源技术的背景移除工具,现在也可作为无头MCP服务供AI代理使用。