Ce référentiel est conçu pour évaluer Marqo-FashionCLIP et Marqo-FashionSigLIP sur sept ensembles de données de référence publics. En savoir plus sur les modèles sur notre blog.
Nous avons fait la moyenne des performances de trois tâches courantes dans les ensembles de données : texte-image, catégorie-produit et sous-catégorie-produit. Comme démontré ci-dessous, Marqo-FashionCLIP et Marqo-FashionSigLIP surpassent à la fois les modèles OpenCLIP pré-entraînés et les modèles CLIP de mode de pointe. Pour une comparaison plus complète des performances, reportez-vous au LEADERBOARD.
Text-To-Image (moyenne sur 6 ensembles de données)
Modèle | Rappel moyen | Rappel@1 | Rappel@10 | MRR |
---|---|---|---|---|
Marqo-FashionSigLIP | 0,231 | 0,121 | 0,340 | 0,239 |
Marqo-FashionCLIP | 0,192 | 0,094 | 0,290 | 0,200 |
ModeCLIP2.0 | 0,163 | 0,077 | 0,249 | 0,165 |
OuvrirFashionCLIP | 0,132 | 0,060 | 0,204 | 0,135 |
ViT-B-16-laion2b_s34b_b88k | 0,174 | 0,088 | 0,261 | 0,180 |
ViT-B-16-SigLIP-webli | 0,212 | 0,111 | 0,314 | 0,214 |
Catégorie à produit (moyenne sur 5 ensembles de données)
Modèle | MoyP | P@1 | P@10 | MRR |
---|---|---|---|---|
Marqo-FashionSigLIP | 0,737 | 0,758 | 0,716 | 0,812 |
Marqo-FashionCLIP | 0,705 | 0,734 | 0,676 | 0,776 |
ModeCLIP2.0 | 0,684 | 0,681 | 0,686 | 0,741 |
OuvrirFashionCLIP | 0,646 | 0,653 | 0,639 | 0,720 |
ViT-B-16-laion2b_s34b_b88k | 0,662 | 0,673 | 0,652 | 0,743 |
ViT-B-16-SigLIP-webli | 0,688 | 0,690 | 0,685 | 0,751 |
Sous-catégorie vers produit (moyenne sur 4 ensembles de données)
Modèle | MoyP | P@1 | P@10 | MRR |
---|---|---|---|---|
Marqo-FashionSigLIP | 0,725 | 0,767 | 0,683 | 0,811 |
Marqo-FashionCLIP | 0,707 | 0,747 | 0,667 | 0,772 |
ModeCLIP2.0 | 0,657 | 0,676 | 0,638 | 0,733 |
OuvrirFashionCLIP | 0,598 | 0,619 | 0,578 | 0,689 |
ViT-B-16-laion2b_s34b_b88k | 0,638 | 0,651 | 0,624 | 0,712 |
ViT-B-16-SigLIP-webli | 0,643 | 0,643 | 0,643 | 0,726 |
Nous avons publié nos modèles sur HuggingFace : Marqo-FashionCLIP et Marqo-FashionSigLIP. Nous avons également une démo Hugging Face Space de nos modèles en action : Classification avec Marqo-FashionSigLIP.
Vous pouvez charger les modèles avec transformers
en
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 )
et
from transformers import AutoModel , AutoProcessor
model = AutoModel . from_pretrained ( 'Marqo/marqo-fashionSigLIP' , trust_remote_code = True )
processor = AutoProcessor . from_pretrained ( 'Marqo/marqo-fashionSigLIP' , trust_remote_code = True )
Alors,
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 )
Nous avons publié cet article illustrant une simple recherche de commerce électronique avec un ensemble de données de mode si vous souhaitez voir le modèle en action.
Vous pouvez charger les modèles avec open_clip
en
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' )
et
import open_clip
model , preprocess_train , preprocess_val = open_clip . create_model_and_transforms ( 'hf-hub:Marqo/marqo-fashionSigLIP' )
tokenizer = open_clip . get_tokenizer ( 'hf-hub:Marqo/marqo-fashionSigLIP' )
Alors,
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 )
Pour déployer sur Marqo Cloud (recommandé) :
Inscrivez-vous à Marqo Cloud.
Installez Marqo et le client python Marqo :
pip install marqo
import marqo
settings = {
"type" : "unstructured" ,
"model" : "marqo-fashion-clip" , # model name
"modelProperties" : {
"name" : "ViT-B-16" , # model architecture
"dimensions" : 512 , # embedding dimensions
"url" : "https://marqo-gcl-public.s3.us-west-2.amazonaws.com/marqo-fashionCLIP/marqo_fashionCLIP.pt" , # model weights
"type" : "open_clip" # loading library
},
}
api_key = "your_api_key" # replace with your api key (https://www.marqo.ai/blog/finding-my-marqo-api-key)
mq = marqo . Client ( "https://api.marqo.ai" , api_key = api_key )
mq . create_index ( "fashion-index" , settings_dict = settings )
# triggers model download
mq . index ( "fashion-index" ). search ( "black dress" )
Consultez la documentation complète pour plus de détails sur l’ajout de documents et la recherche.
Installez d'abord PyTorch et exécutez
pip install -r requirements.txt
Pour évaluer Marqo-FashionCLIP, exécutez cette commande
python eval.py
--dataset-config ./configs/ ${DATASET} .json
--model-name Marqo/marqo-fashionCLIP
--run-name Marqo-FashionCLIP
DATASET
peut être l'un des ['deepfashion_inshop', 'deepfashion_multimodal', 'fashion200k', 'KAGL', 'atlas', 'polyvore' 'iMaterialist']Pour évaluer Marqo-FashionSigLIP, exécutez cette commande
python eval.py
--dataset-config ./configs/ ${DATASET} .json
--model-name Marqo/marqo-fashionSigLIP
--run-name Marqo-FashionSigLIP
DATASET
peut être l'un des ['deepfashion_inshop', 'deepfashion_multimodal', 'fashion200k', 'KAGL', 'atlas', 'polyvore' 'iMaterialist']Des scripts pour évaluer d'autres modèles, notamment FashionCLIP 2.0 et OpenFashionCLIP, peuvent être trouvés dans le répertoire des scripts.
Nous avons collecté 7 ensembles de données de mode multimodales publiques et téléchargés sur HuggingFace : Atlas, DeepFashion (en magasin), DeepFashion (multimodal), Fashion200k, iMaterialist, KAGL et Polyvore. Chaque ensemble de données dispose de différentes métadonnées disponibles. Ainsi, les tâches de chaque ensemble de données sont stockées sous forme de fichiers json dans le répertoire des scripts. Reportez-vous à notre blog pour plus d’informations sur chaque ensemble de données.
Pour renouveler LEADERBOARD.md et résumer les résultats des différents modèles localement, exécutez cette commande
python summarize_results.py
@software{Jung_Marqo-FashionCLIP_and_Marqo-FashionSigLIP_2024,
author = {Jung, Myong Chol and Clark, Jesse},
month = aug,
title = {{Marqo-FashionCLIP and Marqo-FashionSigLIP}},
url = {https://github.com/marqo-ai/marqo-FashionCLIP},
version = {1.0.0},
year = {2024}
}