Record Management System

Las aplicaciones J2ME deben almacenar información en memoria no volátil usando el Record Management System (RMS). El RMS es una interfaz de programación de aplicación que es usada para almacenar y manipular datos en un dispositivo pequeño usando una aplicación J2ME.

 

RMS es una combinación de sistema de archivo y sistema administrador de base de datos que permite almacenar datos en filas y columnas similar a la organización de datos en una tabla de base de datos.

 

Aunque RMS provee funcionalidad de base de datos, El RMS no es una base de datos relacional, por lo tanto no se puede usar SQL para interactuar con los datos. En su lugar, se usará las interfaces del RMS y enumeration para ordenar, buscar, y manipular la información almacenada.

 

recordStore

 

Posted in JME | 2 Comments

Practicando con letras.

Bueno, quise hacer una prueba de las acciones realizada en el post anterior, utilizando imágenes con letras, el tamaño de las imágenes es de 100×150 pixels y arrojo resultados satisfactorios, tuvo problemas con las imagenes en color pero con las blanco y negro fue muy bien.

Posted in RNA | Leave a comment

Usando Neuroph para el reconocimiento de imagen en las aplicaciones.

http://neuroph.sourceforge.net/image_recognition.html

Aquí esta un ejemplo de código el cual muestra como usar el reconocimiento de imagen en la red neuronal creada y entrenada con easyNeurons. Para ejecutar el código ejemplo, solo se debe especificar los nombres de archivo correctos y algunas imágenes de prueba.

import org.neuroph.core.NeuralNetwork;
import org.neuroph.contrib.imgrec.ImageRecognitionPlugin;
import java.util.HashMap;
import java.io.File;
import java.io.IOException;

