La Detección de Objetos (Object Detection) es una tarea de inteligencia artificial y visión por computadora que permite reconocer objetos individuales en imágenes o fotogramas de vídeo, determinar sus categorías y localizar sus posiciones mediante cajas delimitadoras.
Supongamos que una imagen contiene tres automóviles, dos personas y una bicicleta.
Un clasificador convencional puede indicar que la imagen corresponde a una escena de tráfico.
Un detector de objetos puede generar seis predicciones individuales: tres cajas de automóviles, dos de personas y una de bicicleta.
Cada predicción contiene normalmente una categoría, una localización y una puntuación de confianza.
La detección de objetos se utiliza en numerosas aplicaciones empresariales y científicas:
- Reconocimiento de productos.
- Inspección industrial.
- Robótica.
- Conteo de vehículos.
- Análisis de imágenes comerciales.
- Automatización de inventarios.
- Conducción autónoma.
- Sistemas de seguridad.
- Agricultura de precisión.
- Análisis de fotografías satelitales.
- Procesamiento de vídeo.
- Sistemas de percepción multimodal.
Los detectores modernos utilizan redes neuronales profundas para aprender tanto las características visuales como las coordenadas de los objetos.
Históricamente, la familia R-CNN impulsó los detectores basados en propuestas de regiones, mientras que YOLO y SSD demostraron la utilidad de arquitecturas que realizan detección en una sola etapa.
Entre los conceptos fundamentales se encuentran:
- Bounding Box.
- Objectness Score.
- Class Confidence.
- Localization.
- Intersection over Union.
- Non-Maximum Suppression.
- Precision y Recall.
- Average Precision.
- Mean Average Precision.
- Anchor Boxes.
- Feature Pyramid Networks.
- One-Stage Detection.
- Two-Stage Detection.
- Anchor-Free Detection.
- Transfer Learning.
En esta entrada estudiaremos estos conceptos, sus diferencias y su aplicación práctica utilizando NumPy, PyTorch y Torchvision.
También exploraremos cómo utilizar detectores preentrenados, preparar anotaciones propias y evaluar resultados mediante mAP.
1. ¿Qué es Object Detection?
Definición breve: Object Detection es una tarea de visión por computadora que identifica la categoría y la posición de cada objeto detectado en una imagen, normalmente mediante cajas delimitadoras y puntuaciones asociadas.
Por ejemplo, un detector puede devolver:
| Objeto | Categoría | Confianza | Bounding Box |
|---|---|---|---|
| 1 | Automóvil | 0,96 | [40, 70, 180, 150] |
| 2 | Persona | 0,92 | [210, 45, 250, 165] |
| 3 | Bicicleta | 0,87 | [265, 90, 330, 165] |
¿Qué significa detectar?
Identificar una entidad visual y estimar su localización.
¿Cuántos objetos puede detectar un modelo?
Depende de la imagen, de sus categorías y de los límites de predicción de la arquitectura.
¿Puede detectar objetos no vistos durante entrenamiento?
Puede generalizar a variaciones de las clases entrenadas, pero no debe suponerse que reconoce cualquier categoría nueva.
Existen métodos especializados de detección de vocabulario abierto.
2. Clasificación frente a detección de objetos
Una clasificación convencional produce categorías globales de la imagen.
Un detector produce predicciones asociadas a regiones individuales.
Ejemplo
Imagen: una persona pasea con dos perros.
Clasificación:
Persona, perros.
Detección:
- Persona: caja A.
- Perro: caja B.
- Perro: caja C.
Diferencia importante
La detección necesita resolver tanto el reconocimiento como la localización de objetos.
3. Detección frente a segmentación
La detección de objetos utiliza habitualmente cajas delimitadoras.
La segmentación utiliza máscaras que representan regiones con mayor detalle.
| Tarea | Salida principal |
|---|---|
| Clasificación | Categorías globales |
| Detección de objetos | Clases y Bounding Boxes |
| Segmentación semántica | Clase por píxel |
| Segmentación de instancias | Máscara por objeto |
| Segmentación panóptica | Regiones semánticas e instancias |
¿Una Bounding Box equivale a una máscara?
No.
Una caja incluye una región rectangular que normalmente contiene tanto píxeles del objeto como parte del fondo.
¿Puede combinarse detección con segmentación?
Sí.
Mask R-CNN, por ejemplo, integra detección y predicción de máscaras individuales.
4. ¿Qué es una Bounding Box?
Una Bounding Box es un rectángulo que delimita aproximadamente la extensión espacial de un objeto.
Una representación habitual es:
[x1, y1, x2, y2]
Donde:
- x1 = límite izquierdo.
- y1 = límite superior.
- x2 = límite derecho.
- y2 = límite inferior.
Ejemplo
[40, 60, 160, 140]
La anchura es:
160 − 40 = 120
La altura es:
140 − 60 = 80
El área de la caja es:
120 × 80 = 9.600 píxeles²
¿Qué representa ese área?
El área del rectángulo, no necesariamente la superficie visible del objeto.
5. Formatos de Bounding Boxes
Existen diferentes convenciones.
XYXY
[x1, y1, x2, y2]
XYWH
[x, y, width, height]
CXCYWH
[center_x, center_y, width, height]
Ejemplo
Una caja XYXY:
[40, 60, 160, 140]
En XYWH:
[40, 60, 120, 80]
En CXCYWH:
[100, 100, 120, 80]
¿Cuál utiliza YOLO en sus archivos de etiquetas habituales?
En determinados formatos YOLO se utilizan coordenadas normalizadas de centro, anchura y altura.
¿Cuál utiliza Torchvision para detección?
Las APIs habituales de detección utilizan cajas XYXY en coordenadas de imagen.
6. Coordenadas absolutas y normalizadas
Las coordenadas absolutas se expresan en píxeles.
Las normalizadas se expresan respecto a la anchura y altura de la imagen.
Ejemplo
Imagen:
640 × 480
Caja XYXY:
[64, 48, 320, 240]
Coordenadas normalizadas:
- x1 = 64/640 = 0,10.
- y1 = 48/480 = 0,10.
- x2 = 320/640 = 0,50.
- y2 = 240/480 = 0,50.
¿Por qué importa?
Porque confundir ambos sistemas puede producir cajas completamente incorrectas.
7. Ejemplo 1 — Convertir Bounding Boxes con Python
def xyxy_to_xywh(box): x1, y1, x2, y2 = box return [ x1, y1, x2 - x1, y2 - y1 ]def xyxy_to_cxcywh(box): x1, y1, x2, y2 = box return [ (x1 + x2) / 2, (y1 + y2) / 2, x2 - x1, y2 - y1 ]box = [40, 60, 160, 140]print( "XYWH:", xyxy_to_xywh(box))print( "CXCYWH:", xyxy_to_cxcywh(box))
Resultado esperado:
XYWH: [40, 60, 120, 80]CXCYWH: [100.0, 100.0, 120, 80]
¿Qué demuestra?
Una misma región puede representarse mediante diferentes convenciones.
8. Ejemplo 2 — Conversión de cajas con Torchvision
import torchfrom torchvision.ops import box_convertboxes = torch.tensor( [[40., 60., 160., 140.]])xywh = box_convert( boxes, in_fmt="xyxy", out_fmt="xywh")cxcywh = box_convert( boxes, in_fmt="xyxy", out_fmt="cxcywh")print(xywh)print(cxcywh)
¿Por qué utilizar una función oficial?
Reduce errores al convertir entre formatos.
¿Debemos verificar la versión de Torchvision?
Sí.
Las funcionalidades y sus argumentos pueden evolucionar.
9. ¿Qué es Localization?
Object Localization es estimar la ubicación espacial de un objeto.
En detección, normalmente se realiza mediante regresión de coordenadas.
¿Qué aprende la red?
Aprende a transformar características visuales en parámetros de cajas.
¿Es lo mismo que clasificación?
No.
Clasificación determina la categoría; localización estima la región.
10. ¿Qué es Objectness?
Objectness es una medida estimada de si una región contiene un objeto relevante.
Es característica de determinadas arquitecturas de detección.
¿Es igual a Class Confidence?
No necesariamente.
Objectness puede estimar la presencia de un objeto, mientras que una puntuación de clase expresa información sobre su categoría.
¿Cómo se obtiene la puntuación final?
Depende del detector.
En algunas arquitecturas se combinan objectness y probabilidades de clase.
En otras, la cabeza de clasificación genera directamente puntuaciones de detección.
No debemos asumir que todos los modelos utilizan exactamente la misma fórmula.
11. ¿Qué significa Confidence Score?
La Confidence Score es una puntuación asociada a una predicción.
Ejemplo:
Automóvil: 0,93
¿Significa que existe exactamente un 93% de probabilidad real?
No necesariamente.
Las puntuaciones de los detectores pueden no estar perfectamente calibradas.
¿Para qué sirve?
Para ordenar predicciones, aplicar umbrales y construir métricas Precision-Recall.
12. ¿Qué es Intersection over Union (IoU)?
Intersection over Union mide el solapamiento entre dos regiones.
En detección convencional se utiliza habitualmente sobre cajas.
Fórmula
IoU = Área de intersección / Área de unión
La unión se calcula:
Unión = Área A + Área B − Intersección
Interpretación
- IoU = 0: no existe solapamiento.
- IoU = 1: las cajas coinciden exactamente.
- Valores intermedios representan distintos grados de coincidencia.
13. Ejemplo numérico de IoU
Supongamos dos cajas.
Caja real:
A = [0, 0, 100, 100]
Caja predicha:
B = [50, 0, 150, 100]
Área A:
10.000
Área B:
10.000
Intersección:
5.000
Unión:
15.000
Por tanto:
IoU = 5.000/15.000 ≈ 0,3333
¿Qué significa?
Las cajas comparten aproximadamente un tercio de su área de unión.
14. Ejemplo 3 — Calcular IoU con NumPy
import numpy as npdef box_iou_numpy(box_a, box_b): ax1, ay1, ax2, ay2 = box_a bx1, by1, bx2, by2 = box_b ix1 = max(ax1, bx1) iy1 = max(ay1, by1) ix2 = min(ax2, bx2) iy2 = min(ay2, by2) intersection_width = max( 0, ix2 - ix1 ) intersection_height = max( 0, iy2 - iy1 ) intersection = ( intersection_width * intersection_height ) area_a = ( max(0, ax2 - ax1) * max(0, ay2 - ay1) ) area_b = ( max(0, bx2 - bx1) * max(0, by2 - by1) ) union = ( area_a + area_b - intersection ) if union == 0: return 0.0 return intersection / uniona = [0, 0, 100, 100]b = [50, 0, 150, 100]print( round( box_iou_numpy(a, b), 4 ))
Resultado esperado:
0,3333
15. Ejemplo 4 — IoU entre múltiples cajas con PyTorch
import torchfrom torchvision.ops import box_ioupredicted_boxes = torch.tensor([ [0., 0., 100., 100.], [50., 0., 150., 100.]])target_boxes = torch.tensor([ [0., 0., 100., 100.], [80., 0., 180., 100.]])ious = box_iou( predicted_boxes, target_boxes)print(ious)print(ious.shape)
Resultado esperado
Una matriz de forma:
[2, 2]
Cada elemento contiene el IoU de una caja predicha con una caja real.
¿Para qué sirve?
Puede utilizarse en emparejamiento de predicciones, análisis de calidad y posprocesamiento.
16. ¿Qué es Non-Maximum Suppression (NMS)?
Non-Maximum Suppression es un procedimiento que reduce predicciones duplicadas cuando varias cajas se superponen alrededor del mismo objeto.
Ejemplo
Un detector produce tres cajas sobre un automóvil:
- Caja A: 0,95.
- Caja B: 0,91.
- Caja C: 0,84.
Si presentan un solapamiento elevado, podemos conservar A y eliminar algunas de las restantes.
¿Por qué es necesario?
Porque determinados detectores producen múltiples candidatos para el mismo objeto.
¿NMS utiliza las categorías?
La NMS clásica opera sobre cajas y puntuaciones; en aplicaciones multiclase suele aplicarse separadamente por categoría o mediante una variante agrupada.
17. ¿Cómo funciona NMS?
Un algoritmo Greedy NMS realiza aproximadamente estos pasos:
- Ordenar las cajas por puntuación.
- Conservar la de puntuación más alta.
- Calcular su IoU con las cajas restantes.
- Eliminar las que superen el umbral elegido.
- Repetir con las cajas restantes.
¿Qué significa un umbral de 0,5?
Las cajas con IoU mayor que 0,5 respecto a la caja conservada se suprimen en la formulación habitual.
¿Un umbral más bajo elimina más cajas?
Generalmente sí.
¿Puede eliminar objetos reales próximos?
Sí, si las cajas de objetos diferentes se superponen demasiado.
18. Ejemplo 5 — NMS con Torchvision
import torchfrom torchvision.ops import nmsboxes = torch.tensor([ [10., 10., 100., 100.], [15., 15., 105., 105.], [150., 20., 220., 100.]])scores = torch.tensor([ 0.95, 0.88, 0.91])selected = nms( boxes, scores, iou_threshold=0.5)print( "Índices conservados:", selected.tolist())
Resultado esperado:
Índices conservados: [0, 2]
¿Qué demuestra?
La caja 1 se elimina porque se solapa ampliamente con la caja 0, que tiene mayor puntuación.
La caja 2 queda conservada.
19. ¿Qué es Class-Aware NMS?
La Class-Aware NMS evita que las detecciones de categorías diferentes se eliminen simplemente por presentar cajas superpuestas.
Ejemplo
Una persona está sentada sobre una bicicleta.
Sus cajas pueden solaparse.
No queremos necesariamente eliminar una por la presencia de la otra.
¿Qué operación proporciona Torchvision?
batched_nms
¿Qué utiliza?
Cajas, puntuaciones e identificadores de clase.
20. Ejemplo 6 — Class-Aware NMS
import torchfrom torchvision.ops import batched_nmsboxes = torch.tensor([ [10., 10., 100., 100.], [15., 15., 105., 105.], [10., 10., 100., 100.]])scores = torch.tensor([ 0.95, 0.88, 0.90])labels = torch.tensor([ 1, 1, 2])selected = batched_nms( boxes, scores, labels, iou_threshold=0.5)print(selected.tolist())
Resultado esperado:
[0, 2]
Las cajas de clases distintas pueden mantenerse aunque ocupen regiones similares.
21. ¿Qué es Soft-NMS?
Soft-NMS es una variante que reduce las puntuaciones de las cajas solapadas en lugar de eliminarlas inmediatamente.
¿Qué ventaja puede aportar?
Puede conservar candidatos útiles en situaciones con objetos próximos.
¿Garantiza un mejor resultado?
No.
Su utilidad depende del detector y de los datos.
¿Es obligatoria?
No.
También existen detectores que incorporan otros métodos de selección y arquitecturas que evitan NMS convencional.
22. ¿Qué son detectores One-Stage?
Los One-Stage Detectors generan predicciones de localización y categoría sin una etapa separada de propuestas de regiones del tipo utilizado por Faster R-CNN.
Ejemplos históricos:
- YOLO.
- SSD.
- RetinaNet.
¿Qué ventaja persiguen?
Simplificar el flujo de detección y favorecer procesamiento eficiente.
¿Son siempre más rápidos?
No en todos los dispositivos y configuraciones.
La latencia depende de la implementación concreta.
23. ¿Qué son detectores Two-Stage?
Los Two-Stage Detectors dividen conceptualmente el procesamiento en:
- Generación de regiones candidatas.
- Clasificación y refinamiento de esas regiones.
Faster R-CNN es un ejemplo conocido.
¿Qué aporta esta organización?
Permite realizar un análisis posterior de propuestas seleccionadas.
¿Garantiza mayor precisión?
No.
Las comparaciones deben realizarse entre modelos concretos bajo condiciones equivalentes.
24. Comparación One-Stage frente a Two-Stage
| Característica | One-Stage | Two-Stage |
|---|---|---|
| Propuestas separadas tipo RPN | Normalmente no | Sí en Faster R-CNN |
| Ejemplos | YOLO, SSD, RetinaNet | Faster R-CNN |
| Arquitectura | Predicción más directa | Propuestas y refinamiento |
| Latencia | Depende de modelo y hardware | Depende de modelo y hardware |
| Calidad | Requiere evaluación | Requiere evaluación |
¿Cuál debemos seleccionar?
Según la necesidad de precisión, latencia, memoria, categorías y entorno de despliegue.
25. ¿Qué es R-CNN?
La familia Region-based Convolutional Neural Networks utiliza regiones candidatas para localizar objetos.
Su evolución histórica incluye:
- R-CNN.
- Fast R-CNN.
- Faster R-CNN.
¿Qué cambió?
Las arquitecturas progresivamente hicieron más eficiente la extracción de características y la generación de propuestas.
26. ¿Qué es Faster R-CNN?
Faster R-CNN es una arquitectura de detección que integra una Region Proposal Network (RPN) con una etapa posterior de clasificación y ajuste de cajas.
Fue desarrollada por Shaoqing Ren, Kaiming He, Ross Girshick y Jian Sun.
Componentes principales
- Backbone.
- Mapas de características.
- Region Proposal Network.
- RoI Pooling o alternativas relacionadas, según implementación.
- Cabeza de clasificación.
- Cabeza de regresión de cajas.
¿Qué innovación aportó la RPN?
Aprender propuestas de regiones compartiendo características con el detector.
27. ¿Qué es Region Proposal Network?
La RPN predice regiones que podrían contener objetos.
Puede estimar:
- Objectness.
- Ajustes de cajas.
¿Es el detector final?
No.
Las propuestas se procesan posteriormente.
¿Qué son Anchors en una RPN clásica?
Son cajas de referencia de diferentes tamaños y proporciones usadas para generar y ajustar candidatos.
28. ¿Qué es YOLO?
YOLO (You Only Look Once) es una familia de detectores que utiliza una arquitectura unificada para predecir cajas y categorías de objetos.
El trabajo original de Joseph Redmon y colaboradores fue publicado en CVPR 2016.
¿Cuál fue su idea principal?
Formular la detección como un problema de predicción directa a partir de la imagen completa.
¿Por qué se hizo popular?
Por su énfasis en detección eficiente y aplicaciones que requieren baja latencia.
¿Todas las versiones YOLO funcionan igual?
No.
Las diferentes generaciones han introducido cambios importantes en sus cabezas de detección, asignación de predicciones, representación de cajas y posprocesamiento.
29. ¿Qué significa Real-Time Object Detection?
La detección en tiempo real implica producir resultados suficientemente rápido para una aplicación determinada.
Ejemplo
Un sistema de vídeo trabaja con 30 fotogramas por segundo.
Para procesar secuencialmente cada fotograma sin retraso acumulado, el procesamiento completo debe ajustarse aproximadamente al presupuesto temporal correspondiente.
¿Qué debemos medir?
- Tiempo de preprocesamiento.
- Tiempo del modelo.
- Posprocesamiento.
- Transferencias de memoria.
- Throughput.
- Latencia extremo a extremo.
¿FPS es igual a latencia?
No.
Un sistema puede tener un throughput elevado al procesar lotes y, aun así, presentar una latencia individual considerable.
30. ¿Qué es SSD?
SSD (Single Shot MultiBox Detector) es una arquitectura de detección presentada por Wei Liu y colaboradores en ECCV 2016.
¿Qué característica destaca?
Utiliza predicciones sobre múltiples mapas de características y cajas de referencia de diferentes escalas y proporciones.
¿Por qué importa?
Porque permite tratar objetos de distintos tamaños mediante una arquitectura de una etapa.
¿SSD significa que solo puede detectar un objeto?
No.
Puede generar numerosas predicciones en una imagen.
La expresión Single Shot se refiere al enfoque de detección.
31. ¿Qué son Anchor Boxes?
Las Anchor Boxes son cajas de referencia utilizadas por determinadas arquitecturas.
Ejemplo
En una posición espacial pueden definirse cajas:
- Cuadradas.
- Altas y estrechas.
- Anchas y bajas.
El modelo aprende ajustes para aproximar las cajas reales.
¿Qué parámetros tienen?
- Centro.
- Anchura.
- Altura.
- Escala.
- Aspect Ratio.
¿Todos los detectores utilizan Anchors?
No.
Existen arquitecturas Anchor-Free.
32. ¿Qué es Anchor-Free Detection?
Los métodos Anchor-Free predicen localizaciones sin depender del mismo conjunto explícito de cajas de referencia predefinidas.
¿Qué pueden predecir?
- Centros de objetos.
- Distancias a bordes.
- Puntos representativos.
- Cajas mediante parámetros directos.
¿Significa que no necesitan asignar predicciones a objetos?
No.
Durante entrenamiento sigue siendo necesario relacionar predicciones con anotaciones.
¿Es siempre más eficiente?
No necesariamente.
33. ¿Qué es Feature Pyramid Network?
FPN (Feature Pyramid Network) combina características de diferentes resoluciones.
¿Por qué es importante en detección?
Una escena puede contener tanto objetos pequeños como grandes.
Por ejemplo:
- Una señal pequeña.
- Un automóvil mediano.
- Un camión grande.
¿Qué aporta?
Permite generar predicciones utilizando diferentes escalas de características.
¿Es exclusiva de Faster R-CNN?
No.
Puede incorporarse a distintas arquitecturas.
34. ¿Qué es Focal Loss?
Focal Loss es una función de pérdida diseñada para reducir relativamente la contribución de ejemplos fáciles durante entrenamiento.
¿Por qué es relevante?
Los detectores pueden generar un número elevado de candidatos de fondo.
Esto crea desbalance entre regiones positivas y negativas.
¿En qué arquitectura fue especialmente influyente?
RetinaNet.
¿Es obligatoria para YOLO o SSD?
No.
Las diferentes arquitecturas utilizan objetivos distintos.
35. ¿Qué es Bounding Box Regression Loss?
Las pérdidas de regresión de cajas penalizan diferencias entre cajas predichas y reales.
Entre las formulaciones utilizadas se encuentran:
- Smooth L1.
- IoU Loss.
- Generalized IoU.
- Distance IoU.
- Complete IoU.
¿Por qué utilizar pérdidas basadas en IoU?
Porque la geometría del solapamiento es importante para la evaluación.
¿Todas son intercambiables?
No.
Tienen propiedades distintas y deben utilizarse conforme al diseño del detector.
36. ¿Qué es Generalized IoU?
Generalized IoU (GIoU) extiende IoU incorporando información sobre una región que contiene ambas cajas.
¿Por qué es útil?
IoU convencional puede ser cero cuando las cajas no se solapan.
GIoU puede aportar información adicional sobre la separación geométrica.
¿Significa que garantiza una detección mejor?
No.
Debe evaluarse dentro de la arquitectura completa.
37. ¿Qué es Precision en detección?
Precision mide qué proporción de las predicciones consideradas positivas corresponde a detecciones correctas bajo el protocolo elegido.
Fórmula
Precision = TP / (TP + FP)
Donde:
- TP: detecciones correctas.
- FP: detecciones falsas.
Ejemplo
El modelo produce diez detecciones.
Ocho son correctas.
Dos son falsas.
Precision = 8/10 = 0,8
38. ¿Qué es Recall en detección?
Recall mide qué proporción de objetos reales ha sido detectada correctamente.
Fórmula
Recall = TP / (TP + FN)
Ejemplo
Existen diez objetos reales.
El modelo detecta correctamente ocho.
Omite dos.
Recall = 8/10 = 0,8
¿Qué diferencia existe con Precision?
Precision se centra en las predicciones realizadas.
Recall se centra en los objetos reales presentes.
39. ¿Qué es Average Precision?
Average Precision (AP) resume la curva Precision-Recall de una clase.
Se calcula variando el umbral de puntuación y considerando un criterio de emparejamiento entre detecciones y objetos reales.
¿Por qué es necesario ordenar por puntuación?
Porque las predicciones de mayor puntuación deben tener influencia en la curva Precision-Recall de acuerdo con el protocolo.
¿AP es igual que Accuracy?
No.
¿AP es igual que Precision en un único umbral?
Tampoco.
40. ¿Qué es Mean Average Precision (mAP)?
mAP es un promedio de Average Precision según una definición concreta del benchmark.
Puede promediar entre:
- Clases.
- Umbrales IoU.
- Otras condiciones del protocolo.
¿Por qué debemos especificar el benchmark?
Porque distintas evaluaciones utilizan convenciones diferentes.
Ejemplo
Un resultado:
mAP = 0,50
no es completamente interpretable sin indicar si corresponde a AP50, COCO AP@[0.50:0.95] u otro protocolo.
41. ¿Qué es AP50?
AP50 utiliza IoU 0,50 como umbral para considerar una coincidencia válida.
¿Qué significa?
Una detección necesita alcanzar el criterio de solapamiento definido por el benchmark para contarse como correcto.
¿AP50 es la proporción de cajas con IoU superior a 0,50?
No.
AP también considera Precision y Recall a través de diferentes umbrales de puntuación.
42. ¿Qué es COCO AP@[0.50:0.95]?
El protocolo COCO calcula AP sobre múltiples umbrales IoU.
Los umbrales son:
0,50, 0,55, 0,60, 0,65, 0,70, 0,75, 0,80, 0,85, 0,90 y 0,95.
¿Por qué utilizar varios umbrales?
Porque permite evaluar no solamente si un objeto fue localizado, sino también la precisión de su caja.
¿Cuál es la diferencia entre AP50 y AP75?
AP75 exige un solapamiento mayor para determinar coincidencias.
¿Cuál es la métrica principal de COCO?
El promedio AP sobre los umbrales de 0,50 a 0,95.
43. Métricas por tamaño de objeto
COCO también proporciona métricas para objetos de diferentes tamaños.
Objetos pequeños
AP Small.
Objetos medianos
AP Medium.
Objetos grandes
AP Large.
¿Por qué importa?
Porque un detector puede funcionar bien con automóviles grandes y fallar con señales pequeñas.
¿Qué debemos evitar?
Evaluar un sistema solamente mediante un promedio global cuando la aplicación depende de objetos pequeños.
44. Ejemplo 7 — Precision y Recall con Python
def precision_recall( tp, fp, fn): precision = ( tp / (tp + fp) if tp + fp > 0 else float("nan") ) recall = ( tp / (tp + fn) if tp + fn > 0 else float("nan") ) return precision, recallprecision, recall = precision_recall( tp=8, fp=2, fn=2)print( "Precision:", precision)print( "Recall:", recall)
Resultado:
Precision = 0,8
Recall = 0,8
45. Ejemplo 8 — Average Precision simplificada
Implementaremos una demostración de AP como área bajo una envolvente Precision-Recall con puntos de recall obtenidos tras ordenar detecciones.
No reproduce todos los detalles del evaluador COCO.
import numpy as npdef ap_from_ranked_detections( true_positive_flags, num_ground_truth): if num_ground_truth <= 0: raise ValueError( "Se necesita al menos un objeto real" ) tp = np.asarray( true_positive_flags, dtype=np.int64 ) fp = 1 - tp cumulative_tp = np.cumsum(tp) cumulative_fp = np.cumsum(fp) recall = ( cumulative_tp / num_ground_truth ) precision = ( cumulative_tp / np.maximum( cumulative_tp + cumulative_fp, 1 ) ) recall = np.concatenate([ [0.0], recall, [1.0] ]) precision = np.concatenate([ [0.0], precision, [0.0] ]) for i in range( len(precision) - 2, -1, -1 ): precision[i] = max( precision[i], precision[i + 1] ) changes = np.where( recall[1:] != recall[:-1] )[0] ap = np.sum( (recall[changes + 1] - recall[changes]) * precision[changes + 1] ) return float(ap)# Detecciones ya ordenadas por puntuaciónflags = [1, 1, 0, 1, 0]ap = ap_from_ranked_detections( flags, num_ground_truth=4)print("AP simplificada:", round(ap, 4))
Resultado esperado
AP simplificada = 0,75
¿Qué presupone?
Que los verdaderos positivos y falsos positivos ya se han determinado mediante un protocolo de emparejamiento.
¿Es COCO AP?
No.
COCO incorpora reglas adicionales de interpolación, clases, umbrales IoU, límites de detección e imágenes ignoradas.
46. ¿Qué datasets se utilizan?
Entre los datasets históricos y actuales más conocidos se encuentran:
- PASCAL VOC.
- MS COCO.
- Open Images.
- Objects365.
- Datasets empresariales especializados.
¿Son equivalentes?
No.
Difieren en categorías, tamaños, anotaciones, licencias y protocolos.
¿Podemos comparar directamente sus valores mAP?
No sin considerar las diferencias.
47. ¿Qué es PASCAL VOC?
PASCAL VOC es una familia de benchmarks históricos para clasificación, detección y segmentación.
Su tarea clásica de detección utiliza veinte categorías de objetos.
¿Por qué fue importante?
Permitió comparar sistemáticamente avances en reconocimiento y localización.
¿Se utiliza todavía?
Sí, especialmente en investigación, enseñanza y comparaciones históricas.
48. ¿Qué es MS COCO?
Microsoft Common Objects in Context (COCO) es un dataset ampliamente utilizado en detección y segmentación.
Sus evaluaciones estándar de detección utilizan ochenta categorías principales de objetos.
¿Qué lo caracteriza?
Imágenes con escenas complejas y múltiples objetos.
¿Qué ofrece?
Un protocolo de evaluación detallado que incluye AP, AR y resultados por tamaño de objeto.
¿Son las categorías apropiadas para cualquier negocio?
No.
Un catálogo comercial puede contener clases específicas que no aparecen en COCO.
49. ¿Qué es Open Images?
Open Images es un dataset de visión artificial con anotaciones de diferentes tipos.
Incluye recursos de detección de objetos.
¿Qué debemos verificar?
- Versión.
- Categorías.
- Esquema de anotación.
- Licencias de imágenes.
- Protocolo de evaluación.
50. ¿Cómo preparar un dataset de detección?
Para cada imagen necesitamos normalmente:
- Identificador de imagen.
- Bounding Boxes.
- Categorías por caja.
- Metadatos de anotación.
- Información especial si lo exige el dataset.
Ejemplo
Una imagen contiene tres productos.
El archivo de anotación contiene tres cajas con sus categorías.
¿Qué ocurre con imágenes sin objetos?
El pipeline debe permitir anotaciones vacías.
¿Es necesario crear una máscara por objeto?
No para detección clásica de cajas.
51. Ejemplo 9 — Preparar anotaciones para Torchvision
import torchimage = torch.rand( 3, 256, 256)target = { "boxes": torch.tensor( [ [20., 30., 90., 120.], [130., 50., 220., 180.] ], dtype=torch.float32 ), "labels": torch.tensor( [1, 2], dtype=torch.int64 ), "image_id": torch.tensor(0), "area": torch.tensor( [ 70. * 90., 90. * 130. ], dtype=torch.float32 ), "iscrowd": torch.zeros( 2, dtype=torch.int64 )}print( image.shape)print( target["boxes"].shape)
¿Qué demuestra?
El formato de entrada habitual para entrenar un detector de Torchvision.
¿Por qué las etiquetas comienzan en 1?
En los constructores habituales de Faster R-CNN, la clase cero está reservada para fondo.
52. ¿Cómo realizar Data Augmentation?
Las transformaciones de entrenamiento deben mantener las cajas alineadas con las imágenes.
Transformaciones habituales
- Reflexión horizontal.
- Escalado.
- Recorte.
- Rotación.
- Ajustes de color.
- Cambios de brillo.
- Cambios de contraste.
¿Qué transformaciones modifican las cajas?
Las geométricas.
¿Qué sucede si rotamos la imagen y no actualizamos las cajas?
Las anotaciones dejan de representar correctamente las posiciones de los objetos.
53. Ejemplo 10 — Reflexión horizontal de cajas
import torchdef flip_boxes_horizontal( boxes, image_width): flipped = boxes.clone() flipped[:, 0] = ( image_width - boxes[:, 2] ) flipped[:, 2] = ( image_width - boxes[:, 0] ) return flippedboxes = torch.tensor([ [20., 30., 90., 120.]])flipped = flip_boxes_horizontal( boxes, image_width=256)print(flipped)
Resultado esperado:
tensor([[166., 30., 236., 120.]])
¿Qué demuestra?
Una reflexión horizontal necesita modificar las coordenadas X de las cajas.
54. Detección de objetos con PyTorch
Torchvision incluye varias arquitecturas predefinidas.
Entre ellas:
- Faster R-CNN.
- RetinaNet.
- SSD.
- SSDLite.
- FCOS.
La disponibilidad exacta depende de la versión instalada.
¿Qué podemos hacer?
Cargar un checkpoint, aplicar sus transformaciones de entrada y ejecutar inferencia.
55. Ejemplo 11 — Faster R-CNN preentrenada
Instalación:
pip install torch torchvision pillow matplotlib
Código:
import torchfrom torchvision.models.detection import ( fasterrcnn_resnet50_fpn_v2, FasterRCNN_ResNet50_FPN_V2_Weights)weights = ( FasterRCNN_ResNet50_FPN_V2_Weights.DEFAULT)model = fasterrcnn_resnet50_fpn_v2( weights=weights)model.eval()print( "Parámetros:", sum( p.numel() for p in model.parameters() ))
¿Qué demuestra?
Podemos cargar un detector de dos etapas con pesos preentrenados.
¿Es necesaria una conexión a Internet?
Puede ser necesaria para descargar el checkpoint la primera vez.
56. Ejemplo 12 — Detectar objetos en una fotografía
import torchfrom PIL import Imagefrom torchvision.models.detection import ( fasterrcnn_resnet50_fpn_v2, FasterRCNN_ResNet50_FPN_V2_Weights)weights = ( FasterRCNN_ResNet50_FPN_V2_Weights.DEFAULT)model = fasterrcnn_resnet50_fpn_v2( weights=weights)model.eval()image = Image.open( "imagen.jpg").convert("RGB")transform = weights.transforms()image_tensor = transform(image)with torch.inference_mode(): prediction = model([ image_tensor ])[0]print( "Cajas:", prediction["boxes"].shape)print( "Categorías:", prediction["labels"].shape)print( "Puntuaciones:", prediction["scores"].shape)
¿Qué devuelve?
Una colección de detecciones.
¿Qué significa cada caja?
Una región donde el modelo estima la presencia de un objeto.
57. Ejemplo 13 — Filtrar detecciones
score_threshold = 0.70keep = ( prediction["scores"] >= score_threshold)boxes = prediction["boxes"][keep]labels = prediction["labels"][keep]scores = prediction["scores"][keep]print( "Objetos conservados:", len(boxes))
¿Por qué filtrar?
Porque no todas las predicciones tienen el mismo nivel de puntuación.
¿Un umbral elevado siempre mejora?
Puede aumentar la proporción de detecciones correctas entre las conservadas, pero también reducir Recall.
58. Ejemplo 14 — Mostrar las categorías
categories = weights.meta[ "categories"]for label, score in zip( labels.cpu().tolist(), scores.cpu().tolist()): if 0 <= label < len(categories): name = categories[label] else: name = f"Clase {label}" print( name, round(score, 3) )
¿Qué demuestra?
Podemos transformar identificadores de clase en nombres legibles.
Precaución
Las categorías deben proceder del mismo checkpoint utilizado durante inferencia.
59. Ejemplo 15 — Visualizar Bounding Boxes con Torchvision
import torchfrom torchvision.utils import ( draw_bounding_boxes)from torchvision.transforms.functional import ( pil_to_tensor)import matplotlib.pyplot as pltoriginal = pil_to_tensor( image)names = [ f"{categories[label.item()]} " f"{score.item():.2f}" for label, score in zip( labels, scores )]visualization = draw_bounding_boxes( original, boxes=boxes.cpu(), labels=names, width=3)plt.figure(figsize=(10, 7))plt.imshow( visualization.permute( 1, 2, 0 ).numpy())plt.axis("off")plt.show()
¿Qué demuestra?
Podemos dibujar las cajas y etiquetas directamente sobre una imagen.
¿Las coordenadas coinciden con el tamaño original?
En este flujo, Torchvision devuelve las cajas en las coordenadas de la imagen suministrada, de acuerdo con el posprocesamiento de su detector.
60. ¿Cómo adaptar Faster R-CNN a categorías propias?
Supongamos que queremos detectar:
- Botellas.
- Cajas de productos.
En Torchvision necesitamos tres clases contando fondo.
¿Qué debemos modificar?
La cabeza de clasificación y regresión de cajas.
¿Es necesario reentrenar todo el extractor?
No siempre.
Podemos comenzar utilizando Transfer Learning.
61. Ejemplo 16 — Sustituir el predictor de Faster R-CNN
from torchvision.models.detection import ( fasterrcnn_resnet50_fpn, FasterRCNN_ResNet50_FPN_Weights)from torchvision.models.detection.faster_rcnn import ( FastRCNNPredictor)model = fasterrcnn_resnet50_fpn( weights=FasterRCNN_ResNet50_FPN_Weights.DEFAULT)num_classes = 3in_features = ( model.roi_heads.box_predictor .cls_score.in_features)model.roi_heads.box_predictor = ( FastRCNNPredictor( in_features, num_classes ))
¿Qué demuestra?
Podemos reutilizar los pesos anteriores y crear una cabeza para un nuevo conjunto de categorías.
¿La cabeza nueva está entrenada?
No.
Se requiere un dataset anotado con las nuevas clases.
62. Ejemplo 17 — Un paso de entrenamiento de Faster R-CNN
Este ejemplo presupone que images y targets proceden de un DataLoader de detección.
import torchdevice = torch.device( "cuda" if torch.cuda.is_available() else "cpu")model = model.to(device)model.train()optimizer = torch.optim.SGD( [ p for p in model.parameters() if p.requires_grad ], lr=0.001, momentum=0.9, weight_decay=0.0005)images = [ image.to(device) for image in images]targets = [ { key: value.to(device) for key, value in target.items() } for target in targets]optimizer.zero_grad()loss_dict = model( images, targets)total_loss = sum( loss_dict.values())total_loss.backward()optimizer.step()print( "Pérdida:", total_loss.item())
¿Qué demuestra?
El modelo devuelve pérdidas asociadas con su entrenamiento de detección.
¿Qué falta?
Un ciclo completo de épocas, validación, selección de checkpoints y evaluación mAP.
63. ¿Por qué el DataLoader necesita collate_fn?
Cada imagen puede contener un número diferente de objetos.
Una imagen puede contener dos cajas.
Otra puede contener diez.
¿Qué problema surge?
No podemos apilar automáticamente todos los diccionarios de cajas como si tuvieran la misma longitud.
Solución
Conservar las imágenes y anotaciones como colecciones.
def collate_fn(batch): return tuple( zip(*batch) )
Este patrón es habitual en los tutoriales de detección de Torchvision.
64. ¿Cómo evaluar mAP con TorchMetrics?
La biblioteca TorchMetrics proporciona:
MeanAveragePrecision
¿Qué necesita?
Predicciones:
boxesscoreslabels
Objetivos:
boxeslabels
¿Qué calcula?
Métricas basadas en protocolos COCO, según su configuración y dependencias.
¿Qué debemos verificar?
La disponibilidad del backend de evaluación apropiado.
65. Ejemplo 18 — mAP con TorchMetrics
Instalación orientativa:
pip install torchmetrics pycocotools
Código:
import torchfrom torchmetrics.detection.mean_ap import ( MeanAveragePrecision)metric = MeanAveragePrecision( box_format="xyxy", iou_type="bbox")predictions = [ { "boxes": torch.tensor([ [10., 10., 80., 80.], [120., 20., 180., 90.] ]), "scores": torch.tensor([ 0.95, 0.88 ]), "labels": torch.tensor([ 1, 2 ]) }]targets = [ { "boxes": torch.tensor([ [12., 12., 82., 82.], [120., 20., 180., 90.] ]), "labels": torch.tensor([ 1, 2 ]) }]metric.update( predictions, targets)results = metric.compute()print( "mAP:", results["map"].item())print( "mAP50:", results["map_50"].item())print( "mAP75:", results["map_75"].item())
¿Qué demuestra?
Podemos calcular métricas de detección utilizando predicciones y anotaciones.
Precaución
Los resultados provienen de un único ejemplo sintético.
No constituyen una evaluación estadísticamente representativa.
66. ¿Qué es Transfer Learning en Object Detection?
Transfer Learning permite reutilizar un detector preentrenado para una nueva tarea.
Ejemplo
Un negocio quiere detectar piezas mecánicas específicas.
Podemos partir de un detector entrenado en objetos generales y adaptar sus cabezas y características.
¿Qué ventaja puede ofrecer?
Reduce la necesidad de entrenar todos los parámetros desde cero.
¿Garantiza una buena detección?
No.
Depende de la similitud entre los datos originales y la nueva tarea.
67. ¿Qué es Fine-Tuning?
Fine-Tuning consiste en actualizar pesos preentrenados con un dataset específico.
Estrategia posible
- Cargar modelo preentrenado.
- Sustituir la cabeza.
- Entrenar la nueva cabeza.
- Descongelar selectivamente más capas.
- Reducir la tasa de aprendizaje.
- Validar.
- Evaluar sobre Test Set independiente.
¿Es universalmente mejor descongelar todo?
No.
Puede aumentar el coste y el riesgo de sobreajuste.
68. ¿Qué es Small Object Detection?
Small Object Detection es la detección de objetos que ocupan regiones pequeñas de una imagen.
Ejemplos
- Tornillos.
- Etiquetas.
- Señales lejanas.
- Componentes electrónicos.
- Vehículos en imágenes aéreas.
¿Por qué es difícil?
Porque disponen de pocas posiciones espaciales y pueden perder detalles durante Downsampling.
Posibles estrategias
- Mayor resolución.
- Arquitecturas multiescala.
- Recortes de imagen.
- Datos especializados.
- Aumentos de datos adecuados.
69. ¿Qué es Occlusion?
Occlusion es la ocultación parcial de un objeto por otros elementos.
Ejemplo
Una persona camina detrás de un automóvil.
¿Qué desafío crea?
El detector solo observa una parte del objeto.
¿Puede detectarlo?
Depende de las características visibles y de su entrenamiento.
¿Cómo evaluarlo?
Con imágenes representativas que incluyan distintos grados de oclusión.
70. ¿Qué es Sliding Window Detection?
Sliding Window Detection consiste en aplicar un procedimiento de detección sobre regiones sucesivas de una imagen.
¿Cuándo resulta útil?
Cuando una imagen es demasiado grande para procesarse completa a la resolución deseada.
¿Qué problema presenta?
Un mismo objeto puede aparecer en varios parches.
¿Cómo mitigarlo?
Unificando coordenadas y aplicando técnicas apropiadas de fusión o eliminación de duplicados.
71. ¿Qué es Test-Time Augmentation?
Test-Time Augmentation (TTA) ejecuta inferencia sobre diferentes versiones transformadas de una misma imagen.
Por ejemplo:
- Original.
- Reflejada.
- Diferentes escalas.
Después combina las detecciones.
¿Qué ventaja puede aportar?
Mejorar la robustez en determinadas tareas.
¿Qué coste introduce?
Mayor tiempo de procesamiento.
¿Garantiza mejoras?
No.
72. ¿Cómo medir latencia?
La latencia debe medirse en el dispositivo objetivo.
Métricas importantes
- Milisegundos por imagen.
- Imágenes por segundo.
- Consumo de memoria.
- CPU o GPU utilizada.
- Batch Size.
- Resolución.
- Preprocesamiento.
- Posprocesamiento.
¿Por qué no basta con contar parámetros?
Porque dos modelos con un número similar de parámetros pueden presentar latencias muy distintas.
73. Ejemplo 19 — Benchmark de inferencia en PyTorch
import timeimport torchdef benchmark_detector( model, image_tensor, device, repetitions=10): model = model.to(device) model.eval() image_tensor = image_tensor.to(device) with torch.inference_mode(): for _ in range(3): _ = model([image_tensor]) if device.type == "cuda": torch.cuda.synchronize() start = time.perf_counter() for _ in range(repetitions): _ = model([image_tensor]) if device.type == "cuda": torch.cuda.synchronize() elapsed = ( time.perf_counter() - start ) return elapsed / repetitionsdevice = torch.device( "cuda" if torch.cuda.is_available() else "cpu")latency = benchmark_detector( model, image_tensor, device)print( f"Latencia: {latency * 1000:.2f} ms")
¿Qué demuestra?
Podemos medir el tiempo de inferencia después de un calentamiento inicial.
¿Es un benchmark completo?
No.
Para una comparación rigurosa debemos registrar hardware, versiones, tamaño de imagen y variabilidad entre repeticiones.
74. ¿Qué aplicaciones tiene Object Detection?
Comercio electrónico
Detección de productos visibles.
Industria
Reconocimiento de componentes y objetos en líneas de producción.
Agricultura
Conteo estimado de frutos y detección de maquinaria.
Robótica
Localización de objetos manipulables.
Transporte
Identificación de vehículos y usuarios de la vía.
Logística
Análisis de paquetes y mercancías.
Imágenes satelitales
Localización de vehículos, embarcaciones y estructuras.
75. Detección de productos comerciales
Una aplicación empresarial es identificar artículos en fotografías de catálogo.
Ejemplo
Una imagen contiene:
- Tres botellas.
- Dos cajas.
- Una taza.
El detector genera cajas individuales.
¿Qué podemos hacer después?
- Contar objetos.
- Recortar productos.
- Clasificarlos.
- Asociarlos a otros sistemas.
- Analizar su disposición.
¿Puede identificar el SKU exacto?
No necesariamente.
La clasificación comercial detallada puede requerir reconocimiento adicional.
76. Object Detection y AI Visibility
Una plataforma de AI Visibility puede incorporar análisis de imágenes para estudiar activos de marca.
Caso 1. Identificación de productos
Detectar productos dentro de fotografías comerciales.
Caso 2. Análisis de capturas web
Localizar determinados componentes visibles.
Caso 3. Inspección de activos gráficos
Detectar objetos o regiones asociadas a categorías definidas.
Caso 4. Auditoría de catálogos
Estimar cantidades y posiciones de artículos.
¿Qué aporta?
Información estructurada sobre categorías y localizaciones visuales.
¿Qué no aporta directamente?
No modifica las recomendaciones ni las citas producidas por asistentes externos.
77. ¿Object Detection mejora Recommendation Rate?
No directamente.
Recommendation Rate representa la frecuencia de recomendaciones observadas bajo una metodología concreta.
Object Detection se utiliza para localizar objetos en imágenes.
Su implementación no altera automáticamente el comportamiento de un asistente de inteligencia artificial externo.
78. ¿Object Detection mejora Citation Coverage?
No directamente.
Citation Coverage se relaciona con citas o fuentes registradas en respuestas de asistentes.
Una caja delimitadora no equivale a una referencia bibliográfica o enlace citado.
Sin embargo, Object Detection puede formar parte de herramientas visuales de análisis de contenido.
79. Errores frecuentes en Detección de Objetos
Error 1. Confundir clasificación y detección
La detección también estima localizaciones.
Error 2. Confundir detección y segmentación
Las cajas no representan contornos exactos.
Error 3. Mezclar XYXY y XYWH
Produce cajas incorrectas.
Error 4. Confundir coordenadas absolutas y normalizadas
Puede desplazar o deformar las detecciones.
Error 5. No comprobar los límites de las cajas
Puede generar coordenadas inválidas.
Error 6. Ignorar categorías
La coincidencia de cajas no implica necesariamente una clasificación correcta.
Error 7. Interpretar puntuaciones como probabilidades perfectamente calibradas
No existe esa garantía.
Error 8. Aplicar NMS a categorías distintas sin necesidad
Puede eliminar objetos legítimos superpuestos.
Error 9. Utilizar un umbral NMS excesivamente bajo
Puede reducir Recall.
Error 10. Utilizar un umbral de confianza demasiado elevado
Puede eliminar detecciones correctas.
Error 11. Confundir el umbral de detección con el umbral IoU de evaluación
Cumplen funciones diferentes.
Error 12. Considerar IoU igual que AP
Son conceptos distintos.
Error 13. Confundir AP50 con COCO mAP
Evalúan condiciones diferentes.
Error 14. Comparar mAP de datasets diferentes directamente
No es una comparación equivalente.
Error 15. Utilizar solamente Precision
Puede ocultar numerosos objetos omitidos.
Error 16. Utilizar solamente Recall
Puede ocultar demasiadas falsas detecciones.
Error 17. Ignorar objetos pequeños
Puede ocultar una limitación crítica del sistema.
Error 18. No controlar oclusiones
Puede afectar la robustez.
Error 19. Aplicar aumentos geométricos sin actualizar cajas
Destruye la correspondencia de etiquetas.
Error 20. Mezclar imágenes relacionadas entre Train y Test
Puede producir Data Leakage.
Error 21. Suponer que cualquier modelo YOLO tiene los mismos componentes
Las generaciones son diferentes.
Error 22. Afirmar que One-Stage siempre supera a Two-Stage en velocidad
Depende del modelo y del hardware.
Error 23. Interpretar un checkpoint COCO como detector universal de productos
No reconoce automáticamente todas las categorías comerciales.
Error 24. No medir preprocesamiento y posprocesamiento
Subestima la latencia extremo a extremo.
Error 25. Relacionar directamente las detecciones con métricas de AI Visibility
No existe una relación automática.
80. Buenas prácticas para Object Detection
- Definir claramente las categorías.
- Utilizar anotaciones consistentes.
- Documentar el formato de Bounding Boxes.
- Verificar las coordenadas.
- Mantener el alineamiento durante Data Augmentation.
- Separar Train, Validation y Test.
- Evitar duplicados entre particiones.
- Comenzar con un detector preentrenado.
- Comparar arquitecturas de una y dos etapas.
- Medir IoU y métricas de detección.
- Calcular mAP con un protocolo definido.
- Informar AP50 y AP75 cuando corresponda.
- Analizar resultados por clase.
- Evaluar objetos pequeños y ocluidos.
- Ajustar umbrales mediante validación.
- Revisar el comportamiento de NMS.
- Medir falsos positivos y falsos negativos.
- Registrar la resolución de entrada.
- Medir latencia en el hardware objetivo.
- Documentar versiones y checkpoints.
- Verificar las licencias de datasets.
- Visualizar las cajas predichas.
- Analizar fallos reales.
- Considerar costes de despliegue.
- Evaluar periódicamente el rendimiento cuando cambian los datos.
Preguntas frecuentes sobre Detección de Objetos
¿Qué es Object Detection?
Es la identificación y localización de objetos individuales en imágenes.
¿Qué es una Bounding Box?
Es una caja rectangular que delimita un objeto.
¿Qué significa XYXY?
Representa las coordenadas de dos esquinas opuestas.
¿Qué significa XYWH?
Representa posición, anchura y altura.
¿Qué significa CXCYWH?
Representa centro, anchura y altura.
¿Qué son coordenadas normalizadas?
Son coordenadas expresadas respecto a las dimensiones de la imagen.
¿Qué es Localization?
Es estimar la posición de un objeto.
¿Qué es Objectness?
Es una puntuación relacionada con la presencia de un objeto.
¿Qué es Class Confidence?
Es una puntuación asociada a una categoría.
¿Qué es Intersection over Union?
Es la proporción de solapamiento respecto a la unión de dos regiones.
¿Qué es NMS?
Non-Maximum Suppression.
¿Para qué sirve NMS?
Para reducir detecciones duplicadas.
¿Qué es Class-Aware NMS?
Es aplicar supresión respetando las categorías.
¿Qué es Soft-NMS?
Es una variante que reduce puntuaciones de cajas solapadas.
¿Qué es un One-Stage Detector?
Es un detector que realiza predicciones sin una etapa separada de propuestas como la de Faster R-CNN.
¿Qué es un Two-Stage Detector?
Es un detector que utiliza propuestas y refinamiento posterior.
¿Qué es R-CNN?
Region-based Convolutional Neural Network.
¿Qué es Fast R-CNN?
Es una evolución de R-CNN que comparte procesamiento convolucional para propuestas de regiones.
¿Qué es Faster R-CNN?
Es una arquitectura que incorpora una Region Proposal Network.
¿Qué significa RPN?
Region Proposal Network.
¿Qué es YOLO?
You Only Look Once.
¿Cuándo apareció el YOLO original?
En 2016 como publicación de CVPR.
¿Qué es SSD?
Single Shot MultiBox Detector.
¿Qué es RetinaNet?
Es un detector One-Stage asociado con Focal Loss.
¿Qué son Anchors?
Son cajas de referencia utilizadas por determinadas arquitecturas.
¿Qué es Anchor-Free Detection?
Es detección sin depender del mismo conjunto explícito de cajas ancla.
¿Qué es FPN?
Feature Pyramid Network.
¿Para qué sirve FPN?
Para combinar características de diferentes escalas.
¿Qué es Focal Loss?
Es una pérdida que reduce relativamente la contribución de ejemplos fáciles.
¿Qué es Box Regression?
Es la estimación de coordenadas de cajas.
¿Qué es GIoU?
Generalized Intersection over Union.
¿Qué es Precision?
Es la proporción de detecciones correctas entre las predicciones positivas.
¿Qué es Recall?
Es la proporción de objetos reales detectados correctamente.
¿Qué es Average Precision?
Es una medida resumida de la curva Precision-Recall.
¿Qué es mAP?
Mean Average Precision bajo un protocolo definido.
¿Qué significa AP50?
AP con umbral IoU de 0,50.
¿Qué significa AP75?
AP con umbral IoU de 0,75.
¿Qué significa AP@[0.50:0.95]?
AP agregado sobre diez umbrales IoU.
¿Qué es COCO?
Common Objects in Context.
¿Qué es PASCAL VOC?
Es una familia histórica de benchmarks de visión artificial.
¿Qué es Open Images?
Es un dataset con anotaciones para varias tareas de visión artificial.
¿Qué es Data Augmentation?
Es aplicar transformaciones para aumentar la variedad de entrenamiento.
¿Deben actualizarse las cajas durante rotaciones y recortes?
Sí.
¿Qué es Data Leakage?
Es filtración de información que puede sesgar las métricas de evaluación.
¿Qué es Transfer Learning?
Es reutilizar representaciones aprendidas anteriormente.
¿Qué es Fine-Tuning?
Es adaptar pesos preentrenados mediante entrenamiento adicional.
¿Se puede utilizar Object Detection con PyTorch?
Sí.
¿Qué biblioteca proporciona detectores preentrenados?
Torchvision es una opción.
¿Torchvision ofrece Faster R-CNN?
Sí.
¿Torchvision ofrece SSD?
Sí, según versión.
¿Qué devuelve un detector de Torchvision?
Normalmente cajas, clases y puntuaciones por imagen.
¿Es necesaria una GPU?
No obligatoriamente.
¿Puede funcionar en CPU?
Sí.
¿Qué significa Real-Time?
Que el sistema cumple el presupuesto temporal de la aplicación.
¿FPS y latencia son lo mismo?
No.
¿Qué es Small Object Detection?
Es la detección de objetos que ocupan pocas posiciones espaciales.
¿Qué es Occlusion?
Es la ocultación parcial de objetos.
¿Qué es Sliding Window?
Es procesar regiones sucesivas de una imagen.
¿Qué es Test-Time Augmentation?
Es combinar inferencias sobre versiones transformadas de una imagen.
¿Object Detection cuenta objetos?
Puede utilizarse para estimar cantidades de instancias detectadas.
¿Puede reconocer productos comerciales?
Sí, con datos y categorías apropiadas.
¿Puede identificar SKU automáticamente?
No necesariamente.
¿Puede utilizarse en robótica?
Sí.
¿Puede utilizarse en agricultura?
Sí.
¿Puede utilizarse en imágenes satelitales?
Sí.
¿Puede analizar capturas de sitios web?
Sí, para tareas visuales específicas.
¿Es igual que Segmentación de Instancias?
No; la segmentación genera máscaras individuales.
¿Es igual que Segmentación Semántica?
No; la segmentación semántica clasifica píxeles.
¿Object Detection mejora Recommendation Rate?
No directamente.
¿Object Detection aumenta Citation Coverage?
No directamente.
¿Por qué importa para AI Visibility?
Puede formar parte de herramientas que analizan objetos y activos gráficos comerciales.
Conceptos relacionados
- Inteligencia Artificial.
- Aprendizaje Automático.
- Deep Learning.
- Visión por Computadora.
- Object Detection.
- Object Localization.
- Image Classification.
- Bounding Box.
- XYXY.
- XYWH.
- CXCYWH.
- Objectness.
- Confidence Score.
- Intersection over Union.
- Non-Maximum Suppression.
- Class-Aware NMS.
- Soft-NMS.
- One-Stage Detector.
- Two-Stage Detector.
- R-CNN.
- Fast R-CNN.
- Faster R-CNN.
- Region Proposal Network.
- YOLO.
- SSD.
- RetinaNet.
- Anchor Boxes.
- Anchor-Free Detection.
- Feature Pyramid Network.
- Focal Loss.
- Generalized IoU.
- Precision.
- Recall.
- Average Precision.
- Mean Average Precision.
- COCO.
- PASCAL VOC.
- Open Images.
- Data Augmentation.
- Transfer Learning.
- Fine-Tuning.
- Small Object Detection.
- PyTorch.
- Torchvision.
- NumPy.
- Instance Segmentation.
- Semantic Segmentation.
- Panoptic Segmentation.
- AI Visibility.
Conclusión
La Detección de Objetos (Object Detection) es una tarea fundamental de visión por computadora que combina el reconocimiento de categorías con la estimación de posiciones espaciales.
Su resultado habitual consiste en una colección de Bounding Boxes, clases y puntuaciones.
La familia Faster R-CNN introdujo un enfoque influyente de generación de propuestas y refinamiento.
YOLO y SSD impulsaron arquitecturas de detección de una etapa, orientadas a realizar predicciones de manera eficiente.
Sin embargo, la selección de un detector no debe basarse únicamente en su familia arquitectónica.
También deben considerarse precisión, Recall, capacidad para detectar objetos pequeños, memoria, latencia y compatibilidad con el hardware.
La calidad de localización puede analizarse mediante IoU, mientras que métricas como Average Precision y mAP permiten estudiar el rendimiento de detección bajo protocolos definidos.
Non-Maximum Suppression ayuda a reducir cajas duplicadas, aunque necesita configurarse apropiadamente.
PyTorch y Torchvision permiten utilizar detectores preentrenados, adaptar cabezas a nuevas categorías y evaluar los resultados.
En aplicaciones empresariales, Object Detection puede utilizarse para analizar fotografías de productos, realizar conteos visuales, localizar componentes industriales o construir sistemas de inspección.
En AI Visibility puede contribuir al análisis de activos gráficos, pero no genera automáticamente nuevas recomendaciones ni citas de una marca en asistentes externos.
La conclusión fundamental es que Object Detection permite pasar de saber qué contiene una imagen a identificar qué objetos individuales aparecen y dónde están situados. Esta capacidad constituye una base tecnológica para sistemas avanzados de reconocimiento, automatización e interpretación visual.
