Image Remove Background (rembg)
Remove image backgrounds with AI matting via rembg. Output is RGBA PNG with transparent background — ready for Godot sprites and UI.
Rules
When this skill applies, read and follow skill-dependency-manager — run scripts as documented, install missing tools into .dependency/.
- Run
remove_background.pythrough therembgmanifest entry (.dependency/rembg/.venv/). Never use hostpython,py,python3, or any interpreter outside.dependency/. - Do not hand-write
rembg i/rembg p— use the bundled script. - Single file only. Pass one image with
--image; directories are not supported. populated: falseforrembgis not a reason to skip. Install first, setpopulated: true, retry the same command.- Pass the input path as-is (chat attachment path,
Downloads/foo.png, project folder, etc.). Output goes to<image-dir>/image-remove-background/by default — no path rewriting. - Never overwrite source files. Output lands in
image-remove-background/or--output.
Setup (first run)
From project root:
.dependency/python/python -m venv .dependency/rembg/.venv
.dependency/rembg/.venv/Scripts/python.exe -m pip install "rembg[cpu]"
GPU (CUDA) — faster processing:
.dependency/rembg/.venv/Scripts/python.exe -m pip install "rembg[gpu]"
Register in .dependency/manifest.json:
"rembg": {
"populated": true,
"bin": ".dependency/rembg/.venv/Scripts/python.exe"
}
Use bin/python on Unix. Model weights download on first run (~hundreds of MB).
Quick Start
Default: create an image-remove-background/ folder beside the input file and write the PNG there (never overwrites sources):
# image/sprites/hero.png → image/sprites/image-remove-background/hero.png
.dependency/rembg/.venv/Scripts/python.exe .ai/image-remove-background/remove_background.py --image image/sprites/hero.png
Custom output path:
.dependency/rembg/.venv/Scripts/python.exe .ai/image-remove-background/remove_background.py --image image/sprites/hero.png -o image/sprites/hero_cutout
Model selection
| Model | Use case |
|---|---|
u2net (default) |
General objects, icons, props |
u2netp |
Faster / lighter; smaller assets |
isnet-general-use |
Higher quality general matting |
birefnet-general |
Best general quality (slower) |
birefnet-portrait |
Characters / portraits |
u2net_human_seg |
Human figures only |
.dependency/rembg/.venv/Scripts/python.exe .ai/image-remove-background/remove_background.py --image image/character.png --model birefnet-portrait
Edge quality (alpha matting)
For hair, fur, or soft edges, enable alpha matting:
.dependency/rembg/.venv/Scripts/python.exe .ai/image-remove-background/remove_background.py --image image/portrait.png --alpha-matting
Defaults
| Option | Default | Notes |
|---|---|---|
--image |
Required | Single supported image file |
| Output | <image-dir>/image-remove-background/<name>.png |
Use -o / --output for custom file or directory |
--model |
u2net |
See table above |
--alpha-matting |
off | Enable for fine edge detail |
--crop |
off | Trim transparent borders after matting |
Supported inputs: .png, .jpg, .jpeg, .webp, .gif, .bmp, .tif, .tiff, .avif, .ico.
Agent Workflow
- Paths — Pass whatever image path the user gives or the chat
<image_files>path directly. Output lands inimage-remove-background/next to that file by default. - One file per run — process one image, verify the result, then repeat for additional files if needed.
- Pick model —
u2netfor generic assets;birefnet-portraitfor characters;birefnet-generalwhen quality matters. - Soft edges — try
--alpha-mattingif halos or jagged hair/fur appear. - Already transparent — script still runs; rembg re-mats from visible RGB. Warn user if source already has alpha.
- Revert — delete output file or
git restoreif needed; sources are never modified.
Agent Notes
- Use the bundled script, not hand-written
rembgCLI commands. - Missing rembg venv → populate
.dependency/per skill-dependency-manager, retry same command. - Do not copy, move, or replace the source with cutout output — tell the user where the output file is.
- Flat white/green/magenta AI backgrounds → prefer image-remove-white-background over rembg.
- Need trim borders after matting → image-trim.
Troubleshooting
| Issue | Fix |
|---|---|
rembg missing |
Follow Setup; update manifest |
Directory passed to --image |
Run once per file; this skill accepts image files only |
| Output already exists | Delete the existing output or choose a different -o path |
| Very slow | Install rembg[gpu]; try --model u2netp |
| Jagged edges | --alpha-matting |
| Wrong subject removed | Switch model; try birefnet-general |
| Leftover background color | Re-run with --alpha-matting; check source contrast |
| OOM on large images | Script auto-downscales inputs above 4096 px longest side |
CLI
Copy-paste commands: cli/image-remove-background.md
Related
- Flat white/green/magenta AI backgrounds: image-remove-white-background (prefer over rembg)
- rembg docs: https://github.com/danielgatis/rembg