sábado, 2 de febrero de 2013

El sistema de conducción autónomo se acerca

Hace tiempo que se sabe que el sistema de conducción autónoma de Google es capaz de conducir mejor que muchos de nosotros (y con más respeto en circunstancias complicadas). Además, la de Google no es la única propuesta. Hay otras también bastante avanzadas como Junior (Stanford’s DARPA Urban
Challenge vehicle).

Al parecer, estos sistemas autónomos no precisan de sistemas de reconocimiento de objetos demasiado detallados. Más bien se basan en la construcción sobre la marcha de mapas precisos de la zona donde se encuentra el vehículo. Para ello, los coches disponen de numerosos sensores y actualizados mapas.

Por otro lado, como ya se le empiezan a conceder licencias para conducir en determinados estados americanos (California y Nevada de momento), comienzan a plantearse debates sobre la responsabilidad en caso de accidente, sobre si en el futuro estará permitido a las personas conducir e incluso debates sobre la proximidad de una singularidad. En cualquier caso, nos guste o no, parece inevitable que en el futuro los coches conduzcan solos.

jueves, 28 de junio de 2012

Redes Complejas y Análisis de Imágenes

La representación, el procesado, el análisis y la clasificación de imágenes digitales son tareas intrínsecamente relacionadas. Algunas de estas tareas, y de las etapas en el análisis de imágenes, pueden resultar difíciles de implementar. Por ejemplo, la tarea de segmentación que tiene como objetivo extraer de manera precisa las regiones que representan los objetos en una escena. Para segmentar imágenes reales se necesitan algoritmos sofisticados que obtienen resultados de segmentación "aproximados" y, a veces, dichos algoritmos requieren un tiempo de ejecución alto.

Las redes complejas, cuyo origen está en la intersección entre la teoría de grafos y la fisica estadística, son  grafos que tienen ciertas propiedades topológicas: en general, son estructuras muy grandes (p.ej. con cientos o miles de nodos), tienen propiedades dinámicas, presentan un alto coeficiente de agrupamiento, también tienen una estructura comunitaria a diferentes escalas, o presentan evidencias de una estructura jerarquizada, etc. Existen tres modelos principales de redes complejas: las redes aleatorias, las redes libres de escala y las redes small-world. En general, este tipo de redes son fuente de inspiración para modelar estructuras (y resolver problemas) que aparecen en problemas del mundo real: por ejemplo, las redes sociales, las redes de información como Internet, los redes de transporte en ciudades (p.ej. redes de metro), las redes que modelan sistemas biológicos (p.ej. modelos de interacción de proteínas), etc. Además, las redes complejas se han aplicado a problemasde carácter multidisciplinar en áreas como las matemáticas, la física, la informática, la biología o la sociología.

Como las imágenes digitales están compuestas por estructuras (p.ej. matrices bidimensionales) de píxeles adyacentes, la teoría de redes complejas se adapta bien a muchos tipos de problemas de análisis de imágenes. El primer paso es decidir cómo representar una imagen digital mediante una red compleja. La solución más directa (aunque puede resultar costosa computacionalmente) consiste en modelar los píxeles de la imagen como nodos de la red y dichos nodos se conectan teniendo en cuenta diferentes criterios como pueden ser la distancia espacial entre los píxeles o algunas propiedades locales (p.ej. diferencias de valores de intensidad entre los nodos). Algunas de las aplicaciones de las redes complejas a problemas de análisis de imágenes son las siguientes: la segmentación basada en regiones mediante el descubrimiento de comunidades en la red compleja, el análisis de texturas basado en el grado jerárquico y en el coefiente de agrupamiento de los nodos, el análisis de formas en imágenes binarias basado en propiedades topológicas del grafo o la detección de puntos de interés en una imagen basándose en medidas de centralidad local de los nodos de la red. Esta última aplicación se muestra con un ejemplo donde el color denota la importancia de los puntos detectados para la imagen "House" (mayor valor del interés en color rojo, interés intermedio en color verde y menor interés en color azul). Los puntos de interés se detectan construyendo a partir de la imagen una red compleja y, después, calculando una medida de centralidad local sobre los nodos de la red (ver figura adjunta).


Finalmente, las posiciones de dichos puntos se "refinan" construyendo un grafo dual de la red compleja inicial e interpolando la posición de los nuevos puntos a partir de las posiciones e importancia de los puntos extremos de cada arco (ver figura adjunta).


viernes, 20 de enero de 2012

Reconocimiento facial en Android 4.0

Google utiliza la Visión por computadora en muchos de sus productos: detección de caras y matrículas en StreetView (para hacerlos irreconocibles), reconocimiento de caras en Picasa o reconocimiento de objetos en Goggles.

Lo que es curioso también es que ha comprado diferentes empresas que sabían hacer algo muy bien para diferentes aplicaciones. Por ejemplo, Neven Vision se compró porque sabían hacer muy bien el reconocimiento de caras y a que trabajaban ya con equipos móviles para policías en las calles. La tecnología de Neven Vision terminó en Picasa o en las búsquedas por imágenes en Google. Una de las últimas adquisiciones ha sido PitPatt, adquirida porque sabían hacer muy bien la detección de caras y el reconocimiento de la misma (estimar a qué persona de las que conocemos pertenece una cara detectada).

Según escuché a Matthew Turk en un workshop sobre visión para móviles parece que la tecnología de PitPatt es la que ha terminado en el "Face unlock" (el desbloqueo del teléfono con tu cara) de Android 4.0. En cualquier caso, y como ya hablamos en otra entrada del blog, parece que el reconocimiento facial no es 100% seguro, e incluso se le puede engañar con una simple imagen de uno mismo.

