
Rembg是一款免费开源AI抠图工具,无需复杂算法,一行代码/一条命令即可生成透明背景图片,支持CPU/NVIDIA/AMD多硬件加速,提供Python SDK、命令行、HTTP接口、Docker四种部署方式,内置20+分割模型适配人像、动漫、服装、高分辨率物体等场景,本文完整覆盖安装、单图/批量处理、API服务、视频帧抠图、容器部署、自定义模型全流程实战代码。
一、项目概述
1.1 项目介绍
Rembg 是一款开源、高性能图像背景去除工具,支持多部署形态,可直接一键去除图片背景生成透明PNG,底层基于各类预训练分割模型(U2Net、IS-Net、BiRefNet、SAM等),适配通用实物、人像、动漫、服装、高分辨率物体等多场景抠图需求。 支持四种使用方式:
项目开源地址:danielgatis/rembg,开源协议 MIT,官方提供商用付费抠图API PhotoRoom。
1.2 环境前置要求
Python 版本限制:>=3.11 且 <3.14,依赖 onnxruntime 系列推理引擎,分CPU、NVIDIA CUDA、AMD ROCm三种硬件后端。


二、安装教程(区分硬件后端)
2.1 CPU通用版本(无独立显卡,新手推荐)
仅作为Python库:
pip install "rembg[cpu]"
库 + 命令行工具一体:
pip install "rembg[cpu,cli]"
2.2 NVIDIA显卡 CUDA GPU加速
# 仅库
pip install "rembg[gpu]"
# 库+命令行
pip install "rembg[gpu,cli]"
若CUDA环境配置失败,可降级使用CPU版本运行。
2.3 AMD显卡 ROCm 后端
需提前部署 onnxruntime-rocm,再执行安装:
pip install "rembg[rocm]"
pip install "rembg[rocm,cli]"
三、命令行 CLI 使用详解
安装cli后终端直接执行 rembg,提供4大核心子命令:i(单图)、p(批量文件夹)、s(HTTP服务)、b(二进制流,适配FFmpeg)。
3.1 通用帮助命令
# 查看全局帮助
rembg –help
# 查看指定子命令帮助,如单图处理
rembg i –help
3.2 rembg i:单张图片抠图
# 指定输入输出路径
rembg i input.png output.png
# 省略输出,自动生成 input.out.png
rembg i input.png
# 管道重定向输出
rembg i input.png > output.png
curl -s http://xxx/input.png | rembg i > output.png
- 指定轻量模型u2netp:
rembg i -m u2netp input.png output.png
- 仅输出分割掩码(无透明前景):
rembg i -om input.png mask.png
- 输出带Alpha遮罩原图:
rembg i -a input.png output.png
- SAM模型点位提示抠图(自定义前景点位):
rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' test.jpg out.png
- 加载本地自定义ONNX模型:
rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' input.png output.png
3.3 rembg p:批量文件夹处理
rembg p ./input_imgs ./output_imgs
rembg p -w ./input_imgs ./output_imgs
3.4 rembg s:启动HTTP抠图API服务
rembg s –host 0.0.0.0 –port 7000 –log_level info
rembg s –no-ui
- 通过图片URL抠图:
curl -s "http://127.0.0.1:7000/api/remove?url=http://xxx/test.png" -o out.png
- 上传本地文件抠图:
curl -s -F file=@./test.jpg "http://127.0.0.1:7000/api/remove" -o out.png
服务内置API文档地址:http://localhost:7000/api
3.5 rembg b:二进制RGB24数据流处理(适配FFmpeg视频帧)
接收原始RGB像素流,适合视频逐帧抠图,参数:宽度、高度、输出文件名格式化模板。 示例:提取视频第10秒画面,逐帧抠图保存
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o output/output-%03u.png
关键参数不能省略:-an -f rawvideo -pix_fmt rgb24 pipe:1,宽高必须和视频分辨率匹配。
四、Python库代码集成(开发常用)
核心入口函数 remove(),支持字节流、PIL图像、OpenCV数组三种输入格式,批量处理推荐复用Session加速推理。
4.1 字节流读写(通用文件读写)
from rembg import remove
# 读取原图字节,抠图后写入透明图
with open("input.png", "rb") as in_file:
input_data = in_file.read()
output_data = remove(input_data)
with open("output.png", "wb") as out_file:
out_file.write(output_data)
4.2 PIL Image 格式(图像处理常用)
from rembg import remove
from PIL import Image
input_img = Image.open("input.png")
output_img = remove(input_img)
output_img.save("output.png")
4.3 OpenCV NumPy数组格式
from rembg import remove
import cv2
input_arr = cv2.imread("input.png")
output_arr = remove(input_arr)
cv2.imwrite("output.png", output_arr)
4.4 强制返回字节流
from rembg import remove
with open("input.png", "rb") as i:
data = i.read()
res = remove(data, force_return_bytes=True)
with open("out.png", "wb") as o:
o.write(res)
4.5 高性能批量处理(复用Session,推荐)
重复创建会话会重复加载模型,大批量图片务必复用session:
from pathlib import Path
from rembg import remove, new_session
# 全局初始化一次模型会话
session = new_session()
# 遍历文件夹所有png图片
img_dir = Path("./batch_input")
for img_file in img_dir.glob("*.png"):
out_path = img_file.parent / f"{img_file.stem}.out.png"
with open(img_file, "rb") as i, open(out_path, "wb") as o:
img_bytes = i.read()
# 复用session,大幅提升批量速度
res_bytes = remove(img_bytes, session=session)
o.write(res_bytes)
五、Docker容器部署
5.1 CPU镜像(开箱即用,无需编译)
直接拉取官方镜像,挂载本地目录 /data 处理图片:
docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png
5.2 NVIDIA CUDA GPU镜像
docker build -t rembg-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .
sudo docker run –rm -it –gpus all -v $PWD:/data rembg-gpu i -m birefnet-general /data/input.png /data/output.png
-v /本地模型路径:/root/.u2net
六、内置模型大全(按需选择)
首次运行自动下载模型至 ~/.u2net/,可通过环境变量修改存储路径,各模型适用场景:
| u2net | 通用物体抠图 | 基础通用模型,效果均衡 |
| u2netp | 通用场景 | U2Net轻量版,速度更快 |
| u2net_human_seg | 纯人像分割 | 专门识别人体轮廓 |
| u2net_cloth_seg | 服装分割 | 区分上衣/下装/全身衣物 |
| Silueta | 通用抠图 | 体积仅43MB,轻量化 |
| isnet-general-use | 通用高精度 | 新一代通用分割模型 |
| isnet-anime | 动漫角色 | 二次元人物抠图专用 |
| sam | 任意物体分割 | 支持点位提示,自定义抠选区域 |
| birefnet-general | 全场景通用 | 综合效果最优 |
| birefnet-general-lite | 通用轻量化 | 平衡速度与精度 |
| birefnet-portrait | 人像肖像 | 人像细节优化 |
| birefnet-dis | 双目图像分割 | 双目视觉专用 |
| birefnet-hrsod | 高分辨率显著物体 | 大图物体检测 |
| birefnet-cod | 隐蔽物体检测 | 低对比度隐藏物体 |
| birefnet-massive | 超大数据集训练 | 复杂场景泛化强 |
| bria-rmbg | 商业级抠图 | BRIA AI开发,细节优秀 |
七、环境变量配置
可通过系统环境变量自定义模型存储、推理行为:






