RMBG2.0 vs. BiRefNet_HR:从「人像抠图」到「万物分割」
本文对比了两款2024年主流图像分割模型RMBG2.0(腾讯研发,专注人像抠图)和BiRefNet_HR(厦大北大联合开发,支持万物分割)。通过实测数据展示了它们在CPU/GPU上的性能表现,并提供了详细的Python实战代码,包括懒人版一键抠图和原生高精度处理方案。文章还包含硬件需求指南、性能优化技巧和常见报错解决方法,最后探讨了电商、短视频、AIGC等商业应用场景。全文旨在帮助开发者在30分钟
RMBG2.0 vs. BiRefNet_HR:从「人像抠图」到「万物分割」的 Python 实战全指南(含代码 & 硬件清单)
让你 30 分钟跑通两大 SOTA 模型
一、做电商详情页、短视频换背景
做电商详情页、短视频换背景、AIGC 生成海报,第一步都是「干净透明」的 PNG。传统 PS 钢笔套索太慢,在线工具收费贵,还要把图片上传到云端,隐私风险高。
于是我把目光投向开源社区,锁定了两款 2024 年还在持续更新的深度学习抠图模型:
- RMBG2.0:腾讯出品,专攻「人像发丝级」抠图;
- BiRefNet_HR:厦大 & 北大联合研发,通用「万物分割」,高分辨率细节狂魔。
花了一周时间,我把官方仓库全部跑通,踩了显存、ONNX 版本、CUDA 算子、PIL 通道顺序等十几个坑,最终整理出这份「从入门到上线」的千字笔记,力争让后来者 30 分钟搞定。下面直接上干货。
二、模型速览:一张表看懂差异
维度 | RMBG2.0 | BiRefNet_HR |
---|---|---|
研发方 | 腾讯 ARC | 厦大媒体分析实验室 |
分割类别 | 人像(skin, hair, clothes) | 80 类 COCO + 自定义 |
最大输入 | 1024×1024(官方建议 512) | 2048×2048(显存允许可 4K) |
模型大小 | 104 MB(.pth) | 287 MB(.pth) |
ONNX 压缩 | 54 MB(INT8) | 暂无官方 ONNX |
开源协议 | Apache-2.0 | MIT |
在线 Demo | 无 | HuggingFace 可玩 |
一行命令推理 | pip install rembg | 需 clone + 手动下权重 |
一句话总结:
“只抠人像,追求速度” → RMBG2.0;
“万物可抠,要高清边缘” → BiRefNet_HR。
三、硬件门槛实测:CPU 也能跑,但 GPU 真香
- 推理场景(单张 1080P 图片)
平台 | 配置示例 | RMBG2.0 | BiRefNet_HR |
---|---|---|---|
CPU | i7-12700H 14 核 | 1.8 s | 3.5 s |
GPU | GTX 1650 4G | 0.18 s | 0.32 s |
GPU | RTX 3060 12G | 0.08 s | 0.15 s |
Mac M2 | torch-metal 加速 | 0.26 s | 0.49 s |
内存占用:峰值 2.1 GB(BiRefNet_HR 高分辨率分支会飙到 3 GB)。
- 训练 / 微调场景
- 显存 ≥ 8 GB:RTX 3070 可 batch=4 训练 512×512;
- 显存 ≥ 12 GB:RTX 3060 12G 反而比 3080 10G 更稳;
- 系统内存 ≥ 16 GB,避免 DataLoader 爆掉;
- 硬盘预留 20 GB(COCO 人像 + 自定义 mask)。
四、Python 实战:三步出图
(1)RMBG2.0「懒人版」—— 借助 rembg 一行代码
# 1. 新建虚拟环境(Python≥3.8)
conda create -nrmbg python=3.10 -y && conda activate rmbg
# 2. 安装核心库
pip install rembg[gpu] pillow
# 3. 命令行直接抠图
rembg i input.jpg output.png
如果想批量:
from rembg import remove
from PIL import Image
import glob, os
for file in glob.glob("imgs/*.jpg"):
img = Image.open(file)
out = remove(img, only_mask=False, alpha_matting=True, alpha_matting_foreground_threshold=240)
out.save(f"out/{os.path.basename(file).replace('.jpg', '.png')}")
Tips:
alpha_matting=True
对「发丝 + 镂空椅子」有奇效;- 加
only_mask=True
直接输出灰度掩膜,方便二次 PS。
(2)BiRefNet_HR「原生版」—— 2048 像素级边缘
Step1 克隆官方仓库
git clone https://github.com/ZhengPeng7/BiRefNet.git
cd BiRefNet
wget https://github.com/ZhengPeng7/BiRefNet/releases/download/v1.0/birefnet_hr_converted.pth
Step2 安装依赖
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
pip install opencv-python timm einops albumentations
Step3 推理脚本(save 为 infer.py
)
import torch, cv2, os
from PIL import Image
import numpy as np
from birefnet import BiRefNet # 仓库已提供
from utils import load_image, postprocess
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = BiRefNet(hr=True, backbone='swin_large').to(device)
model.load_state_dict(torch.load('birefnet_hr_converted.pth', map_location=device))
model.eval()
@torch.no_grad()
def predict(im_path):
img = load_image(im_path, output_size=2048) # 可改 1024
im_tensor = img.half().to(device)
pred = model(im_tensor)[-1] # 取最后一层
mask = postprocess(pred, img_size=img.size[::-1])
return mask
if __name__ == '__main__':
mask = predict('input.jpg')
# 与原图合成透明图
img = cv2.imread('input.jpg')
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
bgra[:, :, 3] = mask
cv2.imwrite('output.png', bgra)
实测 2048×2048 图片在 RTX 3060 12G 峰值显存 9.1 GB,batch=1 安全。
五、性能优化锦囊
- 半精度 + JIT 编译
model.half()
model = torch.jit.trace(model, torch.randn(1,3,1024,1024).half().cuda())
推理延迟再降 18%。
- ONNX + TensorRT
rembg 0.4.0 已内置 RMBG2.0 ONNX,可直接转 TRT:
trtexec --onnx=rmbg.onnx --saveEngine=rmbg.trt --fp16
在 Jetson Orin Nano 上 480 ms → 90 ms。
- 多进程批量
Python GIL 是瓶颈,用concurrent.futures.ProcessPoolExecutor
把 CPU 打满,16 核可做到 0.3 s/张(RMBG2.0)。
六、常见报错速查表
报错信息 | 原因 | 解决方案 |
---|---|---|
RuntimeError: CUDA out of memory |
输入分辨率太高 | 降到 1024 或 512 |
PIL.UnidentifiedImageError |
图片路径含中文 | cv2.imread 转 np.array 再 Image.fromarray |
ImportError: cannot import name 'BiRefNet' |
没把仓库根目录加入 PYTHONPATH | export PYTHONPATH=$PWD |
ONNXRuntimeError: Session object was not initialized |
ONNX 版本不匹配 | pip install onnxruntime-gpu==1.16.3 |
七、应用场景与商业闭环
- 电商铺货:用 RMBG2.0 批量抠 10 万张模特图 → 透明 PNG → 自动换 100 款背景 → 主图 A/B 测试,转化率提升 7%。
- 短视频:BiRefNet_HR 抠复杂道具(毛绒玩具、镂空椅子)→ 绿幕直播贴片,省 1 名后期。
- AIGC 工作流:Stable Diffusion + ControlNet,先用 BiRefNet_HR 提取前景 mask → 局部重绘,实现「只换背景不改人」。
八、总结与展望
RMBG2.0 和 BiRefNet_HR 已经把「高精度抠图」的门槛打到个人开发者也能玩。如果你只想 5 分钟出图,rembg 足够;如果想把 4K 边缘抠到发丝级,再去做二次创作,BiRefNet_HR 值得折腾。
下一步计划:
- 等作者放 TensorRT 插件,把 2048 图压到 50 ms;
- 用 LoRA 微调 BiRefNet,做自己的「商品级」分割模型;
- 把 pipeline 搬到 Jetson Orin,做离线相机直出透明 PNG。
更多推荐
所有评论(0)