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
В противном случае установите rembg
с явной поддержкой CPU/GPU.
Поддержка процессора:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
Поддержка графического процессора:
Прежде всего, вам необходимо проверить, поддерживает ли ваша система 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
для http-сервера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
Обработка последовательности изображений RGB24 из стандартного ввода. Это предназначено для использования с другой программой, такой как FFMPEG, которая выводит данные пикселей RGB24 на стандартный вывод, который передается на стандартный ввод этой программы, хотя ничто не мешает вам вручную вводить изображения на стандартный ввод.
rembg b image_width image_height -o output_specifier
Аргументы:
output-%03u.png
, то выходные файлы будут называться output-000.png
, output-001.png
, output-002.png
и т. д. Выходные файлы будут иметь вид сохраняется в формате PNG независимо от указанного расширения. Вы можете опустить его, чтобы записать результаты в стандартный вывод.Пример использования с 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, перейдите на страницу примеров.
Просто замените команду rembg
на docker run danielgatis/rembg
.
Попробуйте это:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
Все модели загружаются и сохраняются в домашней папке пользователя в каталоге .u2net
.
Доступные модели:
Если вам нужны более точно настроенные модели, попробуйте это: #193 (комментарий)
Эта библиотека напрямую зависит от библиотеки onnxruntime. Таким образом, мы можем обновить версию Python только в том случае, если onnxruntime обеспечивает поддержку этой конкретной версии.
Понравились некоторые из моих работ? Купи мне кофе (или, скорее, пива)
Copyright (c) 2020 – настоящее время Дэниел Гатис
Лицензия MIT