Detección de objetos Reconocer y gobernar. Parte 1



La tecnología de visión por computadora permite en la realidad actual hacer la vida y los negocios más fáciles, más baratos y más seguros. De acuerdo a varios expertos, este mercado se moverá en los próximos años sólo en la dirección del crecimiento, lo que permite el desarrollo de tecnologías apropiadas en la dirección de la productividad y la calidad. Una de las secciones más populares es la detección de objetos (detección de objetos): la definición de un objeto en la imagen o en la transmisión de video.

Los tiempos en que la detección de objetos se resolvió exclusivamente a través del aprendizaje automático clásico (cascadas, SVM ...) ya han pasado, ahora los enfoques basados ​​en el reinado de Deep Learning en esta área. En 2014, se propuso un enfoque que influyó significativamente en la investigación y el desarrollo posteriores en esta área: el modelo R-CNN. Sus mejoras posteriores (en forma de Fast R-CNN y Faster R-CNN) lo convirtieron en uno de los más precisos, lo que se ha convertido en la razón de su uso hasta el día de hoy.

Además de R-CNN, hay muchos más enfoques que buscan objetos: la familia Yolo, SSD, RetinaNet, CenterNet ... Algunos de ellos ofrecen un enfoque alternativo, mientras que otros están desarrollando el actual en la dirección de aumentar el indicador de rendimiento. Una discusión de casi cada uno de ellos se puede publicar en un artículo separado, debido a la abundancia de fichas y trucos :)

Para estudiar, propongo un conjunto de artículos con análisis de modelos de detección de objetos en dos etapas. La capacidad de comprender su dispositivo permite comprender las ideas básicas utilizadas en otras implementaciones. En esta publicación consideraremos el más básico y, en consecuencia, el primero de ellos: R-CNN.

Terminología


El cuadro delimitador , las coordenadas que unen un área específica de una imagen, con mayor frecuencia en forma de rectángulo. Se puede representar mediante 4 coordenadas en dos formatos: centrado (cx,cy,w,h) y regular (xmin,ymin,xmax,ymax)

Hipótesis (Propuesta), P: una determinada región de la imagen (especificada mediante el cuadro delimitador) en la que supuestamente se encuentra el objeto.

Capacitación de extremo a extremo : capacitación en la que las imágenes sin procesar llegan a la entrada de la red y salen las respuestas preparadas.

IoU (Intersection-over-Union) : métrica del grado de intersección entre dos cuadros delimitadores.

R-CNN


Uno de los primeros enfoques aplicables para determinar la ubicación de un objeto en una imagen es R-CNN (red neuronal de convolución de región). Su arquitectura consta de varios pasos sucesivos y se ilustra en la Figura 1:

  1. Definiendo un conjunto de hipótesis.
  2. Extracción de características de regiones prospectivas utilizando una red neuronal convolucional y codificándolas en un vector.
  3. La clasificación de un objeto dentro de una hipótesis basada en el vector del paso 2.
  4. Mejora (ajuste) de las coordenadas de la hipótesis.
  5. Todo se repite desde el paso 2 hasta que se procesen todas las hipótesis del paso 1.

Considere cada paso con más detalle.



Búsqueda de hipótesis


Al tener una imagen específica en la entrada, lo primero se descompone en pequeñas hipótesis de diferentes tamaños. Los autores de este artículo usan la Búsqueda selectiva : de nivel superior, le permite compilar un conjunto de hipótesis (la clase del objeto todavía no importa), basadas en la segmentación para determinar los límites de los objetos por intensidad de píxeles, diferencia de color, contraste y textura. Al mismo tiempo, los autores señalan que se puede usar cualquier algoritmo similar. Por lo tanto, se destacan aproximadamente 2.000 regiones diferentes, que se superponen parcialmente entre sí. Para un procesamiento posterior más preciso, cada hipótesis se expande aún más en 16 píxeles en las 4 direcciones, como si se agregara contexto .

Total:

  • Entrada: imagen original.
  • Salida: un conjunto de hipótesis de diferentes tamaños y relaciones de aspecto.

Codificación de imagen


Cada hipótesis del paso anterior, independientemente y por separado, ingresa la entrada de la red neuronal convolucional. Como utiliza la arquitectura de AlexNet sin la última capa softmax. La tarea principal de la red es codificar la imagen entrante en una representación vectorial que se extrae de la última capa FC7 totalmente conectada . Entonces la salida es una representación vectorial de 4096 dimensiones.

