tipos tesis redes reconocimiento practicos neuronales imagenes ejemplos artificiales aplicaciones image-processing computer-vision neural-network pattern-recognition

image-processing - reconocimiento - tesis redes neuronales artificiales



¿Cómo ingresar la imagen a la red neuronal? (5)

Entiendo cómo funcionan las redes neuronales, pero si quiero usarlas para el procesamiento de imágenes como el reconocimiento real de caracteres, no puedo entender cómo puedo ingresar los datos de imagen a la red neuronal.

Tengo una imagen muy grande de una letra A ¿Tal vez debería intentar obtener información / especificaciones de la imagen y luego usar un vector de valores de esa especificación? ¿Y serán la entrada para la red neuronal?

¿Quién ya hizo algo así? ¿Puedes explicarme cómo hacer esto?


Aquí hay algunos pasos: asegúrese de que su imagen de escala de color / gris sea una imagen binaria. Para hacer esto, realice alguna operación de umbralización. siguiendo eso algún tipo de extracción de características. Para cosas de OCR / NN, este ejemplo podría ayudar, aunque en ruby: https://github.com/gbuesing/neural-net-ruby/blob/master/examples/mnist.rb


El nombre del problema que intentas resolver es " extracción de características ". Es decididamente no trivial y un tema de investigación activa.

La forma ingenua de hacerlo es simplemente asignar cada píxel de la imagen a una neurona de entrada correspondiente. Obviamente, esto solo funciona para imágenes que son todas del mismo tamaño, y generalmente tiene una efectividad limitada.

Más allá de esto, hay una gran cantidad de cosas que puede hacer ... Filtros de Gabor, características similares a Haar, PCA e ICA, características dispersas, solo por nombrar algunos ejemplos populares. Mi consejo sería buscar un libro de texto sobre redes neuronales y reconocimiento de patrones o, específicamente, reconocimiento óptico de caracteres.


La solución más fácil sería normalizar todas sus imágenes, tanto para entrenamiento como para pruebas, para tener la misma resolución. Además, el personaje en cada imagen debe ser del mismo tamaño. También es una buena idea usar imágenes en escala de grises, por lo que cada píxel le daría un solo número. Entonces podría usar cada valor de píxel como una entrada a su red. Por ejemplo, si tiene imágenes de tamaño 16x16 píxeles, su red tendría 16 * 16 = 256 neuronas de entrada. La primera neurona vería el valor del píxel en (0,0), el segundo en (0,1), y así sucesivamente. Básicamente, coloca los valores de la imagen en un vector y alimenta este vector a la red. Esto ya debería funcionar.

Al extraer primero las características (por ejemplo, los bordes) de la imagen y luego usar la red en esas características, quizás podría aumentar la velocidad de aprendizaje y también hacer que la detección sea más robusta. Lo que haces en ese caso es incorporar conocimiento previo. Para el reconocimiento de caracteres, usted conoce ciertas características relevantes. Por lo tanto, al extraerlos como un paso de preprocesamiento, la red no tiene que aprender esas características. Sin embargo, si proporciona las características incorrectas, es decir, irrelevantes, la red no podrá aprender el mapeo de imágenes -> caracteres.


Puede usar como entrada los píxeles reales. Esta es la razón por la cual a veces es preferible usar una resolución más pequeña de las imágenes de entrada.

Lo bueno de ANN es que son de alguna manera capaces de seleccionar características (ignorando píxeles no importantes asignando pesos cercanos a cero para esos nodos de entrada)


Todas estas consideraciones sobre la aplicación de NN a las imágenes se tratan en nuestro documento de revisión de 2002 (basado en funciones, basado en píxeles, invarianza de escala, etc.)

Tu mayor desafío es la llamada ''maldición de la dimensionalidad''.

Yo compararía el rendimiento de NN con el de una máquina de vectores de soporte (complicado qué núcleos usar).