| Nom | Lien |
|---|---|
| FashionClip Feature Extraction et Classification | |
| Tutoriel - FashionClip Evaluation avec Reclist |
Mise à jour (10/03/23): Nous avons mis à jour le modèle! Nous avons constaté que LAION / CLIP-VIT-B-32-LAION2B-S34B-B79K Point de contrôle (merci Bin!) A mieux fonctionné que le clip Openai original sur la mode. Nous affinons ainsi une version plus récente (et meilleure!) De FashionClip (désormais FashionClip 2.0), tout en gardant l'architecture la même. Nous postulons que les gains de périofrmance offerts par laion/CLIP-ViT-B-32-laion2B-s34B-b79K sont dus à l'augmentation des données de formation (données 5x OpenAI Clip). Notre thèse, cependant, reste la même - laion/CLIP à réglage fin sur notre ensemble de données de mode amélioré la perfrmance zéro à travers nos repères. Voir le tableau ci-dessous comparant le score de macro F1 pondéré sur les modèles. '
| Modèle | Fmnist | Kagl | PROFOND |
|---|---|---|---|
| Clip Openai | 0,66 | 0,63 | 0,45 |
| Clip | 0,74 | 0,67 | 0,48 |
| Clip de laion | 0,78 | 0,71 | 0,58 |
| FashionClip 2.0 | 0,83 | 0,73 | 0,62 |
Nous sommes maintenant sur le visage étreint! Le modèle est disponible ici.
Nous sommes maintenant sur des rapports scientifiques de la nature!
@Article{Chia2022,
title="Contrastive language and vision learning of general fashion concepts",
author="Chia, Patrick John
and Attanasio, Giuseppe
and Bianchi, Federico
and Terragni, Silvia
and Magalh{~a}es, Ana Rita
and Goncalves, Diogo
and Greco, Ciro
and Tagliabue, Jacopo",
journal="Scientific Reports",
year="2022",
month="Nov",
day="08",
volume="12",
number="1",
pages="18958",
abstract="The steady rise of online shopping goes hand in hand with the development of increasingly complex ML and NLP models. While most use cases are cast as specialized supervised learning problems, we argue that practitioners would greatly benefit from general and transferable representations of products. In this work, we build on recent developments in contrastive learning to train FashionCLIP, a CLIP-like model adapted for the fashion industry. We demonstrate the effectiveness of the representations learned by FashionCLIP with extensive tests across a variety of tasks, datasets and generalization probes. We argue that adaptations of large pre-trained models such as CLIP offer new perspectives in terms of scalability and sustainability for certain types of players in the industry. Finally, we detail the costs and environmental impact of training, and release the model weights and code as open source contribution to the community.",
issn="2045-2322",
doi="10.1038/s41598-022-23052-9",
url="https://doi.org/10.1038/s41598-022-23052-9"
}
Nous attendons la version officielle de l'ensemble de données Farfetch, sur lequel des poids de modèle affinés, des vecteurs d'image et de texte prétraités seront rendus publics. Entre-temps, nous utilisons actuellement l'implémentation de la face étreinte de CLIP et pouvons utiliser les poids du modèle d'OpenAI en suivant la convention de dénomination standard de Hugginface (c'est-à-dire fclip = FashionCLIP('<username>/<repo_name>', ... ) ). Nous prenons également en charge les référentiels privés (c'est-à-dire fclip = FashionCLIP('<username>/<repo_name>', auth_token=<AUTH_TOKEN>, ... ) ).
Voir ci-dessous pour plus de détails!
FashionCLIP est un modèle de type clip fin pour l'industrie de la mode. Nous amenons CLIP éloges (Radford et al., 2021 sur plus de 700k <image, text> paires de l'ensemble de données Farfetch 1 .
Nous évaluons FashionClip en l'appliquant à des problèmes ouverts dans l'industrie tels que la récupération, la classification et l'analyse de la mode. Nos résultats démontrent que le réglage fin aide à capturer des concepts spécifiques au domaine et les généralise dans des scénarios zéro-tirs. Nous complétons également les tests quantitatifs avec des analyses qualitatives et offrons des informations préliminaires sur la façon dont les concepts ancrés dans un espace visuel débloquent la généralisation linguistique. Veuillez consulter notre article pour plus de détails.
Dans ce référentiel, vous trouverez une API pour interagir avec FashionCLIP et une démo interactive construite à l'aide de Streamlit (à venir bientôt!) Qui présente les capacités de FashionCLIP .
Besoin d'un moyen rapide de générer des intégres? Voulez-vous tester les performances de récupération?
Tout d'abord, vous devriez être en mesure de l'installer rapidement en utilisant PIP.
$ pip install fashion-clip
Si vous avez des listes de textes et de chemins d'image, il est très facile de générer des intégres:
from fashion_clip . fashion_clip import FashionCLIP
fclip = FashionCLIP ( 'fashion-clip' )
# we create image embeddings and text embeddings
image_embeddings = fclip . encode_images ( images , batch_size = 32 )
text_embeddings = fclip . encode_text ( texts , batch_size = 32 )
# we normalize the embeddings to unit norm (so that we can use dot product instead of cosine similarity to do comparisons)
image_embeddings = image_embeddings / np . linalg . norm ( image_embeddings , ord = 2 , axis = - 1 , keepdims = True )
text_embeddings = text_embeddings / np . linalg . norm ( text_embeddings , ord = 2 , axis = - 1 , keepdims = True )Utilisez notre cahier Colab pour voir plus de fonctionnalités.
from PIL import Image
import requests
from transformers import CLIPProcessor , CLIPModel
model = CLIPModel . from_pretrained ( "patrickjohncyh/fashion-clip" )
processor = CLIPProcessor . from_pretrained ( "patrickjohncyh/fashion-clip" )
image = Image . open ( "images/image1.jpg" )
inputs = processor ( text = [ "a photo of a red shoe" , "a photo of a black shoe" ],
images = image , return_tensors = "pt" , padding = True )
outputs = model ( ** inputs )
logits_per_image = outputs . logits_per_image # this is the image-text similarity score
probs = logits_per_image . softmax ( dim = 1 )
print ( probs )
image . resize (( 224 , 224 )) À partir de la racine du projet, installez le package fashion-clip localement avec
$ pip install -e .
Il y a deux abstractions principales pour faciliter une utilisation facile de FashionCLIP .
Premièrement, la classe FCLIPDataset qui résume les informations liées à un catalogue donné et expose les informations critiques pour FashionCLIP . De plus, il fournit des fonctions d'assistance pour une exploration rapide et une visualisation des données. Les principaux paramètres d'initialisation sont
name: str -> Name of dataset
image_source_path: str -> absolute path to images (can be local or s3)
image_source_type: str -> type of source (i.e. local or s3)
catalog: List[dict] = None -> list of dicts containing at miniumum the keys ['id', 'image', 'caption']
Pour plus de facilité d'utilisation, l'API donne également accès à l'ensemble de données ( une fois qu'il est officiellement publié ), utilisé dans l'article pour la formation FahionCLIP , en spécifiant simplement le nom du catalogue correspondant.
from fashion_clip import FCLIPDataset
dataset = FCLIPDataset(name='FF',
image_source_path='path/to/images',
image_source_type='local')
from fashion_clip import FCLIPDataset
my_catalog = [{'id': 1, 'image': 'x.jpg', 'caption': 'image x'}]
dataset = FCLIPDataset(name='my_dataset',
image_source_path='path/to/images',
image_source_type='local',
catalog=my_catalog)
La deuxième abstraction est la classe FashionCLIP , qui prend un nom de modèle de clip de visage étreint et un FCLIPDataset , et offre des fonctions pratiques pour effectuer des tâches telles que la récupération multimodale, la classification et la localisation de zéro coup. Les paramètres d'initialisation pour FashionCLIP sont les suivants:
model_name: str -> Name of model OR path to local model
dataset: FCLIPDataset -> Dataset,
normalize: bool -> option to convert embeddings to unit norm
approx: bool -> option to use approximate nearest neighbors
Semblable à l'abstraction FCLIPDataset , nous avons inclus un modèle FashionCLIP pré-formé du papier, hébergé ici. Si un ensemble de données inconnu et une combinaison de modèle sont reçus, les vecteurs d'image et de légende seront générés lors de l'instanciation de l'objet, sinon les vecteurs / intégres pré-calculés seront tirés de S3.
from fashion_clip import FCLIPDataset, FashionCLIP
dataset = FCLIPDataset(name='FF',
image_source_path='path/to/images',
image_source_type='local')
fclip = FashionCLIP('fasihon-clip', ff_dataset)
Pour plus de détails sur la façon d'utiliser le package, reportez-vous au cahier d'accompagnement!
Libération officielle en attente. ↩