
Show HN: FeyNoBg – 자동 배경 제거 모델 및 학습 라이브러리
요약
최첨단 배경 제거 모델인 FeyNoBg와 학습 라이브러리 NoBg를 소개합니다. 8개 벤치마크 중 4개에서 최고 성능을 기록했으며, 전경 인식과 경계 정밀도를 동시에 최적화하는 아키텍처를 사용합니다.
핵심 포인트
- 8개 벤치마크 중 4개에서 S-measure 최고 기록
- 초고해상도(4K, 8K) 이미지에서 뛰어난 객체 마스크 성능
- 전경 인식과 경계 추적을 결합한 BiRefNet 기반 아키텍처
- 모델 실행 및 자체 학습을 위한 오픈 소스 라이브러리 NoBg 공개

FeyNoBg: 배경 제거를 위한 SOTA (State-of-the-art) 모델
자동 배경 제거를 위한 최첨단(state-of-the-art) 모델인 FeyNoBg를 소개합니다. 8개의 벤치마크(benchmarks) 중 4개에서 가장 높은 S-measure를 기록했으며, 나머지 벤치마크에서도 선두 모델과 2% 이내의 차이를 보였습니다.
UHRSD-TE
0.981
0.957
4K 및 8K 장면을 포함한 초고해상도(ultra-high-resolution) 이미지에서 두드러진 객체 마스크(salient-object masks)를 테스트합니다.
또한 저희는 모델 학습에 사용한 라이브러리인 NoBg를 함께 공개합니다. NoBg를 사용하여 FeyNoBg를 실행하거나 자신만의 배경 제거 모델을 학습시킬 수 있습니다.
두 가지 모두 오픈 소스(open source)입니다. Hugging Face에서 FeyNoBg를 다운로드하거나, GitHub에서 NoBg로 구축해 보세요.
제거에는 결합이 필요합니다
컴퓨터에서 이미지는 픽셀(pixel) 그리드로 저장됩니다. 배경 제거 알고리즘의 목표는 각 픽셀에 대해 불투명도(opacity) 값을 예측하여, 배경 픽셀은 투명해지고 전경(foreground) 픽셀은 불투명하게 유지되며, 경계(boundary) 픽셀은 반투명하게 만드는 것입니다.
이러한 불투명도 맵(opacity map)을 생성하려면 두 가지 기술이 필요합니다. 첫째, 모델은 전경을 배경으로부터 분리해야 합니다. 피사체가 단순한 배경 앞에 서 있을 때는 색상을 비교하여 쉽게 수행할 수 있습니다. 하지만 대비(contrast)가 낮거나, 복잡하거나, 위장된 이미지의 경우, 모델은 형태(shape), 질감(texture), 문맥(context)을 사용하여 어떤 픽셀이 피사체를 형성하는지 인식해야 합니다.
둘째, 모델은 전경의 경계를 추적해야 합니다. 단순한 이미지에서는 색상이나 질감의 급격한 변화가 강력한 에지 신호(edge signal)를 제공합니다. 하지만 실제 경계는 더 어렵습니다. 머리카락, 털, 가는 와이어, 그리고 모션 블러(motion blur)는 전경과 배경 요소를 서로 섞이게 만들 수 있습니다. 모델은 에지 픽셀이 피사체에 얼마나 속하는지를 측정하고 그에 따라 불투명도를 설정해야 합니다. 이를 이미지 매팅 (image matting)이라고 합니다.
일반적으로 이러한 기술들은 서로 다른 종류의 집중된 데이터로 학습됩니다. 이는 실패 지점(failure point)을 만듭니다. 부실한 학습 혼합(training mix)은 한 가지 기술의 향상이 다른 기술의 희생을 초래하는 불균형한 모델을 생성할 수 있습니다. 결과물은 피사체의 일부를 놓치거나 깨끗한 에지가 부족하게 됩니다.
실제 이미지는 복잡하며 전경 인식 (foreground recognition)과 경계 정밀도 (boundary precision) 측면에서 능숙함이 필요합니다. 이것이 FeyNoBg를 학습시킬 때 우리의 핵심 통찰이었습니다.
학습을 위한 공간 확보 (Creating Room To Learn)
우리는 BiRefNet의 아키텍처가 이미 우리의 목표와 일치했기 때문에 이를 FeyNoBg의 기반으로 선택했습니다. BiRefNet은 모델의 두 부분에 상호 보완적인 책임을 부여합니다. 로컬라이제이션 모듈 (localization module)은 전경을 찾아내고, 재구성 모듈 (reconstruction module)은 피사체의 경계를 추적합니다.
모델은 먼저 4단계로 실행되는 특징 추출기 (feature extractor)를 통해 입력 이미지를 통과시키며 시작됩니다. 초기 단계는 국소적인 세부 사항을 포착합니다. 후기 단계는 수집된 세부 사항을 특징 맵 (feature maps)이라고 불리는 더 넓은 이미지 표현으로 결합합니다. 로컬라이제이션 모듈은 이 맵을 사용하여 피사체를 찾고, 재구성 모듈은 이를 사용하여 피사체의 경계를 복원합니다.
특징 추출기의 세 번째 단계는 가장 어려운 작업을 수행합니다. 이 단계는 형태를 표현하는 데 필요한 공간적 세부 사항을 유지하면서도, 전체 피사체에 대해 추론할 수 있을 만큼 충분한 이미지 정보를 파악합니다. 로컬라이제이션과 경계 재구성 모두 여기서 생성되는 특징 맵에 크게 의존합니다.
이 단계가 보유한 풍부한 이미지 표현력을 고려할 때, 우리는 여기에 더 많은 깊이 (depth)를 추가하면 모델이 정보를 더 잘 유지하여 성능을 향상시키는 데 도움이 될 것이라고 예상했습니다. 이에 따라 우리는 세 번째 단계를 18개 블록에서 24개 블록으로 확장했습니다. 이로 인해 모델의 파라미터 (parameters)는 222M에서 263M으로 소폭 증가했습니다.
BiRefNet 222M 파라미터
depths=[2, 2, 18, 2]
FeyNoBg 263M 파라미터
depths=[2, 2, 24, 2]
우리는 확장 과정에서 호환 가능한 모든 사전 학습된 가중치 (pre-trained weight)를 보존했습니다. 오직 6개의 새로운 블록만이 학습되지 않은 상태로 시작되었습니다. 이를 통해 FeyNoBg는 베이스 모델이 이미 알고 있는 것을 잊지 않으면서도 새로운 기술을 배울 수 있는 추가적인 용량 (capacity)을 얻었습니다.
더 많이 배울 수 있는 공간이 마련되었으니, 이제 오래된 모델에게 새로운 기술을 가르칠 차례였습니다.
다양한 데이터의 힘 (Strength in Diverse Data)
우리의 첫 번째 학습 실행(training run)은 정밀한 전경 분할(foreground segmentation)을 위해 생성된 합성 이미지 및 마스크 쌍의 모음인 MaskFactory를 사용하여 진행되었습니다. 이 실행에는 이 데이터셋만이 사용되었습니다.
우리의 직관이 맞다면, 결과물인 모델은 일부 벤치마크(benchmark)에서는 성능이 향상되는 반면 다른 벤치마크에서는 퇴보할 것이었습니다. 실제로 통제된 평가(controlled evaluation)에서 모델은 CAMO 벤치마크에서는 성능이 향상되었으나, DIS5K에서는 퇴보하는 결과가 나타났습니다.
다음으로, 우리는 더 다양한 데이터셋을 구축하는 데 집중했습니다. 혼잡한 장면, 위장(camouflage), 고해상도 피사체, 초상화, 애니메이션을 아우르는 10개의 데이터셋에서 26.1K개의 이미지를 수집한 후, 7,000 스텝(steps) 동안 학습을 진행했습니다. 우리의 목표는 학습 과정에서 모델이 가능한 한 많은 시나리오에 노출되도록 하는 것이었습니다.
10개의 소스에 걸친 26.1K개의 예시
S3OD
모델이 익숙한 이미지 컬렉션을 넘어 일반화(generalize)할 수 있도록 설계된 합성 장면(Synthetic scenes).
우리는 최종 실행 전에 원래의 혼합 구성을 수정했습니다. S3OD에서 4,000개의 이미지를 추가했고, 애니메이션(Anime)은 500개로 줄였으며, ThinObject-5K, HIM-2K, COIFT는 제거했습니다. 이를 통해 가장 유용하고 일관된 학습 예시를 제공하는 소스들만 남게 되었습니다.
데이터셋을 결합하면서 두 가지 문제가 발생했습니다. 첫째, 데이터셋의 크기가 매우 다양했습니다. 제한이 없다면 가장 큰 소스들이 학습을 지배하게 되어, 이전에 보았던 것과 동일한 특수화(specialization) 현상이 발생할 것이었습니다. 결과적으로, 우리는 각 소스를 4,000개 이미지로 제한한 후 함께 섞었습니다(shuffled).
둘째, 데이터셋마다 사용하는 어노테이션(annotation)이 달랐습니다. 세그멘테이션(Segmentation) 데이터셋은 전경 마스크(foreground masks)를 제공하는 반면, 매팅(matting) 데이터셋은 알파 매트(alpha mattes)를 제공했습니다. 우리는 모든 이미지가 동일한 학습 목표를 공유할 수 있도록 두 가지 모두를 이진 전경 마스크(binary foreground masks)로 변환했습니다.
따라서 매팅 데이터셋은 부드러운 불투명도(soft-opacity) 감독이 아닌, 정밀하게 윤곽이 잡힌 피사체를 제공하게 되었습니다.
이를 통해 우리는 의도적으로 다양화된 이미지를 가진 하나의 일관된 학습 세트를 확보할 수 있었습니다. 이제 우리의 모델은 훨씬 더 넓은 범위의 시나리오에 걸쳐 전경을 식별하고 윤곽을 그리는 법을 배울 수 있게 되었습니다.
결과 (Results)
성능을 이해하기 위해, 우리는 S-measure를 기록했습니다. 0에서 1 사이의 점수로 매겨지는 S-measure는 예측된 전경 (foreground)을 정확한 마스크 (mask)와 비교합니다. 이는 완전한 피사체와 충실한 형태 모두에 보상을 줍니다. 점수가 높을수록 좋습니다.
우리는 위장 (camouflage), 저대비 장면 (low contrast scenes), 미세 구조 (fine structures), 고해상도 이미지 (high resolution images), 그리고 비디오를 다루는 8개의 벤치마크에서 FeyNoBg의 S-measure를 기존에 발표된 최고 결과와 비교했습니다. FeyNoBg는 4개 항목에서 선두를 차지했으며, 나머지 4개 항목에서도 선두와 2% 이내의 차이를 보였습니다.
UHRSD-TE
HRSOD-TE
DIS5K
DAVIS-S
DUTS-TE
COD10K-TE
DUT-OMRON
CAMO-TE
특히, 더 넓은 범위의 학습 믹스 (training mix) 덕분에 우리의 DIS5K 회귀 (regression) 결과가 벤치마크를 선도하는 결과로 바뀌었습니다.
NoBg 라이브러리 (The NoBg Library)
이미지 매팅 (image matting) 모델들은 보통 개별적인 저장소 (repositories)로 공개됩니다. 모델을 비교하거나 하나를 미세 조정 (fine-tuning)하려면 실험을 시작하기도 전에 여러 개의 어댑터 (adapters)를 작성해야 합니다. 이러한 설정은 제대로 된 작업을 수행하기에 너무 복잡하고 좌절감을 줄 수 있습니다.
이를 해결하기 위해, 우리는 NoBg를 만들었습니다. 이는 배경 제거 모델을 실행하고 학습시키기 위한 일관된 인터페이스를 제공하는 Python 라이브러리입니다. 우리는 FeyNoBg를 학습시키기 위해 이 라이브러리를 직접 사용했습니다.
이 분야의 더 많은 발전을 장려하기 위해, 우리는 NoBg를 오픈 소스로 공개합니다. 여러분은 이를 사용하여 FeyNoBg를 실행하거나, 자신만의 모델을 학습시킬 수 있습니다.
성능 및 편의성 (Performant and Convenient)
일관된 인터페이스가 성능을 희생해서는 안 됩니다. 우리는 배치 크기 (batch sizes) 1, 2, 4에서 NoBg의 BiRefNet을 기존 구현체와 비교했습니다. NoBg는 모든 크기에서 더 높은 처리량 (throughput), 더 낮은 지연 시간 (latency), 그리고 더 낮은 피크 GPU 메모리 (peak GPU memory)를 제공했습니다.
FeyNoBg 실행하기 (Run FeyNoBg)
NoBg는 추론 (inference) 전에 이미지의 크기를 조정 (resize)하고 정규화 (normalize)합니다. 그런 다음 모델 출력을 원래 크기의 알파 매트 (alpha matte)로 변환하고, 잘라낸 결과물을 투명한 PNG로 저장합니다.
import torch
from loadimg import load_img
from nobg import AutoModel, AutoProcessor
...
자신만의 모델 학습하기 (Train Your Own Model)
NoBg는 여러분의 이미지와 마스크 쌍을 사용하여 BiRefNet을 학습시키는 데 필요한 모델, 프로세서 (processor), 그리고 손실 함수 (loss)를 제공합니다. 또한 Hugging Face의 Trainer와도 연동됩니다.
, 이는 훈련 루프 (training loop), 체크포인팅 (checkpointing), 그리고 평가 (evaluation)를 처리합니다. image와 mask 컬럼이 있는 데이터셋이 주어지면, 훈련은 다음과 같이 진행됩니다:
from nobg import AutoModel, AutoProcessor
from transformers import Trainer, TrainingArguments
model = AutoModel.from_pretrained("feyninc/FeyNobg")
...
시작하기
Hugging Face에서 FeyNoBg를 다운로드하고 NoBg로 모델을 실행해 보세요. 저희의 Hugging Face Space에서 온라인으로 체험해 보실 수 있습니다.
pip install nobg를 통해 NoBg를 설치하세요. GitHub에서도 확인하실 수 있습니다.
FeyNoBg와 NoBg는 Feyn에 의해 제작되었습니다. X, GitHub 또는 LinkedIn에서 저희를 찾아주세요.
감사의 글
FeyNoBg는 BiRefNet과 Peng Zheng, Dehong Gao, Deng-Ping Fan, Li Liu, Jorma Laaksonen, Wanli Ouyang, 그리고 Nicu Sebe의 연구를 기반으로 구축되었습니다. 또한 여기에 사용된 모델, 코드 및 데이터셋을 공개한 팀들에게도 감사를 표합니다.
CAAI Artificial Intelligence Research3 (2024).
arXiv:2401.03407.
CVPR2026.
arXiv:2605.05077.
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} }
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기