La Red de Conocimientos Pedagógicos - Currículum vitae - Un estudio preliminar sobre la clasificación de imágenes de campo CV (1)

Un estudio preliminar sobre la clasificación de imágenes de campo CV (1)

La clasificación de imágenes es la tarea más básica en visión por computadora y se puede dividir en tres categorías: clasificación de imágenes semántica entre especies, clasificación de imágenes de subcategoría de grano fino y clasificación de imágenes a nivel de instancia.

El reconocimiento de diferentes tipos de objetos a nivel de diferentes especies, como la clasificación de perros y gatos, se caracteriza por una gran variación entre categorías y una pequeña variación intracategoría. Por ejemplo, un cifar10 típico distingue entre vehículos y animales, ambos objetos semánticamente distinguibles.

La clasificación de imágenes detallada es la clasificación de subcategorías dentro de una categoría grande, como la clasificación de diferentes aves, diferentes perros, diferentes tipos de automóviles, etc. Por ejemplo, el conjunto de datos Caltech-UCSD Birds-200-2011, que es un libro de aves que contiene 200 categorías y 11,788 imágenes, proporciona 15 ubicaciones de regiones locales y 1 cuadro de anotaciones para cada imagen. La detección a este nivel tan detallado requiere un diseño de clasificador más refinado.

Si necesitamos distinguir diferentes individuos, no solo especies o subcategorías, entonces es un problema de reconocimiento. Por ejemplo, la tarea más típica es el reconocimiento facial. El reconocimiento facial es de gran importancia en el campo de la visión por computadora. Puede completar muchas tareas, como seguridad y estabilidad, asistencia, desbloqueo facial y otros escenarios de aplicación, que están estrechamente relacionados con tareas de clasificación de imágenes a nivel de ejemplo, como el reconocimiento facial.

El conjunto de datos MNIST era una base de referencia en ese momento y contenía 60.000 datos de entrenamiento y 65.438+00.000 datos de prueba. Estas imágenes son todas en escala de grises con un tamaño de 32*32. En este conjunto de datos, los métodos tradicionales realmente han funcionado bien, como SVM, KNN y SVM, que pueden reducir la tasa de error de clasificación de MNIST al 0,56%, superando a las redes neuronales artificiales en ese momento.

Después de muchas iteraciones, nació LeNet5 en 1998. Esta es una red neuronal convolucional clásica con algunas características importantes:

Aunque la tasa de error de LeNet5 es de aproximadamente el 0,7%, lo que no es tan bueno como el método SVM, con el desarrollo de la estructura de la red, la red neuronal El método supera rápidamente a todos los demás métodos y logra excelentes resultados.

Para completar tareas de clasificación de imágenes más complejas en la industria, el conjunto de datos ImageNet se lanzó en 2009 bajo la dirección de Li Feifei y otros. El conjunto de datos ImageNet * * * tiene más de 14 millones de imágenes y * * * tiene más de 20.000 categorías, pero el punto de referencia comúnmente utilizado en este artículo es 1.000 categorías.

AlexNet nació en 2012 y es la primera red profunda verdadera. En comparación con las cinco capas de LeNet5, el número de capas aumentó en tres y los parámetros de la red también aumentaron considerablemente, y la entrada cambió de 28 a 224. Al mismo tiempo, la llegada de la GPU también ha llevado el aprendizaje profundo a una era de formación en la que la GPU es la reina.

AlexNet tiene las siguientes características:

VGGNet exploró la relación entre la profundidad de una red neuronal convolucional y su rendimiento, y construyó con éxito una red neuronal convolucional con una profundidad de 16 ~ 19 , lo que demuestra que aumentar la profundidad de la red puede afectar el rendimiento final de la red hasta cierto punto, lo que reduce en gran medida la tasa de error. También es altamente escalable y tiene buenas capacidades de generalización cuando se trasplanta a otros datos de imagen. Hasta ahora, VGG todavía se utiliza para extraer características de imágenes.

VGGNet puede considerarse como una versión más profunda de AlexNet, que consta de capas convolucionales y capas completamente conectadas. Todos utilizan un núcleo de convolución de 3 × 3 y un núcleo de agrupación máxima de 2 × 2, lo que simplifica la estructura de la red neuronal convolucional. VGGNet muestra cómo mejorar el rendimiento de la red simplemente aumentando el número y la profundidad de las capas de red basadas en arquitecturas de red anteriores. Aunque simple, es extremadamente efectivo. Hoy en día, VGGNet todavía se elige como modelo base para muchas tareas.

GoogLeNet también profundiza la capa de red, pero GoogLeNet ha hecho un intento más audaz en la estructura de la red, con una profundidad de solo 22 capas. En términos de la cantidad de parámetros, GoogleNet tiene 5 millones de parámetros, la cantidad de parámetros AlexNet es 12 veces mayor que la de GoogleNet y la cantidad de parámetros VGGNet es 3 veces mayor que la de AlexNet. Por lo tanto, cuando la memoria o los recursos informáticos son limitados, GoogleNet. es una mejor opción. Pero a juzgar por los resultados del modelo, el rendimiento de GoogLeNet es aún mejor.

En términos generales, la forma más directa de mejorar el rendimiento de la red es aumentar la profundidad y el ancho de la red.

La profundidad se refiere a la cantidad de capas de la red y el ancho se refiere a la cantidad de neuronas. Sin embargo, este método tiene los siguientes problemas:

(1) Demasiados parámetros. Si el conjunto de datos de entrenamiento es limitado, es fácil que se produzca un sobreajuste.

(2) Cuanto más grande es la red, más parámetros, mayor es la complejidad computacional y difícil de aplicar.

