Red de conocimiento informático - Problemas con los teléfonos móviles - Serie R-CNN de algoritmos de detección de objetos

Serie R-CNN de algoritmos de detección de objetos

En el campo de la detección de objetos, los avances de los últimos cinco años parecen estar relacionados con un nombre: Ross Girshick, coautor de From R-CNN, Fast R-CNN, Faster R-CNN a Mask R -CNN y muchos otros modelos clásicos, incluso el autor de YOLO. Ross Girshick es uno de los autores de YOLO.

El siguiente es su currículum:

Desde algoritmos hasta marcos de implementación y conjuntos de datos, este autor ha logrado un gran avance.

El propósito de este artículo es resumir el desarrollo del algoritmo R-CNN y las ideas centrales del modelo en sí, sin involucrar demasiados detalles técnicos (como el preprocesamiento de datos de entrenamiento, configuración de hiperparámetros, etc. .).

Las referencias son principalmente el texto original del algoritmo anterior, así como los siguientes recursos:

R-CNN generalmente se considera una CNN basada en regiones o una región Con características de CNN, el autor Esto se menciona en el artículo original.

Para resumir los pasos de R-CNN, la siguiente figura muestra los pasos involucrados en R-CNN:

A continuación se muestra una descripción detallada del modelo R-CNN. Los aspectos clave de R-CNN se detallan a continuación.

Para la imagen de entrada, primero generamos alrededor de 2000 regiones utilizando un algoritmo de búsqueda selectiva. En cuanto al algoritmo de búsqueda selectiva, puede consultar el artículo original o nuestra publicación de blog anterior. Como se menciona en el artículo original, R-CNN no tiene preferencia por varios algoritmos de propuesta de región, y el algoritmo de búsqueda selectiva se elige solo para facilitar la comparación con trabajos anteriores.

El propósito de esta parte es extraer las características de cada región a través de CNN (se usa AlexNet en el artículo original) y obtener vectores de características de longitud constante para su posterior clasificación.

Dado que el tamaño de cada región varía mucho y AlexNet recibe imágenes de 227 × 227 píxeles de forma predeterminada, necesitamos realizar un preprocesamiento en las regiones, principalmente convirtiendo el tamaño de la región.

Hay muchas formas de convertir cualquier imagen en una imagen de 227×227 píxeles. En el artículo original se presentan cuatro métodos:

Son:

En. Al final, se selecciona el autor Warp + padding, que es la forma más fácil de escalar cualquier imagen a una imagen de 227×227 píxeles. Por un lado, warp es la forma más sencilla de escalar una imagen de cualquier tamaño a 227 × 227, por otro lado, el relleno es un método para agregar algunos píxeles alrededor del área original, lo que desde un punto de vista práctico puede mejorar la calidad; tasa de detección.

Las regiones de tamaño uniforme se introducirán en una CNN para la extracción de características. Cómo obtener esta CNN también es un problema.

El conjunto de datos de detección ILSVRC para la detección de objetos contiene 200 clases de objetos, mientras que PASCAL VOC (Visual Object Classes) contiene 20 clases de objetos. La cantidad relativamente pequeña de datos de entrenamiento etiquetados no es suficiente para entrenar una CNN grande, por lo que se emplea el aprendizaje por transferencia. El artículo original no menciona el término aprendizaje por transferencia, solo ajuste.

El primer paso es tomar prestado un modelo de CNN que ha sido entrenado en ImageNet (se usó AlexNet en el artículo original y luego se usó VGG en el nuevo artículo sobre arXiv, y los resultados mejoraron enormemente) y luego Ajuste fino en el conjunto de datos PASCAL. Aquí, el cambio en la estructura de la red AlexNet es simplemente reemplazar la capa de clasificación original correspondiente a las 1000 salidas de categoría de ImageNet con la capa de clasificación correspondiente a las salidas de categoría N + 1, e inicializar aleatoriamente el peso de esta capa. Para el conjunto de datos PASCAL N=20 y el conjunto de datos ILSVRC N=200, +1 corresponde al tipo de fondo.

Después del ajuste fino, el vector de 4096 dimensiones antes de la capa softmax de CNN es el vector de características de esta región.

Después de obtener el vector de características de la región, ingréselo en SVM para la clasificación final.

Aquí, SVM se entrena para diferentes tipos de objetos respectivamente, hay un SVM para cada tipo de objeto y solo da los resultados de clasificación de ese tipo de objeto. El autor del artículo original explicó por qué se usó SVM en lugar de softmax de CNN para la clasificación, porque después de probar softmax, descubrió que los resultados eran ligeramente peores que SVM, pero también señaló que si se ajustan algunas estrategias de entrenamiento, la brecha entre softmax y SVM se pueden reducir. Esto llevó a mejoras posteriores basadas en R-CNN.

Después de obtener los resultados de detección para todas las regiones (es decir, puntuaciones de probabilidad que contienen objetos de un tipo específico), hay un paso más: la supresión no máxima (NMS). Si dos áreas detectan el mismo tipo de objetos, como peatones, y un área tiene una puntuación más alta y la otra tiene una puntuación más baja, entonces cuando el IoU (Intersección-Superposición) de las dos áreas excede un cierto umbral, es decir , cuando se superpongan más, solo se conservarán las regiones con puntuaciones más altas.

