Hugging Face Jobs — Fine-tuning Vision
VisionRetail SL · Detección de Productos en Lineales de Supermercado
JOB: 687fb701029421ae5549d998
Completado
Fine-tuning completado — Modelo guardado en Hugging Face Hub
visionretail/shelf-detector-dfine-small · mAP@50 final: 0.7842 · Objetivo mínimo: 0.72 ✓ · Duración: 2h 34min · Coste: 1.03€
Métricas finales
🎯
mAP@50 (val)
0.784
vs. YOLO base: +8.6%
📦
mAP@50:95 (val)
0.631
Mejor época: 30 / 30
Tiempo GPU
2h 34m
Hardware: t4-small
💶
Coste total
1.03€
Presupuesto usado: 4.1% de 25€
Curvas de entrenamiento (Trackio)
mAP@50 por época — train vs. validation
1.0 0.8 0.6 0.4 0.2 0 5 10 15 20 25 30 best: 0.784 mín 0.72
Train mAP@50
Val mAP@50
Objetivo mínimo
e1: 0.14
e5: 0.31
e10: 0.48
e15: 0.61
e20: 0.70
e25: 0.75
e30: 0.784 ★
Training Loss — convergencia
2.5 2.0 1.5 1.0 0.5 0 10 20 30 Zona convergencia loss < 0.50
Total Loss (GIoU + Classification)
Convergencia estable sin overfitting. D-FINE-Small alcanza plateau en época 25. Early stopping no activado — mejora marginal hasta época 30.
mAP por clase — época 30 (validation)
Clase mAP@50 mAP@50:95 Precisión Recall Rendimiento Muestras val.
lácteos 0.841 0.672 0.863 0.812
48
bebidas 0.828 0.661 0.847 0.801
62
snacks 0.812 0.648 0.834 0.789
55
higiene 0.798 0.631 0.821 0.776
34
conservas 0.783 0.624 0.811 0.762
41
pan 0.771 0.612 0.795 0.748
29
limpieza 0.762 0.608 0.783 0.738
38
fruta 0.758 0.601 0.779 0.732
44
charcutería 0.742 0.589 0.764 0.718
31
carne 0.731 0.581 0.754 0.709
27
congelados 0.724 0.578 0.748 0.701
22
varios 0.698 0.556 0.721 0.678
39 ⚠️
MEDIA 0.784 0.631 0.810 0.764
470
⚠️ Clase varios por debajo de media (mAP 0.698) — considerar añadir más ejemplos en próxima iteración o dividir en subcategorías.
Configuración del job
🧠
Modelo base
ustc-community/dfine-small-coco
📊
Dataset
visionretail/supermarket-shelf-products
🖥️
Hardware
t4-small (1× T4, 16GB)
⏱️
Timeout
4h (14400s)
🔄
Épocas
30
📐
Image size
640×640
📦
Batch size
8 (por device)
🎓
Learning rate
5e-5
Dataset Inspector — visionretail/supermarket-shelf-products
Columna objects
READY — bbox + category detectados
Formato bbox
READY — xywh (COCO) detectado y convertible
Categories
READY — 12 clases string → int remapping OK
Split train/val
READY — 3780 train / 420 val ya existentes
⚠️
image_id column
WARN — no existe, generado automáticamente
t4-small
NVIDIA T4 · Suficiente para D-FINE-Small (10.4M params)
GPU
1× NVIDIA T4 · 16 GB VRAM
CPU
8 vCPUs · 32 GB RAM
Precio
$0.40/hr
Duración
2h 34min (2.57h)
💶 Coste real: 1.03€ / presupuesto 25€
Código de envío del job
submitted_jobs/training_shelf-detector_20260614_091523.py Python · HfApi.run_uv_job()
# ── Fine-tuning D-FINE-Small para VisionRetail SL ──────────────────────────
# Objetivo: detección de productos en lineales · mAP@50 objetivo > 0.72
# Ejecutado: 2026-06-14 09:15:23 UTC · Job ID: 687fb701029421ae5549d998

from huggingface_hub import HfApi, get_token

api = HfApi()

