Seguidores

Archivo del blog

martes, 24 de noviembre de 2009

VISION ARTIFICIAL

Esteban Rojas 
Ivan Dario Gallego


Introducción
La vision es un proceso de tratamiento de información que permite obtener una descripción simbólica a partir del mundo real.


Definicion:
La visión artificial es la ciencia que estudia, utilizando computadores digitales, los procesos de obtención, caracterización e interpretación de la información procedentes de imágenes tomadas de un mundo tridimensional.
La visión artificial en último término tiene como finalidad la reproducción del sentido de la vista. 

NECESIDAD DE VER "ARTIFICIALMENTE“ 

Al igual que le sucede al hombre, el sentido de la vista es de gran importancia para las máquinas.
Las máquinas necesitan "ver" para realizar operaciones análogas (ensamblar, moverse, inspeccionar, etc.) a las que efectúan los humanos.


El sentido de la vista es capaz de permitir a las máquinas adquirir información y aprender de su entorno 

¿Porque Visión Artificial?
Aunque versátil, es compleja debido a que la mayoría de la información en las imágenes visuales esta codificada implícitamente y requiere ser procesada y analizada para hacerla explicita.


No obstante se enumeran algunas condiciones para su utilización:
·                    Seguridad
·                    Precisión
·                    Consistencia
·                    Calidad del producto
·                    Automatización flexible



¿Por qué un SVA?
“Una imagen tiene más información que mil palabras”
Muchos sistemas biológicos dependen de su sistema de visión (inspiración biológica)
En la actualidad, los ordenadores, cámaras y otros dispositivos son baratos y sus prestaciones aumentan.
El “mundo real” es 3D y dinámico

Las etapas en un SVA son:


·                    Adquisición de la imagen 
·                    Pre procesó 
·                    Segmentación 
·                    Representación y descripción 
·                    Reconocimiento e interpretación 

Elementos de un SVA: Problemas con la captura de imágenes 
La captura de imágenes no está exenta de problemas:

·   El más típico es el ruido que es información no deseada que contamina la imagen. 
·   Existen fundamentalmente 2 tipos de ruido: 
·   Ruido gausiano: produce pequeñas variaciones en la imagen 
·   Ruido impulsional (o Salt and Pepper): el valor del píxel  no tiene relación con el valor       ideal sino con el valor de ruido que toma valores muy altos.


Clases fundamentales de procesado de imágenes.
Podemos distinguir: 
·                    Realzado 
·                    Restauración 
·                    Compresión 
·                    Síntesis 
·                    Análisis 
·                    Aplicaciones
·                    Sistemas de inspección visual automática 
·                    Aplicaciones médicas 
·                    Reconocimiento biométrico 
·                    Análisis de terrenos (remote sensing images) 
·                    Robótica 
·                    Videovigilancia /Aplicaciones militares 
·                    Recuperación de imágenes por contenido (CBIR) 
·                    Domótica
 
 



 
 



PROCESAMIENTO DE IMAGEN CON MATLAB Esteban Rojas Castro

En este ejemplo veremos una sencilla aplicacion de matlab para el procesamiento de imagen.

Primero debemos cargar la i magen a matlab por medio del siguiente comando:

A=double(imread(NombreImagen,Formato));

Donde NombreImagen representa el nombre de la imagen con el path completo y
Formato representa el formato de la imagen. La función double se utiliza para poder
realizar operaciones con la matriz A que implican números decimales (hay ciertas
operaciones que no se pueden hacer con variables del tipo uint8 como lo son los niveles
de gris de las imágenes que utilizamos generalmente). El formato de imagen comúnmente
utilizado es el tif .
En el caso de imágenes en formato jpg, se debe hacer un paso más para obtener la imagen
en escala de grises (debido a la forma en que se almacena la imagen jpg).
Ejemplo:

A=double(imread('C:\MATLAB6p5\toolbox\images\imdemos\football.jpg','jpg'));
A=A(:,:,1);


Luego debemos visualizar la imagen para esto utilizamos el siguiente comando:

imshow(uint8(A))

Donde A es la matriz que representa la imagen y uint8 se utiliza para convertir los elementos
de A en enteros de 8 bits (256 niveles de gris). Si la imagen ya está en formato
uint8 no es necesario usar la función ‘uint8’.
Dado el caso que se quiera visualizar mas de una imagen se debe de utilizar el siguiente comando:

subplot(2,2,1);imshow(uint8(A))
subplot(2,2,2);imshow(uint8(B))
subplot(2,2,3);imshow(uint8(C))
subplot(2,2,4);imshow(uint8(D))


