rembg 在图像处理领域,背景移除是一个常见且重要的任务。无论是电商平台的商品展示、社交媒体中的个性化头像生成,还是其他需要图像透明背景的场景,背景移除都扮演着关键角色。Python中的rembg库就是一个强大的工具,它基于深度学习技术,能够准确、快速地移除图像背景。本文详细介绍rembg库的安装、基本用法。
Github仓库地址:
安装需求:python: >3.7, <3.13
ubuntu使用以下方式安装:
pip install rembg
pip install filetype
pip install gradio
pip install asyncer
下载一个模型文件,模型下载后,需要将模型保存在 ~/.u2net 目录。
u2net (默认的模型,对人物肖像进行抠图去背景,能精细到发丝。)
可用的模型有这些:
- u2net:通用预训练模型。 下载链接:u2net.onnx 模型下载
- u2netp:u2net模型的轻量级版本。下载链接:u2netp.onnx模型下载
- u2net_human_seg:预训练人体分割模型。下载链接:u2net_human_seg.onnx模型下载
- u2net_cloth_seg:预训练人物肖像布料模型。衣服分为三类:上身、下身和全身。下载链接:u2net-cloth-seg.onnx模型下载
- silueta:与u2net相同,但大小减少到43Mb。下载链接:silueta.onnx模型下载
- isnet-general-use:新通用预训练模型
- isnet anime:动漫人物高精度分割模型 下载链接:动漫人物高精度分割模型
- sam:预训练模型
安装步骤完成后,您就可以用python去调用,或者以命令行的方式使用 rembg 了.
python 库方式调用:
cd 到下载的代码路径目录下,然后编写py文件运行
from rembg import remove
from PIL import Image
# 指定你下载的.onnx模型文件的路径
onnx_model_path = "/home/local/user/.u2net/u2netp.onnx"
# 加载图像
input_image = Image.open("/home/local/下载/tmp/test1.jpg")
# 移除背景
output_image = remove(input_image)
# 保存处理后的图像
output_image.save('/home/local/下载/tmp/u2net_human_seg.png')
命令行的方式使用:
rembg 命令有4个子命令,每种输入类型对应一个子命令:
- i 用于文件
- p 表示文件夹
- s 表示http服务器
- b 用于RGB24像素二进制流
有关命令的帮助请参考rembg --help
查看子命令rembg --help
可用命令:
图片移除背景:(input.jpg是原图 output.png是抠像后的图)
rembg i path/to/input.jpg path/to/output.png
指定使用一个模型去背景
rembg i -m u2net_cloth_seg path/to/input.jpg path/to/output.png
移除背景返回mask
rembg i -om path/to/input.jpg path/to/output.png
应用 alpha matting (前后景分割算法)
rembg i -a path/to/input.jpg path/to/output.png
传递参数
SAM example:
rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' examples/plants-1.jpg examples/plants-1.out.png
自定义模型 example:
rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' path/to/input.png path/to/output.png
rembg p 处理整个文件夹中的文件,移除文件夹中所有图片的背景
rembg p path/to/input path/to/output
处理文件的同时会监听文件夹的图片变动
rembg p -w path/to/input path/to/output
rembg s 和 rembg b 和其他使用方式,有时间再更新。