Rembg 背景移除完整教程:5 分钟抠出第一张干净的产品图
【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg
把一张电商产品图丢进 Rembg,几秒钟后背景就干净了,前景带着透明通道,叠到任何底色上都能直接用。Rembg(remove background 的缩写)是一个 Python 背景移除工具,核心就一个remove()函数:图片进去,无背景 PNG 出来。下面按"你想做成什么"的顺序讲,不堆功能清单。
装完就跑:第一条命令抠出第一张图 🚀
先确认 Python 版本在 3.11~3.13 之间(python --version),然后装包。没有独显就装 CPU 版,依赖会一起装好,不用单独处理:
pip install "rembg[cpu,cli]" # 库 + 命令行工具 # 有 NVIDIA 显卡且装了 CUDA 才用这个: pip install "rembg[gpu,cli]"装完直接跑第一次抠图:
from PIL import Image from rembg import remove img = Image.open("car-2.jpg") out = remove(img) # 默认用 u2net 模型 out.save("car-2.out.png")你可能会问:为什么第一张图要等好久?因为模型文件在首次运行时自动下载到~/.u2net目录,后面再跑就是秒级。第一次跑通之后,看看这个效果对比——左边原图,右边是 Rembg 抠完背景的输出:
走 GPU 路线的话,先对照官方这张安装矩阵确认你的系统支不支持onnxruntime-gpu,装完rembg[gpu]才白不白费:
做一张能直接交活的证件照
证件照是个好例子,因为它一次就用到模型选择、换底色、修边缘三件事。
人像模型用哪个?直接用人像专用的birefnet-portrait。new_session就像先把引擎热起来,建一次就能反复用,别每张图都新建:
from PIL import Image from rembg import new_session, remove session = new_session("birefnet-portrait") # 人像专用模型 img = Image.open("girl-1.jpg") out = remove(img, session=session, bgcolor=(67, 142, 219, 255)) # 直接合成蓝色底 out.save("id_photo.jpg", "JPEG")这里的关键是bgcolor:它跳过"先透明再合成"两步,直接把指定 RGBA 颜色填到背景上,一行搞定蓝底证件照。想保留透明通道?去掉bgcolor即可。
发丝边缘毛糙,怎么修?加上 alpha matting 参数,它是一步边缘精修,专门处理头发丝这种半透明区域:
out = remove(img, session=session, alpha_matting=True, alpha_matting_foreground_threshold=240, # 高于它算前景 alpha_matting_background_threshold=10, # 低于它算背景 alpha_matting_erode_size=15) # 腐蚀半径,调边缘💡 如果嫌抠出的蒙版有锯齿,还可以传post_process_mask=True对掩码做后处理,边缘会更平滑。
动漫、商品、动物:抠图模型怎么选
不同内容用错模型,效果差得很明显。常用模型大致这样分:
| 模型 | 适用场景 |
|---|---|
u2net | 默认通用模型,均衡之选 |
u2netp/silueta | 轻量(silueta 仅约 43MB),资源紧张时用它 |
birefnet-general/birefnet-general-lite | 高精度通用,lite 是它的轻量版 |
birefnet-portrait | 人像、证件照 |
isnet-anime | 动漫人物,发丝和轮廓明显更准 |
u2net_cloth_seg | 把衣物解析成上身/下身/全身三类 |
sam | 可交互:传input_points点几下图,提示模型哪里是前景 |
用法上没门槛:把名字传给new_session()就行,模型自动下载。想看每个模型的实现细节,翻 模型源码目录。
拿动漫图对比一下,左边原图,右边是isnet-anime的抠图结果——线稿和发丝的轮廓比通用模型干净得多:
动物、商品这类常规物体,u2net或birefnet-general通常就够了:
另外,如果你不要成品图、只要一张白前景黑背景的蒙版(比如拿去做别的处理),传only_mask=True就行,不用单独写代码。
一百张图怎么跑得快
你可能会想:一百张、一千张图怎么办?答案就一句话——session 只建一次。默认每次调remove都会重新加载模型,那才是批量场景下最大的瓶颈:
from pathlib import Path from rembg import new_session, remove session = new_session("birefnet-general") for f in Path("input_dir").glob("*.png"): out = remove(f.read_bytes(), session=session) # 直接吃字节 (f.parent / (f.stem + ".out.png")).write_bytes(out)注意remove可以直接收 bytes,省掉开图存图的来回。不想写代码的话,CLI 的批量子命令一句话搞定:rembg p 输入目录 输出目录,加-w还能监听目录,新文件自动抠。它一共四个子命令:i单张、p文件夹、s起 HTTP 服务、b接 FFmpeg 裸视频流——最后那个意味着连视频帧都能逐帧抠。
下载失败、内存爆、边缘毛糙:排查清单 ⚠️
跑的时候大概率会撞上几个坑,按清单对:
- 模型下载失败 / 想换目录:手动把
.onnx放进~/.u2net即可;用环境变量U2NET_HOME可以整体挪走模型目录(Docker 里挂载它还能避免每次重下)。 - 内存不够:换轻量模型
u2netp或silueta,或者先把大图降分辨率再抠。 - 速度太慢:上 GPU 版;纯 CPU 时调
OMP_NUM_THREADS控制推理线程数。 - GPU 版装不上:多半是 CUDA/cuDNN 环境不满足,回退
rembg[cpu]最省事。 - 抠图总差一口气:换
birefnet系列试试,叠alpha_matting,或开post_process_mask=True;动漫图记得换isnet-anime。 - 要用自己转换的模型:设
MODEL_CHECKSUM_DISABLED=1,把文件按对应文件名放进模型目录,rembg 就不会覆盖它。
不想写代码的,装完 CLI 后rembg i 输入.png一条命令就能出图;更多参数和服务器用法,直接翻 完整用法说明 和 README.md,够你用到上生产为止。
【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考