Ir al contenido principal

Computación evolutiva: Ejemplo VI

Abstract

Para el ejemplo VI de la serie práctica de algoritmos evolutivos, he implementado un OCR básico, a partir del ejemplo anterior donde realizamos un algoritmo capaz de reconocer los patrones de las vocales mediante aprendizaje evolutivo.

El OCR es bastante básico, pero permite comprobar la potencia de la computación evolutiva en relación al mundo del reconocimiento de patrones.

Ejemplo práctico VI: OCR básico

El programa que os presento a continuación; programado en un applet de Java para que podáis probarlo de primera mano, consigue precisamente eso: aprender a reconocer los patrones de las vocales, en formato Times New Roma, y un tamaño de 8 (8 x 5 = 40 píxeles). Se utiliza una red neuronal cuyos pesos se ajustan mediante una estrategia evolutiva.

El programa actua como un OCR, consiguiendo capturar la información textual dentro de una imagen (en formato GIF), y transcribiendo dicha información en una caja de texto.

Para agilizar la programación necesaria, el OCR sólo reconoce vocales en formato Times New Roman, y un tamaño de letra de 8.

En cualquier momento del entrenamiento, podemos pulsar en el botón Cancelar, y comprobar cómo va mejorando el reconocimiento del patrón.

Una vez entrenada la red neuronal, debemos introducir la ruta url de la imagen a procesar (en formato GIF), y pulsar sobre el botón Pasar OCR.

Las instrucción de uso se pueden esquematizar así:

1) Pulsa sobre el botón Entrenar para que la red neuronal aprenda a reconocer las vocales (espera hasta obtener una media de 120 en la función de evaluación).
2) Abre el Paint de Windows.
3) Crea un nuevo documento, y escribe con la herramienta de texto (con formato Times New Roman, y tamaño 8) todas las vocales que quieras, en cualquier lugar del documento (que pueden no ser consecutivos ni estar alineadas).
4) Guarda la imagen en formato GIF.
5) Sube la imagen a un hosting gratuito de imágenes. Por ejemplo: www.imgur.com.
6) Copia la ruta de la imagen subida (comprueba que la url termina en extensión ".gif").
7) Pega la url en el applet, donde dice URL de la imagen a procesar.
8) Pulsar sobre el botón Pasar OCR.

¡Y listo! Si todo va bien, el applet reconocerá todas las vocales del texto, y las introducirá en orden (y manteniedo los espacios en blanco entre ellas).


Debajo del siguiente applet encontrarás un enlace con el código fuente del ejemplo:

No puede ejecutar applets de Java. Instale la JVM, y vuelva a recargar la página, por favor.

Podéis descargar el código fuente del ejemplo VI desde este enlace.

Entradas populares de este blog

LeelaFish: cómo usar una red neuronal para sustituir la mejor función de evaluación de ajedrez hecha a mano por programadores humanos

LeelaFish UCI chess playing engine derived from Stockfish and LeelaChess Zero:  https://github.com/LeelaChessZero ,  https://github.com/official-stockfish/Stockfish Introduction This is a chess engine based in the Stockfish tree search but where we use the LCZero value head as evaluation function. So in this project we are just using the Stockfish code but replacing the human developed evaluation function for the neural network value head of the LeelaChess Zero project. This is a kind of experiment in which we try to figure out if the results are good even without the use of the MCTS LCZero does. Results Results are very promising and in a 1:1 ratio (when the number of nodes used by the original Stockfish or LCZero are forced to be equal to the number of nodes used by LeelaFish ) our development is able to beat both SF and LCZero. We used for these tests the LCZero network tesnet 10510. One thing is clear: the value head of the network is as good as the orig...

Random memory adaptation model inspired by the paper: "Memory-based parameter adaptation (MbPA)"

Os dejo a continuación el contenido de un trabajo de investigation sobre machine learning que he realizado en mi escaso tiempo libre: https://github.com/Zeta36/random-memory-adaptation ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Introduction. I present in this repository a (very simple) random memory adaptation model (RMA) inspired by the Google DeepMind paper: "Memory-based parameter adaptation (MbPA)" ( https://arxiv.org/pdf/1802.10542.pdf ) In the paper, point 4.1. CONTINUAL LEARNING: SEQUENTIAL DISTRIBUTIONAL SHIFT (inside experiments and results), they study the improvements their model suppose in relation to the catastrophic forgetting problem. They explored the effects of their model (MbPA) on continual learning, i.e. when dealing with the problem of sequentially learning multiple tasks without the ability to revisit a task. For this purposed they use...

Replicando el desarrollo de Google DeepMind: AlphaGo Zero

Previous versions of AlphaGo initially trained on thousands of human amateur and professional games to learn how to play Go. AlphaGo Zero skips this step and learns to play simply by playing games against itself, starting from completely random play. In doing so, it quickly surpassed human level of play and defeated the previously published champion-defeating version of AlphaGo by 100 games to 0. If similar techniques can be applied to other structured problems, such as protein folding, reducing energy consumption or searching for revolutionary new materials, the resulting breakthroughs have the potential to positively impact society.  (Profesor David Silver) Hace unos meses   Google DeepMind   hizo público uno de sus resultados más asombrosos: una versión del modelo neuronal que fue capaz de derrotar al campeón del mundo de   Go , solo que esta vez no necesitaron hacer uso de ningún aprendizaje supervisado de juegos entre humanos (hablé en este mismo blog en   ...