Rembg는 이미지 배경을 제거하는 도구입니다.
이 프로젝트가 도움이 되었다면 기부를 고려해 보세요.
PhotoRoom 배경 제거 API https://photoroom.com/api 빠르고 정확한 배경 제거 API |
python: >3.7, <3.13
onnxruntime
이미 설치되어 있는 경우 rembg
설치하면 됩니다.
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
그렇지 않으면 명시적인 CPU/GPU 지원을 사용하여 rembg
설치하십시오.
CPU 지원:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
GPU 지원:
우선, 시스템이 onnxruntime-gpu
지원하는지 확인해야 합니다.
https://onnxruntime.ai로 이동하여 설치 매트릭스를 확인하세요.
그렇다면 다음을 실행하세요.
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
설치 단계 후에는 터미널 창에 rembg
입력하기만 하면 rembg를 사용할 수 있습니다.
rembg
명령에는 각 입력 유형마다 하나씩 총 4개의 하위 명령이 있습니다.
i
파일을 위해p
폴더의 경우s
b
RGB24 픽셀 바이너리 스트림의 경우다음을 사용하여 기본 명령에 대한 도움말을 얻을 수 있습니다.
rembg --help
또한 다음을 사용하는 모든 하위 명령에 대해 설명합니다.
rembg < COMMAND > --help
i
기억해입력과 출력이 파일인 경우에 사용됩니다.
원격 이미지에서 배경 제거
curl -s http://input.png | rembg i > output.png
로컬 파일에서 배경 제거
rembg i path/to/input.png path/to/output.png
모델을 지정하는 배경 제거
rembg i -m u2netp path/to/input.png path/to/output.png
마스크만 반환하여 배경을 제거합니다.
rembg i -om path/to/input.png path/to/output.png
알파 매트를 적용하여 배경을 제거합니다.
rembg i -a path/to/input.png path/to/output.png
추가 매개변수 전달
SAM example
rembg i -m sam -x ' { "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] } ' examples/plants-1.jpg examples/plants-1.out.png
Custom model example
rembg i -m u2net_custom -x ' {"model_path": "~/.u2net/u2net.onnx"} ' path/to/input.png path/to/output.png
p
입력과 출력이 폴더인 경우에 사용됩니다.
폴더의 모든 이미지에서 배경 제거
rembg p path/to/input path/to/output
이전과 동일하지만 처리할 새 파일/변경된 파일을 감시합니다.
rembg p -w path/to/input path/to/output
s
http 서버를 시작하는 데 사용됩니다.
rembg s --host 0.0.0.0 --port 7000 --log_level info
전체 엔드포인트 설명서를 보려면 http://localhost:7000/api
로 이동하세요.
이미지 URL에서 배경 제거
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
업로드된 이미지에서 배경 제거
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
stdin에서 일련의 RGB24 이미지를 처리합니다. 이것은 RGB24 픽셀 데이터를 stdout으로 출력하는 FFMPEG와 같은 다른 프로그램과 함께 사용하기 위한 것입니다. stdout은 이 프로그램의 stdin으로 파이프되지만 stdin에서 이미지를 수동으로 입력하는 것을 방해하는 것은 없습니다.
rembg b image_width image_height -o output_specifier
인수:
output-%03u.png
인 경우 출력 파일 이름은 output-000.png
, output-001.png
, output-002.png
등으로 지정됩니다. 출력 파일은 다음과 같습니다. 지정된 확장자와 관계없이 PNG 형식으로 저장됩니다. 결과를 stdout에 쓰려면 이를 생략할 수 있습니다.FFMPEG의 사용 예:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
너비와 높이 값은 FFMPEG의 출력 이미지 크기와 일치해야 합니다. FFMPEG의 경우 전체 작업을 수행하려면 " -an -f rawvideo -pix_fmt rgb24 pipe:1
" 부분이 필요합니다.
바이트로 입력 및 출력
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input )
o . write ( output )
PIL 이미지로 입력 및 출력
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image . open ( input_path )
output = remove ( input )
output . save ( output_path )
numpy 배열로 입력 및 출력
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2 . imread ( input_path )
output = remove ( input )
cv2 . imwrite ( output_path , output )
강제로 바이트로 출력
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , force_return_bytes = True )
o . write ( output )
수행적인 방식으로 파일을 반복하는 방법
from pathlib import Path
from rembg import remove , new_session
session = new_session ()
for file in Path ( 'path/to/folder' ). glob ( '*.png' ):
input_path = str ( file )
output_path = str ( file . parent / ( file . stem + ".out.png" ))
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , session = session )
o . write ( output )
rembg 사용 방법에 대한 전체 예제 목록을 보려면 예제 페이지로 이동하세요.
docker run danielgatis/rembg
에 대한 rembg
명령을 바꾸십시오.
이것을 시도하십시오:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
모든 모델은 .u2net
디렉토리의 사용자 홈 폴더에 다운로드되어 저장됩니다.
사용 가능한 모델은 다음과 같습니다.
더 세밀하게 조정된 모델이 필요한 경우 다음을 시도하십시오: #193(댓글)
이 라이브러리는 onnxruntime 라이브러리에 직접적으로 의존합니다. 따라서 onnxruntime이 특정 버전에 대한 지원을 제공하는 경우에만 Python 버전을 업데이트할 수 있습니다.
내 작품이 마음에 들었나요? 나에게 커피를 사주세요 (아니면 맥주를 사주세요)
저작권 (c) 2020-현재 Daniel Gatis
MIT 라이선스에 따라 라이선스가 부여됨