Skip to main content

Background removal as a GPU-accelerated API

Project description

BiRefNet Background Removal Service

GPU-accelerated background removal as an HTTP API. Two pipelines:

Served with LitServe, packaged for the NVIDIA container runtime.

Requirements

  • NVIDIA GPU + driver, Docker, and the nvidia container runtime
  • ~5 GB free disk for model weights (downloaded on first use, cached in a volume)

Quick start

make build      # build the Docker image
make run        # start the service on :8000 (GPU)
make logs       # watch startup — first run downloads model weights
make test       # send test.jpg, save output.png

make test waits for /health before sending, so the first call may block while a model downloads and loads.

Web UI

Open http://localhost:8000/ — a single-page test app (handy over SSH):

  • Auto remove — pick a model variant + resolution.
  • Prompt segment — type what to keep (e.g. the dog), tune the GroundingDINO box / text thresholds.

Both modes support a transparency checkerboard preview, click-to-zoom lightbox, optional crop-to-subject, and download.

Keyboard shortcuts

The UI is fully keyboard-drivable. Shortcuts are ignored while typing in a field and while Ctrl/Cmd/Alt is held.

Key Action
B Toggle the controls sidebar
U Open the file picker to upload an image
I / O Show the input / output image
F / Z Open the zoom view for the visible image
S Save (download PNG), once a result exists

In the zoom view:

Key Action
F / Z / Esc Close the zoom view
+ / - Zoom in / out (1×–8×)
0 Reset zoom & pan
Arrows or H J K L Pan (while zoomed past 1×)

API

POST /predict — automatic background removal

{
  "image": "<base64 image bytes>",   // required
  "model": "HR",                     // general|HR|portrait|matting|lite|rmbg2
  "resolution": 2048,                // inference resolution (×32)
  "background": "alpha",             // alpha|white|black|gray|green|blue|red
  "mask_blur": 0,                    // Gaussian blur radius on mask edges
  "crop": false,                     // crop to the foreground bounding box
  "crop_margin": 0.0,                // crop margin in inches (uses image DPI)
  "return_mask": false               // include the raw mask in the response
}

POST /segment — prompt-conditioned segmentation

{
  "image": "<base64 image bytes>",   // required
  "prompt": "the dog",               // required — object(s) to keep
  "box_threshold": 0.3,              // GroundingDINO detection threshold
  "text_threshold": 0.25,
  "background": "alpha",
  "mask_blur": 0,
  "crop": false,
  "crop_margin": 0.0
}

Response (both): image (base64 PNG), format, width, height, plus model/resolution (/predict) or detections/prompt (/segment).

GET /health returns 200 when the service is ready.

CLI

python3 scripts/client.py --input photo.jpg --output cut.png --model HR --resolution 2048 --crop
python3 scripts/client.py --input photo.jpg --output dog.png --prompt "the dog" --crop

Configuration (environment variables)

Variable Default Purpose
PORT 8000 HTTP port
BIREFNET_MODEL general Default Auto variant
BIREFNET_RESOLUTION 1024 Default Auto resolution
DINO_MODEL IDEA-Research/grounding-dino-tiny GroundingDINO checkpoint
SAM_MODEL facebook/sam-vit-large SAM checkpoint
REQUEST_TIMEOUT 120 Per-request timeout (seconds)

Local development (no Docker)

Requires a local CUDA-capable PyTorch environment.

make dev        # uv sync + run the server locally

Layout

src/rmbg_as_a_service/model.py           BiRefNet / RMBG-2.0 wrapper + compositing
src/rmbg_as_a_service/prompt_segment.py  GroundingDINO + SAM pipeline
src/rmbg_as_a_service/server.py          LitServe /predict + /segment + web UI
src/rmbg_as_a_service/static/            web UI (index.html + styles.css)
scripts/client.py                       stdlib-only test client
Dockerfile / compose.yml                CUDA image + nvidia runtime
Makefile                                build / run / test shortcuts

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rmbg_as_a_service-0.0.3.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rmbg_as_a_service-0.0.3-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file rmbg_as_a_service-0.0.3.tar.gz.

File metadata

  • Download URL: rmbg_as_a_service-0.0.3.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rmbg_as_a_service-0.0.3.tar.gz
Algorithm Hash digest
SHA256 7e4f919351f62d5099d010cc32e135b31f7e79d59bbb50e5579c8a7e82da70cb
MD5 340d51decd79703efb77668346556944
BLAKE2b-256 705303f446a84f5fc7a5e33b3b0e38fe16c687fe20745a1ccc8f9ec204190600

See more details on using hashes here.

File details

Details for the file rmbg_as_a_service-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: rmbg_as_a_service-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rmbg_as_a_service-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 93ffce38dd5f8494522a3b34063ac6e9c72ae01d8e3b640f8f0fb7fb03c0b0d8
MD5 9d0113ccf3a4e1feac54526fd5574f51
BLAKE2b-256 fe092825695689593ca885e585892d3d60e2eade6735a2781ce00475b46d52e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page