Ce projet se concentre sur l'intégration et la récupération d'un ensemble de données de produits de mode à grande échelle collecté auprès de grandes marques telles que Aarong, Allen Solly, Bata, Apex et Infinity. L'ensemble de données se compose de plus de 20 000 produits, couvrant une grande variété de catégories et de styles. L'ordinateur portable exploite des modèles et des outils puissants pour créer des intégres pour le texte et les images, puis stocke ces intérêts dans une base de données vectorielle à l'aide de QDRANT. Cette configuration permet une récupération efficace et précise des produits de mode basés sur la similitude sémantique.
L'ensemble de données, hébergé sur la face des câlins, comprend plus de 20 000 produits de mode tirés de plusieurs sources, avec des détails tels que la catégorie de produits, l'entreprise, le nom, la description, les spécifications, les liens d'image, etc. Vous pouvez explorer l'ensemble de données ici.
text-embedding-3-large pour créer des intégres de haute dimension pour les descriptions et résumés du produit.clip-ViT-B-32 ) de la bibliothèque SentenceTransformer est utilisé pour générer des incorporations d'images. Ce modèle capture des fonctionnalités visuelles qui peuvent être utilisées pour trouver des produits similaires en fonction de leur apparence.Pour chaque produit, une chaîne de résumé est générée, capturant les détails clés tels que la catégorie, l'entreprise, le nom et les spécifications. Cette chaîne est ensuite intégrée à l'aide du modèle de texte. Simultanément, l'image du produit principal est téléchargée, traitée et codée pour générer une image intégrée. Les deux incorporations sont stockées dans la collection QDRANT pour une recherche de vecteurs efficace.
La base de données QDRANT est utilisée comme magasin vectoriel pour ces intérêts, prenant en charge les recherches de similitude en temps réel en fonction des requêtes de texte et d'image. Le cahier crée une collection qui s'adapte à la fois aux vecteurs de résumé et d'image en utilisant la similitude du cosinus.
Le cahier itère sur l'ensemble de données et:
Cette configuration permet une intégration transparente dans tout système nécessitant des recommandations de produits de mode ou des fonctionnalités de recherche basées sur des données multimodales.
L'image ci-dessus présente le nombre de points vectoriels stockés dans la collection QDRANT, visualisant l'échelle de l'ensemble de données et les intégres stockés.
Le projet est une excellente ressource pour tous ceux qui cherchent à explorer les intérêts multimodaux, les bases de données vectorielles et les données de mode à grande échelle.
Ce projet utilise le modèle LLAVA (Language and Vision Assistant) pour générer des descriptions et des spécifications de produits à partir d'images. Le modèle est basé sur une architecture d'IA conversationnelle qui peut interagir avec les entrées de texte et visuelles.
Avant d'exécuter le code, assurez-vous que les dépendances suivantes sont installées:
transformers et datasets l'étreintetorch pour le support PytorchPIL pour le traitement d'imageInstallez le package LLAVA:
! pip install git+https://github.com/haotian-liu/LLaVA.git@786aa6a19ea10edc6f574ad2e16276974e9aaa3aInstaller des dépendances supplémentaires:
! pip install -qU datasetsInitialisez le chatbot llava:
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' )Chargez l'ensemble de données:
from datasets import load_dataset
fashion = load_dataset (
"thegreyhound/demo2" ,
split = "train"
)
product_df = fashion . to_pandas ()Générer des descriptions et des spécifications de produits:
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 += 1Le script traite des images et génère des descriptions de produits de haut niveau et des spécifications détaillées. La sortie finale est enregistrée dans un fichier JSON contenant un tableau d'informations sur le produit.
Ce projet est autorisé en vertu de la licence MIT - voir le fichier de licence pour plus de détails.
Vous pouvez trouver plus de détails et accéder à l'ensemble de données à Hugging Face.