Jugando con Redes Neuronales.

Las redes neuronales son una de las herramientas más potentes en el campo de la IA, y en particular suelen dar muy buenos resultados en la detección y reconocimiento de figuras. Recientemente hemos realizado pruebas para valorar si incluíamos esta posibilidad en la detección de figuras en uno de nuestros proyectos. Y aunque en este caso, se ha descartado esta opción, me hace pensar que es sólo cuestión de potencia que algún día las máquinas puedan ser capaces de «ver flores».

Y para demostrarlo, vamos a detectar en la siguiente foto quiénes son «un poco Flower»:
Foto de navidad

El primer paso es aplicar a la imagen original un algoritmo de detección de bordes para simplificar la imagen:

Detección de Bordes

Ya que la potencia de calculo es finita y escasa, nuestra red neuronal contendrá sólo 10×10 neuronas, para poder distinguir y procesar una zona muy pequeña, pero suficientemente representativa de la flor.

El siguiente paso es entrenar a nuestra red neuronal, para ello, proporcionamos a la red neuronal ejemplos correctos e incorrectos de regiones de la imagen y lanzamos el proceso de entrenamiento sobre este conjunto reducido.

KernelIA ia = KernelIA.buildKernel(imagen, rectangulos);

Internamente este método itera sobre todas las zonas de ejemplo que tenemos, las transforma a una matriz entendible por la red neuronal e inicia el proceso de entrenamiento para cada patrón.

Una vez que el proceso de entrenamiento ha terminado, ya esta disponible la red neuronal para ser interrogada. Recorremos la imagen, e interrogamos a la red neuronal, en busca de zonas que cumplan con el patrón buscado.

Resultado tras 10 minutos de entrenamiento y 15 patrones sobre los que aprender:

Ejemplo1 deteccion de flores

Resultado tras 6 horas de entrenamiento y 40 patrones sobre los que aprender:

Resultado deteccion
Como vemos, en este último caso, el sistema prácticamente ha sabido detectar todos los «Flowers de la oficina», aunque incluso con 6 horas de entrenamiento, ha cometido algunos extraños errores. Probablemente con algo más de tiempo, paciencia y potencia de cálculo podremos llegar al objetivo deseado en el futuro.

Comentarios

Comments are closed.