martes, 27 de diciembre de 2011

¿Qué tarjeta gráfica pongo en un servidor de aplicaciones JEE?

Teniendo en cuenta que un servidor de aplicaciones va a dedicarse fundamentalmente a atender transacciones HTTP, lo natural es pensar que su tarjeta gráfica va a ser de escasa utilidad, salvo para la propia consola. Y eso es cierto, pero desde la versión 1.4 de Java, el API Java 2D es capaz de aprovechar la GPU de la tarjeta gráfica para delegar en ella operaciones costosas como cambiar de escala una imagen, dibujar sombreados...

Si la aplicación web que estamos desarrollando requiere transformar imágenes almacenadas en un repositorio o requiere generar gráficos, incluso dibujar sencillos diagramas de barras, la aceleración aportada por la tarjeta gráfica puede liberar a la CPU de mucho trabajo.

El problema en la práctica no es trivial, puesto que tanto la disponibilidad de aceleración por hardware como su rendimiento práctico dependen del sistema operativo, del modelo de tarjeta gráfica, de la versión de Java y de la disponibilidad de rendering pipelines para OpenGL, DirectDraw, Direct3D o X11. El rendimiento también depende de los métodos concretos del API Java 2D que se utilicen, puesto que la aceleración puede no estar implementada en todos ellos. Son muchas las posibles combinaciones, por lo que resulta difícil dar recetas.

Recientemente, entre dos enfoques distintos para el mismo tratamiento de ciertas imágenes, encontré una proporción de velocidades de 200 a 1. Es tanta la diferencia que merece la pena tomarse la molestia de buscar la forma de aplicar la aceleración gráfica, no sólo en aplicaciones  de escritorio, sino también en aplicaciones web que transforman o generan imágenes. Entonces tendrás tu respuesta a la pregunta que da título a esta entrada.

lunes, 26 de diciembre de 2011

Por qué lo llaman 3D cuando quieren decir estereoscópico


Clément Ader, además de inventar aviones y la mismísima palabra avión, demostró en 1881 de forma práctica el uso del sonido estereofónico, impresionando a la audiencia con su "teatrófono", que daba la sensación de percibir la distribución de las fuentes de sonido en el espacio. Pero no fue hasta 1927 cuando el término estereofónico fue acuñado por la compañía Western Electric. Desde entonces, a nadie le molesta hablar de equipos de sonido estéreo.

Curiosamente, el término estereofónico se acuño por su analogía con estereoscópico, mucho más antiguo, ya que en 1838, Charles Wheatstone (sí, el del puente de Wheatstone que se estudia en bachillerato) estudiando la visión binocular humana, inventó el primer estereoscopio. Aunque no termina de entrar de lleno en la vida de todos, esta tecnología siempre ha estado ahí. A fin de cuentas, ¡quién no ha tenido un Wiew Master!
View Master
En estos últimos tiempos, la industria del cine y de la televisión se han puesto de acuerdo en inundarnos con cines y equipos de TV capaces de presentar imágenes estereoscópicas. Esto ayuda a crear la suficiente masa crítica que permita invertir en la  producción de este tipo de películas y programas. Pero el término estereoscópico parece hacerse demasiado largo, y han decidido usar la expresión 3D en su lugar.

Debe de estar Edwin Abbot removiéndose en su tumba cada vez que alguien piensa que a partir de la información proporcionada por dos líneas rectas puede construir una superficie de dos dimensiones. En efecto, los habitantes de Planilandia sólo perciben rectas, a partir de las cuales nunca podrán saber lo que hay detrás del contorno de los objetos, porque la visión bidimensional requiere la percepción de todo lo existente en un plano. No obstante, nosotros, que vivimos en un mundo tridimensional, percibimos sus dos dimensiones y no  sólo vemos su exterior, sino también sus tripas.
Un médico y un comerciante vistos en Planilandia
Pues lo mismo nos ocurre a nosotros en una dimensión más. Nuestra visión es bidimensional, y usando dos imágenes podemos obtener una cierta idea de la profundidad de las cosas que vemos. Pero la visión tridimensional implica algo más: el conocimiento de los objetos existentes en cualquier punto del espacio. El siguiente par animado permite comprender que la valla se encuentra detrás del grupo de personas pero, por mucho que nos empeñemos, no conseguimos ver los zapatos de la dama del centro. Esa es la diferencia fundamental entre ver en las tres dimensiones o no.
Par estereoscópico animado
Ya sé que sólo es un nombre, que es más fácil decir tresdé que estereoscópico, y que cuando vayamos al cine tendremos que decir en la taquilla que queremos ver la versión 3D, pero no por eso debemos renunciar a entender las cosas.

lunes, 28 de noviembre de 2011

El arte y la visión por computador con caras

Un amigo me hace llegar una interesante entrada de blog sobre arte digital y anális facial. La disponibilidad de software para el análisis facial listo para usar en OpenCV y puesto a disposición de todo el mundo por los investigadores, ha disparado su uso.

Hay otra reflexión asociada al mismo blog ¿llegaremos a sufrir una sociedad vigilada por cámaras en la que todos nuestros movimientos puedan ser conocidos por terceros? La tecnología de visión puede ser utilizada en un sentido (buscar delincuentes) o en otro (controlar a cualquiera). En cualquier caso, todavía estamos muy lejos de que sea una realidad. Sobre todo debido a que los sistemas actuales no son capaces de reconocer a una persona en cualquier condición ambiental. Para ver donde se encuentran los sistemas actuales es interesante echar un vistazo al "Face Recognition Vendor Test" del NIST. También es interesante el test propuesto para caras en la "jungla", "Labeled Faces in the Wild".