이미지 배경 제거
이미지를 고르면 결과가 여기에 표시됩니다.
무엇이 어디서 실행되는가
배경을 찾아내는 신경망이 여러분의 브라우저 안에서 돌아갑니다. 사진은 어디로도 전송되지 않습니다. 대신 처음 한 번은 그 신경망과 실행 엔진을 내려받아야 합니다 — 압축 기준으로 엔진 약 3MB, 모델 약 4MB입니다. 한 번 받으면 브라우저가 캐시하므로 두 번째 이미지부터는 기다림이 사라집니다.
방향을 헷갈리지 않는 것이 중요합니다. 사진이 나가는 것이 아니라 프로그램이 들어오는 것입니다. 개발자도구 네트워크 탭을 켜고 사용해 보면, 첫 로딩 이후로는 파일을 고르든 슬라이더를 움직이든 어떤 요청도 발생하지 않는 것을 볼 수 있습니다.
잘 되는 사진과 잘 안 되는 사진
이 페이지에 쓰인 모델은 피사체 하나가 배경과 뚜렷이 구분되는 사진에 강합니다. 인물 한 명, 제품 사진, 동물처럼요. 실제로 돌려 보면 고양이 수염 같은 가는 털도 살아남습니다.
약한 쪽도 분명합니다. 여러 사람이 겹쳐 있는 단체 사진에서 옷과 배경의 밝기가 비슷하면 옷의 일부를 배경으로 오인하는 경우가 있습니다. 유리처럼 비치는 물체, 연기·머리카락 끝처럼 경계 자체가 불분명한 영역도 완벽하지 않습니다. 이건 설정으로 해결되는 문제가 아니라 모델의 한계입니다.
결과가 마음에 들지 않으면 다른 각도로 찍은 사진을 넣어 보는 편이, 같은 사진을 여러 번 시도하는 것보다 낫습니다. 같은 입력에는 항상 같은 결과가 나옵니다.
가장자리 슬라이더가 하는 일
모델이 내놓는 것은 "여기까지가 피사체"라는 선이 아니라, 픽셀마다의확률입니다. 대부분의 픽셀은 0(확실한 배경) 또는 1(확실한 피사체)에 가깝지만, 경계 부근에는 0.4나 0.6 같은 애매한 값이 남습니다. 인물 사진으로 재 보니 그런 중간값이 전체의 약 11%였습니다.
이 중간값을 그대로 투명도로 쓰면 피사체 주변에 반투명한 후광이 남습니다. 슬라이더를 오른쪽으로 옮기면 중간값을 0이나 1 쪽으로 밀어 경계가 또렷해지고, 왼쪽으로 옮기면 원래의 부드러운 값에 가까워집니다. 머리카락처럼 가는 부분은 부드러운 쪽이, 상자나 병처럼 경계가 분명한 물체는 선명한 쪽이 낫습니다.
저장되는 파일
PNG로 저장됩니다. 투명도를 유지해야 하므로 JPG는 선택지가 아닙니다 — JPG에는 투명 채널이 없어서 지운 배경이 검은색이나 흰색으로 채워집니다.
해상도는 넣은 그대로입니다. 워터마크도, 로고도, 무료 사용 횟수도 없습니다. 다만 브라우저가 한 번에 그릴 수 있는 이미지 크기에는 기기별 한계가 있어서, 그 한계를 넘는 사진은 줄여서 처리하고 줄였다는 사실과 실제 크기를 화면에 표시합니다. 조용히 축소해서 내보내지 않습니다.
근거
- U-2-Net — Going Deeper with Nested U-Structure for Salient Object Detection이 페이지가 쓰는 모델(u2netp, 경량판)의 원 저장소. Apache-2.0 라이선스이며 모델 입력은 320×320으로 고정되어 있다
- Qin et al., "U²-Net: Going deeper with nested U-structure for salient object detection", Pattern Recognition 106 (2020)모델 구조와 성능이 보고된 원 논문
- ONNX Runtime Web브라우저에서 모델을 실행하는 런타임. WebAssembly 단일 스레드로 동작시킨다