AI-For-Beginners/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md

12 KiB
Raw Blame History

Detección de Objetos

Los modelos de clasificación de imágenes que hemos visto hasta ahora toman una imagen y producen un resultado categórico, como la clase 'número' en un problema de MNIST. Sin embargo, en muchos casos no solo queremos saber que una imagen contiene objetos, sino que también queremos determinar su ubicación precisa. Esto es exactamente el objetivo de la detección de objetos.

Cuestionario previo a la lección

Detección de Objetos

Imagen de sitio web de YOLO v2

Un Enfoque Ingenuo para la Detección de Objetos

Supongamos que queremos encontrar un gato en una imagen. Un enfoque muy ingenuo para la detección de objetos sería el siguiente:

  1. Dividir la imagen en varias secciones o mosaicos.
  2. Ejecutar un modelo de clasificación de imágenes en cada mosaico.
  3. Aquellos mosaicos que resulten en una activación suficientemente alta pueden considerarse como que contienen el objeto en cuestión.

Detección Ingenua

Imagen del Cuaderno de Ejercicios

Sin embargo, este enfoque está lejos de ser ideal, ya que solo permite al algoritmo localizar la caja delimitadora del objeto de manera muy imprecisa. Para una ubicación más precisa, necesitamos ejecutar algún tipo de regresión para predecir las coordenadas de las cajas delimitadoras, y para ello necesitamos conjuntos de datos específicos.

Regresión para la Detección de Objetos

Esta publicación de blog ofrece una excelente introducción a la detección de formas.

Conjuntos de Datos para la Detección de Objetos

Es posible que encuentres los siguientes conjuntos de datos para esta tarea:

  • PASCAL VOC - 20 clases
  • COCO - Objetos Comunes en Contexto. 80 clases, cajas delimitadoras y máscaras de segmentación

COCO

Métricas de Detección de Objetos

Intersección sobre Unión

Mientras que para la clasificación de imágenes es fácil medir qué tan bien funciona el algoritmo, para la detección de objetos necesitamos medir tanto la corrección de la clase como la precisión de la ubicación inferida de la caja delimitadora. Para esto último, usamos la llamada Intersección sobre Unión (IoU), que mide qué tan bien se superponen dos cajas (o dos áreas arbitrarias).

IoU

Figura 2 de esta excelente publicación sobre IoU

La idea es simple: dividimos el área de intersección entre dos figuras por el área de su unión. Para dos áreas idénticas, IoU sería 1, mientras que para áreas completamente disjuntas será 0. En otros casos, variará entre 0 y 1. Normalmente solo consideramos aquellas cajas delimitadoras para las que IoU supera un cierto valor.

Precisión Promedio

Supongamos que queremos medir qué tan bien se reconoce una clase de objetos C dada. Para medirlo, usamos la métrica de Precisión Promedio, que se calcula de la siguiente manera:

  1. Consideramos la curva de Precisión-Recall, que muestra la precisión dependiendo de un valor umbral de detección (de 0 a 1).
  2. Dependiendo del umbral, obtendremos más o menos objetos detectados en la imagen, y diferentes valores de precisión y recall.
  3. La curva se verá así:

Imagen de NeuroWorkshop

La Precisión Promedio para una clase C dada es el área bajo esta curva. Más precisamente, el eje de Recall se divide típicamente en 10 partes, y la Precisión se promedia en todos esos puntos:


AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})

AP e IoU

Solo consideraremos aquellas detecciones para las que IoU esté por encima de un cierto valor. Por ejemplo, en el conjunto de datos PASCAL VOC típicamente se asume \mbox{IoU Threshold} = 0.5, mientras que en COCO AP se mide para diferentes valores de \mbox{IoU Threshold}.

Imagen de NeuroWorkshop

Precisión Promedio Media - mAP

La métrica principal para la Detección de Objetos se llama Precisión Promedio Media, o mAP. Es el valor de la Precisión Promedio, promediado entre todas las clases de objetos, y a veces también sobre \mbox{IoU Threshold}. El proceso de cálculo de mAP se describe en detalle en esta publicación de blog, y también aquí con ejemplos de código.

Diferentes Enfoques para la Detección de Objetos

Existen dos grandes clases de algoritmos de detección de objetos:

  • Redes de Propuesta de Regiones (R-CNN, Fast R-CNN, Faster R-CNN). La idea principal es generar Regiones de Interés (ROI) y ejecutar una CNN sobre ellas, buscando la activación máxima. Es un poco similar al enfoque ingenuo, con la excepción de que las ROI se generan de una manera más inteligente. Una de las principales desventajas de estos métodos es que son lentos, ya que se necesitan muchos pases del clasificador CNN sobre la imagen.
  • Métodos de una sola pasada (YOLO, SSD, RetinaNet). En estas arquitecturas diseñamos la red para predecir tanto las clases como las ROI en un solo pase.

R-CNN: CNN Basada en Regiones

R-CNN utiliza Selective Search para generar una estructura jerárquica de regiones ROI, que luego se pasan por extractores de características CNN y clasificadores SVM para determinar la clase del objeto, y regresión lineal para determinar las coordenadas de la caja delimitadora. Artículo oficial

RCNN

Imagen de van de Sande et al. ICCV11

RCNN-1

Imágenes de este blog

F-RCNN - Fast R-CNN

Este enfoque es similar a R-CNN, pero las regiones se definen después de que se han aplicado las capas de convolución.

FRCNN

Imagen del Artículo Oficial, arXiv, 2015

Faster R-CNN

La idea principal de este enfoque es usar una red neuronal para predecir las ROI, la llamada Red de Propuesta de Regiones. Artículo, 2016

FasterRCNN

Imagen del artículo oficial

R-FCN: Red Completamente Convolucional Basada en Regiones

Este algoritmo es incluso más rápido que Faster R-CNN. La idea principal es la siguiente:

  1. Extraemos características usando ResNet-101.
  2. Las características se procesan mediante un Mapa de Puntuación Sensible a la Posición. Cada objeto de las clases C se divide en regiones de k\times k, y entrenamos para predecir partes de los objetos.
  3. Para cada parte de las regiones k\times k, todas las redes votan por las clases de objetos, y se selecciona la clase de objeto con el máximo voto.

r-fcn image

Imagen del artículo oficial

YOLO - You Only Look Once

YOLO es un algoritmo de una sola pasada en tiempo real. La idea principal es la siguiente:

  • La imagen se divide en regiones de S\times S.
  • Para cada región, CNN predice n posibles objetos, las coordenadas de la caja delimitadora y la confianza = probabilidad * IoU.

YOLO

Imagen del artículo oficial

Otros Algoritmos

✍️ Ejercicios: Detección de Objetos

Continúa tu aprendizaje en el siguiente cuaderno:

ObjectDetection.ipynb

Conclusión

En esta lección hiciste un recorrido rápido por las diversas formas en que se puede lograr la detección de objetos.

🚀 Desafío

Lee estos artículos y cuadernos sobre YOLO y pruébalos por ti mismo:

Cuestionario posterior a la lección

Revisión y Autoestudio

Asignación: Detección de Objetos

Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.