Icone color1 12

Uso del aprendizaje profundo para el reconocimiento de objetos

Autor: Joyce Xu

Traductor: Paula Vidal

 

1

1

Con la aparición de los vehículos autónomos, sistemas inteligentes de videovigilancia y diversas aplicaciones, como el conteo de personas, la demanda de sistemas de reconocimiento facial está creciendo. Estos sistemas se refieren no solo al reconocimiento y la clasificación de los objetos en las imágenes, sino también a la ubicación de cada uno de ellos, trazando a su alrededor un cuadro delimitador apropiado. Esto hizo que el sistema de reconocimiento de objetos fuera una tarea cada vez más compleja en comparación con su predecesora en el campo de la visión artificial: clasificación de imágenes.

Afortunadamente, los enfoques más apropiados para el reconocimiento de objetos son, actualmente, extensiones modelo para la clasificación de imágenes. Hace unos meses, Google lanzó una nueva API de reconocimiento de objetos (interfaz de programación de aplicaciones) en Tensorflow. En este lanzamiento, encontramos modelos pre-entrenados con pesos relativos:

En el articulo anterior, hablamos sobre las tres arquitecturas de redes neuronales mencionadas anteriormente (MobileNets, Inception y ResNet), pero hoy veremos los modelos de reconocimiento de objetos para Tensorflow: Faster R-CNN, R-FCN y SSD. A través de este artículo, entenderemos cómo se aplica el aprendizaje profundo a estos modelos para el reconocimiento de objetos, cómo son diferentes unos de otros y qué puntos son comunes.

Faster R-CNN

El R-CNN más rápido es ahora un modelo de referencia para la detección de objetos basado en el aprendizaje profundo, que ha inspirado muchos modelos posteriores de detección y segmentación, incluidos los dos que examinaremos. Desafortunadamente, no podemos entender completamente el R-CNN más rápido sin analizar R-CNN y Fast R-CNN, sus predecesores.

R-CNN

Podemos decir que el R-CNN, Region-based Convolutional Neural Network, es la red que dio vida los juegos. Consiste en tres fases:

  1. Escaneando la imagen de entrada para detectar objetos posibles, usando un algoritmo llamado Selective Search, que extrae aproximadamente 2000 regiones de esta imagen (Region Proposal).
  2. Implementación de la red neuronal convolucional (CNN) en la parte superior de cada región.
  3. Extrapolación de la salida de cada CNN para ingresarla en:
    1. una SVM (Support Vector Machine) para clasificar la región
    2. Realice una regresión lineal para restringir el cuadro delimitador del objeto, si existe.

Las fases estan ilustradas (de abajo hacia arriba) en la figura siguiente:

 

2

2

En otras palabras, primero generamos las regiones posibles, luego extraemos las características y luego clasificamos esas regiones en función de las características extraídas. Básicamente, hemos convertido la detección de objetos en un problema de clasificación. El R-CNN es muy intuitivo pero, lamentablemente,  muy lento.

 

Fast R-CNN

La version creado sucesiva es el Fast R-CNN. Este se parece al original en muchas de sus características, pero es mejor en términos de velocidad de detección para dos aspectos:

  1. La extracción de características se lleva a cabo antes de extraer las regiones de interés, pero usando solo una CNN para toda la imagen en lugar de 2000 CNN en las 2000 regiones sobrepuestas .
  2. SVM se reemplaza por una función softmax , además, la red neuronal también se usa para realizar pronósticos en lugar de crear un nuevo modelo

 

El modelo se ve más o menos así:

 

3 1

3 1

Como podemos ver en la imagen, ahora estamos generando propuestas regionales basadas no en la imagen original, sino en el último mapa de las características extrapoladas de la red. Esto nos permite entrenar solo una CNN para toda la imagen.

Además, en lugar de entrenar diferentes SVM para clasificar cada objeto, hay una sola capa de softmax que genera directamente la probabilidad para la categoria de referencia. Entonces, ahora tenemos una sola red para entrenar, con la diferencia de lo que sucedió anteriormente donde en cambio había una red neuronal flanqueada por múltiples SVM.

