BackgroundRemover — это инструмент командной строки для удаления фона из изображений и видео с использованием искусственного интеллекта, созданный nadermx для поддержки https://BackgroundRemoverAI.com. Если вам интересно, почему это было сделано, прочитайте этот короткий пост в блоге.
питон >= 3.6
python3.6-dev #или какую версию Python вы используете
стабильная версия torch и torchvision (https://pytorch.org)
ffmpeg 4.4+
Чтобы уточнить, вы должны установить как Python, так и любую установленную вами версию Python для разработчиков. ИП; python3.10-dev с python3.10 или python3.8-dev с python3.8
Перейдите на https://pytorch.org, прокрутите вниз до раздела INSTALL PYTORCH
и следуйте инструкциям.
Например:
PyTorch Build: Stable (1.7.1) Your OS: Windows Package: Pip Language: Python CUDA: None
Чтобы установить ffmpeg и python-dev
sudo apt install ffmpeg python3.6-dev
Чтобы установить фоновый ремувер, установите его из pypi.
pip install --upgrade pip pip установить средство удаления фона
Обратите внимание, что при первом запуске программы она проверит, есть ли у вас модели u2net, если нет, она вытащит их из этого репозитория.
Также можно запустить это без установки через pip, просто клонируйте git на локальный компьютер, запустите виртуальную среду, установите требования и запустите.
python -m backgroundremover.cmd.cli -i "video.mp4" -mk -o "output.mov"
и для окон
python.exe -m backgroundremover.cmd.cli -i "video.mp4" -mk -o "output.mov"
git clone https://github.com/nadermx/backgroundremover.gitcd backgroundremover docker build -t bgremover .alias backgroundremover='docker run -it --rm -v "$(pwd):/tmp" bgremover:latest'
Удаление фона из изображения локального файла
backgroundremover -i "/path/to/image.jpeg" -o "output.png"
Иногда можно добиться лучших результатов, включив альфа-матирование. Пример:
backgroundremover -i "/path/to/image.jpeg" -a -ae 15 -o "output.png"
измените модель для разных методов удаления фона между u2netp
, u2net
или u2net_human_seg
backgroundremover -i "/path/to/image.jpeg" -m "u2net_human_seg" -o "output.png"
backgroundremover -i "/path/to/video.mp4" -tv -o "output.mov"
backgroundremover -i "/path/to/video.mp4" -tov "/path/to/videobeoverlayed.mp4" -o "output.mov"
backgroundremover -i "/path/to/video.mp4" -toi "/path/to/videtobeoverlayed.mp4" -o "output.mov"
backgroundremover -i "/path/to/video.mp4" -tg -o "output.gif"
Сделать матовый файл для премьеры
backgroundremover -i "/path/to/video.mp4" -mk -o "output.matte.mp4"
Измените частоту кадров видео (по умолчанию установлено 30).
backgroundremover -i "/path/to/video.mp4" -fr 30 -tv -o "output.mov"
Установить общее количество кадров видео (по умолчанию установлено значение -1, т.е. удаление фона из всего видео)
backgroundremover -i "/path/to/video.mp4" -fl 150 -tv -o "output.mov"
Измените размер пакета графического процессора видео (по умолчанию установлено значение 1).
backgroundremover -i "/path/to/video.mp4" -gb 4 -tv -o "output.mov"
Изменить количество работников, работающих над видео (по умолчанию установлено 1)
backgroundremover -i "/path/to/video.mp4" -wn 4 -tv -o "output.mov"
измените модель для разных методов удаления фона между u2netp
, u2net
или u2net_human_seg
и ограничьте количество кадров до 150.
backgroundremover -i "/path/to/video.mp4" -m "u2net_human_seg" -fl 150 -tv -o "output.mov"
from backgroundremover.bg import remove def remove_bg(src_img_path, out_img_path): model_choices = ["u2net", "u2net_human_seg", "u2netp"] f = open(src_img_path, "rb") data = f.read() img = remove(data, model_name=model_choices[0], alpha_matting=True, alpha_matting_foreground_threshold=240, alpha_matting_background_threshold=10, alpha_matting_erode_structure_size=10, alpha_matting_base_size=1000) f.close() f = open(out_img_path, "wb") f.write(img) f.close()
конвертировать логику видео в изображение, чтобы использовать больше графического процессора при удалении изображения
еще немного почистить документацию
добавить возможность настраивать и отправлять изображения или видео для обратной связи в наборы данных
добавить возможность удаления фона в реальном времени для видео и потоковой передачи
завершить API сервера Flask
добавить возможность использовать другие модели кроме u2net, т.е. свою собственную
другой
Принял
Дайте ссылку на наш проект BackgroundRemoverAI.com или на этот git, сообщив людям, что он вам нравится или вы его используете.
Мы сделали его нашим собственным пакетом после объединения частей других, добавив несколько собственных функций, разместив части в качестве бонусных вопросов для суперпользователя и т. д. А также ранее на hackernews нас просили открыть исходный код части изображения, поэтому решили добавить в видео и немного больше.
https://arxiv.org/pdf/2005.09007.pdf
https://github.com/NathanUA/U-2-Net
https://github.com/pymatting/pymatting
https://github.com/danielgatis/rembg
https://github.com/ecsplendid/rembg-greenscreen
https://superuser.com/questions/1647590/have-ffmpeg-merge-a-matte-key-file-over-the-normal-video-file-removing-the-backg
https://superuser.com/questions/1648680/ffmpeg-alphamerge-two-videos-into-a-gif-with-transparent-background/1649339?noredirect=1#comment2522687_1649339
https://superuser.com/questions/1649817/ffmpeg-overlay-a-video-after-alphamerging-two-others/1649856#1649856
Авторское право (c) 2021 – настоящее время Джонатан Надер
Copyright (c) 2020 – настоящее время Лукас Нестлер
Copyright (c) 2020 – настоящее время Доктор Тим Скарф
Copyright (c) 2020 – настоящее время Дэниел Гатис
Код лицензируется в соответствии с моделями лицензий MIT, лицензируемыми в соответствии с лицензией Apache 2.0.