Back to Rembg

How to use the remove function

USAGE.md

2.0.752.3 KB
Original Source

How to use the remove function

Load the Image

python
from PIL import Image
from rembg import new_session, remove

input_path = 'input.png'
output_path = 'output.png'

input = Image.open(input_path)

Removing the background

Without additional arguments

This defaults to the u2net model.

python
output = remove(input)
output.save(output_path)

With a specific model

You can use the new_session function to create a session with a specific model.

python
model_name = "isnet-general-use"
session = new_session(model_name)
output = remove(input, session=session)

For processing multiple image files

By default, remove initialises a new session every call. This can be a large bottleneck if you're having to process multiple images. Initialise a session and pass it in to the remove function for fast multi-image support

python
model_name = "unet"
rembg_session = new_session(model_name)
for img in images:
    output = remove(img, session=rembg_session)

With alpha matting

Alpha matting is a post processing step that can be used to improve the quality of the output.

python
output = remove(input, alpha_matting=True, alpha_matting_foreground_threshold=270,alpha_matting_background_threshold=20, alpha_matting_erode_size=11)

Only mask

If you only want the mask, you can use the only_mask argument.

python
output = remove(input, only_mask=True)

With post processing

You can use the post_process_mask argument to post process the mask to get better results.

python
output = remove(input, post_process_mask=True)

Replacing the background color

You can use the bgcolor argument to replace the background color.

python
output = remove(input, bgcolor=(255, 255, 255, 255))

Using input points

You can use the input_points and input_labels arguments to specify the points that should be used for the masks. This only works with the sam model.

python
import numpy as np
# Define the points and labels
# The points are defined as [y, x]
input_points = np.array([[400, 350], [700, 400], [200, 400]])
input_labels = np.array([1, 1, 2])

image = remove(image,session=session, input_points=input_points, input_labels=input_labels)

Save the image

python
output.save(output_path)