Artículo

Detección de objetos con YOLO: Guía práctica completa para desarrolladores

Guía integral para desarrollar con YOLO: conceptos, datos, entrenamiento, evaluación, tiempo real, API de producción, rendimiento, seguridad y entrevistas.

18 min de lecturaIdioma: ES EspañolGratis0 aplausos0 comentarios
Artículos de ingenieríaGuías de IAAIPythonVisionTutorialTraining
Opciones de lectura

¿Qué es la detección de objetos con YOLO?

YOLO (“You Only Look Once”) es una familia de detectores de objetos de una sola etapa. Mientras la clasificación asigna una etiqueta a toda la imagen, un detector devuelve varias predicciones: clase, confianza y caja delimitadora para cada objeto.

YOLO se utiliza en tráfico, inspección industrial, robótica, agricultura, deporte, comercio y vídeo en tiempo real. Su ventaja práctica es el equilibrio entre precisión, latencia, tamaño y facilidad de despliegue.

Conceptos esenciales

  • Bounding Box: rectángulo que localiza el objeto.
  • Confidence: estimación de fiabilidad.
  • IoU: área de intersección de dos cajas dividida por su unión.
  • Precision: proporción de detecciones devueltas que son correctas.
  • Recall: proporción de objetos reales que fueron encontrados.
  • mAP: resumen del rendimiento entre clases y umbrales IoU.

Un umbral de confianza alto reduce falsos positivos, pero puede perder objetos difíciles. Debe elegirse según el coste real de cada error.

Flujo de YOLO

  1. Decodificar la imagen o el fotograma.
  2. Redimensionar y normalizar según el contrato del modelo.
  3. Ejecutar la red neuronal.
  4. Convertir salidas en cajas, clases y puntuaciones.
  5. Eliminar resultados débiles y duplicados con NMS.
  6. Escalar coordenadas a la imagen original.

La arquitectura suele incluir un Backbone para extraer características, un Neck para fusionar escalas y un Detection Head para producir predicciones.

Instalación

python -m venv .venv
source .venv/bin/activate
pip install ultralytics opencv-python

Primera inferencia, cámara y entrenamiento

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
result = model.predict("street.jpg", conf=0.35, imgsz=640)[0]

for box in result.boxes:
    class_id = int(box.cls.item())
    print({
        "class": model.names[class_id],
        "confidence": float(box.conf.item()),
        "xyxy": box.xyxy[0].tolist(),
    })
import cv2
from ultralytics import YOLO

model = YOLO("yolo11n.pt")
camera = cv2.VideoCapture(0)

while camera.isOpened():
    ok, frame = camera.read()
    if not ok:
        break
    result = model.predict(frame, conf=0.4, verbose=False)[0]
    cv2.imshow("YOLO", result.plot())
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

camera.release()
cv2.destroyAllWindows()
from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.train(
    data="dataset.yaml",
    epochs=100,
    imgsz=640,
    batch=16,
    device=0,
    project="runs/safety",
    name="baseline",
)
path: /absolute/path/to/dataset
train: images/train
val: images/val
test: images/test
names:
  0: person
  1: helmet
  2: safety_vest

Empieza con un modelo pequeño para establecer una línea base de latencia. Usa uno mayor sólo si la mejora medida compensa memoria y cómputo.

Datos y anotaciones

Una línea de etiqueta YOLO normalmente contiene:

class_id x_center y_center width height

Las coordenadas están normalizadas. Separa images y labels en train, val y test. No distribuyas aleatoriamente fotogramas vecinos del mismo vídeo entre entrenamiento y validación; son casi duplicados y producen fuga de datos.

Lista de calidad

  • Define una regla para objetos parcialmente ocultos.
  • Dibuja cajas ajustadas y consistentes.
  • Etiqueta todas las instancias relevantes.
  • Define cómo tratar reflejos, pantallas y carteles.
  • Revisa equilibrio de clases y tamaños.
  • Audita muestras de cada anotador.
  • Versiona datos y guías.

Entrenamiento y evaluación

Los pesos preentrenados son el mejor punto de partida en la mayoría de los casos. Más épocas no arreglan etiquetas incorrectas, fuga de datos ni escenarios ausentes.

