Este proyecto se centra en la incrustación y la recuperación de un conjunto de datos de productos de moda a gran escala recopilado de las principales marcas como Aarong, Allen Solly, Bata, Apex e Infinity. El conjunto de datos consta de más de 20,000 productos, que cubre una amplia variedad de categorías y estilos. El cuaderno aprovecha modelos y herramientas potentes para crear integridades tanto para texto como para imágenes, y luego almacena estos incrustaciones en una base de datos vectorial utilizando Qdrant. Esta configuración permite una recuperación eficiente y precisa de los productos de moda basados en la similitud semántica.
El conjunto de datos, alojado en la cara de abrazo, incluye más de 20,000 productos de moda raspados de múltiples fuentes, con detalles como categoría de productos, empresa, nombre, descripción, especificaciones, enlaces de imagen y más. Puede explorar el conjunto de datos aquí.
text-embedding-3-large de OpenAI para crear integridades de alta dimensión para las descripciones y resúmenes del producto.clip-ViT-B-32 ) de la biblioteca SentenceTransformer se emplea para generar integridades de imagen. Este modelo captura características visuales que se pueden usar para encontrar productos similares basados en su apariencia.Para cada producto, se genera una cadena de resumen, capturando detalles clave como categoría, empresa, nombre y especificaciones. Esta cadena se incrusta usando el modelo de texto. Simultáneamente, la imagen del producto principal se descarga, procesa y codifica para generar una imagen de inserción. Ambos incrustaciones se almacenan en la colección Qdrant para una búsqueda vectorial eficiente.
La base de datos QDRANT se emplea como una tienda vectorial para estos incrustaciones, lo que respalda las búsquedas de similitud en tiempo real en función de las consultas de texto y de imágenes. El cuaderno crea una colección que acomoda vectores de resumen y imagen utilizando similitud de coseno.
El cuaderno itera sobre el conjunto de datos y:
Esta configuración permite una integración perfecta en cualquier sistema que requiera recomendaciones de productos de moda o funcionalidad de búsqueda basada en datos multimodales.
La imagen de arriba muestra el número de puntos vectoriales almacenados en la colección Qdrant, visualizando la escala del conjunto de datos y los incrustaciones almacenados.
El proyecto es un excelente recurso para cualquier persona que busque explorar integridades multimodales, bases de datos vectoriales y datos de moda a escala.
Este proyecto utiliza el modelo LLAVA (Asistente de lenguaje y visión) para generar descripciones y especificaciones de productos a partir de imágenes. El modelo se basa en una arquitectura de IA conversacional que puede interactuar con las entradas de texto y visuales.
Antes de ejecutar el código, asegúrese de tener las siguientes dependencias instaladas:
transformers y datasets de Facetorch para soporte de pytorchPIL para el procesamiento de imágenesInstale el paquete LLAVA:
! pip install git+https://github.com/haotian-liu/LLaVA.git@786aa6a19ea10edc6f574ad2e16276974e9aaa3aInstalar dependencias adicionales:
! pip install -qU datasetsInicializar el 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' )Cargue el conjunto de datos:
from datasets import load_dataset
fashion = load_dataset (
"thegreyhound/demo2" ,
split = "train"
)
product_df = fashion . to_pandas ()Generar descripciones y especificaciones de productos:
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 += 1El script procesa imágenes y genera descripciones de productos de alto nivel y especificaciones detalladas. La salida final se guarda en un archivo JSON que contiene una variedad de información del producto.
Este proyecto tiene licencia bajo la licencia MIT; consulte el archivo de licencia para obtener más detalles.
Puede encontrar más detalles y acceder al conjunto de datos en Hugging Face.