在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)

在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)

说明:

准备

下载onnx模型文件: https://huggingface.co/briaai/RMBG-1.4/tree/main/onnx, 有3个onnx模型文件:

  • model.onnx
  • model_fp16.onnx
  • model_quantized.onnx

Clone仓库并打开示例文件夹:

bash 复制代码
git clone https://github.com/xenova/transformers.js.git
cd transformers.js/examples/remove-background-client

创建public/models/briaai/RMBG-1.4/onnx 文件夹,并将下载的模型文件放入。

运行tree public/,可以看到:

public/
└── models
    └── briaai
        └── RMBG-1.4
            └── onnx
                ├── model.onnx
                ├── model_fp16.onnx
                └── model_quantized.onnx

安装项目依赖:

bash 复制代码
npm install

推理

修改main.js文件中的env配置,使用本地模型:

js 复制代码
env.allowLocalModels = true;

有很多可用的env配置,详见 https://huggingface.co/docs/transformers.js/api/env

以下是我测试过得配置(仅测试,不需要在main.js中修改):

js 复制代码
env.remoteHost = 'https://hf-mirror.com';
env.allowRemoteModels = false;
// 默认会读取之前的缓存,如果之前的缓存是错的,需要清空浏览器缓存,或者使用该配置不使用浏览器缓存
env.useBrowserCache = false;

使用model_quantized.onnx

默认使用的模型文件名为model_quantized.onnx,不需要做任何修改。

使用model.onnx

修改main.js,添加quantized: falseAutoModel.from_pretrained

js 复制代码
const model = await AutoModel.from_pretrained('briaai/RMBG-1.4', {
    // Do not require config.json to be present in the repository
    config: { model_type: 'custom' },
    quantized: false
    // model_file_name: 'model_fp16',
    // quantized: false
});

使用model_fp16.onnx

修改main.js,AutoModel.from_pretrained部分如下:

js 复制代码
const model = await AutoModel.from_pretrained('briaai/RMBG-1.4', {
    // Do not require config.json to be present in the repository
    config: { model_type: 'custom' },
    model_file_name: 'model_fp16',
    quantized: false
});

运行

bash 复制代码
npm run dev

然后打开浏览器,等待状态从Loading model...变为Ready后,上传图片

添加日志查看使用的模型文件

修改node_modules/@xenova/transformers/src/utils/hub.js中的getModelFile函数,添加日志打印localPath:

js 复制代码
    let requestURL = pathJoin(path_or_repo_id, filename);
    let localPath = pathJoin(env.localModelPath, requestURL);

    console.log("localPath: ", localPath);
bash 复制代码
npm run build
npm run preview

浏览器打开链接,F12显示开发者工具,可以看到日志:

localPath:  /models/briaai/RMBG-1.4/onnx/model_fp16.onnx
相关推荐
贝格前端工场1 个月前
作为web3D的核心,webGL会被webGPU取代吗?
webgl·webgpu
下饭的菜1 个月前
【sdk】- 对接阿里云抠图
java·阿里云·抠图
老艾的AI世界6 个月前
P图神器Lama下载介绍,一键移除图片中任何不想要的元素
图像处理·人工智能·深度学习·神经网络·机器学习·抠图·水印·图片去水印·ai去水印·ai抠图
知来者逆6 个月前
人像抠图HumanSeg——基于大规模电话会议视频数据集的连接感知人像分割
深度学习·图像分割·人像分割·抠图·paddleseg·人像抠图·一键抠图
hudunkjpdf6 个月前
抠图透明背景怎么做?3种方法教你抠图换背景
抠图·抠图换背景·抠图技巧·智能抠图·app分享
Kun Li6 个月前
ViTMatte:Boosting image matting with pretrained plain vision transformers
人工智能·抠图·matting
Kun Li7 个月前
U2net:Going deeper with nested u-structure for salient object detection
人工智能·目标检测·抠图
arwind gao8 个月前
BabylonJS 6.0文档 Deep Dive 摄像机(六):遮罩层和多相机纹理
3d·webgl·webgpu·babylonjs·babylon.js
含影9 个月前
轻量封装WebGPU渲染系统示例<53>- 多盏灯灯光照在地面的效果
3d·webgpu