En este caso, se visualiza un arreglo de imágenes de 2x2. Lo mismo se puede hacer
para ver otro tipo de gráficos.

Luego en caso de que se desee ver la grafica de frecuencias de la imagen debemos aplicar la transformada de Fourier utilizando el siguiente comando:

Fa=fft2(A);

Esta función mapea las frecuencias altas en el centro del espectro mientras que las
frecuencias más bajas se encuentran en la periferia. Para colocar la frecuencia cero en el
centro del espectro se debe utilizar, además, la función fftshift de la siguiente forma:


Antitransformada discreta de Fourier en dos dimensiones

A=ifft2(Fa);

Debido a que Fa es una matriz compleja, al antitransformar pueden quedar ciertos residuos
de números imaginarios que se deben a la precisión limitada del cálculo. Esto hace
que la imagen resultante esté constituida por algunos píxeles con nivel de gris complejo,
algo que es absurdo.
Para evitar esto, se utiliza la función abs que devuelve el módulo de los elementos de
una matriz.

A=abs(ifft2(Fa));


Luego para visualizar la tranformada de Fourier debemos aplicar el siguiente comando:


En realidad, lo que se grafica en tres dimensiones es la magnitud de la transformada
discreta de Fourier.

mesh(abs(Fa))

Como en la mayoría de los casos, se utiliza una escala logarítmica en el espacio de
frecuencias. Esto se realiza de la siguiente forma:

mesh(log(abs(Fa)))


Luego la inmagen se convirtio a vinaria con el siguiente comando:

result=sample>=128;

La forma mas común de generar imágenes binarias es mediante la utilización
del valor umbral de una imagen a escala de grises; es decir se elige un valor limite
(o bien un intervalo) a partir del cual todos los valores de intensidades mayores
serán codificados como 1 mientras que los que estén por debajo serán codificados
a cero. En matlab este tipo de operaciones se realizan de forma bastante sencilla
utilizando las propiedades de sobrecarga de los símbolos relaciónales.
Por ejemplo si de la imagen sample quisiera realizarse este tipo de operación
de tal forma que los píxeles mayores a 128 sean considerados como 1 y los que
son menores o iguales a 128 como cero.

Luego calculamos la cantidad de objetos que tiene la imagen ya sea la escala a grices o la binaria, con el siguiente comando:

> >Mat=bwlabel(imagebinary,8);

Se encuentra la maxima cantidad de objetos.

> >max(max(Mat))
ans=
22


Se genera la imagen indexada con 22 elementos

> >map=[0 0 0;jet(22)];
> >imshow(Mat+1,map)


Cabe señalar que la cantidad de objetos son mostrados cada uno con un color


EJEMPLO DE LO ANTES DICHO:

A=double(imread('C:\Archivos de programa\MATLAB\R2008a\toolbox\images\imdemos\Lipin.jpg','jpg'));
A=A(:,:,1);
subplot(3,2,1);imshow(uint8(A))
Fa=fftshift(fft2(A));

B=abs(ifft2(Fa));
subplot(3,2,2);mesh(log(abs(Fa)))
binary=A<85;
subplot(3,2,3);imshow(binary)
Fb=fftshift(fft2(binary));

C=abs(ifft2(Fb));
subplot(3,2,4);mesh(log(abs(Fb)))
mat=bwlabel(binary,8);
max(max(mat));
map=[0 0 0;jet(355)];
subplot(3,2,5);imshow(mat+1,map)
Fc=fftshift(fft2(binary));
D=abs(ifft2(Fc));
subplot(3,2,6);mesh(log(abs(D)))


Dando como resultado la siguiente figura.


miércoles, 14 de octubre de 2009

Esteban Rojas
Ejercicio 2.5
Teniendo en cuenta la definición de la características x1, x2, x3, y x4 y las reglas definidas para la selección de acciones, demuestre  que el establecimiento de la condición de no existencia de pasillos estrechos en la cuadricula bidimensional implica que no se puede satisfacer simultáneamente dos reglas de acción.
Para el este
S2 = 1 y S3=1               si y solo si                 S4=0 y S5=0
Para el sur
S4=1 y S5=1                 si y solo si                 S6=0 y S7=0
Para el oeste
S6=1 y S7=1                 si y solo si                 S8=0 y S9=0
Para el norte
S8=1 y S9=1                 si y solo si                 S2=0 y S3=0
Esteban Rojas
REDES NEURONALES


