Última actualización el 27 de enero de 2021
Puede ser un reto para los principiantes distinguir entre diferentes tareas de visión por ordenador relacionadas.
Por ejemplo, la clasificación de imágenes es sencilla, pero las diferencias entre la localización y la detección de objetos pueden resultar confusas, especialmente cuando las tres tareas pueden denominarse igualmente reconocimiento de objetos.
La clasificación de imágenes implica la asignación de una etiqueta de clase a una imagen, mientras que la localización de objetos implica el trazado de un cuadro delimitador alrededor de uno o más objetos en una imagen. La detección de objetos es más desafiante y combina estas dos tareas y dibuja una caja delimitadora alrededor de cada objeto de interés en la imagen y les asigna una etiqueta de clase. En conjunto, todos estos problemas se denominan reconocimiento de objetos.
En este post, descubrirás una suave introducción al problema del reconocimiento de objetos y los modelos de aprendizaje profundo de última generación diseñados para abordarlo.
Después de leer este post, sabrás:
- El reconocimiento de objetos se refiere a una colección de tareas relacionadas para identificar objetos en fotografías digitales.
- Las redes neuronales convolucionales basadas en la región, o R-CNN, son una familia de técnicas para abordar las tareas de localización y reconocimiento de objetos, diseñadas para el rendimiento del modelo.
- Sólo se mira una vez, o YOLO, es una segunda familia de técnicas para el reconocimiento de objetos diseñada para la velocidad y el uso en tiempo real.
Empiece su proyecto con mi nuevo libro Deep Learning for Computer Vision, que incluye tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.
Comencemos.
Una suave introducción al reconocimiento de objetos con aprendizaje profundo
Foto de Bart Everson, algunos derechos reservados.
Resumen
Este tutorial se divide en tres partes; son:
- ¿Qué es el reconocimiento de objetos?
- Familia de modelos R-CNN
- Familia de modelos YOLO
¿Quieres resultados con el aprendizaje profundo para la visión por ordenador?
Toma mi curso intensivo gratuito de 7 días por correo electrónico ahora (con código de muestra).
Haz clic para inscribirte y también obtén una versión gratuita del curso en PDF Ebook.
Descarga tu minicurso gratuito
¿Qué es el reconocimiento de objetos?
Reconocimiento de objetos es un término general para describir una colección de tareas de visión por ordenador relacionadas que implican la identificación de objetos en fotografías digitales.
La clasificación de imágenes implica la predicción de la clase de un objeto en una imagen. La localización de objetos se refiere a la identificación de la ubicación de uno o más objetos en una imagen y al trazado de un recuadro alrededor de su extensión. La detección de objetos combina estas dos tareas y localiza y clasifica uno o más objetos en una imagen.
Cuando un usuario o profesional se refiere a «reconocimiento de objetos», a menudo quiere decir «detección de objetos».
… utilizaremos el término reconocimiento de objetos en sentido amplio para abarcar tanto la clasificación de imágenes (una tarea que requiere que un algoritmo determine qué clases de objetos están presentes en la imagen) como la detección de objetos (una tarea que requiere que un algoritmo localice todos los objetos presentes en la imagen
– ImageNet Large Scale Visual Recognition Challenge, 2015.
Así, podemos distinguir entre estas tres tareas de visión por ordenador:
- Clasificación de imágenes: Predecir el tipo o clase de un objeto en una imagen.
- Entrada: Una imagen con un solo objeto, como una fotografía.
- Salida: Una etiqueta de clase (por ejemplo, uno o más enteros que se mapean a etiquetas de clase).
- Localización de objetos: Localizar la presencia de objetos en una imagen e indicar su ubicación con un cuadro delimitador.
- Entrada: Una imagen con uno o más objetos, como una fotografía.
- Salida: Uno o más cuadros delimitadores (por ejemplo, definidos por un punto, una anchura y una altura).
- Detección de objetos: Localizar la presencia de objetos con un cuadro delimitador y los tipos o clases de los objetos localizados en una imagen.
- Entrada: Una imagen con uno o más objetos, como una fotografía.
- Salida: Uno o más cuadros delimitadores (por ejemplo, definidos por un punto, una anchura y una altura), y una etiqueta de clase para cada cuadro delimitador.
- Clasificación de imágenes: Los algoritmos producen una lista de categorías de objetos presentes en la imagen.
- Localización de un solo objeto: Los algoritmos producen una lista de categorías de objetos presentes en la imagen, junto con un cuadro delimitador alineado con el eje que indica la posición y la escala de una instancia de cada categoría de objeto.
- Detección de objetos: Los algoritmos producen una lista de categorías de objetos presentes en la imagen junto con un cuadro delimitador alineado con el eje que indica la posición y la escala de cada instancia de cada categoría de objeto.
- Módulo 1: Propuesta de región. Genera y extrae propuestas de regiones independientes de la categoría, por ejemplo, cajas delimitadoras candidatas.
- Módulo 2: Extractor de características. Extraer características de cada región candidata, por ejemplo, utilizando una red neuronal convolucional profunda.
- Módulo 3: Clasificador. Clasifica las características como una de las clases conocidas, por ejemplo, modelo clasificador SVM lineal.
- El entrenamiento es una tubería de múltiples etapas. Implica la preparación y el funcionamiento de tres modelos separados.
- El entrenamiento es caro en espacio y tiempo. Entrenar una CNN profunda en tantas propuestas de regiones por imagen es muy lento.
- La detección de objetos es lenta. Hacer predicciones usando una CNN profunda sobre tantas propuestas de región es muy lento.
- Módulo 1: Red de propuesta de regiones. Red neuronal convolucional para proponer regiones y el tipo de objeto a considerar en la región.
- Módulo 2: Fast R-CNN. Red neuronal convolucional para la extracción de características de las regiones propuestas y la salida del cuadro delimitador y las etiquetas de clase.
- ImageNet Large Scale Visual Recognition Challenge, 2015.
- Rich feature hierarchies for accurate object detection and semantic segmentation, 2013.
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition, 2014.
- Fast R-CNN, 2015.
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
- Mask R-CNN, 2017.
- You Only Look Once: Unified, Real-Time Object Detection, 2015.
- YOLO9000: Mejor, más rápido, más fuerte, 2016.
- YOLOv3: Una mejora incremental, 2018.
- R-CNN: Regiones con características de redes neuronales convolucionales, GitHub.
- Rápido R-CNN, GitHub.
- Código Python R-CNN más rápido, GitHub.
- YOLO, GitHub.
- Ross Girshick, Homepage.
- Joseph Redmon, Homepage.
- YOLO: Real-Time Object Detection, Homepage.
- Una breve historia de las CNN en la segmentación de imágenes: De la R-CNN a la R-CNN de máscara, 2017.
- Detección de objetos para dummies Parte 3: Familia R-CNN, 2017.
- Detección de objetos Parte 4: Modelos de detección rápida, 2018.
- El reconocimiento de objetos se refiere a una colección de tareas relacionadas para identificar objetos en fotografías digitales.
- Las redes neuronales convolucionales basadas en regiones, o R-CNN, son una familia de técnicas para abordar tareas de localización y reconocimiento de objetos, diseñadas para el rendimiento de los modelos.
- Sólo se mira una vez, o YOLO, es una segunda familia de técnicas para el reconocimiento de objetos diseñada para la velocidad y el uso en tiempo real.
Una extensión más de este desglose de las tareas de visión por ordenador es la segmentación de objetos, también llamada «segmentación de instancias de objetos» o «segmentación semántica», en la que las instancias de los objetos reconocidos se indican resaltando los píxeles específicos del objeto en lugar de un cuadro delimitador grueso.
A partir de este desglose, podemos ver que el reconocimiento de objetos se refiere a un conjunto de desafiantes tareas de visión por ordenador.
Overview of Object Recognition Computer Vision Tasks
La mayoría de las recientes innovaciones en problemas de reconocimiento de imágenes han llegado como parte de la participación en las tareas del ILSVRC.
Se trata de una competición académica anual con un reto separado para cada uno de estos tres tipos de problemas, con la intención de fomentar mejoras independientes y separadas en cada nivel que puedan ser aprovechadas más ampliamente. Por ejemplo, véase la lista de los tres tipos de tareas correspondientes a continuación, tomada del documento de revisión del ILSVRC de 2015:
Podemos ver que la «localización de un solo objeto» es una versión más simple de la «localización de objetos», definida de forma más amplia, que limita las tareas de localización a los objetos de un tipo dentro de una imagen, lo que podemos suponer que es una tarea más fácil.
A continuación se muestra un ejemplo que compara la localización de un solo objeto y la detección de objetos, tomado del documento del ILSVRC. Obsérvese la diferencia en las expectativas de la verdad del terreno en cada caso.
Comparación entre la localización de un solo objeto y la detección de objetos.Tomado de: ImageNet Large Scale Visual Recognition Challenge.
El rendimiento de un modelo para la clasificación de imágenes se evalúa utilizando el error medio de clasificación a través de las etiquetas de clase predichas. El rendimiento de un modelo para la localización de un solo objeto se evalúa utilizando la distancia entre el cuadro delimitador esperado y el predicho para la clase esperada. Mientras que el rendimiento de un modelo para el reconocimiento de objetos se evalúa utilizando la precisión y la recuperación a través de cada uno de los mejores cuadros delimitadores para los objetos conocidos en la imagen.
Ahora que estamos familiarizados con el problema de la localización y la detección de objetos, echemos un vistazo a algunos modelos recientes de aprendizaje profundo de alto rendimiento.
Familia de modelos R-CNN
La familia de métodos R-CNN se refiere a la R-CNN, que puede significar «Regiones con características CNN» o «Red neuronal convolucional basada en regiones», desarrollada por Ross Girshick, et al.
Esta incluye las técnicas R-CNN, Fast R-CNN y Faster-RCNN diseñadas y demostradas para la localización y el reconocimiento de objetos.
Veamos con más detalle los aspectos más destacados de cada una de estas técnicas a su vez.
R-CNN
La R-CNN fue descrita en el artículo de 2014 de Ross Girshick, et al. de la UC Berkeley, titulado «Rich feature hierarchies for accurate object detection and semantic segmentation» (Jerarquías ricas en características para la detección precisa de objetos y la segmentación semántica).
Puede haber sido una de las primeras aplicaciones grandes y exitosas de las redes neuronales convolucionales al problema de la localización, detección y segmentación de objetos. El enfoque se demostró en conjuntos de datos de referencia, logrando entonces resultados de vanguardia en el conjunto de datos VOC-2012 y en el conjunto de datos de detección de objetos ILSVRC-2013 de 200 clases.
Su modelo R-CNN propuesto se compone de tres módulos; son:
La arquitectura del modelo se resume en la siguiente imagen, tomada del paper.
Resumen de la arquitectura del modelo R-CNNTomado de Rich feature hierarchies for accurate object detection and semantic segmentation.
Se utiliza una técnica de visión por ordenador para proponer regiones candidatas o cajas delimitadoras de objetos potenciales en la imagen llamada «búsqueda selectiva», aunque la flexibilidad del diseño permite utilizar otros algoritmos de propuesta de regiones.
El extractor de características utilizado por el modelo fue la CNN profunda AlexNet que ganó el concurso de clasificación de imágenes ILSVRC-2012. La salida de la CNN fue un vector de 4.096 elementos que describe el contenido de la imagen que se alimenta a una SVM lineal para la clasificación, concretamente se entrena una SVM para cada clase conocida.
Es una aplicación relativamente sencilla y directa de las CNN al problema de la localización y reconocimiento de objetos. Una desventaja del enfoque es que es lento, ya que requiere un pase de extracción de características basado en CNN en cada una de las regiones candidatas generadas por el algoritmo de propuesta de regiones. Esto es un problema, ya que el documento describe el modelo operando sobre aproximadamente 2.000 regiones propuestas por imagen en tiempo de prueba.
El código fuente de Python (Caffe) y MatLab para R-CNN como se describe en el documento se puso a disposición en el repositorio GitHub de R-CNN.
Rápido R-CNN
Dado el gran éxito de R-CNN, Ross Girshick, entonces en Microsoft Research, propuso una extensión para abordar los problemas de velocidad de R-CNN en un documento de 2015 titulado «Fast R-CNN».
El documento comienza con una revisión de las limitaciones de R-CNN, que se pueden resumir de la siguiente manera:
Se propuso un trabajo previo para acelerar la técnica llamada spatial pyramid pooling networks, o SPPnets, en el artículo de 2014 «Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition.» Esto aceleró la extracción de características, pero esencialmente utilizó un tipo de algoritmo de almacenamiento en caché de paso hacia adelante.
La R-CNN rápida se propone como un modelo único en lugar de una tubería para aprender y dar salida a las regiones y clasificaciones directamente.
La arquitectura del modelo toma la fotografía un conjunto de propuestas de regiones como entrada que se pasan a través de una red neuronal convolucional profunda. Para la extracción de características se utiliza una CNN preentrenada, como una VGG-16. El final de la CNN profunda es una capa personalizada llamada Region of Interest Pooling Layer, o RoI Pooling, que extrae características específicas para una región candidata de entrada dada.
La salida de la CNN es entonces interpretada por una capa totalmente conectada y luego el modelo se bifurca en dos salidas, una para la predicción de la clase a través de una capa softmax, y otra con una salida lineal para el cuadro delimitador. Este proceso se repite varias veces para cada región de interés en una imagen dada.
La arquitectura del modelo se resume en la siguiente imagen, tomada del artículo.
Resumen de la arquitectura del modelo R-CNN rápido.
Tomado de: R-CNN rápida.
El modelo es significativamente más rápido para entrenar y hacer predicciones, sin embargo, todavía requiere un conjunto de regiones candidatas que se propone junto con cada imagen de entrada.
El código fuente de Python y C++ (Caffe) para Fast R-CNN, tal y como se describe en el artículo, está disponible en un repositorio de GitHub.
Faster R-CNN
La arquitectura del modelo fue mejorada en cuanto a la velocidad de entrenamiento y detección por Shaoqing Ren, et al. en Microsoft Research en el artículo de 2016 titulado «Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks»
La arquitectura fue la base de los resultados del primer puesto obtenido en las tareas del concurso de reconocimiento y detección de objetos ILSVRC-2015 y MS COCO-2015.
La arquitectura se diseñó para proponer y refinar propuestas de regiones como parte del proceso de entrenamiento, lo que se conoce como red de propuestas de regiones o RPN. A continuación, estas regiones se utilizan junto con un modelo R-CNN rápido en un único diseño de modelo. Estas mejoras reducen el número de propuestas de regiones y aceleran el funcionamiento del modelo en tiempo de prueba hasta casi el tiempo real con un rendimiento de vanguardia.
… nuestro sistema de detección tiene una velocidad de fotogramas de 5 fps (incluyendo todos los pasos) en una GPU, al tiempo que logra una precisión de detección de objetos de vanguardia en los conjuntos de datos PASCAL VOC 2007, 2012 y MS COCO con sólo 300 propuestas por imagen. En las competiciones ILSVRC y COCO 2015, Faster R-CNN y RPN son la base de las propuestas ganadoras del primer puesto en varios temas
– Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
Aunque se trata de un único modelo unificado, la arquitectura se compone de dos módulos:
Ambos módulos operan sobre la misma salida de una CNN profunda. La red de propuesta de regiones actúa como mecanismo de atención para la red R-CNN rápida, informando a la segunda red de dónde mirar o prestar atención.
La arquitectura del modelo se resume en la siguiente imagen, extraída del artículo.
Resumen de la arquitectura del modelo Faster R-CNN.Tomado de: Faster R-CNN: Towards Real-Time Object Detection With Region Proposal Networks.
La RPN funciona tomando la salida de una CNN profunda pre-entrenada, como la VGG-16, y pasando una pequeña red sobre el mapa de características y emitiendo múltiples propuestas de región y una predicción de clase para cada una. Las propuestas de regiones son cuadros delimitadores, basados en los llamados cuadros de anclaje o formas predefinidas diseñadas para acelerar y mejorar la propuesta de regiones. La predicción de clase es binaria, indicando la presencia de un objeto o no, lo que se denomina «objetualidad» de la región propuesta.
Se utiliza un procedimiento de entrenamiento alterno en el que ambas subredes se entrenan al mismo tiempo, aunque intercaladas. Esto permite que los parámetros de la CNN profunda del detector de características se adapten o ajusten para ambas tareas al mismo tiempo.
En el momento de escribir este artículo, esta arquitectura R-CNN más rápida es la cúspide de la familia de modelos y sigue logrando resultados cercanos al estado del arte en tareas de reconocimiento de objetos. Una extensión adicional añade soporte para la segmentación de imágenes, descrita en el artículo de 2017 «Mask R-CNN».
El código fuente de Python y C++ (Caffe) para Fast R-CNN, tal y como se describe en el artículo, está disponible en un repositorio de GitHub.
Familia de modelos YOLO
Otra popular familia de modelos de reconocimiento de objetos se denomina colectivamente YOLO o «You Only Look Once», desarrollada por Joseph Redmon, et al.
Los modelos R-CNN pueden ser generalmente más precisos, sin embargo la familia de modelos YOLO son rápidos, mucho más rápidos que R-CNN, logrando la detección de objetos en tiempo real.
YOLO
El modelo YOLO fue descrito por primera vez por Joseph Redmon, et al. en el artículo de 2015 titulado «You Only Look Once: Unified, Real-Time Object Detection.» Hay que tener en cuenta que Ross Girshick, desarrollador de R-CNN, también fue autor y colaborador de este trabajo, entonces en Facebook AI Research.
El enfoque implica una única red neuronal entrenada de extremo a extremo que toma una fotografía como entrada y predice los cuadros delimitadores y las etiquetas de clase para cada cuadro delimitador directamente. La técnica ofrece una menor precisión de predicción (por ejemplo, más errores de localización), aunque funciona a 45 cuadros por segundo y hasta 155 cuadros por segundo para una versión optimizada de velocidad del modelo.
Nuestra arquitectura unificada es extremadamente rápida. Nuestro modelo YOLO básico procesa imágenes en tiempo real a 45 fotogramas por segundo. Una versión más pequeña de la red, Fast YOLO, procesa unos asombrosos 155 fotogramas por segundo…
– You Only Look Once: Unified, Real-Time Object Detection, 2015.
El modelo funciona dividiendo primero la imagen de entrada en una cuadrícula de celdas, donde cada celda es responsable de predecir un cuadro delimitador si el centro de un cuadro delimitador cae dentro de la celda. Cada celda de la cuadrícula predice un cuadro delimitador que incluye las coordenadas x, y, la anchura y la altura y la confianza. Una predicción de clase también se basa en cada celda.
Por ejemplo, una imagen se puede dividir en una cuadrícula de 7×7 y cada celda de la cuadrícula puede predecir 2 cuadros delimitadores, lo que resulta en 94 predicciones de cuadros delimitadores propuestas. El mapa de probabilidades de clase y los recuadros delimitadores con las confidencias se combinan entonces en un conjunto final de recuadros delimitadores y etiquetas de clase. La imagen tomada del artículo siguiente resume las dos salidas del modelo.
Resumen de las predicciones realizadas por el modelo YOLO.Tomado de: You Only Look Once: Unified, Real-Time Object Detection
YOLOv2 (YOLO9000) y YOLOv3
El modelo fue actualizado por Joseph Redmon y Ali Farhadi en un esfuerzo por mejorar aún más el rendimiento del modelo en su documento de 2016 titulado «YOLO9000: Better, Faster, Stronger.»
Aunque esta variación del modelo se denomina YOLO v2, se describe una instancia del modelo que fue entrenada en dos conjuntos de datos de reconocimiento de objetos en paralelo, capaz de predecir 9.000 clases de objetos, por lo que se le dio el nombre de «YOLO9000.»
Se realizaron una serie de cambios en el entrenamiento y la arquitectura del modelo, como el uso de la normalización por lotes y las imágenes de entrada de alta resolución.
Al igual que Faster R-CNN, el modelo YOLOv2 hace uso de cajas de anclaje, cajas delimitadoras predefinidas con formas y tamaños útiles que se adaptan durante el entrenamiento. La elección de los cuadros delimitadores para la imagen se procesa previamente mediante un análisis de k-means en el conjunto de datos de entrenamiento.
Es importante destacar que la representación predicha de los cuadros delimitadores se modifica para permitir que los pequeños cambios tengan un efecto menos dramático en las predicciones, lo que da lugar a un modelo más estable. En lugar de predecir la posición y el tamaño directamente, se predicen los desplazamientos para mover y remodelar las cajas de anclaje predefinidas en relación con una celda de la cuadrícula y se amortiguan mediante una función logística.
Ejemplo de la representación elegida al predecir la posición y la forma de las cajas de anclajeTomado de: YOLO9000: Better, Faster, Stronger
Las mejoras adicionales al modelo fueron propuestas por Joseph Redmon y Ali Farhadi en su documento de 2018 titulado «YOLOv3: An Incremental Improvement.» Las mejoras fueron razonablemente menores, incluyendo una red de detectores de características más profundas y cambios de representación menores.
Lectura adicional
Esta sección proporciona más recursos sobre el tema si está buscando profundizar.
Papers
R-CNN Family Papers
YOLO Family Papers
Proyectos de código
Recursos
Articles
Resumen
En este post, descubriste una suave introducción al problema del reconocimiento de objetos y los modelos de aprendizaje profundo de última generación diseñados para abordarlo.
Específicamente, aprendiste:
¿Tienes alguna pregunta?
Haz tus preguntas en los comentarios de abajo y haré lo posible por responder.
¡Desarrolla hoy modelos de aprendizaje profundo para visión!
Desarrolla tus propios modelos de visión en minutos
…con sólo unas líneas de código python
Descubre cómo en mi nuevo Ebook:
Deep Learning for Computer Vision
Proporciona tutoriales de autoaprendizaje sobre temas como:
clasificación, detección de objetos (yolo y rcnn), reconocimiento de caras (vggface y facenet), preparación de datos y mucho más…
Lleva por fin el aprendizaje profundo a tus proyectos de visión
Olvida lo académico. Sólo resultados.
Vea lo que hay dentro