Archivo de la categoría: Inteligencia Artificial

¿Qué es OpenCV?


Actualmente estudio un doctorado en Inteligencia Artificial y aunque mi área de interés se enfoca al análisis de Redes Sociales, Minería Web y Big Data durante mi estancia se me ha preguntado de robótica, visión de computadoras, optimización, etc. Hace unas semanas llegó un nuevo reto y ese es reconocimiento facial y detección facial, los cuales deberé implementarlo para una aplicación móvil.

Investigando al respecto y el cuál había escuchado hablar de esta librería me estaré enfocando a aprender OpenCV, es una biblioteca libre que se utiliza para visión artificial, se ha usado para diseñar sistemas de seguridad con detección de movimiento, reconocimiento de objetos, etc.

Debido a que es multiplataforma en esta ocasión la usaré para Android, específicamente utilizando Android Studio. Lo más importante es llegar a comprender su amplia gama de métodos y áreas para los cuáles pueden ser usados como es el caso de calibración de cámaras, visión robótica, reconocimiento de objetos entre otros.

Imagino que hay muchos expertos y conocedores de OpenCV y agradecería me recomendaran algunos enlaces, y para aquellos que no lo conocen como yo les iré platicando y publicando videos de algunas implementaciones que vayan surgiendo.

En un siguiente post les explicaré la diferencia entre reconocimiento facial y detección facial, hasta pronto 🙂

Algoritmo: Recocido simulado


Recocido simulado o en inglés Simulated annealing (SA) es un algoritmo de aproximación a la solución óptima, y se basa en una analogía del comportamiento de sistemas termodinámicos simples. Esta técnica se utiliza en la búsqueda de soluciones a problemas de optimización de gran tamaño, desde el punto de vista práctico se ha usado para resolver el problema del viajero.

Se ha empleado en problemas prácticos como el diseño automático de circuitos integrados, análisis sintáctico del lenguaje, simulación del funcionamiento neuronal, etc.

Otras aplicaciones de recocido simulado son:
– Comunicaciones
– Teoría de grafos
– Predicción de estructuras de cromosomas
– Clasificación de imágenes
– Diseño de circuitos electrónicos

El recocido simulado busca mejorar alguna de las propiedades de un objeto, consiste en producir al azar cambios en sus valores.

La simulación del proceso puede usarse para describir la generación de soluciones de un problema de optimización combinatoria, en donde conforme el proceso cambia (azar) y teniendo como resultado la mejor solución.

Las soluciones de un problema de optimización combinatoria son equivalentes a los estados de un sistema físico. El costo de una solución es equivalente a la energía de un estado.

Descripción breve del algoritmo:

En cada iteración, el método evalúa algunos vecinos del estado actual denominado S, y probabilísticamente decide entre efectuar una transición a un nuevo estado S’ o quedarse en el estado inicial S. La comparación entre estados vecinos se repite hasta que se encuentre un estado óptimo que minimice la energía del sistema o hasta que se cumpla cierto tiempo computacional u otras condiciones.

Fuentes:
Wikipedia.
Recocido Simulado. Departamento de Matemáticas
Recocido Simulado – Inteligencia computacional. 

Introducción: Computación evolutiva


En la naturaleza los individuos compiten entre sí por recursos que les permitan sobrevivir, por ejemplo agua, comida, refugio, etc. La Computación Evolutiva trata de buscar técnicas basadas en la simulación de procesos naturales y la genética para resolver problemas complejos de búsqueda y aprendizaje.

Agrupa técnicas como Algoritmos genéticos, Estrategias Evolutivas y Programación Evolutiva, son similares y comparten características.

En 1950 y 1960 varios científicos de manera independiente estudiaron los sistemas evolutivos, la idea era “evolucionar” una población de individuos y que estos fueran la solución de un problema conocido, todo inspirado en la selección natural y la variación de genética natural.

En 1960, Rechenberg empleó un método para optimizar parámetros reales a ciertos dispositivos, denominado como “estrategias evolutivas”. Fogel, Owens y Walsh (1966) crearon la técnica “programación evolutiva”, en la cuál los individuos a soluciones de tareas determinadas se representan por máquinas de estados finitos, y sus estados de transición se evolucionaban mediante mutación aleatoria.

Hay muchas investigaciones que se enfocan en los algoritmos para la optimización y el aprendizaje inspirados en la evolución. Así que básicamente, la idea es encontrar soluciones basadas en la evolución hasta lograr la respuesta óptima.

Procesamiento de Lenguaje Natural: conceptos básicos.


El PLN o en inglés Natural Language Processing (NLP) es una rama de la Inteligencia Artificial cuyo objetivo es crear modelos computacionales que facilite la comprensión y comunicación hombre-computadora por medio del lenguaje humano (natural). Sus “herramientas” de trabajo son los formalismos gramaticales, algoritmos, estructuras de datos, mecanismos de razonamiento, entre otros.

Actualmente se utiliza el PLN en diferentes aplicaciones, por ejemplo la traducción automática entre idiomas, sistemas de preguntas y respuestas automáticas.

