알파 마스크는 0과 255가 아닙니다 — 배경 제거의 실제 승부처
배경 제거 결과물의 품질은 사실 "피사체를 인식했느냐"에서 갈리지 않습니다. 요즘 모델은 그건 다 합니다.
승부는 피사체 가장자리 그 한 줄에서 납니다. 머리카락, 반투명, 흐린 윤곽. 그리고 이 한 줄은 데이터로 보면 알파 마스크의 0과 255 사이 값들입니다.
파이프라인 어딘가에서 이 중간값을 이진화해버리면, 그 순간 가장자리는 끝입니다.
마스크는 연속값이지 스위치가 아닙니다
세그멘테이션 모델이 내놓는 건 알파 마스크입니다. 픽셀마다 "여기가 얼마나 피사체에 속하는가"를 알려주죠.
완전한 피사체는 255, 완전한 배경은 0. 가장자리는 그 사이에 놓입니다.
머리카락 한 올이 픽셀의 60%를 덮고 있다면 알파는 153 근처여야 합니다. 유리컵 테두리, 얇은 천, 모션 블러 윤곽도 같은 이야기입니다.
이 중간값들이 누끼 품질의 전부입니다. 피사체 한가운데를 맞추는 건 어렵지 않고 어떤 모델이든 합니다. 차이가 벌어지는 곳은 가장자리 그 띠뿐입니다.
보통 기본으로 켜져 있는 세 가지
대부분의 도구는 기본으로 이 세 가지를 합니다.
엣지 축소 — 마스크를 안쪽으로 1~2px 당깁니다. 남은 배경 테두리가 사라져 깔끔해 보이죠. 문제는 머리카락 끝이 정확히 거기 있다는 겁니다.
마스크 페더 — 알파를 흐려 전환을 부드럽게 합니다. 모델의 계단 현상을 가려주지만, 원래 날카로웠던 경계까지 같이 뭉갭니다.
배경색 번짐 제거 — 가장자리에 섞인 배경색을 빼냅니다. 피사체와 배경 색이 비슷하면 피사체 쪽을 잘못 건드립니다.
셋 다 나쁜 기능은 아닙니다. 문제는 기본값으로 켜는 것입니다. 되돌릴 수 없으니까요. 사용자가 받는 시점에 이미 가공된 결과물이고, 원본 마스크는 없습니다.
기본으로 꺼두면 필요한 사람이 켜면 됩니다. 기본으로 켜두면 원본 마스크가 필요한 사람에게는 방법이 없습니다.
수동 브러시 옆에 "AI 원본 투명 채널로 복원" 버튼이 있는데, 이게 있어야 이 설계가 성립합니다. 과하게 손봐도 되돌아갈 수 있으니까요.
솔직히 말하면 기본 출력의 가장자리는 "자동 최적화된" 결과만큼 깔끔해 보이지 않습니다. 사실입니다. 다만 그 깔끔함은 정보와 맞바꾼 것이고, 정보는 돌아오지 않습니다.
3단계 모델, 용량이 사는 것
모델은 브라우저로 내려받으므로 용량이 곧 제약입니다.
단계 | 모델 | 용량 | 포지션 |
|---|---|---|---|
빠름 | ISNet INT8 | 약 42 MB | 범용 피사체 인식 |
프로 | BEN2 FP16 | 약 219 MB | 머리카락, 반투명 재질, 복잡한 가장자리 |
최상 | BiRefNet HR-Matting FP16 | 약 447 MB | 2048px, 머리카락·얇은 천·유리 |
설명을 다시 보세요. 상위 두 단계의 설명은 전부 가장자리 이야기입니다. 머리카락, 얇은 천, 유리, 반투명. "피사체 인식이 더 정확하다"는 말은 한 줄도 없습니다.
이게 선택 기준 그 자체입니다. 병목은 피사체 인식이 아니라 가장자리입니다.
두 단계를 실제로 돌린 수치입니다.
빠름 | 프로 | |
|---|---|---|
실제 다운로드 | 42.2 MB | 209.0 MB |
백엔드 | WebGPU | WebGPU |
POST 요청 수 | 0 | 0 |
모델은 브라우저에 캐시되어 같은 단계는 다시 받지 않습니다. 다만 시크릿 창을 열거나 사이트 데이터를 지우면 다시 받아야 합니다. 실측할 때 새 컨텍스트였는데, 앞서 받아둔 단계의 "다운로드됨" 표시가 사라져 있었습니다.
즉 "한 번 받으면 계속 쓴다"는 전제는 여러 기기를 쓰거나 캐시를 자주 지우는 사용자에게는 성립하지 않습니다.
모델을 아예 쓰지 않는 경로
배경이 균일하면 모델이 필요 없습니다.
연결성 기반 경로가 있습니다. 캔버스 네 변에서 연결되어 들어오는 배경과 비슷한 색만 지웁니다. "흰색에 가까운 픽셀을 전부 지운다"가 아닙니다. 이 차이는 실무적입니다. 피사체 위에 얹힌 흰 글자는 남습니다. 피사체에 둘러싸여 바깥 배경과 연결되어 있지 않으니까요.
옅은 회백색 배경의 스크린샷으로 시험해보니 자동 판별된 배경색이 #F2F6F5, 순백이 아니었습니다. 가정하지 않고 실제로 샘플링한다는 뜻이고, 허용치를 조정하는 왕복이 줄어듭니다.
이 경로는 두 번 돌렸는데 POST 0, 모델 파일 다운로드도 0. 몇 초면 끝납니다.
마스크가 손질됐는지 확인하는 법
샘플 세 종류면 몇 분 안에 판단됩니다.
피사체 안에 배경과 같은 색이 있는 제품 이미지. 흰 배경에 흰 글자가 얹힌 제품. 알고리즘 경로로 처리해 피사체에 구멍이 뚫리는지 봅니다. 뚫린다면 연결성 판정이 아니라 색 임계값 처리입니다.
머리카락이나 털. 결과를 어두운 배경에 합성해 봅니다. 자동 축소된 가장자리는 어두운 배경에서 바로 티가 납니다.
반투명한 것. 유리, 얇은 천, 연기. 마스크가 이진화됐다면 사라지거나 불투명한 덩어리가 됩니다.
미공개 제품 이미지나 클라이언트 소재를 다룬다면 하나 더. 개발자 도구 Network를 열고 POST로 필터링한 뒤 한 장 처리해 보세요. 5초면 되고 어떤 개인정보 정책보다 직접적입니다.
ImgIng(imging.ai) 개발에 참여하고 있습니다. 위 수치는 이 글을 쓰면서 실제로 측정한 값입니다.