public class ImageRecognitionSample {

public static void main(String[] args) {
// load trained neural network saved with easyNeurons (specify existing neural network    // file here)
NeuralNetwork nnet = NeuralNetwork.load(“MyImageRecognition.nnet”); // load                                                                          trained neural network saved with easyNeurons
// get the image recognition plugin from neural network
ImageRecognitionPlugin imageRecognition =                     (ImageRecognitionPlugin)nnet.getPlugin(ImageRecognitionPlugin.IMG_REC_PLUGIN_NAME); // get the image recognition plugin from neural network

try {
// image recognition is done here (specify some existing image file)
HashMap<String, Double> output = imageRecognition.recognizeImage(new File(“someImage.jpg”));
System.out.println(output.toString());
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}

Posted in RNA | 2 Comments

RECONOCIMIENTO DE IMAGENES CON REDES NEURONALES HOW TO

 

Traducción del articulo

http://neuroph.sourceforge.net/image_recognition.html

Las redes neuronales son una técnica que puede ser usada para el reconocimiento de imagen. Este tutorial le mostrará como usar el perceptron multi-capa para el reconocimiento de imagen. El Neuroph tiene construido un soporte para el reconocimiento de imagen, y herramientas de interfaz de usuario especializadas para el entrenamiento de las redes neuronales en reconocimiento de imagen. Una sencilla librería para el reconocimiento de imagen puede ser encontrada en el paquete org.neuroph.contrib.imgrec, mientras que una herramienta GUI de reconocimiento de imagen esta en easyNeurons application [Main Menu > Tools > Image recongnition]

 

Este tutorial explicará lo siguiente:

 

  1. Principio básico de Como los perceptrones multi-capa son usados para el reconocimiento de imagen (un posible enfoque usado aquí)

  2. Como entrenar a las redes neuronales para el reconocimiento de imagen con easyNeurons.

  3. Como usar las redes neuronales entrenadas para el reconocimiento de imagen en sus aplicaciones.

 

  1. El reconocimiento de imagen y el Perceptron Multi-capa

 

Cada imagen puede ser representada como un array de dos dimensiones, donde cada elemento del array contiene información del color para un pixel. (Figura 1)

figura 1. Colores de la imagen.

 

Cada color puede ser representado como una combinación de tres componentes de color básico: rojo, verde y azul.

 

Figura 2. Sistema de color RGB

 

Así, para representar alguna imagen en un sistema RGB podemos usar tres arrays de dos dimensiones, cada uno para cada componente de colo, donde cada elemento corresponde a un pixel de la imagen.

 

int[][] redValues

int[][] greenValues

int[][] blueValues

 

Por ejemplo, si el pixel en la posición [20, 10] tiene el color RGB[33, 66, 181] tenemos

 

redValues[10][20] = 33;

greenValues[10][20] = 66;

blueValues[10][20] = 181;

 

Las dimensiones de cada uno de estos arrays son [altura de la imagen][ancho de la imagen]

 

Podemos unir estos tres arrays en un único array de una dimensión para que contenga todos los valores rojos, luego todos los verdes y al final los azules, Así es como creamos el

 

flattenedRgbValues[]

 

Las dimensiones de este array son [alturaImagen*anchoImagen*3]

 

Ahora podemos usar este array de una dimensión como la entrada para la red neuronal, y entrenar la red neuronal para reconocer o clasificar la imagen. Los perceptrones multi-capa son un tipo de red neuronal apropiado para esta tarea. (figura 3).

 

Figura 3. Alimentación del perceptron multicapa con información de color de la imagen. Cada entrada de la neurona corresponde a un componente de color (RGB) de un pixel de la imagen en una posición especifica.

 

Cada salida de la neurona corresponde a una imagen o clase de imagen. Así si la salida de la red es [1, 0, 0] significa que la entrada es reconocida como ‘imagen A’.

Podemos crear una colección de entrenamiento para el entrenamiento de la red neuronal como una colección de pares de entrenada (arreglos rgb planos), y vectores de salida (donde la correspondiente imagen de la neurona es 1).

Las redes pueden ser entrenadas usando el algoritmo de aprendizaje Backpropagation. En la siguiente sección proveeremos algunos detalles acerca de la red neuronal y el algoritmo de aprendizaje.

 

 

  1. Entrenamiento de la red neuronal para el reconocimiento de imagen con easyNeurons.

 

El easyNeurons provee el entorno para la creación y entrenamiento de redes neuronales, las cuales pueden ser guardadas como componentes java listos para usar. Ademas provee con herramientas especializadas para el reconocimiento de imagen y para el entrenamiento de la red neuronal para el reconocimiento de imagen. La creación y entrenamiento de la red neuronal para el reconocimiento de imagen consiste de los siguientes pasos:

 

  1. Escoger las imagenes a reconocer y crear la colección de entrenamiento.

  2. Crear la red neuronal.

  3. Entrenar la red neuronal.

  4. Probar la red neuronal.

  5. Guardar y desplegar la red neuronal.

 

 

 

Posted in RNA | Leave a comment

La Capa Lineal

La Capa Lineal es la clase de capa mas simple, ya que simplemente transfiere el patrón de entrada a la salida aplicando una transformación, por ejemplo, multiplicándolo por un termino constante, el termino Beta. Si es igual a 1, entonces el patrón de entrada es transferido sin modificaciones.

 

La capa lineal es comúnmente usada como un buffer, puesta, por ejemplo, como la primera capa de una red neuronal para permitir enviar una copia sin modificar del patrón de entrada a varias capas ocultas, como se representa en la siguiente figura:

Sin una Capa Lineal, en estos casos seria imposible enviar el mismo patrón de entrada a varias capas posteriores, por que el componente de entrada (la InputSynapse aquí representada por un cilindro) puede ser adjuntado únicamente a una capa.

 

Función de transferencia


 

 

Posted in Uncategorized | Leave a comment

LOS ELEMENTOS DE PROCESAMIENTO

Las Capas

 

El objeto Capa es el elemento básico que forma la red neuronal. Se compone de neuronas, todas tienen las mismas características. Este componente transfiere el patrón de entrada a el patrón de salida ejecutando una función de transferencia.

 

El patrón de salida es enviado a un vector de objetos sinapsis adjunto a la capa de salida. Este es el elemento activo de una red neuronal en Joone.

 

Posted in RNA | Leave a comment

Conceptos básicos

Cada red neuronal esta compuesta de un numero de componentes (Capas) conectadas juntas por conexiones (sinapsis). Dependiendo de como estos componentes son conectados, varias arquitecturas de redes neuronales pueden ser creadas (Feed Forward, Recurrent, etc).

 

Una red neuronal Feed Forward esta compuesta de un numero de capas consecutivas, cada una conectada a la siguiente por una sinapsis. En una red neuronal Feed Forward Recurrent las conexiones de una capa a la anterior no son permitidas.

 

La anterior figura es un ejemplo de red neuronal Feed Forward con dos capas totalmente conectadas con sinapsis. Cada capa esta compuesta de un cierto numero de neuronas, cada una de las cuales tienen las mismas características (función de transferencia, tasa de aprendizaje, etc).

 

Una red neuronal construida con Joone puede estar compuesta de cualquier numero de capas pertenecientes a diferentes tipologías (Linear, Sigmoid, etc).

 

Cada capa procesa su señal de entrada aplicando una función de transferencia y enviando el patrón resultante a la sinapsis que lo conecta a la siguiente capa.

Así una red neuronal puede procesar un patrón de entrada, transfiriéndolo desde su capa de entrada hacia la capa de salida.

 

 

Posted in RNA | Leave a comment