Rembg
Rembg is a tool to remove images background. That is it.
https://github.com/ecsplendid/rembg-greenscreen ***
*** If you want to remove background from videos try this this fork:Requirements
-
python 3.8 or newer
-
torch and torchvision stable version (https://pytorch.org)
How to install torch/torchvision
Go to https://pytorch.org and scrool down to INSTALL PYTORCH
section and follow the instructions.
For example:
PyTorch Build: Stable (1.7.1)
Your OS: Windows
Package: Pip
Language: Python
CUDA: None
The install cmd is:
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html
Installation
Install it from pypi
pip install rembg
Usage as a cli
Remove the background from a remote image
curl -s http://input.png | rembg > output.png
Remove the background from a local file
rembg -o path/to/output.png path/to/input.png
Remove the background from all images in a folder
rembg -p path/to/input path/to/output
Add a custom model
Copy the custom-model.pth
file to ~/.u2net
and run:
curl -s http://input.png | rembg -m custom-model > output.png
Usage as a server
Start the server
rembg-server
Open your browser to
http://localhost:5000?url=http://image.png
Also you can send the file as a FormData (multipart/form-data):
<form action="http://localhost:5000" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="upload"/>
</form>
Usage as a library
Example 1: Read from stdin and write to stdout
In app.py
import sys
from rembg.bg import remove
sys.stdout.buffer.write(remove(sys.stdin.buffer.read()))
Then run
cat input.png | python app.py > out.png
Example 2: Using PIL
In app.py
from rembg.bg import remove
import numpy as np
import io
from PIL import Image
input_path = 'input.png'
output_path = 'out.png'
# Uncomment the following line if working with trucated image formats (ex. JPEG / JPG)
# ImageFile.LOAD_TRUNCATED_IMAGES = True
f = np.fromfile(input_path)
result = remove(f)
img = Image.open(io.BytesIO(result)).convert("RGBA")
img.save(output_path)
Then run
python app.py
Usage as a docker
First compile with:
docker build . -t rembg
Then run with:
docker run --rm -i rembg <in.png >out.png
Advance usage
Sometimes it is possible to achieve better results by turning on alpha matting. Example:
curl -s http://input.png | rembg -a -ae 15 > output.png
Original | Without alpha matting | With alpha matting (-a -ae 15) |
![]() |
![]() |
![]() |
References
- https://arxiv.org/pdf/2005.09007.pdf
- https://github.com/NathanUA/U-2-Net
- https://github.com/pymatting/pymatting
Buy me a coffee
Liked some of my work? Buy me a coffee (or more likely a beer)
License
Copyright (c) 2020-present Daniel Gatis
Licensed under MIT License