Son mecanismos que hacen posible que una maquina aprenda, por medio de cálculos realizados por los sistemas E-R. Para esto utilizaremos redes ULU con pesos ajustables, consistiendo fundamentalmente en la modificación sucesiva de dichos pesos hasta que la red responda adecuadamente a las entradas que le son presentadas.


Partimos de un conjunto formado por vectores X de dimensión n cuyos componentes son Xi, i=1,…., n, estos representan vectores de características calculados por el subsistema perceptual de un agente reactivo, pueden ser valores reales o boléanos. Las acciones que se asocian a los vectores del conjunto suelen llamarse etiquetas o clases y a las etiquetas junto con el conjunto se denomina conjunto de entrenamiento.


ENTRENAMIENTO DE UNA ULU


Si usamos una ULU para el cálculo de acciones, sus entradas deben ser numéricas, para que se pueda calcular la suma ponderada de las mismas.


Una red neuronal compuesta de una sola ULU también recibe el nombre de perceptron.


El entrenamiento de una ULU se realiza ajustando los pesos variables hasta que se consiga la salida deseada. La ULU queda definida por los valores de sus pesos y su umbral. Los pesos (W1,…..Wi,…….Wn) y su umbral ѳ. Por lo tanto X*W –ѳ >0, X*W – ѳ < 0 quedando por supuesto definida por X*W – ѳ = 0. La posición del hiperplano (con respecto al origen) puede ser modificado ajustando ѳ y su orientación ajustando los pesos.


LA DIMENSIÓN n+1


Para simplificar los métodos para el ajuste de los pesos se toma el valor de ѳ = 0. Usando este valor la salida de ULU será 1 cuando X*W- ѳ ≥ 0 y será 0 en cualquier otro caso.


MÉTODO DELM GRADIENTE DESCENDENTE


Consiste en definir una función de error que debe minimizarse ajustando el valor de los pesos. Una de las funciones mas usadas es la de error cuadrático.

Donde fi es la respuesta de la ULU, di es la respuesta deseada y el sumatorio se extiende a todos los vectores del conjunto de entrenamiento.


METODE DE WINDROW – HOFF



Supongase que se intenta ajustar los pesos de tal forma que cada vector del conjunto de entrenamiento etiquetado con 1 produzca un producto escalar que se exactamente igual a 1, mientras los vectores etiquetados con 0 tengan un producto escalar igual a -1. En ese caso y con f = s el error cuadrático se puede escribir de la forma 1.1 por lo tanto el gradiente se puede obtener de la siguiente expresión.


1.1









Si modificamos los pesos a lo largo del gradiente negativo, e incluimos el factor 2 en un parámetro llamado factor de aprendizaje c tenemos la siguiente expresión.

METODO DELTA GENERALIZADO

De esta expresión se puede deducir la regla que determina la forma en la que cambian los pesos, regla conocida como delta generalizado:


METODO CORRECCION DE ERROR


En este método solo se hace el ajuste de los pesos cuando la ULU responda con un error, es decir cuando la diferencia (d-f) sea 1 o -1. Se realiza mediante la siguiente expresión:

METODO DE LA RETROPROPAGACION


Se calculan las derivadas parciales de E respecto a los vectores de pesos de cada unidad sigmoidal, para al final obtener la siguiente expresión:

MOTIVACION


Algunas veces podemos encontrar conjuntos de entrenamiento que no son linealmente separables, para tal caso usamos una res de ULU para obtener la respuesta transitoria. La función de esta red depende tanto de la topología de la misma como de los pesos de cada ULU.


Decimos que una red es directa por capas cuando las ULU se disponen por capas en las que las entradas de los elementos de la capa j solo dependen de la salida de los elemento de la capa j-1.


NOTACION


CALCULO DEL CAMBIO DE LOS PESOS EN LA ÚLTIMA CAPA


Debemos calcular 1.2 por lo tanto como f es una función sigmoide tenemos:


1.2





Entonces se puede escribir:



Usando la expresión que se ha obtenido para el cálculo de 1.3 , la regla genérica para el cambio de los pesos en capas intermedias es:


1.3












EJERCICIO 2.3

EJERCICIO 2.3

Ivan Dario Giraldo

Indique cual de las siguientes funciones booleanas de tres variables puede ser implementada por una unidad con umbral que opere a partir de la suma ponderada de sus entradas. No hace falta calcular los pesos ni el valor del umbral.
1. X1
2. X1 X2 X3
3. X1 + X2 + X3
4. (X1 X2 X3) + (X1 X2 X3)
5. 1
Solucion:
La respuesta es la quinta opción, ya que como lo dice el enunciado se implementa en una unidad con umbral la cual operaria a partir de la suma ponderada de sus entradas asi:
Tenemos tres entradas X1 ,X2 ,X3

