Python Data Science Program
📓 Abrir notebook en GitHub

Clase 132 — Localización, detección, segmentación (+ DETR, Segment Anything, YOLOv11)

Parte: 2 — Deep Learning · Fuente: Géron, cap. 14 § Object Detection y § Semantic Segmentation + papers DETR, SAM, YOLOv11. ⏱️ Duración estimada: 90 min.

🎯 Objetivo

Saber detectar y segmentar objetos en imágenes — la tarea de visión más compleja y más comercial. Conocer la evolución: Faster R-CNN (two-stage, lento + preciso) → YOLO (one-stage, rápido) → DETR (Transformer, end-to-end) → YOLOv11 (estado del arte 2024) → Segment Anything (SAM/SAM 2) (foundation model para segmentación).

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📌 Versión profundizada — 2026

El tema moderno que antes vivía como complemento dentro de esta clase ahora tiene su(s) clase(s) propia(s) con patrón completo, ejercicios y homework:

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. YOLO inference: cargar yolo11n.pt y detectar sobre 3 imágenes propias. Visualizar boxes + labels.
  2. DETR inference: usar facebook/detr-resnet-50 desde HF. Comparar resultados con YOLO sobre las mismas imágenes.
  3. SAM segmentation: dar un punto sobre un objeto en una imagen, obtener máscara. Probar con cajas.
  4. mAP a mano: dado un set de predicciones y GT, implementar IoU y calcular AP@0.5 manualmente.
  5. YOLO fine-tune: dataset propio (≥ 100 imágenes anotadas), model.train(data='dataset.yaml', epochs=50). Reportar mAP.

📝 Homework verificable

Detector custom de 2-3 clases con YOLOv11:

  1. Etiquetar ~100 imágenes con CVAT, LabelImg o Roboflow → YOLO format.
  2. dataset.yaml con paths + clases.
  3. model.train(data='dataset.yaml', epochs=100, imgsz=640).
  4. Reportar mAP@0.5 en val + 3 imágenes con bounding boxes superpuestos.

Criterio de aceptación: mAP@0.5 ≥ 0.7 sobre val set; el modelo detecta correctamente las clases en las 3 imágenes de inspección visual.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
YOLO devuelve cajas raras tras fine-tuning Pocos datos o etiquetado inconsistente. Fix: ≥ 50-100 imágenes por clase, etiquetado limpio.
imgsz=320 para mejor velocidad pierde mucho accuracy Trade-off speed/accuracy. Fix: 640 default; 1280 para alta accuracy.
SAM lento sin GPU El modelo ViT-H tiene 636M params. Fix: vit_b (más chico) o GPU.
DETR lento en training DETR converge muy lento (500 epochs en COCO en el paper). Fix: usar variantes como Deformable DETR, DINO o RT-DETR.
NMS no aplicado → muchas cajas superpuestas YOLO lo aplica internamente (conf=0.25, iou=0.45 configurables).

❓ Preguntas frecuentes

❓ ¿YOLO o DETR para producción?

YOLO es default industrial (rápido, bien soportado, fácil deploy). DETR es preferido en investigación.

❓ ¿SAM puede reemplazar a un segmentador clásico?

Para tareas donde quieras "segmentar lo que el usuario apunta", sí. Para clases específicas sin intervención humana, fine-tunear un segmentador es más eficiente.

❓ ¿Open-vocabulary detection?

Detectores que aceptan clases nuevas vía texto sin reentrenar (CLIP-based). OWL-ViT, GroundingDINO. Útil cuando las clases cambian.

❓ ¿Anotación manual cuántas imágenes?

Para 2-3 clases simples con YOLO: 100-500 ya da resultados decentes. Para escenarios complejos: miles. Roboflow / CVAT facilitan el workflow.

❓ ¿Tracking de objetos en video?

YOLO + tracker (ByteTrack, BoT-SORT) integrados en ultralytics. Para video más complejo, SAM 2.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 133 — Segment Anything (SAM / SAM 2): foundation model para segmentación