Puede notar que la entrada de AlexNet tiene una dimensión de 3 × 227 × 227, y el tamaño de la hipótesis puede ser casi cualquier relación de aspecto y tamaño. Este problema se evita simplemente comprimiendo o estirando la entrada al tamaño deseado.

Total:

  • Entrada: cada hipótesis propuesta en el paso anterior.
  • Salida: representación vectorial para cada hipótesis.

Clasificación


Después de obtener el vector que caracteriza la hipótesis, es posible su posterior procesamiento. Para determinar qué objeto se encuentra en la región deseada, los autores utilizan el método clásico de clasificación de planos de separación basado en SVM (Support Vector Machine - una máquina de vectores de soporte, puede modelarse utilizando la pérdida de bisagra ) Y debería serNc+1 individual (aquí, Ncdenota el número de clases definidas de objetos, y se agrega una unidad para determinar por separado el fondo) de modelos entrenados de acuerdo con el principio OvR (One vs. Rest - uno contra todos, uno de los métodos de clasificación multiclase). De hecho, el problema de clasificación binaria se está resolviendo: ¿hay una clase concreta de un objeto dentro de la región propuesta o no? Entonces la salida esNc+1-dimensional vectorial que representa la confianza en una clase particular del objeto contenido en la hipótesis (el fondo se denota históricamente por la clase cero,Ci=0)

Total:

  • Entrada: el vector de cada una de las hipótesis propuestas de la penúltima capa de la red (en el caso de AlexNet, esto es FC7).
  • Salida: después de lanzar secuencialmente cada hipótesis, obtenemos una matriz de dimensiones 2000×Ncrepresentando la clase del objeto para cada hipótesis.

Especificación de coordenadas de hipótesis


Las hipótesis obtenidas en el paso 1 no siempre contienen las coordenadas correctas (por ejemplo, un objeto puede ser "recortado" sin éxito), por lo que tiene sentido corregirlas adicionalmente. Según los autores, esto aporta un 3-4% adicional a las métricas. Entonces, las hipótesis que contienen un objeto (la presencia de un objeto se determina en el paso de clasificación) se procesan adicionalmente por regresión lineal. Es decir, las hipótesis con la clase de "fondo" no necesitan un procesamiento adicional de las regiones, porque de hecho no hay ningún objeto allí ...

Cada objeto, específico de su clase, tiene ciertos tamaños y relaciones de aspecto, por lo tanto, lo cual es lógico, se recomienda usar su propio regresor para cada clase .

A diferencia del paso anterior, los autores usan un no vector de la capa FC7 para que la entrada funcione mejory mapas de características extraídos de la última capa MaxPooling (en AlexNet, MaxPool5, dimensión 256 × 6 × 6). La explicación es la siguiente: el vector almacena información sobre la presencia de un objeto con algunos detalles característicos, y el mapa de características almacena mejor la información sobre la ubicación de los objetos.

Total:

  • Entrada: un mapa de atributos de la última capa MaxPooling para cada hipótesis que contiene cualquier objeto, excepto el fondo.
  • Salida: correcciones a las coordenadas del cuadro delimitador de la hipótesis.

Trucos de ayuda


Antes de continuar con los detalles del entrenamiento modelo, consideraremos dos trucos necesarios que necesitaremos más adelante.

Designación de hipótesis positivas y negativas.


Cuando se enseña con un maestro, siempre es necesario un cierto equilibrio entre las clases. Lo contrario puede conducir a una precisión de clasificación deficiente. Por ejemplo, si en una muestra con dos clases, la primera ocurre solo en un pequeño porcentaje de casos, entonces es difícil para la red aprender cómo determinarla; después de todo, esto puede interpretarse como un valor atípico. En el caso de las tareas de detección de objetos, existe tal problema: en la imagen con un solo objeto, solo unas pocas hipótesis (de ~ 2000) contienen este mismo objeto (Ci>0), y todos los demás son el fondo (Ci=0)

Tomemos la notación necesaria: las hipótesis que contienen objetos se llamarán positivas (positivas) y sin objetos (que contienen solo el fondo o una parte insignificante del objeto) - negativas (negativas).