Esta unidad realiza la suma ponderada de las entradas, compara esta suma con un umbral y si supera el umbral, produce como salida un 1, en cualquier otro caso produce un cero

martes, 15 de septiembre de 2009

Ivan Dario Giraldo

AGENTE ESTIMULO RESPUESTA
Los agentes de estimulo respuesta (agentes E-R) son sistemas que no tienen estados internos y que solo reaccionan a los estímulos generados por los entornos donde operan, este tipo de comportamiento permite la construcción de una gran variedad de robots capaces de responder a los estímulos que reciben sus sensores.
Representación e implementación de las funciones para la selección de acciones
Para realizar la selección de acciones, debemos construir una función, definida sobre el vector de características, que tenga R valores de salida distintos, suponiendo que existen R posibles acciones a elegir.
Sistemas de Producción
Los sistemas de producción proporcionan una representación adecuada para las funciones de selección de acciones. Un sistema de producción esta formado por un conjunto de reglas de producción ci ai , donde ci es la condición y ai es la acción, por lo tanto un sistema de producción esta formado por un conjunto no vacio de este tipo de reglas.
La condición de una regla puede ser cualquier función booleana definida sobre el vector de características que se calcula a partir de las entradas sensoriales, normalmente la función es un monomio (una conjunción de literales booleanos), la selección de la acción se realiza comenzando con la primera regla c1 a1 , se busca, siguiendo el orden establecido en el conjunto de reglas, una de ellas en la que la evaluación de su condición proporcione el valor de 1, y se selecciona su parte de acción. La parte de acción puede ser una acción primitiva, una llamada a otro sistema de producción o un conjunto de acciones que tienen que ser ejecutadas simultáneamente. En la mayor parte de los casos, la última regla del conjunto tiene como condición el valor de 1, y por tanto, si ninguna de las condiciones de las reglas anteriores toma el valor de 1, se ejecuta por defecto la acción asociada a esta última regla. A medida que se van ejecutando las acciones, se van modificando las entradas sensoriales, así como los valores de las características derivados a partir de aquellas. Por tanto, las condiciones de las reglas deben se comprobadas continuamente, de tal forma que una acción ejecutada en cualquier instante se corresponde con la primera regla cuya condición toma el valor de 1 en dicho instante.
En los sistemas de producción dirigidos por objetivos, la condición de la primera regla de la lista (la primera en ser comprobada) define el objetivo general que persigue el sistema. Siempre que dicha condición se satisfaga, el sistema no ejecutara acción alguna. Si esta condición no se verifica, pero se satisface la condición de la segunda regla, entonces se ejecutara la acción correspondiente a la segunda regla, que en la mayor parte de los casos acercara al sistema hacia el objetivo general. Con el resto de las reglas se procede de igual manera. Este tipo d sistemas de producción es la base de un formalismo denominado programas Teleo-Reactivos, o programas T-R. En un programa T-R, cada acción ejecutada correctamente acerca al agente al cumplimiento de alguna condición asociadas a las reglas que le preceden. Estos sistemas de producción son fáciles de programar, siempre y cuando el objetivo general del agente este bien definido (expresado como una condición booleana de las características). Los programas T-R también son bastantes robustos, ya que todas las acciones conducen inexorablemente al agente hacia el objetivo general.
Redes
Se pueden construir programas que implementen funciones booleanas y sistemas de producción de una forma sencilla. Alternativamente, los sistemas de producción se pueden implementar directamente por medio de circuitos electrónicos. El circuito puede tener como entradas las propias señales sensoriales. Un tipo muy común de circuito lo constituyen las redes formadas por elementos con umbral o por otro tipo de elemento que aplique la función no lineal sobre una suma ponderada de sus entradas. Un ejemplo de este tipo de elementos es la Unidad Lógica con Umbral (ULU), esta unidad realiza una suma ponderada de las entradas, compara esta suma con un umbral y si supera el umbral, produce como salida un 1; en cualquier otro caso produce un 0.