No te limites a un mAP global. Divide resultados por clase, tamaño, cámara, cliente, iluminación, clima, oclusión, desenfoque, distancia y compresión. Mantén una galería de falsos positivos, falsos negativos, errores de localización y duplicados.

API y arquitectura de producción

Carga y calienta el modelo una sola vez al iniciar la aplicación. Valida contenido, tamaño de archivo y dimensiones. Procesa vídeos largos como trabajos asíncronos con progreso en vez de mantener una petición HTTP abierta.

Un servicio resistente separa gateway y autenticación, validación de cargas, almacenamiento, cola, workers de inferencia, resultados, monitorización y auditoría.

Optimización

Mide latencia completa: decodificación, resize, transferencia, inferencia, NMS, dibujo, serialización y red. Usa FP16 en hardware compatible, limita concurrencia y cola, y controla p50, p95, p99, memoria y fotogramas descartados.

Después de exportar a ONNX, TensorRT u OpenVINO, ejecuta pruebas de regresión por clase frente al modelo original.

Seguridad y privacidad

Las imágenes pueden contener caras, matrículas, pantallas, direcciones y espacios privados. Aplica minimización, retención limitada, control de acceso y cifrado. No confíes en la extensión ni cargues modelos no confiables. YOLO es probabilístico y no debe ser la única autoridad en decisiones médicas, legales, laborales o de seguridad de alto riesgo.

Errores frecuentes

  1. Fuga de fotogramas similares.
  2. Reglas de anotación inconsistentes.
  3. Ocultar el fallo de una clase crítica tras buen mAP global.
  4. Probar sólo imágenes limpias.
  5. Un umbral para todas las clases.
  6. Ignorar latencia p99.
  7. Colas de vídeo ilimitadas.
  8. Exportar sin prueba comparativa.
  9. Registrar imágenes privadas por defecto.
  10. No vigilar drift.

Preguntas de entrevista

¿Por qué YOLO es de una sola etapa?

Predice ubicaciones y clases directamente, sin una fase separada de propuestas.

¿Qué mide IoU?

La superposición entre caja predicha y real respecto a su área combinada.

¿Precision o Recall?

Depende del coste. Un control de seguridad puede priorizar recall; un bloqueo automático requiere precision alta.

¿Cómo mejorar objetos pequeños?

Mejorar datos y etiquetas de alta resolución, ajustar tamaño y aumentos, conservar características multiescala y evaluar tiling.

Conclusión

Un proyecto YOLO es un proyecto de datos y sistemas, no sólo un comando de entrenamiento. Crea una línea base medible, mejora datos a partir de errores reales y optimiza después de perfilar todo el flujo.

Referencias

Artículos destacados

Kafka en producción: particiones, lag, fiabilidad y respuesta a incidentes
EditorialES
12 minGratis

Kafka en producción: particiones, lag, fiabilidad y respuesta a incidentes

Una guía práctica para tomar decisiones de orden, capacidad y recuperación en Kafka, interpretar el lag y responder a fallos sin perder de vista el resultado de negocio.

Artículos de ingenieríaGuías de plataforma
0 aplausos
Leer
Laravel y Kafka sin eventos perdidos: outbox transaccional y consumidores idempotentes con PostgreSQL
EditorialES
11 minGratis

Laravel y Kafka sin eventos perdidos: outbox transaccional y consumidores idempotentes con PostgreSQL

Una confirmación en PostgreSQL y una publicación en Kafka no forman una transacción ordinaria. Aprende a evitar pérdidas y duplicación de efectos.

Artículos de ingenieríaGuías de plataforma
0 aplausos
Leer
Apache Kafka explicado: temas, particiones, grupos de consumidores y tu primer flujo de eventos
EditorialES
10 minGratis

Apache Kafka explicado: temas, particiones, grupos de consumidores y tu primer flujo de eventos

Sigue un evento de pedido desde el productor hasta varios consumidores y prueba en local cómo funcionan las particiones, el orden y la reproducción.

Artículos de ingenieríaGuías de plataforma
0 aplausos
Leer

Comentarios

0 comentarios

Todavía no hay comentarios aprobados. Las respuestas nuevas pueden esperar moderación.