Transformers.js v2.15 发布,支持 Qwen 1.5、MODNet 和 owlv2

716 阅读3分钟

🤖 Qwen1.5 聊天模型(0.5B 和 1.8B)

昨天,Qwen 团队(阿里巴巴集团)发布了 Qwen1.5 系列聊天模型。作为发布的一部分,他们推出了几个参数低于 2B 的模型,包括 Qwen/Qwen1.5-0.5B-Chat 和 Qwen/Qwen1.5-1.8B-Chat,这两个模型尽管规模较小,但性能出色。最棒的是?它们可以在浏览器中通过 Transformers.js (PR) 运行!🚀 在这里查看支持的完整模型列表。

Qwen1.5 Chat 演示

示例:使用 Xenova/Qwen1.5-0.5B-Chat 进行文本生成。

import { pipeline } from '@xenova/transformers';

// 创建文本生成 pipeline
const generator = await pipeline('text-generation', 'Xenova/Qwen1.5-0.5B-Chat');

// 定义提示和消息列表
const prompt = "Give me a short introduction to large language model."
const messages = [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": prompt }
]

// 应用聊天模板
const text = generator.tokenizer.apply_chat_template(messages, {
    tokenize: false,
    add_generation_prompt: true,
});

// 生成文本
const output = await generator(text, {
    max_new_tokens: 128,
    do_sample: false,
});
console.log(output[0].generated_text);
// 'A large language model is a type of artificial intelligence system that can generate text based on the input provided by users, such as books, articles, or websites. It uses advanced algorithms and techniques to learn from vast amounts of data and improve its performance over time through machine learning and natural language processing (NLP). Large language models have become increasingly popular in recent years due to their ability to handle complex tasks such as generating human-like text quickly and accurately. They have also been used in various fields such as customer service chatbots, virtual assistants, and search engines for information retrieval purposes.'
// '一个大语言模型是一种人工智能系统,能够根据用户提供的输入生成文本,如书籍、文章或网站。它使用先进的算法和技术,从大量数据中学习,并通过机器学习和自然语言处理 (NLP) 随时间提高其性能。近年来,大语言模型因其快速、准确处理复杂任务(如生成类人文本)的能力而越来越受欢迎。它们还被用于各种领域,如客户服务聊天机器人、虚拟助手和搜索引擎的信息检索。'

🧍 MODNet 用于人像图像抠图

接下来,我们添加了对 MODNet 的支持,这是一个小巧但功能强大的肖像图像抠图模型 (PR)。感谢 @cyio 的建议!

MODNet 演示

示例:使用 Xenova/modnet 进行人像图像抠图。

import { AutoModel, AutoProcessor, RawImage } from '@xenova/transformers';

// 加载模型和处理器
const model = await AutoModel.from_pretrained('Xenova/modnet', { quantized: false });
const processor = await AutoProcessor.from_pretrained('Xenova/modnet');

// 从 URL 加载图像
const url = 'https://images.pexels.com/photos/5965592/pexels-photo-5965592.jpeg?auto=compress&cs=tinysrgb&w=1024';
const image = await RawImage.fromURL(url);

// 预处理图像
const { pixel_values } = await processor(image);

// 预测 alpha matte
const { output } = await model({ input: pixel_values });

// 保存输出掩码
const mask = await RawImage.fromTensor(output[0].mul(255).to('uint8')).resize(image.width, image.height);
mask.save('mask.png');
输入图像输出掩码
image/pngimage/png

🧠 新的文本嵌入模型

我们还添加了对几个新文本嵌入模型的支持,包括:

查看链接获取使用示例。

🛠️ 其他改进

  • 修复文档中的示例链接 (#550)。
  • 改进未知模型的警告 (#554)。
  • 更新 jsdoc-to-markdown 开发依赖 (#574)。

背景移除演示

在 #576 中添加了背景移除演示 (在线演示)。

背景移除演示

支持 owlv2 模型

在 #579 中增加了对 owlv2 模型的支持。

示例:使用 Xenova/owlv2-base-patch16-ensemble 进行零样本对象检测。

import { pipeline } from '@xenova/transformers';

const detector = await pipeline('zero-shot-object-detection', 'Xenova/owlv2-base-patch16-ensemble');

const url = 'http://images.cocodataset.org/val2017/000000039769.jpg';
const candidate_labels = ['a photo of a cat', 'a photo of a dog'];
const output = await detector(url, candidate_labels);
console.log(output);
// [
//   { score: 0.7400985360145569, label: 'a photo of a cat', box: { xmin: 0, ymin: 50, xmax: 323, ymax: 485 } },
//   { score: 0.6315087080001831, label: 'a photo of a cat', box: { xmin: 333, ymin: 23, xmax: 658, ymax: 378 } }
// ]

owlv2 模型的支持

支持 Matryoshka 嵌入的自适应检索

在 #587 和 #588 中添加了对 Matryoshka 嵌入 (nomic-ai/nomic-embed-text-v1.5) 的自适应检索支持 (在线演示)。

Matryoshka 嵌入

支持 Gemma Tokenizer

在 #597 和 #598 中添加了对 Gemma Tokenizer 的支持。