Para determinar posteriormente la intersección entre las dos regiones de la imagen, se utilizará la métrica Intersección sobre Unión . Se considera bastante simple: el área de intersección de dos regiones se divide por el área total de las regiones. En la imagen a continuación puede ver ilustraciones de ejemplos de conteo métrico.



Con hipótesis positivas, todo está claro: si la clase se define incorrectamente, debe recibir una multa. ¿Pero qué hay de lo negativo? Hay muchos más que positivos ... Para empezar, notamos que no todas las hipótesis negativas son igualmente difíciles de reconocer. Por ejemplo, los casos que contienen solo el fondo ( negativo fácil ) son mucho más fáciles de clasificar que contener otro objeto o una pequeña parte del deseado ( negativo duro ).

En la práctica, el negativo fácil y el negativo duro se determinan por la intersección del cuadro delimitador (solo Intersección sobre Unión) con la posición correcta del objeto en la imagen. Por ejemplo, si no hay intersección, o es extremadamente pequeña, esto es fácilmente negativo (Ci=0) si grande es duro negativo o positivo.

El enfoque de minería negativa negativa sugiere usar solo negativo negativo para el entrenamiento, ya que, después de haber aprendido a reconocerlos, logramos automáticamente el mejor trabajo con hipótesis negativas fáciles. Pero tal ideología se aplicará solo en implementaciones posteriores (comenzando con Fast R-CNN).

Supresión no máxima


Muy a menudo, resulta que el modelo identifica varias hipótesis con gran confianza apuntando al mismo objeto. Usando la supresión no máxima (NMS), puede manejar tales casos y dejar solo una, la mejor caja delimitadora. Pero al mismo tiempo, no se olvide del caso en que la imagen puede tener dos objetos diferentes de la misma clase. La Figura 3 ilustra el efecto de la operación antes (izquierda) y después (derecha) de la operación del algoritmo.



Considere el algoritmo para trabajar en una clase (en realidad, se aplica a cada clase por separado):

  1. En la entrada, la función toma un conjunto de hipótesis para una clase y un umbral que establece la intersección máxima entre las hipótesis.
  2. Las hipótesis se ordenan por su "confianza".
  3. En el ciclo, se selecciona la primera hipótesis (tiene el valor de confianza más alto) y se agrega al conjunto de resultados.
  4. En el ciclo, se selecciona la segunda hipótesis siguiente (entre las restantes después del paso 3).
  5. Si la intersección entre las hipótesis seleccionadas es mayor que el umbral seleccionado (la intersección se calcula sobre la base de la Intersección de la Unión), la segunda hipótesis se descarta y ya no está presente en el conjunto de resultados.
  6. Todo se repite desde el paso 3 hasta que las hipótesis se enumeren por completo.

El pseudocódigo se ve así:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


Formación


El bloque de aislamiento de hipótesis no se puede aprender.

Dado que la red se divide en varios bloques que están separados entre sí, no se puede entrenar de principio a fin. Entonces, el aprendizaje es un proceso secuencial.

Entrenamiento de vista vectorial


La red previamente entrenada en ImageNet se toma como base: tales redes ya pueden extraer características importantes de las imágenes entrantes, queda por capacitarlas para trabajar con las clases necesarias. Para hacer esto, cambie la dimensión de la capa de salida aNcy entrenar una versión ya modificada. Las primeras capas se pueden bloquear, ya que extraen las características principales (casi idénticas para todas las imágenes), y las posteriores durante el entrenamiento se adaptan a las características de las clases deseadas. Entonces la convergencia se logrará mucho más rápido. Pero si el entrenamiento sigue yendo mal, puedes desbloquear las capas primarias. Dado que es necesario ajustar con precisión los pesos existentes. No se recomienda utilizar una tasa de aprendizaje alta (tasa de aprendizaje): puede eliminar rápidamente los pesos existentes.

Cuando la red ha aprendido a clasificar bien los objetos, la última capa con activación SoftMax se descarta y la capa FC7 se convierte en la salida, cuya salida, a su vez, puede interpretarse como una representación vectorial de la hipótesis.

En este paso, son positivas las hipótesis que se cruzan con la posición correcta del objeto (IoU) en más de 0,5. Todos los demás se consideran negativos. Para actualizar las escalas, se utiliza un mini lote de 128, que consta de 32 hipótesis positivas y 96 negativas.

