← Volver al blog

YOLO (You Only Look Once): una breve introducción

Los fundamentos de la detección de objetos. Publicado originalmente en The Deep Hub.

Imagen creada por el autor con DALL-E 3

You Only Look Once (YOLO) es un tipo innovador de red neuronal convolucional para detección de objetos.

A diferencia de los sistemas tradicionales, que procesan una imagen en varias fases, YOLO reúne el trabajo en un único paso, lo que lo hace muy rápido y eficiente.

YOLO plantea la detección de objetos como un único problema de regresión.

La detección de objetos contiene dos componentes:

  1. Localización: identificar dónde están los objetos en una imagen.
  2. Clasificación: determinar qué son esos objetos.

Clasificación de imágenes frente a detección de objetos Clasificación de imágenes frente a detección de objetos | Fuente

Los métodos tradicionales suelen resolverlos por separado: un algoritmo propone regiones y otro las clasifica. YOLO predice directamente bounding boxes y probabilidades de clase a la vez.

Funcionamiento general

Al recibir una imagen, YOLO la divide conceptualmente en una cuadrícula.

Imagen dividida en cuadrículas Imagen dividida en cuadrículas | Fuente

Cada celda predice:

  • Bounding boxes: cajas con coordenadas de posibles objetos.
  • Puntuaciones de confianza: probabilidad de que una caja contenga un objeto real.
  • Probabilidades de clase: probabilidad de que pertenezca a una clase, como coche, gato o persona.

Múltiples bounding boxes Múltiples bounding boxes | Fuente

Después, YOLO elimina cajas superpuestas o con confianza baja con Non-Maximum Suppression.

Cuadrícula, cajas y non-maximum suppression Cuadrícula, cajas y non-maximum suppression | Fuente

Anotación de imágenes

Anotar imágenes consiste en añadir metadatos: etiquetas de objetos, características o clases. En YOLO marcamos los objetos con bounding boxes y su clasificación.

Objeto anotado con bounding box Objeto anotado con bounding box | Fuente

Formatos comunes:

  • Pascal VOC: esquina superior izquierda y esquina inferior derecha: [x_min, y_min, x_max, y_max].
  • COCO: esquina superior izquierda, ancho y alto: [x_min, y_min, width, height].
  • YOLO: centro de la caja, ancho y alto: [x_center, y_center, width, height].

Tipos de anotación Tipos de anotación | Fuente

YOLO utiliza, naturalmente, el formato YOLO.

Arquitectura de YOLO

YOLO ha tenido muchas versiones, de YOLOv1 a YOLOv9 cuando se escribió el artículo. Su estructura general tiene tres componentes:

  1. Backbone: CNN preentrenada para extraer características visuales.
  2. Neck: capas que mezclan características de distintas escalas.
  3. Head: capas finales de detección.

Backbone

El backbone original tiene 24 capas convolucionales para extraer características.

Las capas convolucionales aplican kernels que recorren la imagen y aprenden patrones complejos.

Operación de convolución Operación de convolución | Fuente

Entre ellas hay capas de max pooling, que reducen las dimensiones espaciales de los mapas de características usando el valor máximo de cada ventana.

Representación de max pooling Representación de max pooling | Fuente

Si necesitas repasar CNN, consulta Redes neuronales convolucionales: una guía completa.

Neck

El neck, opcional, está entre backbone y head. Combina mapas de características de varias capas, lo que ayuda a detectar objetos de distintas escalas.

YOLOv1 no tenía neck; versiones posteriores incorporaron componentes como PANet y FPN.

El head realiza las predicciones a partir de los mapas de características del backbone y, si existe, del neck.

Sus tareas son:

  • Clasificar objetos.
  • Predecir bounding boxes.
  • Estimar objectness, la probabilidad de que haya un objeto dentro de la caja.

Arquitectura completa de YOLOv1 Arquitectura completa de YOLOv1 | Fuente

YOLOv1 tenía 24 capas convolucionales, 4 de max pooling y 2 totalmente conectadas. Las versiones posteriores cambiaron notablemente esta estructura.

Proceso de entrenamiento

1. Entrada

La imagen se redimensiona al tamaño fijo que espera el modelo, por ejemplo 416 × 416. En esta fase se procesa como un todo, sin cuadrícula.

Redimensionamiento de imagen Redimensionamiento | Fuente

2. CNN

La imagen pasa por capas convolucionales, activaciones como ReLU, pooling y, en ocasiones, normalización por lotes. Las capas tempranas detectan bordes y esquinas; las profundas, patrones complejos.

Visualización 3D de una CNN Visualización 3D de una CNN | Fuente

3. Mapa de características y cuadrícula

La salida es un mapa de características más pequeño que conserva información espacial esencial. YOLO lo divide en una cuadrícula S × S antes de las capas finales.

Creación de mapa de características Creación de mapa de características | Fuente

4. Predicciones por celda

Cada celda predice varias cajas, sus coordenadas, confianza y probabilidades de clase.

Arquitectura YOLO Arquitectura YOLO | Fuente

La celda que contiene el centro de un objeto se encarga de predecir su caja. Como no sabemos qué celda será, todas generan predicciones y se elige la mejor.

Celda responsable de la predicción Celda responsable de coordenadas, objectness y clase | Fuente

5. Non-Maximum Suppression

YOLO genera varias cajas por objeto. Las ordena de mayor a menor confianza y elige la mejor como referencia.

Imagen con múltiples bounding boxes Imagen con múltiples bounding boxes | Fuente

Compara esa caja con las demás y suprime las que se superponen mucho, porque probablemente detectan el mismo objeto. Repite el proceso hasta conservar solo las detecciones más fiables.

Non-Maximum Suppression Non-Maximum Suppression | Fuente

Intersection over Union (IoU)

IoU mide el solapamiento entre dos cajas: divide el área de intersección entre el área de unión. Si supera un umbral, la caja con menos confianza se suprime.

Intersection over Union Intersection over Union | Fuente

Un ejemplo conceptual

Supongamos que entrenamos con dos caballos muy similares, pero uno mide un metro más. Aunque sus centros sean similares, YOLO aprende características de tamaño, forma, textura y otros rasgos que le permiten ajustar las dimensiones de cada caja mediante regresión.

Objetos con centros parecidos y tamaños distintos Objetos con centros parecidos y tamaños distintos | Fuente

Función de pérdida

La pérdida de YOLO tiene tres partes:

  1. Pérdida de localización: penaliza diferencias entre las cajas predichas y las reales, tanto en centro (x, y) como en ancho y alto (w, h).
  2. Pérdida de confianza: enseña a diferenciar cajas que contienen objetos de las que solo capturan fondo. Reduce el peso de las muchas cajas sin objeto con el coeficiente λ_noobj.
  3. Pérdida de clasificación: penaliza clases incorrectas dentro de las cajas con objeto.

Fórmula de pérdida de localización

Fórmula de pérdida de confianza

Fórmula de pérdida de clasificación

La función completa se optimiza iterativamente con backpropagation para reducir el error.

Función de pérdida completa de YOLO Explicación completa de la pérdida de YOLO | Fuente

Bibliografía

¡Gracias por leer! Si te ha gustado el artículo, puedes dejar hasta 50 aplausos y seguirme en Medium para estar al día de las próximas publicaciones.

También puedes seguir mi nueva publicación:

The Deep Hub Tu espacio sobre ciencia de datos.