가입 없이 쓰려고 만든 배경 제거 CLI
가입이나 결제 없이 이미지 배경을 지우고 싶어서, rembg를 로컬에서 간단히 사용할 수 있는 Python CLI를 만들고 uv 원라이너로 배포했다.
이미지에서 배경을 지워야 할 때가 있었습니다. 웹에서 제공하는 서비스를 찾아보니 가입해야 하거나 돈을 내야 하는 경우가 많았습니다. 한두 장 처리하려고 계정을 만들고 결제하는 건 싫어서, 그냥 로컬에서 쓸 수 있는 도구를 직접 만들어보기로 했습니다.
그렇게 만든 nobg는 이미지 한 장이나 폴더를 받아 배경이
투명한 이미지로 저장하는 Python CLI입니다. 배경을 분리하는 모델을 직접 만든 것은 아닙니다.
실제 처리는 오픈소스 라이브러리인 rembg가 맡고,
nobg는 제가 로컬에서 반복해서 쓰기 편한 명령과 설치 방법을 그 위에 붙인 도구입니다.
파일 하나부터 폴더 전체까지 같은 명령으로
기본 사용법은 단순합니다.
nobg photo.jpg
명령을 실행하면 원본 옆에 photo_nobg.png를 만듭니다. 파일 대신 디렉터리를 넘겨 여러 이미지를
한꺼번에 처리할 수도 있고, 하위 디렉터리를 재귀적으로 찾거나 출력 경로를 따로 지정할 수도
있습니다. 이미 결과 파일이 있으면 기본적으로 건너뛰고, 여러 장을 처리할 때는 같은 모델 세션을
재사용합니다.
일반적인 사진 외에도 인물이나 애니메이션 이미지에 맞는 모델을 고를 수 있게 했습니다. 경계가 거칠면 alpha matting을 켜고, 투명 배경 대신 지정한 색을 채우거나 마스크만 저장할 수도 있습니다. 지원하는 입력 형식은 JPG, PNG, WebP, BMP, TIFF입니다. 첫 실행에는 선택한 모델을 내려받아야 해서 시간과 디스크 공간이 필요하지만, 이후에는 로컬 캐시를 사용합니다.
배경을 지우는 것보다 설치가 어려웠다
기능 자체는 rembg를 감싼 작은 CLI였지만, 다른 환경에서도 명령 하나로 설치하게 만드는 일은
생각보다 훨씬 어려웠습니다. 처음에는 Homebrew로 배포하려고 formula와 자동화 작업을 만들었습니다.
그런데 이미지와 머신러닝 관련 Python 의존성을 Homebrew 규칙에 맞춰 묶는 과정에서 예상하지 못한
문제가 계속 생겼습니다.
다음에는 PyPI와 pipx 조합으로 방향을 바꿨습니다. 설치 경험은 단순해졌지만 PyPI 게시까지
완료하지 못한 상태에서 문서에 적어둔 명령은 실제로 동작하지 않았습니다. 설치 방법을 여러 개
제공하는 것보다 제가 끝까지 확인할 수 있는 한 가지 경로를 남기는 편이 낫다고 판단했습니다.
결국 GitHub 저장소에서 바로 설치하는 방식으로 정리했습니다. 현재 macOS와 Linux에서는 아래 한
줄을 실행하면, uv가 없는 경우 먼저 설치하고 격리된 환경에 nobg를 추가합니다.
curl -LsSf https://raw.githubusercontent.com/soohanpark/nobg/main/install.sh | sh
이 과정에서도 설치가 끝났다는 메시지는 나왔는데 현재 셸에서 nobg 명령을 찾지 못하는 문제를
직접 겪었습니다. 새로 추가된 실행 경로가 이미 열려 있는 셸에는 반영되지 않았기 때문입니다.
설치 스크립트와 README에 새 터미널을 열거나 uv tool update-shell을 실행하라는 안내를 넣었습니다.
작은 명령 하나를 배포하는 데 Homebrew, PyPI, uv를 차례로 거쳤습니다. 처음에는 배경 제거 기능을
만드는 일이 프로젝트의 대부분일 거라고 생각했는데, 실제로는 설치한 사람이 같은 명령을 실행할 수
있게 만드는 데 더 많은 시간을 썼습니다.
가끔 꺼내 쓰는 보조 도구
현재 공개한 버전은 v0.2.0입니다. CLI의 도움말과 입력 형식 필터링, 기본 출력 경로, 재귀 처리 시의 경로 구성을 단위 테스트로 확인하고, 릴리스 태그에서는 Python 3.11부터 3.13까지 테스트와 패키지 빌드를 실행합니다. 실제 모델이 만든 이미지 품질까지 자동으로 비교하는 테스트는 없습니다.
막상 만들고 나서는 생각보다 자주 사용하고 있지 않습니다. 나중에 보니 macOS에도 이미지 배경을
제거하는 기본 기능이 있었습니다;; 평소에는 그 기능으로 충분하고, 결과가 마음에 들지 않을 때
가끔 nobg를 다시 꺼내 쓰는 정도입니다.
자주 쓰는 도구가 되지는 않았지만, 가입이나 결제 없이 로컬에서 배경을 지우고 싶다는 처음의 목적은 해결했습니다. 동시에 기능이 작은 CLI라도 설치와 배포까지 마무리하는 일은 전혀 작지 않다는 것도 직접 겪었습니다. 지금은 macOS 기본 기능의 결과가 아쉬울 때 선택할 수 있는 보조 도구 하나로 남겨두었습니다.