Este projeto se concentra na incorporação e recuperação de um conjunto de dados de produtos de moda em larga escala coletado de grandes marcas como Aarong, Allen Solly, Bata, Apex e Infinity. O conjunto de dados consiste em mais de 20.000 produtos, cobrindo uma ampla variedade de categorias e estilos. O notebook aproveita modelos e ferramentas poderosas para criar incorporação para texto e imagens e, em seguida, armazena essas incorporações em um banco de dados vetorial usando o QDRANT. Essa configuração permite uma recuperação eficiente e precisa dos produtos de moda com base na similaridade semântica.
O conjunto de dados, hospedado em Hugging Face, inclui mais de 20.000 produtos de moda raspados de várias fontes, com detalhes como categoria de produto, empresa, nome, descrição, especificações, links de imagem e muito mais. Você pode explorar o conjunto de dados aqui.
text-embedding-3-large do OpenAI para criar incorporações de alta dimensão para as descrições e resumos do produto.clip-ViT-B-32 ) da Biblioteca SentenceTransformer é empregado para gerar incorporações de imagem. Esse modelo captura recursos visuais que podem ser usados para encontrar produtos semelhantes com base em sua aparência.Para cada produto, uma string resumida é gerada, capturando detalhes -chave como categoria, empresa, nome e especificações. Esta string é então incorporada usando o modelo de texto. Simultaneamente, a imagem principal do produto é baixada, processada e codificada para gerar uma imagem incorporada. Ambas as incorporações são armazenadas na coleção QDRANT para pesquisa de vetores eficientes.
O banco de dados QDRANT é empregado como uma loja de vetores para essas incorporações, suportando pesquisas de similaridade em tempo real com base nas consultas de texto e imagem. O notebook cria uma coleção que acomoda vetores de resumo e imagem usando similaridade de cosseno.
O notebook itera sobre o conjunto de dados e:
Essa configuração permite integração perfeita em qualquer sistema que exija recomendações de produtos de moda ou funcionalidade de pesquisa com base em dados multimodais.
A imagem acima mostra o número de pontos vetoriais armazenados na coleção QDRANT, visualizando a escala do conjunto de dados e as incorporações armazenadas.
O projeto é um excelente recurso para quem deseja explorar incorporações multimodais, bancos de dados de vetores e dados de moda em escala.
Este projeto utiliza o modelo LLAVA (Language and Vision Assistant) para gerar descrições e especificações do produto a partir de imagens. O modelo é baseado em uma arquitetura de AI conversacional que pode interagir com entradas de texto e visual.
Antes de executar o código, verifique se você tem as seguintes dependências instaladas:
transformers and datasets Libraries do rosto do rostotorch para suporte a pytorchPIL para processamento de imagemInstale o pacote llava:
! pip install git+https://github.com/haotian-liu/LLaVA.git@786aa6a19ea10edc6f574ad2e16276974e9aaa3aInstale dependências adicionais:
! pip install -qU datasetsInicialize o llava chatbot:
from transformers import AutoTokenizer , BitsAndBytesConfig
from llava . model import LlavaLlamaForCausalLM
from llava . utils import disable_torch_init
from llava . constants import IMAGE_TOKEN_INDEX , DEFAULT_IMAGE_TOKEN , DEFAULT_IM_START_TOKEN , DEFAULT_IM_END_TOKEN
from llava . mm_utils import tokenizer_image_token , KeywordsStoppingCriteria
from llava . conversation import conv_templates , SeparatorStyle
import torch
from PIL import Image
import requests
from io import BytesIO
chatbot = LLaVAChatBot ( load_in_8bit = True ,
bnb_8bit_compute_dtype = torch . float16 ,
bnb_8bit_use_double_quant = True ,
bnb_8bit_quant_type = 'nf8' )Carregue o conjunto de dados:
from datasets import load_dataset
fashion = load_dataset (
"thegreyhound/demo2" ,
split = "train"
)
product_df = fashion . to_pandas ()Gerar descrições e especificações do produto:
cnt = 1
for index , row in product_df . iterrows ():
str1 = "Given Image detail was: " + row [ 'Description' ] + " Now generate a brief high level description for the product shown in the image"
str2 = "Given Image detail was: " + row [ 'Description' ] + " Now generate a detailed specifications for the product shown in the image including the fabric, color, design, style etc"
ans1 = chatbot . start_new_chat ( img_path = row [ 'Image_link' ],
prompt = str1 )
ans2 = chatbot . start_new_chat ( img_path = row [ 'Image_link' ],
prompt = str2 )
product_df . loc [ index , 'Description' ] = ans1
product_df . loc [ index , 'Specifications' ] = ans2
print ( cnt )
cnt += 1O script processa imagens e gera descrições de produtos de alto nível e especificações detalhadas. A saída final é salva em um arquivo JSON contendo uma variedade de informações do produto.
Este projeto está licenciado sob a licença do MIT - consulte o arquivo de licença para obter detalhes.
Você pode encontrar mais detalhes e acessar o conjunto de dados no Hugging Face.