rembg 完整上手指南:从零开始,一条命令跑出透明背景
【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg
rembg 是一个开源的图像背景移除工具:给它一张带背景的 JPG,它还你一张透明背景的 PNG。命令行、Python 库、HTTP 服务三种形态任选,新手能快速出图,开发者可以直接集成进自己的项目。
5 分钟上手:一条安装命令 + 一条出图命令
本节解决"最快看到效果"的问题。
先安装 CPU 版(含命令行工具,要求 Python 3.11–3.13,即>=3.11, <3.14):
pip install "rembg[cpu,cli]"用仓库自带的示例图跑一下:
rembg i examples/car-2.jpg output.png原图与抠图结果对比:
首次运行会自动把默认模型 u2net 下载到~/.u2net/目录,之后再运行就不需要下载了。跑通这一条命令,安装就算完成了。
路线选择:命令行、Python 集成、HTTP 服务
本节解决"我该用哪种形态"的问题。三条路线能力相同,差别只在调用方式:
| 路线 | 适合谁 | 入口 |
|---|---|---|
| 命令行 | 一次性任务、批量处理、不想写代码 | rembg i/rembg p |
| Python 库 | 已有图像处理流程,想把抠图嵌进去 | from rembg import remove |
| HTTP 服务 | 多端或远程调用、容器化部署 | rembg s |
命令行:单文件和批量最省事
i处理单个文件,p处理整个文件夹,b处理 RGB24 像素流(配 FFmpeg 用),s起 HTTP 服务。最常用的是这几个:
rembg i -m u2netp input.png output.png # 指定模型 rembg i -a input.png output.png # 启用 Alpha Matting 优化边缘 rembg p -w ./in ./out # 监听文件夹,自动处理新文件省略输出路径时,结果会写为<文件名>.out.png放在输入旁边。参数细节看rembg i --help。
Python 库:嵌进现有流水线
remove接受 bytes、PIL Image、numpy array,返回同类型。最简用法:
from PIL import Image from rembg import remove img = Image.open("input.png") remove(img).save("output.png")批量处理时复用会话是关键——remove每次调用默认新建会话,重复加载模型是主要瓶颈:
from rembg import new_session, remove session = new_session("u2net")之后把session传给每次remove(..., session=session)即可。换模型、Alpha Matting、只出掩码等写法见 USAGE.md。
HTTP 服务:一次部署多处调用
启动后访问http://localhost:7000/api就是完整的 API 文档(FastAPI 自带):
rembg s --host 0.0.0.0 --port 7000 --log_level info两种调用方式:传 URL,或上传文件。
curl -s -F file=@input.jpg "http://localhost:7000/api/remove" -o output.png查询参数里可以带model、a(Alpha Matting)等,不传时默认用 u2net 模型。
rembg 模型选择:按场景对号入座
本节解决"这么多模型我该装哪个"的问题。所有模型首次使用时自动下载到~/.u2net/,也可以用rembg d <模型名>提前下载。按你遇到的场景选:
- 普通照片(人、车、动物、商品)→ 直接用默认的
u2net,不传-m就是它。想要体积更小的同类型模型,选silueta(43Mb)。 - 人像特写,尤其要发丝边缘→
birefnet-portrait,为单人像预训练;老一点的替代是u2net_human_seg。 - 动漫/二次元角色→
isnet-anime,动漫角色专用的高精度分割。
- 精度要求高的商用图→
birefnet-general,BiRefNet 系列中精度最高的通用模型;机器带不动时换轻量版birefnet-general-lite。 - 配置低或图量大→
u2netp,u2net 的轻量版;再配合后文的会话复用和OMP_NUM_THREADS,速度能上一个台阶。
rembg 部署:Docker 起服务并验证
本节解决"怎么跑在生产环境"的问题。CPU 版官方镜像约 1.6GB,并且构建时已预下载 u2net 模型(见 Dockerfile),所以离线也能跑默认模型:
docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png要长期对外提供 rembg API,用 nohup 把服务挂后台:
nohup rembg s --host 0.0.0.0 --port 7000 --log_level info > rembg.log 2>&1 &验证服务是否可用,发一张真实请求,能拿到 PNG 就说明通了:
curl -s -F file=@input.jpg "http://localhost:7000/api/remove" -o output.png也可以直接改仓库里的 docker-compose.yml:它默认command: ["s"],端口由.env里的PUBLIC_PORT控制(默认 7000),REPLICAS_COUNT控制副本数。
rembg 避坑清单:下载失败、GPU 不生效、速度慢
本节解决"跑起来之后不对劲"的常见问题,每条按现象→原因→解决。
- 现象:首次运行卡在模型下载或失败→ 原因:模型体积大且从网络下载,网络不稳 → 解决:提前用
rembg d u2net预下载,或手动下载 .onnx 放入~/.u2net/;想换存放目录设U2NET_HOME环境变量。 - 现象:装了
rembg[gpu]但速度没变化→ 原因:onnxruntime-gpu需要匹配 CUDA 和 cuDNN 版本,NVIDIA 机器还可能需要cudnn-devel→ 解决:对照 onnxruntime 官方安装矩阵确认版本(仓库里有一张截图 onnxruntime-installation-matrix.png),不满足就退回rembg[cpu],功能不受影响。 - 现象:批量处理慢→ 原因:每张图都新建会话、重复加载模型 → 解决:用
new_session()建一次会话反复传;CPU 推理可用OMP_NUM_THREADS环境变量调 ONNX Runtime 线程数。 - 现象:边缘有白边、碎边→ 原因:掩码精度不够 → 解决:命令行加
-a启用 Alpha Matting,Python 里用post_process_mask=True做掩码后处理。 - 现象:自己改过的 .onnx 被删除、重新下载→ 原因:rembg 会做哈希校验,校验不过就重下 → 解决:设
MODEL_CHECKSUM_DISABLED=1,自定义模型文件就不会被覆盖。 - 现象:HTTP 服务空闲时 CPU 占用偏高→ 原因:默认带了 Gradio 图形界面 → 解决:启动时加
--no-ui,见 rembg/commands/s_command.py。
现在你能做什么
本地一条命令出透明图,Python 里把remove接进现有流水线,或用 Docker 在 7000 端口起一个 rembg API 供多个应用调用。更多细节看仓库自带文档:README.md、USAGE.md 和 man/rembg.1。
【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考