项目介绍:slimsam-77-uniform
slimsam-77-uniform 是一个深度学习项目,由于其兼容 ONNX 权重,可以与 Transformers.js 一起使用。该项目的目的是在 Web 环境中执行遮罩生成任务,并进行图像处理和分析。项目采用了先进的模型和处理器来实现高效的图像操作。
项目背景
Transformers.js 是一个 JavaScript 库,提供了在浏览器中使用深度学习模型的能力。slimsam-77-uniform 项目通过 ONNX 格式的权重,使得模型能够通过 Transformers.js 进行调用和操作。这种设置对于需要在浏览器端执行复杂图像处理任务的应用非常理想。
用途及使用方法
为了使用slimsam-77-uniform项目,用户需要先安装Transformers.js库。安装方法非常简单,只需通过 NPM 运行以下命令:
npm i @xenova/transformers
示例:遮罩生成
以下是一个如何进行遮罩生成的示例代码:
import { SamModel, AutoProcessor, RawImage } from '@xenova/transformers';
// 加载模型和处理器
const model = await SamModel.from_pretrained('Xenova/slimsam-77-uniform');
const processor = await AutoProcessor.from_pretrained('Xenova/slimsam-77-uniform');
// 准备图像和输入点
const img_url = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/corgi.jpg';
const raw_image = await RawImage.read(img_url);
const input_points = [[[340, 250]]] // 窗口位置的二维定位
// 处理输入并生成遮罩
const inputs = await processor(raw_image, input_points);
const outputs = await model(inputs);
// 后处理遮罩
const masks = await processor.post_process_masks(outputs.pred_masks, inputs.original_sizes, inputs.reshaped_input_sizes);
console.log(masks);
const scores = outputs.iou_scores;
console.log(scores);
通过这个示例,用户可以生成图像遮罩,并利用 IoU 得分选择最优的遮罩通道进行更精确的图像分割。
结果可视化
生成的遮罩可以通过下列代码将结果图像保存为 mask.png
,以供进一步分析:
const image = RawImage.fromTensor(masks[0][0].mul(255));
image.save('mask.png');
可以通过分析遮罩图像及其不同通道的 IoU 得分,选择最佳通道进行对象的隔离和提取。
在线演示
用户也可以通过在线演示来体验该项目的功能,链接如下:在线演示。
未来计划
目前,为了提高 Web 端模型的效率,项目使用了一个独立的 ONNX 权重库,作为暂时方案。这种方法旨在等待 WebML 的进一步发展和普及。而对于想要为 Web 准备自己的模型的用户,推荐使用 🤗 Optimum 工具将模型转换为 ONNX 格式,并遵循 slimsam-77-uniform 项目的结构来管理模型库。