El Fast R-CNN se desempeña, por lo tanto, mejor en términos de velocidad. Sin embargo, queda un defecto importante: el algoritmo de selective search que propone posibles regiones.

Faster R-CNN

Ahora hemos alcanzado el objetivo inicial de nuestro artículo: Faster R-CNN. La intuición fue aquella de reemplazar el lento algoritmo de  selective search con una red neuronal rápida. Específicamente, se introdujo la region proposal network  (RPN), una red de propuesta regional.

Cómo funciona el RPN:

  • En la última capa de una CNN inicial, una ventana deslizante de 3×3 se mueve a través del mapa de características para asignarle un tamaño más pequeño (por ejemplo, 256-d).
  • Para cada posición de ventana deslizante, el RPN genera múltiples regiones posibles basadas en uniones espaciales de dimensiones fijas llamadas cajas de anclaje. (anchor boxes).
  • Cada propuesta regional consiste en:
  • un puntaje (score) para la presencia del objeto en esa región en particular
  • 4 coordenadas que representan el cuadro delimitador de la región.

En otras palabras, veamos nuestra región en el último mapa de características, teniendo en cuenta los diferentes k caudros de anclaje que lo rodean. Para cada cuadro, se muestra si esta tiene un objeto y  caules son las coordenadas del cuadro. En la imagen, se representa como aparece desde la posición de una ventana deslizante:

 

4 1

4 1

La puntuación de 2k representa la probabilidad dada por softmax para cada caja k debido a la presencia de un objeto. Cabe señalar que, aunque el RPN procesa las coordenadas de los cuadros delimitadores, no clasifica los posibles objetos de todos modos: tiene el único propósito de identificar regiones en las que hay objetos presentes , por lo tanto, comunicar las coordenadas con los cuadros relacionados. Si un cuadro de anclaje tiene una puntuación, relativa a la presencia de un objeto, por encima de un cierto umbral, entonces esa casilla dada se seleccionará como una posible región.

Teniendo ahora nuestras posibles regiones, las presentamos directamente en el Fast R-CNN. Agregamos una capa de Pooling, algunas capas completamente conectadas, finalmente una capa de clasificación softmax y un regresor de  cuadros delimitadores (cuadro delimitador regresivo). Podemos decir que Faster R-CNN = RPN + Fast R-CNN.

 

5 1

5 1

El Faster R-CNN logra asi una  mejor velocidad y precisión. Aunque ha habido múltiples intentos de aumentar la velocidad de reconocimiento de los objetos, solo unos pocos modelos han sido capaces de superar esta red. En otras palabras, el Faster R-CNN ciertamente no es el método más fácil y rápido para la  object detection, pero aún presenta uno de los mejores rendimientos. Por lo tanto, el  Faster R-CNN en Tensorflow con  la Inception ResNet es el modelo más lento pero también el más preciso.

Aunque el la Faster R-CNN puede parecer complejo, es posible observar que en el corazón de su estructura es el mismo su original el R-CNN: identifica las posibles regiones de objetos y las clasifica. Este es el enfoque dominante de la mayoría de los modelos actuales de detección de objetos, incluido el que vamos a analizar ahora.

R-FCN

Regresemos  atras por un momento. Hemos dicho que Fast R-CNN ha mejorado mucho su velocidad de detección al compartir una sola CNN para todas las regiones. Este mecanismo básico es el mismo que el de la R-FCN: aumente la velocidad maximizando el numero de parámetros compartidos.

La Region-based FullyConvolutional Net (R-FCN) comparte la totalidad del cálculo para cada salida individual.

Por un lado, cuando clasificamos un objeto queremos que el modelo sea invariante con las traducciones, para identificarlo donde sea que aparezca. Por otro lado, sin embargo, necesitamos saber también una posible variación de las traducciones: si nuestro objeto está en la esquina superior izquierda, el modelo debe dibujar un cuadro delimitador en ese punto. Entonces, ¿cómo encontrar un compromiso entre los dos extremos, la varianza y la invarianza?

