Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 11 KB

File metadata and controls

179 lines (101 loc) · 11 KB

Detección de Objetos

Los modelos de clasificación de imágenes que hemos tratado 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 queremos determinar su ubicación precisa. Este es precisamente el objetivo de la detección de objetos.

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.
  2. Ejecutar clasificación de imágenes en cada sección.
  3. Las secciones que resulten en una activación suficientemente alta pueden considerarse que contienen el objeto en cuestión.

Detección Ingenua de Objetos

Imagen del Cuaderno de Ejercicios

Sin embargo, este enfoque está lejos de ser ideal, ya que solo permite al algoritmo localizar el cuadro delimitador 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 los cuadros delimitadores, y para ello necesitamos conjuntos de datos específicos.

Regresión para la Detección de Objetos

Este artículo 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, cuadros delimitadores 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 del cuadro delimitador. Para esto último, usamos la llamada Intersección sobre Unión (IoU), que mide qué tan bien se superponen dos cuadros (o dos áreas arbitrarias).

IoU

Figura 2 de este excelente artículo 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 separadas será 0. En otros casos, variará de 0 a 1. Normalmente solo consideramos aquellos cuadros delimitadores para los cuales IoU está por encima de un cierto valor.

Precisión Promedio

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

  1. Considerar la curva de Precisión-Recall que muestra la precisión dependiendo de un valor de 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 dada $C$ 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 cuales IoU está por encima de un cierto valor. Por ejemplo, en el conjunto de datos PASCAL VOC típicamente $\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}$. En más detalle, el proceso de cálculo de mAP se describe en este artículo, 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 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 manera más inteligente. Una de las principales desventajas de estos métodos es que son lentos, porque necesitamos muchas pasadas 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 una sola pasada.

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 del cuadro delimitador. Artículo Oficial

RCNN

Imagen de van de Sande et al. ICCV’11

RCNN-1

Imágenes de este artículo

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, llamada Red de Propuesta de Regiones. Artículo, 2016

FasterRCNN

Imagen del Artículo Oficial

R-FCN: Red Totalmente 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 Position-Sensitive Score Map. Cada objeto de $C$ clases se divide en regiones de $k\times k$, y entrenamos para predecir partes de objetos.
  3. Para cada parte de las regiones de $k\times k$, todas las redes votan por las clases de objetos, y se selecciona la clase de objeto con el voto máximo.

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 del cuadro delimitador 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:

Revisión y Autoestudio