🚀 transformers.js
transformers.js 是一个与 ONNX 权重兼容的库,基于 apple/ml-mobileclip 项目,可用于零样本图像分类等任务,为图像特征提取等工作提供支持。
🚀 快速开始
安装
若你还未安装 Transformers.js JavaScript 库,可以通过以下命令从 NPM 进行安装:
npm i @huggingface/transformers
💻 使用示例
基础用法
以下是一个使用 transformers.js 执行零样本图像分类的示例:
import {
AutoTokenizer,
CLIPTextModelWithProjection,
AutoProcessor,
CLIPVisionModelWithProjection,
RawImage,
dot,
softmax,
} from '@huggingface/transformers';
const model_id = 'Xenova/mobileclip_s2';
const tokenizer = await AutoTokenizer.from_pretrained(model_id);
const text_model = await CLIPTextModelWithProjection.from_pretrained(model_id);
const processor = await AutoProcessor.from_pretrained(model_id);
const vision_model = await CLIPVisionModelWithProjection.from_pretrained(model_id);
const texts = ['cats', 'dogs', 'birds'];
const text_inputs = tokenizer(texts, { padding: 'max_length', truncation: true });
const { text_embeds } = await text_model(text_inputs);
const normalized_text_embeds = text_embeds.normalize().tolist();
const url = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/cats.jpg';
const image = await RawImage.read(url);
const image_inputs = await processor(image);
const { image_embeds } = await vision_model(image_inputs);
const normalized_image_embeds = image_embeds.normalize().tolist();
const probabilities = normalized_image_embeds.map(
x => softmax(normalized_text_embeds.map(y => 100 * dot(x, y)))
);
console.log(probabilities);
📄 许可证
本项目采用 other
许可证。
属性 |
详情 |
模型类型 |
零样本图像分类 |
标签 |
mobileclip、图像特征提取、特征提取 |