La solución dada por R-FCN es representada por la position-sentitive score maps: mapas de puntuación (relativo a los features, extraer a través de convoluciones, a las que se les asigna un puntaje basado en la presencia una determinada clase dada) sensibles a la posición de los objetos que intentemos clasificar.

Cada uno de estos mapas representa una posición relativa a una clase de objetos. Por ejemplo, un cuadro mapa de puntos podría activarse si identifica el lado superior derecho de un gato, mientras que otro podría activarse cuando detecta el lado inferior izquierdo de una máquina. Esencialmente, estos mapas de puntuación son mapas de características convolucionales que han sido entrenados para reconocer ciertas partes de cada objeto.

La R-FCN funciona de la siguiente manera:

Ejecuta una CNN (en este caso un ResNet) en la imagen de entrada.

Agregue una capa convolucional que incluya todos los mapas generados a partir del paso anterior para obtener un conjunto de puntuaciones de las imágenes generales  . Obtenemos k²(C+1) puntuación de mapas, donde k² representa el número de posiciones relativas para dividir un objeto (por ejemplo 3²  para una cuadrícula 3×3), donde C+1

  1. Ejecute una RPN para generar regiones de interés (RoI)
  2. Divide cada una RoI en el mismo k² subregiones el cual está compuesto por mapas de puntuaciones
  3. Ahora debemos verificar si en la suma de los puntajes generales, de cada subregión coincide con la posición relativa correspondiente de un objeto. Por ejemplo, si queremos considerar la subregión en la esquina superior izquierda, debemos tomar el mapa de puntuación que corresponde a la esquina superior izquierda de un objeto y convertirlo en un promedio dentro del ROl. Este proceso se repite para cada catergoria.
  4. Despues que cada k² subregión tiene un valor de “object match” por cada categoria, se obtiene un promedio de las subregiones para obtener un puntaje para cada categoria.

5.Clasifique los RoI con una función softmax en los restantes C + 1 vectores dimensionales

 

Un R-FCN, que tiene un RPN que genera los RoI, aparecerá más o menos así:

6 1

6 1

Comprender cómo funciona este modelo es más fácil si realmente puede visualizar concretamente lo que hace. A continuación tenemos un ejemplo de cómo funciona mientras busca de dectectar un recién nacido.

 

7

7

Figura 4: podemos observar una RoI que no se superpone correctamente con el objeto
Figura 3: Observamos una R-FCN (k x k = 3 x 3) por la categoria persona

En términos simples: el R-FCN considera cada región, subdividiéndolas en subregiones y preguntando a cada una de ellas si corresponden a la porción relativa de la imagen de entrada. Por ejemplo, “¿Se parece a la parte centro derecha de un niño?”. Esto se repite en cada categoria. Si la mayoría de las partes de las subregiones resultan correspondientes, entonces el RoI lo clasifica como recién nacido, después que la función softmax lo ha realizado en en todas las categorias.

De esta forma, el R-FCN puede identificar simultáneamente la varianza de las traducciones, proponiendo diferentes regiones de objetos y la invariabilidad de las traducciones a través de la referencia de cada región a los mismos mapas de puntuación. Estos mapas de puntuación deberian aprender a clasificar un gato como tal, donde sea que aparezca. Además, es completamente convolucional: esto significa que el cálculo se comparte en toda la red.

Esto permite que el R-FCN sea s más rápido que el FasterR-CNN , logrando el mismo grado de precisión.

SSD

El último modelo que vamos a analizar es el Single-Shot Detector (SDD) . Como el R-FCN alcanzó una velocidad mucho más alta que el Faster R-CNN pero de una forma diferente.