OD_SCRIPT_ARGS = [
    "--model_name_or_path",    "ustc-community/dfine-small-coco",
    "--dataset_name",           "visionretail/supermarket-shelf-products",
    "--image_square_size",       "640",
    "--output_dir",             "shelf_detector_dfine",
    "--run_name",               "visionretail-shelf-v1",
    "--num_train_epochs",        "30",
    "--per_device_train_batch_size", "8",
    "--learning_rate",           "5e-5",
    "--eval_strategy",           "epoch",
    "--save_strategy",           "epoch",
    "--save_total_limit",        "2",
    "--load_best_model_at_end",
    "--metric_for_best_model",   "eval_map",
    "--greater_is_better",       "True",   # Optional[bool] → valor explícito OBLIGATORIO
    "--no_remove_unused_columns",              # OBLIGATORIO: preserva columna imagen
    "--no_eval_do_concat_batches",             # OBLIGATORIO: targets variables por imagen
    "--push_to_hub",                          # OBLIGATORIO: entorno efímero
    "--hub_model_id",           "visionretail/shelf-detector-dfine-small",
    "--do_train",
    "--do_eval",
]

job_info = api.run_uv_job(
    script="scripts/object_detection_training.py",
    script_args=OD_SCRIPT_ARGS,
    flavor="t4-small",
    timeout=14400,   # 4h — buffer suficiente para 30 épocas + Hub push
    env={"PYTHONUNBUFFERED": "1"},
    secrets={"HF_TOKEN": get_token()},  # get_token(), NO "$HF_TOKEN" con Python API
)

print(f"✅ Job ID: {job_info.id}")
print(f"📊 Trackio: https://huggingface.co/spaces/visionretail/trackio")
print(f"🤗 Hub: https://huggingface.co/visionretail/shelf-detector-dfine-small")
Hub Model + Log del job
🤗 visionretail/shelf-detector-dfine-small
Modelo publicado automáticamente al finalizar el job. Listo para inferencia con Transformers pipeline.
object-detection D-FINE-Small transformers es retail supermarket
Tamaño: 10.4M params · FP32: 39.7 MB · ONNX compatible ✓
INFERENCIA RÁPIDA
from transformers import pipeline
detector = pipeline(
  "object-detection",
  "visionretail/shelf-detector-dfine-small"
)
results = detector("shelf_image.jpg")
Comparativa vs modelo anterior
Modelo mAP@50 Error rate prod. Params Latencia
YOLOv8-n (anterior) 0.697 28% 3.2M 4.2ms
D-FINE-Small (nuevo) 0.784 ~11%* 10.4M 8.1ms
* Estimado basado en correlación mAP↔error rate en producción
Log del job — 2026-06-14
09:15:23
✅ Job enviado
ID: 687fb701029421ae5549d998 · flavor: t4-small
09:17:41
✅ GPU asignada — T4 16GB ready
Imagen Docker inicializada · Python 3.11 · uv 0.4.1
09:19:05
✅ Dependencias instaladas
transformers, albumentations, timm, trackio — 94s
09:20:12
✅ Dataset descargado y validado
3780 train + 420 val · bbox xywh→xyxy convertido · image_id generado
09:21:08
✅ Modelo base cargado
ustc-community/dfine-small-coco · 10.4M params · FP32
09:21:09
🟦 Trackio inicializado
Proyecto: shelf_detector_dfine · Run: visionretail-shelf-v1
09:21:15
✅ Entrenamiento iniciado
Época 1/30 · Steps por época: ~473
10:42:30
⚠️ Época 15 — mAP@50: 0.614
Por debajo de objetivo. Continúa entrenamiento — convergencia esperada
11:24:17
✅ Época 20 — mAP@50: 0.701
Supera objetivo mínimo 0.72 faltando 10 épocas
11:49:52
✅ Época 30 — mAP@50: 0.784 🏆
Best checkpoint guardado · hub_strategy: every_save
11:51:38
✅ Modelo pusheado al Hub
visionretail/shelf-detector-dfine-small · 39.7MB
11:52:04
✅ Job completado
Duración: 2h 36min · Coste: $1.03 · Status: COMPLETED
Próximos pasos recomendados
🔧
Export a ONNX
Convertir a ONNX con optimum para despliegue en Raspberry Pi 5 + Coral TPU. Latencia estimada en edge: ~15ms con cuantización INT8.
ONNX Edge AI
📊
Mejorar clase "varios"
Clase varios con mAP 0.698 — añadir 150+ imágenes o subdividir en subcategorías (perfumería, papelería). Nueva iteración: ~0.5h GPU.
Data augmentation
🚀
Inferencia en producción
Desplegar vía FastAPI + Transformers pipeline. Añadir post-procesado NMS con threshold 0.35. El modelo está listo en Hub para descarga directa.
FastAPI Producción