Clasificador de entrenamiento


Permítanme recordarles, para la clasificación de cada hipótesis se utiliza Nc+1Los modelos SVM que reciben la entrada de la representación vectorial de la hipótesis y se basan en el principio de uno contra el otro (One-vs-Rest) determinan la clase del objeto. Están entrenados como modelos SVM comunes con una excepción: en este paso, la definición de positivos y negativos es ligeramente diferente. Aquí las hipótesis se toman como negativas, cuya intersección con la posición correcta es menor que 0.3.

Entrenamiento de regresión


Denotar:

  • G=(gx,gy,gw,gh)- las coordenadas correctas del objeto;
  • G^=(gx^,gy^,gw^,gh^)- posición corregida de las coordenadas de hipótesis (debe coincidir con G);
  • T=(tx,ty,tw,ty)- correcciones correctas a las coordenadas;
  • P=(px,py,pw,ph)- coordenadas de la hipótesis;

Entonces los regresores (uno para cada clase) representan cuatro funciones:

  • dx(P), dy(P)- determinar las correcciones a las coordenadas del centro (x,y) Para lograr el efecto de independencia del tamaño original, la corrección debe normalizarse.
  • dw(P)y dh(P)- determine las correcciones al ancho y la altura en el espacio logarítmico (el espacio logarítmico se usa para la estabilidad numérica y la división, para determinar la dirección de la corrección).

Denotamos por φ5(P)mapa de características obtenido de MaxPool5capa de red (recuerde, tiene una dimensión de 256 × 6 × 6, luego simplemente se estira), cuando una hipótesis se limita a las coordenadas aplicando a la red P. Buscaremos una transformaciónP a Gcomo:

\ begin {align} Además
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

d(P)=wTφ5(P)(aquí (x,y,w,h)) es una función lineal, y el vector wse busca utilizando el problema de optimización (regresión de cresta):

w=argmaxw^iN(Tid(P))2+λwx^2


Para determinar las correcciones a las coordenadas, recolectamos pares entre la posición correcta de las hipótesis Gy su estado actual Py defina los valores Tcomo:

\ begin {align} La notación en las fórmulas dentro de este artículo puede diferir de la notación del artículo original para una mejor comprensión. Dado que hay ~ 2000 hipótesis sobre la salida de la red, se combinan utilizando la supresión no máxima. Los autores del artículo también indican que si en lugar de SVM usa la capa SoftMax (que se desplegó en el segundo paso), la precisión cae en ~ 4-4.5% (conjunto de datos VOC 2007), pero señalan que el mejor "ajuste" de las escalas probablemente ayudará a deshacerse de tal problema.
Tx=gxpxpwTy=gypyphTw=loggwpwTh=logghph





En conclusión, destacamos las principales desventajas de este enfoque:


  1. Las hipótesis propuestas en el paso 1 pueden duplicarse parcialmente entre sí: diferentes hipótesis pueden constar de partes idénticas, y cada una de esas hipótesis fue procesada por separado por una red neuronal. Resulta que la mayoría de los lanzamientos de red se duplican más o menos innecesariamente.
  2. No se puede usar para operación en tiempo real, ya que se gastan ~ 53 segundos en pasar 1 imagen (fotograma) (GPU NVIDIA Titan Black).
  3. El algoritmo de extracción de hipótesis no se enseña de ninguna manera y, por lo tanto, una mejora adicional en la calidad es casi imposible (nadie ha cancelado las malas hipótesis).

Esto analiza el primer modelo R-CNN. Las implementaciones más avanzadas (en forma de Fast R-CNN y Faster R-CNN) se analizan en un artículo separado .

Bibliografía


1. R. Girshick, J. Donahue, T. Darrell y J. Malik. "Jerarquías de funciones ricas para la detección precisa de objetos y la segmentación semántica". En CVPR, 2014. arXiv: 1311.2524

2. R. Girshick, J. Donahue, T. Darrell y J. Malik. "Redes convolucionales basadas en regiones para la detección y segmentación precisa de objetos". TPAMI, 2015

Publicado por: Sergey Mikhaylin, Especialista en aprendizaje automático, Jet Infosystems

All Articles