f= 1 si ∑ xiwi ≥0 =0 en cualquier otro caso
Las funciones booleanas que pueden ser implementadas mediante una ULU se denominan funciones linealmente separables (el nombre se debe a que una ULU separa el espacio de los vectores de entrada en dos regiones, la de los vectores que quedan por encima del umbral y la de aquellos que quedan por debajo, mediante una superficie lineal denominada hiperplano de n dimensiones). Muchas funciones booleanas, aunque no todas, son linealmente separables.
La arquitectura de subsunción
Aunque no existe una definición precisa de esta arquitectura, la idea general consiste en hacer que el comportamiento global del agente descanse sobre un conjunto de módulos de comportamiento. Cada uno de estos módulos recibe información directa de las entradas sensoriales. Si dichas entradas satisfacen una precondición, especifica para cada modulo, se ejecuta un programa que también es especifico para cada modulo. Además, un modulo de comportamiento puede ser subsimido en otro. Cuando un modulo j se subsume en un modulo i, el programa que se ejecuta si la precondición del modulo i se satisface, tiene la prioridad sobre el programa asociado al modulo j, a este tipo de distribución se le denomino arquitectura horizontal.
Consideraciones adicionales
El uso de agentes E-R esta más extendido en nuestro entorno de lo que podríamos pensar. Entre los sistemas que utilizan este tipo de agentes nos encontramos los termostatos utilizados para el control de temperatura, los sistemas de control que gestionan la velocidad de un automóvil, a las partes de un sistema operativo que gestionan las interrupciones y en general todos los sistemas utilizados en plantas de fabricación automáticas.
La división horizontal para la separación entre los componentes de percepción y acción constituye una forma práctica de abordar el diseño de un agente. La división horizontal permite al diseñador considerar de forma simultánea aquellos aspectos relacionados con la percepción y la acción que sirven de base para presentar pautas de comportamientos especificas. La división vertical es una alternativa al planteamiento horizontal, en la que se pueden tener distintos módulos encargados de recoger, de diferentes fuentes, grandes cantidades de información (es decir, percepción) y otros módulos encargados de sacar el máximo partido posible a la información, proporcionada por los primeros módulos, para poder desarrollar diferentes tareas (es decir, acción). La relación inherente que existe entre la extracción de información y la generación de pautas de comportamiento hace que el planteamiento vertical sea más atractivo a la hora de optimizar el esfuerzo de programación.
En la actualidad, los sistemas basados en el planteamiento horizontal se pueden beneficiar de la división vertical entre percepción y acción. De esta forma, el vector de características se puede dividir en diferentes campos, donde cada campo puede ser procesado por un sistema perceptual especifico y evocar distinta acciones o comportamientos, como ocurre en la arquitectura de subsunción.

miércoles, 9 de septiembre de 2009


Esteban Rojas Castro
INTELIGENCIA ARTIFICIAL
En mi opinión la historia de la AI se remonta desde tiempos no escritos, es decir desde que el hombre tiene la capacidad de existir, pensar e imaginar. Un ejemplo el libro el Mago de Oz donde se describe un hombre mecánico; entonces según esto ¿que es la AI?, para mi es la capacidad que tiene el hombre de crear cosas capases de pensar y actuar por si solas, pero según la historia la AI es la parte de las ciencias de la computación que se ocupa del diseño de sistemas de computación inteligentes, esto es, sistemas que exhiben las características que asociamos con la inteligencia en el comportamiento humano.
La AI tubo un gran impulso desde la creación de la computadora, es más se dijo a mediados de los años 40 que los PC eran los cerebros más grandes, al IBM crear un PC con gran capacidad de hacer cálculos, pero el hombre en ese tiempo, pienso yo, no se había dado cuenta de la gran capacidad que de nuestro cerebros que son tan increíbles que puede crear un cerebro artificial capas de suplir tareas de una persona. Esta es la principal tarea de la AI suplir aquellas tareas que son capases de hacer los seres vivos, para la comodidad de estos.
Algunos ejemplos son: En el 2005 se hizo una carrera de autos auto tripulados, donde de 23 vehículos 5 terminaron la carrera o el robot de la NASA que fue construido para tomar muestras de otros planetas para el estudio de estos.
El hombre siempre a intentado crear su propio Frankenstein, ya se con un PC de alta capacidad los cuales compiten con el cerebro humano en ciertas cosas como en el ajedrez o creando un reconocedor de objetos por medio de imágenes, pero lo que si es cierto es que todos los inventos nombrados en la historia de la AI son una antesala para que el hombre siga buscando la forma de crearse, de ser capas de igualar algo no humano a un humano, y lo único capas de hacer lo que el hombre hace es el mismo hombre.
La inteligencia no puede ser artificial aunque a las cosas artificiales se les pueda dotar de esta.