Los primeros dos modelos realizan una  region proposal y region classification en dos fases distintas. En primer lugar, utilizan una RPN (region proposal network) para generar las regiones de interés, luego clasifican estas regiones a través de sus capas totalmente conectadas o las capas convolucionales sensibles a la posición de los objetos que se van a clasificar. El SSD combina estos dos procesos en un solo paso, al tiempo que proporciona los cuadros de delimitación y las categoria, en el momento que examina la imagen.

 

 

Dada una imagen de entrada y un conjunto de etiquetas para al dataset, la SSD actúa de esta manera:

1) Pasa la imagen a través de una serie de capas convolucionales, produciendo mapas de las características a diferentes escalas (por ejemplo, 10×10, luego 6×6 y nuevamente 3×3, etc.)

2) Por cada posición en cada uno de estos mapas de características, se usa un filtro convolucional de 3×3 para evaluar un pequeño conjunto de requadros delimitadores predefinidos. Estos últimos son el equivalente a cuadros de anclaje(anchor boxes) del Faster R-CNN

3)Por cada requadro establece al mismo tiempo:

  1. El recuadro del bounding box
  2. La probabilidad para cada categoria.

Durante el entrenamiento se hace coincidir el requadro real con el predicho sobre Intersection over Union (IoU), que es el índice de Jaccard. Los recuadros mejores pr se etiquetarán como “positivos”, así como todos los demás recuadros con un valor de IoU> 0.5.

Durante el entrenamiento de la SSD, sin embargo, existe una dificultad peculiar en comparación con los modelos anteriores. En los primeros dos modelos, el RPN permitió considerar solo lo que tenía la más mínima posibilidad de ser un objeto. Con la SSD, sin embargo, se elimina el primer filtro: clasifica y rastrea cuadros delimitadores en cada posición de la imagen, usando recuadros de diferentes formas y escalas múltiples. Esto da como resultado  un número mucho mayor de recuadros  donde la mayoría de estos son negativos (ya que no detecta objetos).

El SSD corrige este problema de dos maneras. Primero, utiliza la no-maximum suppression  (NMS) para agrupar varias requadros superpuestos en una unico recuadro. Entonces, por ejemplo, cuatro recuadros de forma y tamaño similares contienen el mismo objeto, el NMS le permite mantener el mejor rquadro, el más preciso, y descartar los restantes. En segundo lugar, utiliza una técnica llamada  para hard negative mining para equilibrar las categorias durante el entrenamiento. Con esta técnica, solo se utiliza un subconjunto de ejemplos negativos con la mayorloss in fase di training  (los denominados falsos positivos)  que se  usa para cada iteración durante el entrenamiento. El SSD mantiene una relación de 3: 1 entre negativos y positivos.

 

 

 

Su arquitectura se ve así:

8

Como se mencionó anteriormente, vemos que hay “extra feature layers. Estos mapas de características de tamaño variable ayudan a identificar objetos de diferentes tamaños. Aquí hay un ejemplo:

9

En mapas de funciones más pequeñas (4×4), cada cuadro cubre una región más amplia de la imagen, lo que le permite identificar objetos más grandes. La region proposal y la clasificación se ejecutan al mismo tiempo: teniendo categorias p de objetos, cada cuadro delimitador se asocia con un vector dimensional (4 + p) que produce 4 recuadros de coordenadas y probabilidad de categorias p. En última instancia, una función sotmax también se usa para clasificar objetos.

Por lo tanto, podemos decir que el SSD no es tan diferente de los dos modelos anteriores. Sin embargo, omite el paso de la identificación de la región, considerando cada cuadro en cada posición de la imagen junto con su clasificación. Al realizar todos estos procesos simultáneamente, el SSD es sin duda el más rápido de los tres modelos considerados.

 

 

 

 

Conclusión

El  Faster R-CNN , el R-FCN y el SSD son tres de los mejores y más usados modelos para la detección de objetos. Todos ellos confían en las redes neuronales convolucionales para las primeras etapas del proceso y siguen, más o menos, el mismo método de proponer regiones y clasificación.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *