欢迎光临
我们一直在努力

Rembg 开源图像抠图工具全教程:Python/命令行/HTTP API/Docker部署+多模型选型

Rembg是一款免费开源AI抠图工具,无需复杂算法,一行代码/一条命令即可生成透明背景图片,支持CPU/NVIDIA/AMD多硬件加速,提供Python SDK、命令行、HTTP接口、Docker四种部署方式,内置20+分割模型适配人像、动漫、服装、高分辨率物体等场景,本文完整覆盖安装、单图/批量处理、API服务、视频帧抠图、容器部署、自定义模型全流程实战代码。

一、项目概述

1.1 项目介绍

Rembg 是一款开源、高性能图像背景去除工具,支持多部署形态,可直接一键去除图片背景生成透明PNG,底层基于各类预训练分割模型(U2Net、IS-Net、BiRefNet、SAM等),适配通用实物、人像、动漫、服装、高分辨率物体等多场景抠图需求。 支持四种使用方式:

  • Python 第三方库(集成到业务代码)
  • 终端命令行工具(单图/批量处理)
  • HTTP Web服务(对外提供抠图API)
  • Docker容器(快速部署,CPU/GPU两种镜像)
  • 项目开源地址:danielgatis/rembg,开源协议 MIT,官方提供商用付费抠图API PhotoRoom。

    1.2 环境前置要求

    Python 版本限制:>=3.11 且 <3.14,依赖 onnxruntime 系列推理引擎,分CPU、NVIDIA CUDA、AMD ROCm三种硬件后端。

    二、安装教程(区分硬件后端)

    2.1 CPU通用版本(无独立显卡,新手推荐)

    仅作为Python库:

    pip install "rembg[cpu]"

    库 + 命令行工具一体:

    pip install "rembg[cpu,cli]"

    2.2 NVIDIA显卡 CUDA GPU加速

  • 先确认本机环境支持 onnxruntime-gpu,提前装好CUDA、cudnn-devel;
  • 安装命令:
  • # 仅库
    pip install "rembg[gpu]"
    # 库+命令行
    pip install "rembg[gpu,cli]"

    若CUDA环境配置失败,可降级使用CPU版本运行。

    2.3 AMD显卡 ROCm 后端

    需提前部署 onnxruntime-rocm,再执行安装:

    pip install "rembg[rocm]"
    pip install "rembg[rocm,cli]"

    三、命令行 CLI 使用详解

    安装cli后终端直接执行 rembg,提供4大核心子命令:i(单图)、p(批量文件夹)、s(HTTP服务)、b(二进制流,适配FFmpeg)。

    3.1 通用帮助命令

    # 查看全局帮助
    rembg –help
    # 查看指定子命令帮助,如单图处理
    rembg i –help

    3.2 rembg i:单张图片抠图

  • 本地文件基础用法
  • # 指定输入输出路径
    rembg i input.png output.png
    # 省略输出,自动生成 input.out.png
    rembg i input.png
    # 管道重定向输出
    rembg i input.png > output.png

  • 远程网络图片流式处理
  • curl -s http://xxx/input.png | rembg i > output.png

  • 进阶参数用法
    • 指定轻量模型u2netp:

    rembg i -m u2netp input.png output.png

    • 仅输出分割掩码(无透明前景):

    rembg i -om input.png mask.png

    • 输出带Alpha遮罩原图:

    rembg i -a input.png output.png

    • SAM模型点位提示抠图(自定义前景点位):

    rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' test.jpg out.png

    • 加载本地自定义ONNX模型:

    rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' input.png output.png

    3.3 rembg p:批量文件夹处理

  • 基础批量(输入文件夹→输出文件夹)
  • rembg p ./input_imgs ./output_imgs

  • 监听模式(自动处理新增/修改图片)
  • rembg p -w ./input_imgs ./output_imgs

    3.4 rembg s:启动HTTP抠图API服务

  • 启动服务,开放外网访问,端口7000
  • rembg s –host 0.0.0.0 –port 7000 –log_level info

  • 关闭Gradio前端UI,降低CPU占用
  • rembg s –no-ui

  • API调用示例
    • 通过图片URL抠图:

    curl -s "http://127.0.0.1:7000/api/remove?url=http://xxx/test.png" -o out.png

    • 上传本地文件抠图:

    curl -s -F file=@./test.jpg "http://127.0.0.1:7000/api/remove" -o out.png

    服务内置API文档地址:http://localhost:7000/api

    3.5 rembg b:二进制RGB24数据流处理(适配FFmpeg视频帧)

    接收原始RGB像素流,适合视频逐帧抠图,参数:宽度、高度、输出文件名格式化模板。 示例:提取视频第10秒画面,逐帧抠图保存

    ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o output/output-%03u.png

    关键参数不能省略:-an -f rawvideo -pix_fmt rgb24 pipe:1,宽高必须和视频分辨率匹配。

    四、Python库代码集成(开发常用)

    核心入口函数 remove(),支持字节流、PIL图像、OpenCV数组三种输入格式,批量处理推荐复用Session加速推理。

    4.1 字节流读写(通用文件读写)

    from rembg import remove

    # 读取原图字节,抠图后写入透明图
    with open("input.png", "rb") as in_file:
    input_data = in_file.read()
    output_data = remove(input_data)
    with open("output.png", "wb") as out_file:
    out_file.write(output_data)

    4.2 PIL Image 格式(图像处理常用)

    from rembg import remove
    from PIL import Image

    input_img = Image.open("input.png")
    output_img = remove(input_img)
    output_img.save("output.png")

    4.3 OpenCV NumPy数组格式

    from rembg import remove
    import cv2

    input_arr = cv2.imread("input.png")
    output_arr = remove(input_arr)
    cv2.imwrite("output.png", output_arr)

    4.4 强制返回字节流

    from rembg import remove

    with open("input.png", "rb") as i:
    data = i.read()
    res = remove(data, force_return_bytes=True)
    with open("out.png", "wb") as o:
    o.write(res)

    4.5 高性能批量处理(复用Session,推荐)

    重复创建会话会重复加载模型,大批量图片务必复用session:

    from pathlib import Path
    from rembg import remove, new_session

    # 全局初始化一次模型会话
    session = new_session()

    # 遍历文件夹所有png图片
    img_dir = Path("./batch_input")
    for img_file in img_dir.glob("*.png"):
    out_path = img_file.parent / f"{img_file.stem}.out.png"
    with open(img_file, "rb") as i, open(out_path, "wb") as o:
    img_bytes = i.read()
    # 复用session,大幅提升批量速度
    res_bytes = remove(img_bytes, session=session)
    o.write(res_bytes)

    五、Docker容器部署

    5.1 CPU镜像(开箱即用,无需编译)

    直接拉取官方镜像,挂载本地目录 /data 处理图片:

    docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png

    5.2 NVIDIA CUDA GPU镜像

  • 前置条件:主机安装NVIDIA容器工具包;
  • 构建GPU镜像(镜像占用约11GB,CPU版仅1.6GB):
  • docker build -t rembg-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .

  • 运行容器开启GPU加速:
  • sudo docker run –rm -it –gpus all -v $PWD:/data rembg-gpu i -m birefnet-general /data/input.png /data/output.png

  • 优化:挂载本地模型目录,避免容器重复下载模型
  • -v /本地模型路径:/root/.u2net

    六、内置模型大全(按需选择)

    首次运行自动下载模型至 ~/.u2net/,可通过环境变量修改存储路径,各模型适用场景:

    模型名称适用场景特点
    u2net 通用物体抠图 基础通用模型,效果均衡
    u2netp 通用场景 U2Net轻量版,速度更快
    u2net_human_seg 纯人像分割 专门识别人体轮廓
    u2net_cloth_seg 服装分割 区分上衣/下装/全身衣物
    Silueta 通用抠图 体积仅43MB,轻量化
    isnet-general-use 通用高精度 新一代通用分割模型
    isnet-anime 动漫角色 二次元人物抠图专用
    sam 任意物体分割 支持点位提示,自定义抠选区域
    birefnet-general 全场景通用 综合效果最优
    birefnet-general-lite 通用轻量化 平衡速度与精度
    birefnet-portrait 人像肖像 人像细节优化
    birefnet-dis 双目图像分割 双目视觉专用
    birefnet-hrsod 高分辨率显著物体 大图物体检测
    birefnet-cod 隐蔽物体检测 低对比度隐藏物体
    birefnet-massive 超大数据集训练 复杂场景泛化强
    bria-rmbg 商业级抠图 BRIA AI开发,细节优秀

    七、环境变量配置

    可通过系统环境变量自定义模型存储、推理行为:

  • U2NET_HOME:模型文件存储目录,优先级最高;默认 ~/.u2net
  • XDG_DATA_HOME:未配置U2NET_HOME时,数据根目录,默认用户根目录
  • MODEL_CHECKSUM_DISABLED=1:关闭模型哈希校验,使用自定义修改后的ONNX模型时开启
  • OMP_NUM_THREADS:设置ONNX推理线程数,控制CPU占用
  • 八、自定义本地模型使用流程

  • 设置环境变量关闭校验:MODEL_CHECKSUM_DISABLED=1
  • 将转换/修改后的.onnx模型放入默认目录 ~/.u2net/,命名格式与原模型一致(如u2net.onnx)
  • 运行rembg时会直接加载本地文件,不再自动下载官方模型
  • 九、常见问题说明

  • Python版本兼容问题:库版本由onnxruntime支持的Python版本决定,仅支持3.11~3.13;
  • GPU加速失败:检查CUDA、cuDNN、onnxruntime-gpu版本匹配,无法配置显卡则切换CPU版本;
  • 模型重复下载:配置U2NET_HOME固定模型路径,Docker部署挂载本地模型目录;
  • 自定义模型加载失败:务必开启MODEL_CHECKSUM_DISABLED关闭校验。
  • 赞(0)
    未经允许不得转载:171主机测评 » Rembg 开源图像抠图工具全教程:Python/命令行/HTTP API/Docker部署+多模型选型
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址