Rembg ist ein Tool zum Entfernen von Bildhintergründen.
Wenn Ihnen dieses Projekt geholfen hat, denken Sie bitte über eine Spende nach.
PhotoRoom-API zum Entfernen des Hintergrunds https://photoroom.com/api Schnelle und genaue Hintergrundentfernungs-API |
python: >3.7, <3.13
Wenn Sie onnxruntime
bereits installiert haben, installieren Sie einfach rembg
:
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
Andernfalls installieren Sie rembg
mit expliziter CPU/GPU-Unterstützung.
CPU-Unterstützung:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
GPU-Unterstützung:
Zunächst müssen Sie prüfen, ob Ihr System onnxruntime-gpu
unterstützt.
Gehen Sie zu https://onnxruntime.ai und überprüfen Sie die Installationsmatrix.
Wenn ja, führen Sie einfach Folgendes aus:
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
Nach dem Installationsschritt können Sie rembg verwenden, indem Sie einfach rembg
in Ihr Terminalfenster eingeben.
Der rembg
-Befehl verfügt über 4 Unterbefehle, einen für jeden Eingabetyp:
i
für Dateienp
für Ordners
für http-Serverb
für RGB24-Pixel-BinärstromSie können Hilfe zum Hauptbefehl erhalten, indem Sie Folgendes verwenden:
rembg --help
Außerdem zu allen Unterbefehlen, die Folgendes verwenden:
rembg < COMMAND > --help
i
Wird verwendet, wenn Eingabe und Ausgabe Dateien sind.
Entfernen Sie den Hintergrund von einem Remote-Bild
curl -s http://input.png | rembg i > output.png
Entfernen Sie den Hintergrund aus einer lokalen Datei
rembg i path/to/input.png path/to/output.png
Entfernen Sie den Hintergrund und geben Sie ein Modell an
rembg i -m u2netp path/to/input.png path/to/output.png
Entfernen Sie den Hintergrund und geben Sie nur die Maske zurück
rembg i -om path/to/input.png path/to/output.png
Entfernen Sie den Hintergrund, indem Sie eine Alpha-Mattierung anwenden
rembg i -a path/to/input.png path/to/output.png
Übergabe zusätzlicher Parameter
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
Wird verwendet, wenn Eingabe und Ausgabe Ordner sind.
Entfernen Sie den Hintergrund von allen Bildern in einem Ordner
rembg p path/to/input path/to/output
Wie zuvor, aber achten Sie auf neue/geänderte Dateien, die verarbeitet werden müssen
rembg p -w path/to/input path/to/output
s
Wird zum Starten des HTTP-Servers verwendet.
rembg s --host 0.0.0.0 --port 7000 --log_level info
Um die vollständige Endpunktdokumentation anzuzeigen, gehen Sie zu: http://localhost:7000/api
.
Entfernen Sie den Hintergrund von einer Bild-URL
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
Entfernen Sie den Hintergrund von einem hochgeladenen Bild
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
Verarbeiten Sie eine Folge von RGB24-Bildern von stdin. Dies ist für die Verwendung mit einem anderen Programm wie FFMPEG gedacht, das RGB24-Pixeldaten an stdout ausgibt, die in die stdin dieses Programms weitergeleitet werden, obwohl nichts Sie daran hindert, Bilder manuell in stdin einzugeben.
rembg b image_width image_height -o output_specifier
Argumente:
output-%03u.png
lautet, werden die Ausgabedateien output-000.png
, output-001.png
, output-002.png
“ usw. genannt im PNG-Format gespeichert, unabhängig von der angegebenen Erweiterung. Sie können es weglassen, um Ergebnisse nach stdout zu schreiben.Beispielverwendung mit FFMPEG:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
Die Breiten- und Höhenwerte müssen mit den Abmessungen der Ausgabebilder von FFMPEG übereinstimmen. Beachten Sie, dass für FFMPEG der Teil „ -an -f rawvideo -pix_fmt rgb24 pipe:1
“ erforderlich ist, damit das Ganze funktioniert.
Eingabe und Ausgabe als Bytes
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 )
Eingabe und Ausgabe als PIL-Bild
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 )
Eingabe und Ausgabe als Numpy-Array
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 )
Ausgabe als Bytes erzwingen
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 )
So iterieren Sie auf performatische Weise über Dateien
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 )
Eine vollständige Liste mit Beispielen zur Verwendung von rembg finden Sie auf der Beispielseite.
Ersetzen Sie einfach den rembg
Befehl durch docker run danielgatis/rembg
.
Versuchen Sie Folgendes:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
Alle Modelle werden heruntergeladen und im Benutzer-Home-Ordner im .u2net
-Verzeichnis gespeichert.
Die verfügbaren Modelle sind:
Wenn Sie weitere fein abgestimmte Modelle benötigen, versuchen Sie Folgendes: #193 (Kommentar)
Diese Bibliothek hängt direkt von der onnxruntime-Bibliothek ab. Daher können wir die Python-Version nur aktualisieren, wenn onnxruntime Unterstützung für diese bestimmte Version bietet.
Hat Ihnen einige meiner Arbeiten gefallen? Kauf mir einen Kaffee (oder eher ein Bier)
Copyright (c) 2020-heute Daniel Gatis
Lizenziert unter MIT-Lizenz