Posteado por: felixcriv | junio 29, 2009

Primeros pasos en Computer Vision

Hace ya varios meses (~3 meses) que he estado leyendo mucho sobre Inteligencia Artificial(IA), respecto al campo de redes neuronales. Con el poco tiempo (solamente en la lectura y algunas prácticas) les puedo decir que la cosa no es fácil, pues por donde empieces te encuentras con modelos matemáticos que tienes que entender,  pues sin eso no se avanza mucho. La Inteligencia Artificial es un campo tan grande como las matemáticas o la informática en sí.

Es importante dejar claro que la Inteligencia Artificial básicamente tiene 2 principios: 1) examinar las condiciones existentes y 2) tomar decisiones que maximizen las oportunidades de éxito, lo que implica emplear procesos matemáticos y algorítmicos complejos y en la práctica ir creando patrones de conocimiento que se vuelven con el tiempo en la base de la inteligencia que le damos a una máquina (formalmente denominado agente inteligente). Para encontrar el problema básicamente lo que se hace es explorar las condiciones del medio y saber cuáles son las ventajas de las que puede valerse el “agente inteligente”, y para llegar a una solución, los algoritmos (modelos matemáticos) irán recolectando y analizando los datos del medio al mismo tiempo que se intenta llegar una solución, esto es un castellano bastante plano por no entrar en teoría pesada.

Gracias a la importancia que tiene la IA para resolver problemas que para nosotros son triviales pero para las máquinas son hazañas, vemos ya en la calle cámaras que reconocen sonrisas y programas fotográficos que reconocen e identifican caras de amigos en tus fotografías, inclusive software para guiar sistemas de transporte no tripulados, sistemas de seguridad (campo que está invirtiendo mucho en R&D), desarrollo de software geolocalizador como Google Maps y el Google Earth los cuales emplean técnicas de IA  para integrar de forma automática fotografías satelitales con fotos aéreas, dejando así el trabajo tedioso de geo-referenciado a las máquinas.

El hecho es que hacer que una máquina razone por si misma es un proceso muy complejo; a nosotros los humanos, tras millones de años de evolución podemos entender nuestro medio (bueno en cierto modo, porque mis amigos físicos me dicen que vivimos en un mundo holográfico….), las máquinas por su parte apenas están conociendo este mundo y lo que saben por ahora son datos pues aún no son capaces de reconocer el valor de la información.

Entre tanto material valioso, lo que ha despertado mi curiosidad hacker es el hecho de hacer que las máquinas puedan ver y reconocer objetos, a este campo se le llama Computación Visual (Computer Vision)

Dado mi interés de manejar algún ejemplo práctico de Computer  Vision, me he dedicado en estos días a compilar el proyecto de Open Computer Vision, mejor conocido como OpenCV, en un inicio fue un proyecto que nació del mismo Intel (sí, esos mismos que hacen los chips CPU más usados) pero ahora está guiado por varias empresas (entre ellas la misma Intel) y especialistas del campo de la computación visual. OpenCV es una librería de algoritmos para el procesamiento de imágenes y video con el fin de hacer entender a las máquinas qué “patterns” deben identificar y cómo pueden ser procesados, en este sentido, OpenCV también brinda de un lenguajes de aprendizaje (MLL) que emplea técnicas de Inteligencia artificial.

Acá un ejemplo de detección de caras con OpenCV, este es un ejemplo “facedetec.c”, bastante divertido:

facedetect.c

Ejemplo de una detección de rostro positiva

Nótese que la segunda cara (el hombre OJO) no es detectada

Detección positiva de 2 rostros

Detección positiva de 2 rostros

Por ahora no es un algoritmo perfecto, aunque existen algoritmos muy complejos que detectan movimiento vectorial en el rostro (algoritmo de Viola-Jones) con el fin de comprobar que es una persona realmente la que se encuentra en frente.

Este es un ejemplo de la implementación del algoritmo de Viola-Jones que emplea diferenciación vectorial y matemáticas avanzadas para el reconocimiento de rostros

Ejemplo de FaceDetection usando el algoritmo Viola-Jones

Por ahora estoy dedicado a la lectura pues como cualquier ciencia lo mejor es saber lo que se ha hecho, lo que se está haciendo, para así después saber que se puede hacer.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: