28. Introducción a detección de objetos

28.1 Introducción

Hasta aquí, en esta parte del curso, trabajamos sobre todo con clasificación de imágenes. En ese tipo de problema, el sistema recibe una imagen completa y responde con una clase. Pero en muchos escenarios reales eso no alcanza.

Si una imagen contiene varios objetos, o si queremos saber dónde está cada uno, ya no estamos ante un problema de clasificación simple. Entramos en el terreno de la detección de objetos.

En este tema veremos qué significa detectar objetos, qué información debe producir un detector, por qué este problema es más complejo que la clasificación y cuáles son las ideas básicas que dan forma a los modelos modernos de detección.

28.2 Clasificación versus detección

La diferencia esencial puede resumirse así:

  • Clasificación: responde qué hay en la imagen.
  • Detección: responde qué hay y dónde está.

En una foto con varios objetos, un clasificador tradicional no puede describir correctamente la escena completa. Solo produce una salida global, mientras que un detector debe localizar múltiples instancias dentro de la misma imagen.

En detección de objetos, el problema ya no es solo reconocer clases. También hay que localizar cada instancia relevante dentro de la imagen.

28.3 Qué devuelve un detector

Un detector de objetos suele producir, para cada objeto encontrado:

  • La clase del objeto.
  • Una caja delimitadora o bounding box.
  • Un puntaje de confianza.

Es decir, la salida ya no es una única clase global, sino una lista de predicciones estructuradas.

28.4 Bounding boxes

La forma más habitual de localizar objetos es mediante cajas rectangulares. Cada caja intenta encerrar la región donde aparece un objeto.

Una bounding box suele representarse con coordenadas, por ejemplo:

(x_min, y_min, x_max, y_max)

o con alguna variante equivalente basada en centro, ancho y alto.

28.5 Un mismo objeto, muchas dificultades

Detectar objetos parece sencillo a primera vista, pero en realidad es un problema bastante exigente. El sistema debe enfrentarse a:

  • Diferentes tamaños de objeto.
  • Posiciones variables.
  • Oclusiones parciales.
  • Fondos complejos.
  • Múltiples instancias simultáneas.

Por eso la detección de objetos suele considerarse un paso más complejo que la clasificación.

28.6 Ejemplo conceptual

Imaginemos una foto callejera donde aparecen dos autos, una bicicleta y una persona. Un clasificador global podría devolver una sola etiqueta dominante o una lista aproximada de clases presentes. Un detector, en cambio, debe producir cuatro predicciones separadas, cada una con su caja y su clase.

Esto muestra que en detección no solo importa reconocer, sino también separar instancias.

28.7 Localización y clasificación al mismo tiempo

La detección combina dos subproblemas:

  • Clasificar qué objeto aparece.
  • Estimar dónde está.

Esta combinación vuelve el problema más difícil que la clasificación pura, porque la red debe optimizar simultáneamente predicciones semánticas y geométricas.

28.8 ¿Por qué no alcanza con sliding windows?

Una idea clásica para detectar objetos era recorrer la imagen con muchas ventanas y clasificar cada región. Aunque conceptualmente simple, este enfoque resulta muy costoso e ineficiente en la práctica.

Además, obliga a probar muchas escalas y posiciones, lo que hace explotar el número de regiones a analizar.

Los detectores modernos surgieron justamente para resolver este problema de forma mucho más eficiente.

28.9 Múltiples objetos en una misma imagen

Una diferencia central respecto de la clasificación es que una imagen puede contener cero, uno o muchos objetos relevantes. Eso significa que la salida de un detector tiene tamaño variable según la escena.

Este hecho introduce una complejidad adicional tanto en el diseño del modelo como en la evaluación.

28.10 Puntaje de confianza

Además de la clase y la caja, los detectores suelen producir un puntaje de confianza para cada predicción. Ese valor intenta reflejar cuán segura está la red de que esa detección corresponde realmente a un objeto de cierta clase.

Luego puede aplicarse un umbral para descartar detecciones débiles o dudosas.

28.11 Overlapping y redundancia

En detección, es común que el modelo proponga varias cajas muy parecidas sobre el mismo objeto. Si no hacemos nada, terminaríamos con múltiples detecciones redundantes para una sola instancia real.

Por eso aparece una técnica muy importante: la supresión no máxima, o Non-Maximum Suppression (NMS).

28.12 Intuición de Non-Maximum Suppression

La idea de NMS es conservar, entre cajas muy superpuestas, solo las detecciones más confiables y eliminar las redundantes.

Esto ayuda a que la salida final sea más limpia y se acerque mejor a la idea de una detección por objeto.

28.13 Intersection over Union (IoU)

Para comparar cajas suele usarse la métrica Intersection over Union o IoU. Esta mide cuánto se superponen dos cajas respecto de su unión total.

Si dos cajas coinciden mucho, su IoU será alta. Si casi no se tocan, será baja.

IoU es clave tanto para entrenamiento como para evaluación de detectores.

28.14 Qué significa una buena detección

Una buena detección no es solo acertar la clase. También requiere que la caja tenga una localización razonablemente correcta. Si la clase es correcta pero la caja está muy corrida o muy mal ajustada, la detección sigue siendo deficiente.

Por eso la evaluación en detección es más exigente que en clasificación.

28.15 Anotaciones para detección

Mientras que en clasificación cada imagen suele tener una etiqueta global, en detección cada imagen necesita anotaciones más ricas:

  • Una o más cajas.
  • La clase correspondiente a cada caja.

