Colección de citas famosas - Slogan de motivación - Descripción detallada del algoritmo CRNN

Descripción detallada del algoritmo CRNN

El reconocimiento de caracteres es un método para predecir secuencias, por lo que las redes RNN se utilizan para predecir secuencias. Después de extraer las características de la imagen a través de CNN, use RNN para predecir la secuencia y finalmente obtenga el resultado final a través de la capa de traducción de CTC.

Por lo tanto, el algoritmo CRNN utiliza principalmente la estructura de red de tres capas de CNN RNN CTC, que es de abajo hacia arriba:

(1) Capa convolucional, utilizando CNN para extraer de la imagen de entrada Secuencia de características

(2) Capa de bucle, que utiliza RNN para predecir la distribución de etiquetas (valor de verdad) de la secuencia de características obtenida de la capa convolucional

(3); ) Capa de transcripción, utilice CTC para convertir la distribución de etiquetas obtenida por la capa de bucle en el resultado final del reconocimiento mediante desintegración y otras operaciones.

La capa convolucional * * * contiene 7 capas de red neuronal convolucional. La estructura básica es la estructura VGC, en la que la entrada es una imagen en escala de grises escalada al tamaño de W*32, es decir, una. altura fija. En la tercera y cuarta capa de agrupación, para lograr una verdadera relación de aspecto, el tamaño del núcleo es 1*2 (no 2*2). Para acelerar la convergencia, se introduce una capa BN. El mapa de características extraído por CNN se divide en columnas y las características de 512 dimensiones de cada columna se ingresan en un LSTM bidireccional de dos capas de 256 unidades para su clasificación. Durante el proceso de capacitación, la alineación suave aproximada de las posiciones de los personajes y los estándares de categorías se logra mediante la guía de la función de pérdida CTC.

Como se muestra en la figura:

Ahora necesitamos extraer la secuencia de vectores de características del mapa de características generado por el modelo CNN. Cada vector de características (cuadro rojo) se genera de izquierda a derecha en el mapa de características, y cada columna contiene características de 512 dimensiones, lo que significa que el I-ésimo vector de características es la conexión de todos los píxeles en la columna I del mapa de características. y estos vectores de características forman una secuencia.

Debido a que las capas convolucionales, las capas de agrupación máxima y las funciones de activación se realizan en regiones locales, son invariantes de traducción. Por lo tanto, cada columna (es decir, vector de características) del mapa de características corresponde a un área rectangular de la imagen original (llamada campo receptivo), y estas áreas rectangulares tienen el mismo orden que las columnas correspondientes de izquierda a derecha en el mapa de características. Cada vector de la secuencia de características está asociado con un campo receptivo.

Los vectores en la secuencia de características extraídas se generan secuencialmente de izquierda a derecha en el mapa de características, y cada vector de características representa una característica en un cierto ancho de la imagen. Este artículo utiliza un ancho de 1, que es un solo píxel.

Si el tamaño de la imagen que contiene 10 caracteres es 100 × 32 y la escala de características obtenida a través de la red CNN anterior es 25 × 1 (aquí se ignora el número de canales), se obtiene una secuencia. y cada columna de características corresponde al original. Un área rectangular de la imagen (como se muestra en la figura siguiente) es conveniente para el cálculo como entrada de RNN en el siguiente paso

Como se puede ver en En la figura anterior, VGG se ajusta de la siguiente manera:

1. En orden, las características extraídas por CNN se ingresan en la red RNN y el tamaño del núcleo del tercer y cuarto grupo más grande se cambia de 2 × 2. a 1×2.

2. Para acelerar el entrenamiento de la red, se agrega una capa BN después de la quinta y sexta capa convolucional.

¿Por qué cambiar el tamaño del kernel del tercer y cuarto maxpooling de 2×2 a 1×2? Es conveniente utilizar funciones extraídas por CNN como entrada a RNN. Lo primero a tener en cuenta es que la entrada de esta red es W × 32, lo que significa que la red no tiene requisitos especiales para el ancho de la imagen de entrada, pero la altura debe ajustarse a 32.

Supongamos que hay una entrada de imagen. Para ingresar características en una capa recursiva, realice el siguiente procesamiento:

Para obtener una explicación detallada de los principios de CNN, consulte /writer #/notebooks/46006121/Notes/71156459.

Dado que RNN tiene el problema de la desaparición del gradiente y no puede obtener más información contextual, LSTM se utiliza en CRNN y su diseño especial le permite capturar dependencias de larga distancia.

La red RNN tiene la secuencia de características X = X1 generada por CNN y la salida yt de xt. Para evitar que el gradiente desaparezca durante el proceso de entrenamiento, se utilizan unidades neuronales LSTM como unidades RNN.

Este artículo cree que para la predicción de secuencias, la información directa y la información inversa de la secuencia son útiles para la predicción de secuencia, por lo que este artículo utiliza una red RNN bidireccional. La estructura de las neuronas LSTM y la estructura de RNN bidireccional se muestran en la siguiente figura.

Ejemplo:

A través de los pasos anteriores, obtenemos 40 vectores de características, cada vector de características tiene una longitud de 512. En LSTM, los vectores de características se introducen para la clasificación en un paso de tiempo, de los cuales hay 40 pasos de tiempo.

Sabemos que un vector de características es equivalente a un área rectangular pequeña en la imagen original. El objetivo de RNN es predecir qué carácter es esta área rectangular, es decir, predecir en función del vector de características de entrada. y obtenga el softmax de todos los caracteres Distribución de probabilidad, que es un vector con el número de categorías de caracteres como longitud como entrada de la capa CTC.

Debido a que cada paso de tiempo tiene un vector de características de entrada y genera la distribución de probabilidad de todos los caracteres, genera una matriz de probabilidad posterior que consta de 40 vectores con una longitud del número de categorías de caracteres y luego convierte esta matriz de probabilidad posterior. matriz de probabilidad La matriz de probabilidad empírica se transfiere a la capa de transcripción.

Durante la prueba, hubo dos traducciones, una con diccionario y otra sin diccionario.

Tener un diccionario significa que durante la prueba, el conjunto de prueba tiene un diccionario y las probabilidades de todos los diccionarios se calculan a partir de los resultados de salida de la prueba. El valor máximo es la cadena predicha final.

No hay diccionario, lo que significa que el conjunto de prueba no indicará qué cadenas contiene. Durante la predicción, la cadena con la probabilidad de salida más alta se seleccionará como la cadena predicha final.

¡La dificultad del reconocimiento OCR de un extremo a otro es cómo lidiar con la alineación de secuencias indefinidas! (Debido a que es una secuencia de longitud indefinida, nos resulta difícil calcular la pérdida de acuerdo con el método anterior. Si tiene una longitud fija, puede provocar fácilmente la pérdida de información, ¡y las limitaciones son demasiado grandes!)

La transcripción consiste en utilizar RNN para cada El proceso de convertir predicciones de vectores de características en secuencias de etiquetas. Matemáticamente, la transcripción consiste en encontrar la secuencia de etiquetas con la combinación de mayor probabilidad basada en las predicciones para cada cuadro.

Consulte /writer #/notebooks/46006121/Notes/71156474 para obtener más detalles.