Este proyecto implementa un sistema de Visual Search de alto rendimiento para e-commerce, optimizado para el dataset de Inditex/Zara. El sistema permite emparejar imágenes de modelos (bundles) con productos aislados del catálogo mediante embeddings vectoriales de alta precisión.
El núcleo del sistema es un modelo SigLIP (google/siglip-so400m-patch14-384), especializado en la alineación de imágenes y texto/conceptos.
Para alcanzar el score de 59.55%, no se utiliza un único entrenamiento. Se ha implementado una técnica de Model Soups (Sopa de Modelos):
- Sopa Master (60%): Promedio matemático de los pesos de las épocas 10, 12, 14, 16, 18 y 20.
- Sopa Triangle (20%): Promedio de las épocas 8, 13 y 18.
- Sopa Late (20%): Promedio de las épocas finales 16-20.
Esta interpolación promedia los pesos en el espacio de parámetros, suavizando la superficie de pérdida y mejorando la generalización del modelo frente a nuevas prendas.
El sistema integra una capa de post-procesamiento basada en metadatos de Inditex:
- Match Exacto: Si el código de producto extraído de la URL coincide, se posiciona en el Top 1.
- Match Familia: Si los primeros 7 dígitos (Familia/Modelo) coinciden, el producto recibe un boost de relevancia sobre el ranking de la IA.
Las imágenes se normalizan mediante Letterboxing (pad de 512x512 con color RGB(245, 245, 245)) para mantener el aspect ratio original y evitar deformaciones que confundan al transformador visual.
- Python 3.10+
- GPU NVIDIA (Recomendado para inferencia en <100ms)
- Acceso a los datasets oficiales de Inditex.
- Clonar el repositorio y crear el entorno:
python3 -m venv venv
source venv/bin/activate- Instalar dependencias (Versión CUDA):
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install transformers fastapi uvicorn pillow numpy pandas- Levantar Backend (IA & API):
python -u backend.pyEl sistema cargará el modelo en la GPU y pre-calculará los diccionarios de búsqueda en memoria.
- Levantar Frontend (Interfaz):
cd code
python3 -m http.server 8080Acceder a http://localhost:8080 en el navegador.
Nota: Los archivos de datos y pesos son propiedad de Inditex y no se incluyen en este repositorio. Deben descargarse desde los servidores oficiales y colocarse en:
/dataset/products/: Imágenes del catálogo./dataset/bundles/: Imágenes de modelos.siglip_SOUP_master.pth: Pesos del modelo interpolado.cache_SOUP_master.npz: Embeddings pre-calculados del catálogo (27k items).*.csv: Datasets de mapeo y descripciones.
Desarrollado para el reto de Visión Artificial de Inditex.