5 分钟上手 rembg:从本地去背景到 Docker 上线的完整实践

5 分钟上手 rembg:从本地去背景到 Docker 上线的完整实践 5 分钟上手 rembg从本地去背景到 Docker 上线的完整实践【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembgrembg 是一个开源图像背景移除工具给它一张图还你一张透明背景 PNG。本文按真实使用路径走一遍先跑通再接入本地流程最后做成 HTTP 服务并容器化上线。所有命令都经过核实可直接复制。1. 五分钟跑通 rembg 安装与首条命令环境要求 Python 3.11 及以上。CPU 机器一条命令搞定同时装上库和命令行pip install rembg[cpu,cli]NVIDIA 显卡机器先确认 onnxruntime-gpu 与本机 CUDA/cuDNN 版本匹配项目根目录的 onnxruntime-installation-matrix.png 就是这张对照表再把 cpu 换成 gpupip install rembg[gpu,cli]AMD 走rembg[rocm]。装完执行首条命令rembg i examples/car-2.jpg car-out.png首次运行会自动把默认模型 u2net 下载到家目录的.u2net下之后离线也能用。输入、输出都换成你自己的路径背景移除就完成了。2. 本地干活命令行与 Python 两种接法2.1 rembg 命令行批量去背景我们一般先用命令行把整批素材过一遍效果确认后再写代码。CLI 有四个子命令对应四种输入# 单张本地文件直接去背景 rembg i examples/car-2.jpg car-out.png # 整目录批量把输入文件夹里所有图处理到输出文件夹 rembg p ./input_folder ./output_folder # 视频逐帧接 FFmpeg 的 RGB24 裸流 ffmpeg -i input.mp4 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o frames/out-%03d.png常用变体一句话带过-m指定模型、-a开 Alpha Matting 修边缘、-om只输出掩码、-bgc换成指定纯色背景、p加-w进入监听模式。2.2 Python 库集成到现有流程核心就两个函数remove处理图片new_session建会话。下面一段覆盖了三种最常见的输入from rembg import remove, new_session from PIL import Image import numpy as np # bytes 进出最小化集成 data open(a.png, rb).read() open(out.png, wb).write(remove(data)) # PIL / numpy 进出直接挂进现有 pipeline img Image.open(a.png) remove(img).save(out.png) remove(np.frombuffer(data, np.uint8).reshape(667, 1000, 3))批量处理的正确姿势是复用会话——模型只加载一次速度差距明显from pathlib import Path from rembg import remove, new_session session new_session() for f in Path(in).glob(*.png): open(fout/{f.stem}.png, wb).write( remove(f.read_bytes(), sessionsession) )进阶参数按需加only_maskTrue只要掩码post_process_maskTrue修补洞bgcolor(255,255,255,255)直接铺白底alpha_mattingTrue配合前景/背景阈值精细抠边。更多示例可翻 USAGE.md。3. rembg 模型怎么选一张表加三问决策法内置模型全在 rembg/sessions/ 下首次用到哪个就自动下载哪个到~/.u2net/。核心几款对比模型量级适合什么u2net~170 MB通用默认均衡之选u2netp~5 MB轻量快跑精度换速度silueta~43 MBu2net 的瘦身版isnet-anime~104 MB动漫人物birefnet-portrait~880 MB人像高精度birefnet-general~1.7 GB通用最高精度吃内存sam编码器解码器点提示交互式分割拿不准就问自己三个问题内容是什么动漫图选 isnet-anime人像选 birefnet-portrait需要点选指定目标选 sam其余一律通用模型。精度和速度谁优先要最快选 u2netp要最准选 birefnet-general日常业务 u2net 就够。机器扛得住吗没有 GPU 或显存紧张就避开 birefnet 全家选 u2net 系。4. rembg API 调用HTTP 服务部署与请求示例一条命令起服务默认监听 7000 端口rembg s --host 0.0.0.0 --port 7000 --log_level info启动后根路径是 Gradio 网页界面接口文档在/apiSwagger纯 API 模式加--no-ui关掉界面省 CPU。/api/remove一个路径干两件事GET 传图片 URLPOST 传文件# 传 URL服务端拉图处理 curl -s http://localhost:7000/api/remove?urlhttps://example.com/a.png -o out.png # 传文件本地直传可选 model、a 等参数 curl -s -F filea.jpg -F modelu2net -F atrue http://localhost:7000/api/remove -o out.pngPython 侧接入业务只需几行import requests r requests.post( http://localhost:7000/api/remove, files{file: open(a.jpg, rb)}, data{model: u2net}, ) open(out.png, wb).write(r.content)服务内部对每个模型只建一次会话并缓存见 rembg/commands/s_command.py并发请求不会反复加载模型。GET 传 URL 时服务端会拒绝内网地址防 SSRF部署到公网前建议先过一遍这段逻辑。5. rembg Docker 部署CPU 镜像与 GPU 构建CPU 有现成官方镜像挂载本地目录直接跑和原生 CLI 命令完全一致docker run -v .:/data danielgatis/rembg i /data/in.png /data/out.png常驻服务用 compose 起。仓库自带 docker-compose.yml 已配好多副本REPLICAS_COUNT与端口映射PUBLIC_PORT环境变量起服务services: app: build: . command: [s] deploy: replicas: ${REPLICAS_COUNT:-1} ports: - ${PUBLIC_PORT:-7000:7000}GPU 镜像因为要装 CUDA 和 cudnn-devel 得自己构建见 Dockerfile_nvidia_cuda_cudnn_gpu构建产物约 11 GB且不含模型docker build -t rembg-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu . sudo docker run --rm -it --gpus all -v $PWD:/data rembg-gpu i /data/in.png /data/out.png两个上线小建议用-v /path/models:/root/.u2net把模型目录挂到宿主机避免重建容器重新下载镜像内默认模型是 u2net换其他模型先docker run danielgatis/rembg d 模型名预下载。6. 提速与排错速查我们一般先在单张图上确认模型和参数效果再上批量或服务出问题定位快得多。高频问题一张表现象速查解法GPU 没生效核对 onnxruntime-gpu 与 CUDA/cuDNN 版本装不上环境就退回rembg[cpu]模型下载失败、校验不过手动把 .onnx 放到~/.u2net/即可直接用rembg d u2net可预下载自定义模型加MODEL_CHECKSUM_DISABLED1目录可用U2NET_HOME改批量慢new_session()只建一次、复用传参换 u2netp 小模型OMP_NUM_THREADS控制推理线程上 GPU边缘毛糙、毛发不干净-a开 Alpha Matting再调-af前景阈值-ab背景阈值-ae侵蚀尺寸大图吃内存选轻量模型必要时降低输入分辨率参数拿不准时任何子命令加--help都有完整说明配合仓库的 USAGE.md 基本够日常使用了。【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考