(3) Cuanto más profunda es la red, más fácil es; dispersión del gradiente (cuanto más lejos llega el gradiente, más probable es que desaparezca después de pasar), y la optimización del modelo es difícil.

Por supuesto, la forma de resolver estos problemas es aumentar la profundidad y el ancho de la red mientras se reducen los parámetros. Para reducir los parámetros, es natural pensar en convertir conexiones completas en conexiones dispersas. Sin embargo, en términos de implementación, después de que la conexión completa se vuelve escasa, la cantidad de cálculo real no aumentará cualitativamente, porque la mayor parte del hardware está optimizado para cálculos matriciales densos. Aunque la matriz dispersa tiene una pequeña cantidad de datos, es difícil reducir el tiempo de cálculo. Un método más común es utilizar el método de abandono, que equivale a encontrar una red más fina a partir de la red original (para estudiar)

El equipo de GoogLeNet propuso una estructura de red inicial, es decir, construir un " estructura de "neurona básica". Construya una estructura de red escasa y computacionalmente eficiente.

¿Qué es Inception? "Inception" ha pasado por el desarrollo de múltiples versiones como V1, V2, V3 y V4. , y son cada vez más perfectos, que se presentan uno por uno a continuación.

Al diseñar una estructura de red dispersa, pero que puede generar datos densos, esto no solo puede aumentar el rendimiento de la red neuronal, sino también garantizar la eficiencia de los recursos informáticos. Google propuso la estructura básica más original de Inception:

Esta estructura superpone las operaciones de convolución (1x1, 3x3, 5x5) y agrupación (3x3) comúnmente utilizadas en CNN (convolución y Las dimensiones de la agrupación son las mismas, pero se agregan canales), lo que no solo aumenta el ancho de la red, sino que también aumenta la adaptabilidad de la red a escala.

La red de la capa convolucional de la red puede extraer toda la información detallada de la entrada, y el filtro 5x5 también puede cubrir la mayor parte de la entrada de la capa receptora. También puede realizar operaciones de agrupación para reducir el tamaño del espacio y sobredimensionarlo. Además de estas capas, las operaciones ReLU deben realizarse después de cada capa convolucional para aumentar las características no lineales de la red.

Pero en la versión original de Inception, todos los núcleos de convolución se realizan en todas las salidas de la capa superior. La cantidad de cálculo del núcleo de convolución de 5 × 5 es demasiado grande, lo que resulta en el grosor del mapa de características. . Muy grande. Para evitar esta situación, se agrega un núcleo de convolución 1x1 antes de 3x3, antes de 5x5 y después de la agrupación máxima, respectivamente, para reducir el grosor del mapa de características, que también se forma.

La figura anterior se explica de la siguiente manera:

(1) GoogLeNet adopta una estructura modular (estructura inicial), que es fácil de agregar y modificar

; (2) La red final adopta la agrupación promedio (agrupación promedio) para reemplazar la capa completamente conectada. La idea proviene de NIN (Red dentro de una Red), que ha demostrado mejorar la precisión en un 0,6%. Pero, de hecho, se agregó una capa completamente conectada al final, principalmente para facilitar y ajustar de manera flexible la salida;

(3) Aunque se eliminó la capa completamente conectada, Dropout todavía se usa en la red

( 4) Para evitar la desaparición del gradiente, la red agrega dos softmax auxiliares para la guía directa del gradiente (clasificador auxiliar). El clasificador auxiliar utiliza la salida de una capa intermedia como clasificación y la agrega al resultado de la clasificación final con un peso menor (0,3), lo que equivale a la fusión del modelo. Al mismo tiempo, aumenta la señal de gradiente propagada hacia atrás. la red, y también proporciona regularización adicional, lo que es muy beneficioso para la capacitación de toda la red. En las pruebas reales, se eliminarán estos dos softmax adicionales.

La solución para la versión "Inception V2" es modificar la lógica de cálculo interna de "Inception" y proponer una estructura de cálculo especial "convolucional".

2.1 Descomposición integral de volumen (convolución descompuesta)

El equipo de GoogLeNet propuso que se puede utilizar una pequeña red compuesta por dos capas convolucionales consecutivas de 3×3 para reemplazar una única convolución de 5×5. Laminación, es decir, mientras se reduce el número de parámetros, se puede mantener el rango del campo receptivo.

2.2 Reducir el tamaño del mapa de características

Si desea reducir la imagen, existen dos métodos: agrupar primero y luego convolución, o convolución primero y luego agrupar. Sin embargo, el primer método (izquierda) de agrupación provocará un cuello de botella en la representación de características (características faltantes), y el segundo método (derecha) es la reducción normal, pero la cantidad de cálculo es muy grande.

Para mantener la representación de características y al mismo tiempo reducir la cantidad de cálculo, la estructura de la red se cambia a la figura siguiente y se utilizan dos módulos paralelos para reducir la cantidad de cálculo (la convolución y la agrupación se realizan en paralelo y luego se fusionan).

GoogLeNet utiliza Inception V2 como la versión mejorada del diagrama de estructura de red de la siguiente manera:

Una de las mejoras más importantes de Inception V3 es la factorización, que descompone 7x7 en dos unidimensionales. convoluciones (1x7, 7x1), lo mismo ocurre con 3x3 (1x3, 3x1). Este beneficio no solo puede acelerar los cálculos con ReLU, sino que también permite 1.

Inception V4 utiliza principalmente las conexiones restantes para mejorar la estructura de V3, lo que da como resultado tres redes: Inception-ResNet-v1, Inception-ResNet-v2 e Inception-v4.