
rembg 背景移除完整指南从安装、抠图到生产部署【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg电商商品图要抠图、证件照要换底色、视频流水线要逐帧去背景——这些需求落到底层都是同一个动作把主体从背景里分离出来。rembg 就是专门做这件事的开源背景移除抠图工具一条命令、几行 Python 或一个 HTTP 接口都能出结果。本文带你走通安装、批量处理、模型选型、服务化和 Docker 部署的完整链路。项目定位一句话rembg 是一个支持 10 预训练模型的 Python 抠图工具同时提供 CLI、Python 库、HTTP 服务器、Docker 容器四种出口。能力面说明模型覆盖内置 u2net、isnet、birefnet、sam 等 10 预训练模型按场景切换输入形态bytes、PIL Image、numpy array 均可直接传入边缘质量支持 Alpha Matting 与掩码后处理处理毛发、半透明边缘运行形态命令行、脚本内嵌、HTTP 服务、容器化四条路线任选效率设计会话session复用机制批处理时模型只加载一次 三步跑通第一次抠图rembg 要求 Python3.10, 3.14。最省事的装法是库 CLI 一起装pip install rembg[cpu,cli]然后处理第一张图默认使用 u2net 模型模型文件会自动下载到~/.u2net/rembg i examples/car-2.jpg examples/car-2.out.png✅ 跑通后你会拿到一张带透明通道的 PNG。核心逻辑都在 rembg/bg.py 的remove函数里后续所有形态CLI、服务、库调用的都是它。四种入口怎么选同一个功能四种接法按你的场景对号入座使用形态适合谁入口CLI一次性处理、写 shell 脚本的人rembg i in.png out.pngPython 库抠图只是自己系统里一个环节from rembg import removeHTTP 服务多端共享、Web/移动端调接口rembg s --port 7000Docker不想污染本机 Python 环境、要容器化上线docker run danielgatis/rembgGPU 环境把[cpu]换成[gpu]NVIDIA/CUDA或[rocm]AMD详见 pyproject.toml 中的 extras 定义。深入用法批处理与服务化两条线批处理文件夹与视频流CLI 的p子命令处理整个文件夹加-w变成监听模式新文件落盘即处理rembg p ./in ./out # 遍历文件夹 rembg p -w ./in ./out # 监听模式持续消费新文件在 Python 侧批处理的关键是会话复用——new_session只建一次避免每张图重复加载模型from pathlib import Path from rembg import new_session, remove session new_session(u2net) # 模型只加载一次 for f in Path(in).glob(*.png): Path(out).join_path(f.name).write_bytes(remove(f.read_bytes(), sessionsession))视频帧这种 RGB24 二进制流用b子命令接典型玩法是挂在 FFmpeg 后面逐帧抠图ffmpeg -i in.mp4 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o out/f-%03d.png 服务化一个 FastAPI 接口s子命令把 rembg 起成 HTTP 服务接口文档在http://localhost:7000/api实现见 rembg/commands/s_command.pyrembg s --host 0.0.0.0 --port 7000 --log_level info调用侧两种姿势——传 URL 或传文件参数模型、Alpha Matting 等以 query/form 形式附带curl -s http://localhost:7000/api/remove?urlhttp://example.com/in.png -o out.png curl -s -F filein.jpg -F modelu2net -F atrue http://localhost:7000/api/remove -o out.png 按场景选模型模型注册在 rembg/sessions/ 下常用模型的取舍如下模型体积适用场景u2net176MB通用精度与速度均衡默认选择u2netp4.7MB轻量、大批量、资源受限isnet-general-use104MB通用高质量分割isnet-anime104MB动漫角色u2net_human_seg—人像birefnet-general175MB高精度通用birefnet-general-lite45MB移动端、轻量高精度sam编码器解码器交互式点提示分割决策建议就两条拿不准就用 u2net 起步追轻量换 u2netp 或 birefnet-general-lite需要人点提示精修就上 sam通过-x传sam_prompt。 生产化部署容器上线 性能调优Docker 是最短的生产路径。CPU 场景直接用官方镜像挂载输入输出目录即可docker run -v $(pwd)/input:/rembg danielgatis/rembg i input.png output/output.pngNVIDIA GPU 场景用仓库自带的 Dockerfile_nvidia_cuda_cudnn_gpu 构建docker build -t rembg-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu . docker run --rm -it --gpus all -v $PWD:/rembg rembg-gpu i -m birefnet-general in.png out.png要常驻服务仓库已提供 docker-compose.yml核心就是把s命令跑在容器里、映射 7000 端口services: app: build: . command: [s] ports: - 7000:7000docker-compose up -d之后7000 端口即是可对外调用的抠图 API。⚡调到能用主要抓三件事会话复用服务与批处理都用new_session建好的 session 传参模型只加载一次这是最大的一档提速内存大批量处理时别一次性把图片全部读进内存按批消费并周期性gc.collect()回收重试对偶发异常加指数退避重试等待时间随次数递增失败到上限再抛出。⚠️ 避坑手册1. 模型下载失败/很慢原因默认从网络拉取到~/.u2net/网络受限环境会卡住。 解法手动下载模型文件放入~/.u2net/或部署机预置模型目录。2. GPU 加速不生效原因CUDA/cuDNN 版本与 onnxruntime-gpu 不匹配。 解法对照官方 onnxruntime 兼容性矩阵核对版本确认装的是onnxruntime-gpu而非onnxruntime实在不行退回[cpu]后端功能不受影响。3. 单图处理慢原因每次调用都新建会话加载模型或默认模型偏重。 解法复用 session高吞吐场景换 u2netp / birefnet-general-lite有卡就上 GPU。4. 边缘毛糙、发丝粘连原因默认掩码粒度粗。 解法启用 Alpha MattingCLI 加-a库传alpha_mattingTrue再按画面微调af前景阈值、ab背景阈值、ae侵蚀尺寸。5. Python 版本装不上原因rembg 要求 Python3.10, 3.14。 解法确认python --version在区间内必要时用虚拟环境隔离。收尾上线前最后核对一遍Python 版本在 3.10–3.13、onnxruntime 后端与硬件匹配、模型文件就位、磁盘预留 1–2GB、内存建议 4GB、日志与重试机制已配好——这六项齐了服务基本可以打生产。rembg 把抠图从一堆调参脚本压缩成了一行命令、一个函数或一个接口选对模型、接对出口剩下的就是量。你在部署或模型选型上踩过什么坑欢迎在评论区聊聊。【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考