Feyn团队训练抠图模型时,先只用一套高质量合成数据MaskFactory。结果很分裂:伪装场景基准CAMO分数涨了,高精细分割基准DIS5K却掉了。同一个模型,换了训练目标,两项能力此消彼长。

这个坑最后靠换数据配方填上了。团队开源的FeyNoBg,在8个公开基准里拿到4项S-measure第一,其余四项与当前最佳公开结果相差不超过2%(原始发布没说明这是绝对分值差还是相对比例差)。撑住这份成绩的不是参数从222M扩到263M,是后来把10个数据源混合起来训练。

发生了什么:参数小改,数据大改

FeyNoBg的底子是BiRefNet,架构上把抠图拆成两半:一个模块找主体,一个模块描边界,共用同一套特征提取器。团队做的架构改动很小,只动了特征提取器第三阶段:

项目原BiRefNetFeyNoBg
第三阶段模块数1824
参数量222M263M
预训练权重全部保留,新增6个模块从零训练

这一步只是给模型多留了点学习空间,没换逻辑,也没解释CAMO和DIS5K为什么会互相拖累。

真正决定成绩的是后来的数据配方调整。第一轮只用MaskFactory,CAMO进步、DIS5K退步。第二轮换成混合训练:从10个数据集里各取样、单源上限4000张,凑出26.1K张图,覆盖拥挤场景、伪装、高分辨率、人像、动漫。练完之后,DIS5K不但补回来,还反超成了8个基准里的领先结果。老话讲巧妇难为无米之炊——参数是巧妇,数据配方才是米。

同一模型,换了训练数据配方 只用 MaskFactory 单一合成数据集 CAMO 基准 提升 DIS5K 基准 退步 识别主体强了 边缘精度反而丢了 混合10个数据源 26.1K 张图,按源限量 CAMO 基准 保持 DIS5K 基准 反超,第一 覆盖场景更广 两项能力不再互相拖累
FeyNoBg 成绩单 8 个公开基准 4 项拿到第一 ≤2% 其余差距上限 263M 参数(原222M) 指标为 S-measure,衡量前景形状匹配度

为什么重要:S-measure赢的是形状,不是透明度

S-measure衡量预测前景跟标准答案的形状匹配度,奖励主体完整、轮廓贴合。它不直接衡量发丝、半透明物体、运动模糊这类精细透明度问题。

团队把混合数据统一成训练目标时,做了一个明确取舍:分割数据的mask和matting数据的alpha matte,全部转成了二值前景mask。matting数据原本该提供的软透明度监督,被换成了更精确的轮廓监督。细边缘数据教会模型边界该画在哪,没教它边界该有多透明。

这一步换来的是训练稳定性和跨场景泛化,代价是没去碰alpha matting里技术难度最高的部分。S-measure领先不等于发丝、半透明、运动模糊这些真实抠图难点也领先,团队没有声称覆盖这些场景。

谁该现在就用,谁该再等等

Feyn同时放出了NoBg,一个训练用的Python库,统一了推理和微调接口:同一套processor既能跑FeyNoBg,也能拿去微调自己的数据。BiRefNet之后陆续有人发新权重,但每个仓库自成一套输入输出格式,想对比或微调,得先花时间写适配代码。NoBg想解决的是这道胶水工程。

两类读者关心的问题不一样,能做的事也不一样:

读者类型现在能做什么该等什么
批量抠商品图、做视觉内容自动化的开发者主体清晰、背景干净的场景可以直接试跑FeyNoBg,权重和推理代码开源在Hugging Face和GitHub发丝、半透明材质、运动模糊场景先小批量测试再上生产,别直接替换现有方案
做视觉模型训练、评测基础设施的AI工程师优先看NoBg统一的processor接口,能不能省掉自己维护的多套适配代码官方给的吞吐、延迟、显存优势没给具体测试环境和数值,自己拿真实硬件跑一遍再下结论

接下来值得盯的三件事:社区有没有独立复现出4项第一;官方那句"吞吐更高、延迟更低、显存更小"什么时候补上具体数字,换硬件是否还成立;有没有第三方模型接入NoBg的统一接口,还是只有FeyNoBg自己在用。

回头看开头那次翻车:少了混合数据,模型自己都分不清该信哪套标准。这道坑填上了,但填坑的方式是换配方,不是加参数——这也是这次发布里真正值得记住的一句话。