| Nome | Link |
|---|---|
| FashionClip Feature Extração e Classificação | |
| Tutorial - Avaliação de FashionClip com reclista |
Atualização (10/03/23): Atualizamos o modelo! Descobrimos que Laion/Clip-Vit-B-32-LAion2b-S34b-B79K Point (obrigado bin!) Funcionou melhor do que o clipe original do OpenAi sobre moda. Assim, ajustamos uma versão mais recente (e melhor!) Do FashionClip (doravante FashionClip 2.0), mantendo a arquitetura a mesma. Postulamos que os ganhos de perofrmance oferecidos pelos laion/CLIP-ViT-B-32-laion2B-s34B-b79K são devidos ao aumento dos dados de treinamento (dados do clipe 5x OpenAI). Nossa tese, no entanto, permanece a mesma- laion/CLIP ajuste em nosso conjunto de dados de moda melhorou o peroframento zero-tiro em nossos benchmarks. Veja a tabela abaixo comparando a pontuação macro F1 ponderada nos modelos. `
| Modelo | Fmnist | Kagl | PROFUNDO |
|---|---|---|---|
| Clipe OpenAi | 0,66 | 0,63 | 0,45 |
| FashionClip | 0,74 | 0,67 | 0,48 |
| Clipe de Laion | 0,78 | 0,71 | 0,58 |
| FashionClip 2.0 | 0,83 | 0,73 | 0,62 |
Agora estamos abraçando o rosto! O modelo está disponível aqui.
Agora estamos nos relatórios científicos da natureza!
@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"
}
Estamos aguardando o lançamento oficial do conjunto de dados Farfetch, sobre o qual os pesos do modelo ajustado, os vetores de imagem e texto pré-processados serão divulgados. Enquanto isso, atualmente usamos a implementação de CLIP de Hugging Face e podemos usar os pesos do modelo do OpenAI, seguindo a Convenção de Nomeação de Hugginface padrão (ou seja, fclip = FashionCLIP('<username>/<repo_name>', ... ) ). Também apoiamos repositórios privados (ou seja, fclip = FashionCLIP('<username>/<repo_name>', auth_token=<AUTH_TOKEN>, ... ) ).
Veja abaixo para obter mais detalhes!
FashionCLIP é um modelo de clipe, ajustado para a indústria da moda. Nós ajustamos CLIP ajuste (Radford et al., 2021 em mais de 700k <imagem, texto> pares do conjunto de dados Farfetch 1 .
Avaliamos o FashionClip aplicando -o para abrir problemas na indústria, como recuperação, classificação e análise de moda. Nossos resultados demonstram que o ajuste fino ajuda a capturar conceitos específicos de domínio e os generaliza em cenários de tiro zero. Também complementamos testes quantitativos com análises qualitativas e oferecemos insights preliminares sobre como os conceitos fundamentados em um espaço visual desbloqueiam a generalização linguística. Por favor, consulte nosso artigo para obter mais detalhes.
Neste repositório, você encontrará uma API para interagir com FashionCLIP e uma demonstração interativa construída usando o Streamlit (em breve!), Que mostra as capacidades do FashionCLIP .
Precisa de uma maneira rápida de gerar incorporações? Você quer testar o desempenho da recuperação?
Primeiro de tudo, você poderá instalar rapidamente isso usando o PIP.
$ pip install fashion-clip
Se você tiver listas de textos e caminhos de imagem, é muito fácil gerar incorporações:
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 )Use nosso notebook Colab para ver mais funcionalidades.
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 )) Do Project Root, instale o pacote fashion-clip localmente com
$ pip install -e .
Existem duas abstrações principais para facilitar o uso fácil do FashionCLIP .
Primeiro, a classe FCLIPDataset , que encapsula informações relacionadas a um determinado catálogo e expõe informações críticas ao FashionCLIP . Além disso, fornece funções auxiliares para exploração rápida e visualização de dados. Os principais parâmetros de inicialização são
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']
Para facilitar o uso, a API também fornece acesso ao conjunto de dados ( uma vez lançado oficialmente ), usado no artigo para treinar FahionCLIP , simplesmente especificando o nome do catálogo correspondente.
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)
A segunda abstração é a classe FashionCLIP , que recebe um nome de modelo de clipe de rosto e um FCLIPDataset , e fornece funções convenientes para executar tarefas como recuperação multimodal, classificação e localização zero-tiro. Os parâmetros de inicialização do FashionCLIP são os seguintes:
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
Semelhante à abstração FCLIPDataset , incluímos um modelo FashionCLIP pré-treinado no artigo, hospedado aqui. Se um conjunto de dados desconhecido e combinação de modelos forem recebidos, os vetores de imagem e legenda serão gerados mediante instanciação de objetos, caso contrário, os vetores/incorporação pré-computados serão retirados do 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)
Para mais detalhes sobre como usar o pacote, consulte o caderno que o acompanha!
Lançamento oficial pendente. ↩