Esto vuelve la preparación del dataset más costosa y más delicada.

28.16 Formato típico de una anotación

Una imagen puede tener múltiples objetos y, por lo tanto, múltiples cajas. Una anotación típica podría verse conceptualmente así:

imagen_001.jpg
- caja: (34, 50, 180, 220), clase: persona
- caja: (210, 80, 360, 250), clase: bicicleta

Esto ya muestra por qué el problema es más complejo que asignar una única etiqueta por imagen.

28.17 Tipos generales de detectores

A muy alto nivel, los detectores modernos suelen agruparse en dos grandes familias:

  • Detectores de dos etapas.
  • Detectores de una etapa.

Más adelante veremos ejemplos concretos, pero por ahora conviene retener esta división conceptual.

28.18 Detectores de dos etapas

En estos métodos suele existir primero una etapa que propone regiones candidatas y luego otra que las clasifica y refina. Históricamente, esta familia incluye modelos muy influyentes como Faster R-CNN.

Suelen ofrecer muy buen desempeño, aunque no siempre son los más rápidos.

28.19 Detectores de una etapa

En esta familia, el modelo intenta predecir directamente cajas y clases en un solo flujo más integrado. Aquí aparecen enfoques como SSD o YOLO.

La gran ventaja suele ser la velocidad, lo cual resulta especialmente importante en tiempo real.

28.20 Detección no es segmentación

Aunque ambas tareas localizan objetos, no son lo mismo. En detección usamos cajas rectangulares. En segmentación, en cambio, queremos delimitar con mucho más detalle los píxeles que pertenecen al objeto.

La detección es una localización más gruesa pero muy útil en muchísimas aplicaciones.

28.21 Aplicaciones típicas

La detección de objetos aparece en muchos escenarios reales:

  • Vehículos y peatones en conducción asistida.
  • Conteo de objetos en industria.
  • Detección de productos en retail.
  • Seguridad y videovigilancia.
  • Análisis de imágenes aéreas.

En todos estos casos, saber que un objeto existe no basta; también necesitamos localizarlo.

28.22 Métricas en detección

En detección se usan métricas más complejas que en clasificación. Una de las más importantes es mAP (mean Average Precision), que considera tanto clasificación correcta como calidad de localización.

No entraremos aquí en toda la matemática, pero sí es importante saber que evaluar detectores requiere criterios más ricos que una simple accuracy.

28.23 Primeros pasos con PyTorch

PyTorch y torchvision ofrecen modelos de detección ya implementados. Por ejemplo, se pueden cargar variantes preentrenadas de Faster R-CNN.

Un ejemplo básico de carga sería:

from torchvision.models.detection import fasterrcnn_resnet50_fpn
from torchvision.models.detection import FasterRCNN_ResNet50_FPN_Weights

weights = FasterRCNN_ResNet50_FPN_Weights.DEFAULT
model = fasterrcnn_resnet50_fpn(weights=weights)
model.eval()

Esto no significa que ya sepamos entrenar o interpretar por completo el detector, pero sí muestra que también en detección existen modelos preentrenados reutilizables.

28.24 ¿Qué devuelve un detector en PyTorch?

Cuando ejecutamos inferencia con un detector, la salida suele ser una estructura más rica que la de un clasificador. Por ejemplo, puede incluir diccionarios con claves como:

  • boxes
  • labels
  • scores

Es decir, PyTorch ya nos entrega explícitamente las cajas, clases y niveles de confianza para cada detección.

28.25 Ejemplo conceptual de inferencia

Una inferencia conceptual con una imagen podría verse así:

import torch
from PIL import Image
from torchvision.models.detection import fasterrcnn_resnet50_fpn
from torchvision.models.detection import FasterRCNN_ResNet50_FPN_Weights

weights = FasterRCNN_ResNet50_FPN_Weights.DEFAULT
model = fasterrcnn_resnet50_fpn(weights=weights)
model.eval()

preprocess = weights.transforms()

imagen = Image.open("foto1.jpg").convert("RGB")
entrada = preprocess(imagen).unsqueeze(0)

with torch.no_grad():
    salida = model(entrada)

print(salida[0].keys())

Este ejemplo permite ver que la salida ya no es un vector de clases, sino un conjunto estructurado de detecciones.

28.26 Qué debes recordar de este tema

  • La detección de objetos busca responder qué hay en la imagen y dónde está cada objeto.
  • La salida típica de un detector incluye clase, bounding box y confianza.
  • Es un problema más complejo que la clasificación porque puede haber múltiples instancias por imagen.
  • IoU y NMS son conceptos fundamentales para trabajar con cajas y detecciones.
  • La evaluación en detección requiere métricas más complejas que la accuracy simple.
  • torchvision ofrece detectores preentrenados listos para exploración e inferencia.

28.27 Conclusión

La detección de objetos abre una etapa nueva y muy importante en visión por computadora. A partir de aquí, los modelos ya no se limitan a clasificar imágenes completas, sino que deben entender escenas con múltiples instancias y localizar regiones específicas dentro de la imagen.

Eso hace que el problema sea más desafiante, pero también mucho más útil para aplicaciones del mundo real. Comprender bounding boxes, confianza, IoU y estructuras de salida es la base necesaria para avanzar hacia detectores concretos.

En el próximo tema estudiaremos una tarea relacionada pero diferente: la segmentación de imágenes, donde en lugar de cajas rectangulares buscaremos una localización mucho más precisa a nivel de píxel.