Win10下RMBG‑2.0纯净官方源码包的部署及调用实践
RMBG‑2.0 是 BRIA AI 在 2024 年发布的最新一代开源背景去除模型,相比 v1.4 在准确率上从 73.26% 提升至 90.14%,采用 BiRefNet 双边参考架构,在高分辨率图像分割任务上达到业界领先水平。本文将从官方纯净源码包出发,分别演示在 Windows10 + VSCode 环境下的 CPU 与 GPU 两种推理配置,及完成模型启动后的测试调用。
目录
环境准备
-
操作系统:Windows 10
-
编辑器:VSCode
-
Python 环境:如未安装请从
-
依赖库:torch、torchvision、pillow、kornia、
-
建议以不同的虚拟环境分别安装及配置CPU版和CUDA版,本文CPU版使用虚拟环境rmbg_env,CUDA版使用虚拟环境rmbg_env_cuda,激活虚拟环境后,安装transformers和timm库,下面命令中指定版本号是因为在我的Python环境中,这两个版本能正常兼容工作,如不需要指定版本号安装都能正常工作,则不必为这两个库指定版本号安装:
- 即为 RMBG‑2.0 在源码包要求的最小依赖列表。
-
CPU 版本 Transformers+PyTorch 安装:
此命令会在仅需 CPU 支持时一并安装 PyTorch。
-
GPU 版本:
-
安装对应 CUDA 驱动(打开PowerShell,执行:
查看返回结果,在表格中能看到
CUDA Version 字段,它就是你的显卡驱动支持的 最高 CUDA 版本(例如我的返回信息是:![]()
),而此处的最高支持版本并不一定是我们实际要安装的版本,实际安装的版本具体还是由 PyTorch 决定,毕竟只有脚最清楚穿什么鞋子最舒服嘛)。此外,Driver Version 字段是你的显卡当前的驱动版本,具体的NVIDIA 驱动与 CUDA 版本对照表可以参考Nvidia文档:
-
安装支持 CUDA 的 Python版深度机器学习、视觉、图像处理等库,如:torch torchvision pillow等库,这里需要注意的是,必须通过PyTorch网站指定CUDA版本号进行索引安装,这样才能正常适配。经反复测试,发现CUDA v1.24对应的上述库最适合本机的虚拟环境(建议多尝试不同版本,找出最适合自己显卡的版本,结合CUDA版代码测试,若无明显异常则视为最佳选择),安装如下:
-
-
若有条件,可参考 Hugging Face 官方文档中关于 GPU 加速的说明。
下载官方源码
-
打开命令行,切换到项目准备目录,例如
D:\projects\test_rmbg。 -
克隆源码仓库(官方纯净包),若无法克隆成功,或者发现克隆后ONNX模型文件很小(仅文件指针,网络或源码官方的其它原因……),则请移步本文结尾处提供的连接下载。
该仓库包含模型代码与权重下载脚本等,保持与 BRIA 官方保持一致。
CPU 模式部署
-
在 VSCode 中打开
D:\projects\test_rmbg目录,从VSCode中选择菜单“终端”->“新建终端”,在终端中默认路径是 D:\projects\test_rmbg(如果不是则自行切换),执行执行命令创建并激活虚拟环境:接着安装依赖(见上)。
-
新建Python代码文件
run_cpu.py,并加入以下代码:在终端命令行(确认已激活虚拟环境前面带rmbg_env)执行命令:
分别对三张图片处理结果做对比如下(CPU版本):
![]()
GPU 模式部署
注:最低 GPU 配置建议
-
显存(VRAM):至少 6GB。
虽然某些任务可能在 4GB 显存的显卡上运行,但为了确保模型加载和推理的稳定性,建议使用具有 6GB 或更高显存的显卡。
-
CUDA 支持:显卡需支持 CUDA,并与所安装的 CUDA Toolkit 版本兼容。
-
推荐显卡型号:
-
NVIDIA GTX 1660(6GB)
-
NVIDIA RTX 2060(6GB)
-
NVIDIA RTX 3060(12GB)
-
NVIDIA RTX 4060(8GB)
这些显卡在性能和价格之间提供了良好的平衡,适合中等规模的图像处理任务。
-
-
首先确保已安装好CUDA Toolkit(文末处有提供),版本号确认请参照前面:环境准备,安装完成后打开命令行通过命令:
进行查看,正常情况应显示与我的类似:
另存为 “刷新系统环境变量.bat” 批处理文件,通过右键 “以管理员身份运行”,则可。
-
在VSCode中新建并激活虚拟环境rmbg_evn_cuda:
-
新建python代码文run_cuda.py,并加入以下代码:
1 from transformers import AutoModelForImageSegmentation 2 import torch 3 from PIL import Image 4 import sys 5 from torchvision import transforms 6 import torch.nn.functional as F 7 import torchvision.transforms.functional as FG 8 import numpy as np 9 from scipy.ndimage import binary_erosion 10 11 if not torch.cuda.is_available(): 12 sys.exit("CUDA Toolkit 未正确安装、配置") 13 14 device = torch.device('cuda') 15 16 # 加载模型 17 model = AutoModelForImageSegmentation.from_pretrained( 18 'briaai/RMBG-2.0', 19 trust_remote_code=True 20 ).to(device).eval() 21 22 # 图像预处理 23 transform = transforms.Compose([ 24 transforms.Resize((1024, 1024)), 25 transforms.ToTensor(), 26 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 27 ]) 28 29 with torch.no_grad(): 30 img = Image.open('input1.jpg').convert('RGB') 31 inp = transform(img).unsqueeze(0).to(device) 32 33 # 模型预测 34 mask = model(inp)[-1].sigmoid().squeeze(1) 35 mask = torch.where(mask > 0.5, 1.0, 0.0) 36 37 # 形态学处理,统一4D格式 38 dilation_kernel = torch.ones(3,3, device=device).view(1,1,3,3) 39 erosion_kernel = torch.ones(2,2, device=device).view(1,1,2,2) 40 41 # 维度修正:保持4D输入 42 mask_4d = mask.unsqueeze(1) 43 for _ in range(1): 44 mask_4d = F.conv2d(mask_4d, dilation_kernel, padding=1).clamp(0,1) 45 mask_4d = F.conv2d(mask_4d, erosion_kernel, padding=1).clamp(0,1) 46 mask = mask_4d.squeeze(1) 47 48 # 高斯模糊 49 blurred_mask = FG.gaussian_blur( 50 mask.unsqueeze(1), 51 kernel_size=9, 52 sigma=1.5 53 ).squeeze(1) 54 55 # 插值与锐化 56 mask_img = F.interpolate( 57 blurred_mask.unsqueeze(1), 58 size=(img.height, img.width), 59 mode='bicubic' 60 ).squeeze(1).squeeze(0) 61 62 # 二值化 63 mask_img = torch.where(mask_img > 0.5, 1.0, 0.0).cpu().numpy() 64 65 # 边缘补偿 66 alpha_channel = (mask_img * 255).astype(np.uint8) 67 alpha_channel = binary_erosion(alpha_channel, structure=np.ones((2,2))).astype(np.uint8) * 255 68 69 # 合成背景,PIL格式兼容性修正 70 img.putalpha(Image.fromarray(alpha_channel)) 71 target_bg_color = (170, 34, 255) 72 background = Image.new('RGB', img.size, target_bg_color) 73 background.paste(img, (0, 0), img.split()[-1]) 74 background.save('input1_cuda_done.png')
在终端命令行(确认已激活虚拟环境前面带rmbg_env_cuda)执行命令:
再来对三张图片处理结果对比下效果(CUDA版本):
![]()
总结与建议
-
模型与依赖:务必保持
torch、transformers版本与 CUDA 驱动匹配,避免运行时报错。 -
调优建议:在 GPU 模式下,可通过
torch.set_float32_matmul_precision('high')等方式微调精度与速度权衡。
huggingface的官方模型源码仓库需特殊方式访问,此外还需注册用户登录,并承诺不用于商业用途,才允许克隆及下载。虽然国内有镜像站,但经尝试发现也是不能正常登录的。若嫌麻烦,也可以从下面连接获取,本文仅从技术学习交流角度探讨纯官方模型部署及使用细节,不涉及商业用途,若需要商用请通过官方渠道获取授权,以避免潜在的版权纠纷,谢谢!祝你本地部署与二次开发顺利!
代码及工具包





浙公网安备 33010602011771号