Entre los problemas al trabajar con el Lenguaje Natural se encuentran el análisis semántico y sintáctico, “parseo”, detección de palabras y datos incompletos.

Un poco de historia.

Las primeras aplicaciones se enfocaron a la traducción automática (1940 – 1960), basándose en la sustitución de palabra por palabra, dando resultados medianamente adecuados. Posteriormente se inicio la investigación que lograra resolver ambigüedades sintácticas y semánticas, así como la comprensión del lenguaje; gran parte del trabajo realizado se centró en el análisis sintáctico.

En los 60’s se diseñó el primer sistema de preguntas y respuestas basado en el lenguaje natural; Eliza es un claro ejemplo de la comunicación entre la computadora y el usuario. En los últimos años se han incorporado más técnicas y algoritmos que permitan el desarrollo de formalismos y modelos más adecuados y complejos, de manera que la representación del conocimiento sea más completa.

En pocas palabras…

Utilizando técnicas computacionales de Inteligencia Artificial y el análisis lingüístico se han logrado grandes avances en esta área, evolucionando hacia modelos más adecuados.

El estudio del Lenguaje Natural se divide en cuatro niveles:

– Sintáctico. Su función es asignar etiquetas a cada uno de los componentes que aparecen en la oración a analizar, de manera que sepamos como se combinan las palabras y forman estructuras gramaticales correctas. Al finalizar se obtienen estructuras que muestran las palabras formadas por unidades léxicas.

Es decir,

“I saw the man on the roof”, podemos saber que [I] es un pronombre, [saw] es un verbo y así sucesivamente.

– Semántico. Hay aplicaciones que se enfocan principalmente hacia el procesamiento del significado, pudiera parecer una tarea sencilla pero interpretar el significado de lo que se está diciendo puede ser costoso (procesamiento) y complicado. Es decir, la semántica hace referencia a lo que significan las palabras por sí mismas sin considerar el uso en un tema determinado.

– Pragmático. Es uno de los niveles más complicados y su finalidad es incorporar al análisis semántico la relación que se dan entre los hechos que está formando el contexto y sus entidades.

– Morfológico. Detecta las relaciones que se establece entre las unidades mínimas que forman una palabra (sufijos, prefijos) y la relación con el léxico, siendo este un conjunto de información sobre cada palabra que el sistema utiliza para el procesamiento.

En posts posteriores explicaré como análizar de manera sencilla un texto mediante Python.

Fuentes:

Natural Processing, Ronan Collobert.

Natural Language Processing and Text Mining, Anne Kao

Herramientas para el Análisis de Redes Sociales.


Las redes sociales permite la generación de vínculos entre los usuarios, y de cierta manera han cambiado la forma en que interactuamos, por lo que se tiene mayor interés por parte de los investigadores en conocer como nos conectamos y que plasmamos en cada mensaje o actividad social.

Un perfil de usuario, enlaces, amigos, fotos, y las interacciones dicen más de nosotros de lo que pensamos, si deseas conocer un poco más de tu perfil en Facebook y/o Twitter dejo a continuación enlaces y una breve descripción a herramientas para el análisis de Redes Sociales.

MentionMapp.

Necesitarás loguearte con tu cuenta de Twitter para que inicie la generación de relaciones entre tus usuarios y hashtags, de forma que conozcas que usuarios han mencionado hashtags similares a ti y de que manera se conectan. De manera gráfica visualizas a detalle cada palabra clave.

Tweepsmap.

¿Sabes de donde son tus seguidores? ó ¿En qué país tienes más seguidores?, si no lo sabes esta herramienta te mostrará un mapa y los porcentajes por país, de forma que puedas conocer incluso en que Estados están ubicados.

Friend-wheel.

Herramienta exclusiva para tus cuentas en Facebook, una vez que te autentificas y aceptas la aplicación empezará a construir una “rueda” donde por colores te va a ir generando grupos considerando algunos criterios como el lugar donde viven, trabajan, etc. Una vez que concluye la generación de esta rueda verás las relaciones entre tus amigos.

Namegen.

Muy similar a Friend-wheel, pero a diferencia de la anterior en esta se generan clusters identificados por un color en particular, resulta interesante como tu grupo de amigos de la Universidad tienen relaciones con personas de tu trabajo, por mencionar algo.

Wolfram Alpha.

Es una herramienta exclusiva para tu cuenta Facebook y sin duda la más interesante y completa de todas. Los datos que aquí te generan van desde desplegarte el porcentaje de tu actividad categorizada en “Fotos que subes”, “Links que publicas”, “Status que compartes”. Analiza tu actividad social, es decir, el total de likes, comentarios, las palabras que más utilizas. Y por si fuera poco te permitirá conocer el porcentaje de tus amigos que son solteros, casados, etc y el promedio de edad de tus amigos.

No dejes de visitarla, en lo personal es la que más me gustó.

Hasta un siguiente post 🙂

A %d blogueros les gusta esto: