ONNX 模型库
返回模型

说明文档

GitHub

Marqo-FashionCLIP 模型卡片

Marqo-FashionCLIP 和 Marqo-FashionSigLIP 优于此前最先进的时尚 CLIP 模型(见下方结果)。 Marqo-FashionCLIP 利用广义对比学习(GCL),该方法不仅允许模型学习文本描述,还能学习类别、风格、颜色、材质、关键词和细节,从而在时尚产品上提供高度相关的搜索结果。 该模型基于 ViT-B-16(laion2b_s34b_b88k)进行微调。

Github 页面Marqo-FashionCLIP

博客Marqo 博客

使用方法

Hugging Face

可以通过 AutoModel 加载模型:

from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained('Marqo/marqo-fashionCLIP', trust_remote_code=True)
processor = AutoProcessor.from_pretrained('Marqo/marqo-fashionCLIP', trust_remote_code=True)

import torch
from PIL import Image

image = [Image.open("docs/fashion-hippo.png")]
text = ["a hat", "a t-shirt", "shoes"]
processed = processor(text=text, images=image, padding='max_length', return_tensors="pt")

with torch.no_grad():
    image_features = model.get_image_features(processed['pixel_values'], normalize=True)
    text_features = model.get_text_features(processed['input_ids'], normalize=True)

    text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)

print("Label probs:", text_probs)
# [0.99990773, 0.00006382, 0.00002847]

OpenCLIP

该模型可以与 OpenCLIP 无缝配合使用:

import open_clip
model, preprocess_train, preprocess_val = open_clip.create_model_and_transforms('hf-hub:Marqo/marqo-fashionCLIP')
tokenizer = open_clip.get_tokenizer('hf-hub:Marqo/marqo-fashionCLIP')

import torch
from PIL import Image

image = preprocess_val(Image.open("docs/fashion-hippo.png")).unsqueeze(0)
text = tokenizer(["a hat", "a t-shirt", "shoes"])

with torch.no_grad(), torch.cuda.amp.autocast():
    image_features = model.encode_image(image, normalize=True)
    text_features = model.encode_text(text, normalize=True)

    text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)

print("Label probs:", text_probs)
# [0.9998498302475922, 0.000119267522939106, 0.000030902229468640687]

Transformers.js

您还可以使用 Transformers.js 库在 JavaScript 中运行该模型。

首先,使用以下命令从 NPM 安装:

npm i @huggingface/transformers

然后,按如下方式计算嵌入:

import { CLIPTextModelWithProjection, CLIPVisionModelWithProjection, AutoTokenizer, AutoProcessor, RawImage, softmax, dot } from '@huggingface/transformers';

const model_id = 'Marqo/marqo-fashionCLIP';

// 加载分词器和文本模型
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 = ['a hat', 'a t-shirt', 'shoes'];
const text_inputs = tokenizer(texts, { padding: 'max_length', truncation: true });

// 计算文本嵌入
const { text_embeds } = await text_model(text_inputs);

// 读取图像并运行处理器
const image = await RawImage.read('https://raw.githubusercontent.com/marqo-ai/marqo-FashionCLIP/main/docs/fashion-hippo.png');
const image_inputs = await processor(image);

// 计算视觉嵌入
const { image_embeds } = await vision_model(image_inputs);

// 计算相似度分数
const normalized_text_embeds = text_embeds.normalize().tolist();
const normalized_image_embeds = image_embeds.normalize().tolist()[0];

const text_probs = softmax(normalized_text_embeds.map((text_embed) => 
    100.0 * dot(normalized_image_embeds, text_embed)
));
console.log(text_probs);
// [0.9998498302475922, 0.000119267522939106, 0.000030902229468640687]

基准测试结果

下方报告了在 6 个公开多模态时尚数据集上的平均评估结果(AtlasDeepFashion(店内)DeepFashion(多模态)Fashion200kKAGLPolyvore):

文本到图像(6 个数据集平均)

模型 AvgRecall Recall@1 Recall@10 MRR
Marqo-FashionCLIP 0.192 0.094 0.290 0.200
FashionCLIP2.0 0.163 0.077 0.249 0.165
OpenFashionCLIP 0.132 0.060 0.204 0.135
ViT-B-16-laion2b_s34b_b88k 0.174 0.088 0.261 0.180

类别到产品(5 个数据集平均)

模型 AvgP P@1 P@10 MRR
Marqo-FashionCLIP 0.705 0.734 0.676 0.776
FashionCLIP2.0 0.684 0.681 0.686 0.741
OpenFashionCLIP 0.646 0.653 0.639 0.720
ViT-B-16-laion2b_s34b_b88k 0.662 0.673 0.652 0.743

子类别到产品(4 个数据集平均)

模型 AvgP P@1 P@10 MRR
Marqo-FashionCLIP 0.707 0.747 0.667 0.772
FashionCLIP2.0 0.657 0.676 0.638 0.733
OpenFashionCLIP 0.598 0.619 0.578 0.689
ViT-B-16-laion2b_s34b_b88k 0.638 0.651 0.624 0.712

Marqo/marqo-fashionCLIP

作者 Marqo

zero-shot-image-classification open_clip
↓ 56.4K ♥ 28

创建时间: 2024-08-08 01:01:13+00:00

更新时间: 2024-10-12 21:26:43+00:00

在 Hugging Face 上查看

文件 (30)

.gitattributes
README.md
config.json
marqo_fashionCLIP.py
merges.txt
model.safetensors
onnx/text_model.onnx ONNX
onnx/text_model_bnb4.onnx ONNX
onnx/text_model_fp16.onnx ONNX
onnx/text_model_int8.onnx ONNX
onnx/text_model_q4.onnx ONNX
onnx/text_model_q4f16.onnx ONNX
onnx/text_model_quantized.onnx ONNX
onnx/text_model_uint8.onnx ONNX
onnx/vision_model.onnx ONNX
onnx/vision_model_bnb4.onnx ONNX
onnx/vision_model_fp16.onnx ONNX
onnx/vision_model_int8.onnx ONNX
onnx/vision_model_q4.onnx ONNX
onnx/vision_model_q4f16.onnx ONNX
onnx/vision_model_quantized.onnx ONNX
onnx/vision_model_uint8.onnx ONNX
open_clip_config.json
open_clip_model.safetensors
open_clip_pytorch_model.bin
preprocessor_config.json
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.json