La tarea de detección de objetos no es solo detectar el objeto en la imagen, sino también dar una posición, es decir, rodear el objeto con la mayor precisión posible con un cuadro delimitador. El proceso de clasificación basado en regiones anterior puede identificar correctamente los objetos en la región, pero la región inicial no es necesariamente un bbox adecuado. Al final de R-CNN, se agrega un modelo de regresión lineal basado en el vector de características para predecir la transformación de posición del bbox correcto en relación con la región, es decir, cómo se debe ajustar el bbox. Este proceso de formación también es específico de cada categoría. Este proceso de formación también es específico de cada categoría.

En el uso final, la salida de R-CNN consta de dos partes:

En teoría, después de actualizar la posición del bbox, debería reclasificarse en el nuevo bbox. Esto puede ser más preciso, pero el autor original encontró que no hubo mejoras significativas en la práctica. Por lo tanto, en la práctica, las nuevas bboxes no se reclasifican.

En resumen, el entrenamiento de R-CNN anterior es un proceso de varios pasos: primero, ajustar la CNN para obtener vectores de características, luego entrenar una SVM para clasificarlos y, finalmente, entrenar una sesión de regresión lineal para predecir ajustes del cuadro delimitador.

Fast R-CNN se ha mejorado sobre esta base. Ya no utiliza SVM y regresión lineal por separado, sino que integra los tres en una CNN, que es más rápido que el tiempo en términos de tiempo de entrenamiento y tiempo de detección. Otros algoritmos son órdenes de magnitud más rápidos.

El marco general de R-CNN rápido es el siguiente:

Pasos básicos:

Entre los pasos anteriores, creo que hay dos pasos clave: uno esProyección de RoI, Es decir, mapear el RoI en la imagen al RoI en el mapa de características, el otro es usar la capa de agrupación de RoI para agrupar RoI de diferentes tamaños en el mapa de características; La capa de agrupación de RoI convierte RoI de diferentes tamaños en el mapa de características en mapas de subcaracterísticas de tamaño uniforme. Ambos aspectos se toman prestados de SPPnets, donde la capa de agrupación de RoI es un caso especial de la capa de agrupación de pirámide espacial en SPPnets.

Inicialmente, R-CNN selecciona varios RoI de la imagen original, luego los procesa a través de CNN y finalmente extrae vectores de características. No hay garantía de entrada a salida para diferentes RoI en cada imagen.

La función de la proyección RoI es retrasar el procesamiento de los RoI de la imagen en R-CNN al mapa de características, de modo que todos los RoI de la imagen disfruten del procesamiento convolucional desde la imagen al mapa de características. Obviamente, esto acelera el proceso de formación y prueba. El mapeo de RoI de imágenes a RoI de mapas de características se ha discutido en detalle y no se repetirá aquí.

¿Cómo convertir RoI de diferentes tamaños en el mapa de características en mapas de subcaracterísticas de tamaño uniforme? Aquí hay una animación muy intuitiva.

En resumen:

Supongamos que tenemos el siguiente mapa de características (solo bidimensional)

donde RoI es un cuadro negro con tamaño.

Queremos convertir el RoI a un tamaño de 2×2. Podemos seleccionar una ventana de 2×2 de la siguiente manera

Realice la operación de agrupación máxima en cada cuadrícula para obtener los siguientes 2. ×2 características.

En resumen, si el tamaño del RoI es y el tamaño del mapa de características que queremos obtener es, entonces el número de cuadrículas en la ventana es. El número de cuadrículas en la ventana es. Se puede redondear hacia arriba o hacia abajo según la situación.

Combinado con aplicaciones prácticas, si la red CNN elige VGG16, su estructura es la siguiente:

Reemplace la última capa de agrupación máxima con la capa de agrupación de RoI. La capa preconvolucional no tiene restricciones estrictas en el tamaño de la imagen de entrada, pero la restricción está principalmente en la capa completamente conectada, por lo que para coincidir con la red VGG16, debemos usar la red VGG16.

Para la estructura de red VGG16, asegúrese de que la salida del mapa de características de cada RoI esté quieta.

Las modificaciones a la estructura de red VGG16 incluyen:

En rápido. R- En CNN, las propuestas de región son proporcionadas por algoritmos fuera de la red de CNN (como la búsqueda selectiva, en comparación con el proceso de identificación de región posterior, el paso de propuesta de región es en realidad la parte más importante de todo el algoritmo).

R-CNN más rápido se llama "más rápido" porque propone una red de propuestas regionales (RPN), que acelera el proceso de propuestas regionales.

La estructura completa de Faster R-CNN es la siguiente:

Las propuestas de región son proporcionadas por algoritmos fuera de la red CNN, como la búsqueda selectiva.

La estructura completa de Faster R-CNN es la siguiente:

O la estructura más detallada es la siguiente:

RPN y Fast R-CNN *** Disfrute pasando de la imagen a CNN La estructura de red del mapa de características generada por la última capa. Algunos artículos también consideran Fast R-CNN como tres módulos: la red de características se usa para generar mapas de características, RPN se usa para generar propuestas de región y la red de detección se usa para la detección final de objetos. Todavía usamos RPN + Fast R-CNN.

La entrada de RPN es la imagen original y la salida es la propuesta de región. En el proceso de implementación, RPN es una red totalmente convolucional (FCN), que solo contiene capas convolucionales, y las capas completamente conectadas comúnmente utilizadas en clasificación/regresión se reemplazan por operaciones convolucionales.

Con las propuestas de región, las siguientes operaciones son las mismas que Fast R-CNN.

En el artículo original, se utilizó el método de entrenamiento alterno: