Bienvenido...

Espero que este blog te sea de utilidad en algun momento, son esperados tus comentarios...

lunes, 14 de septiembre de 2009

La tecnologia de Google!!!

Si no lo han hecho, chequen la tecnologia de google para la busqueda de las imagenes por color o tipo, a mi me parece extraordinaria, aqui algunos ejemplos

busqueda de imagenes de "automovil"

seleccionamos un color de automovil

ajuste de la busqueda, solo automoviles de color rojo

se imaginan el algoritmo de identificacion de colores y luego el de clasificacion...?, muy buen punto para google no creen...?

comentario: mc pedro aaron, si quisieras agregar algo al respecto, es tu "mero mole" maestro...

6 comentarios:

Ernesto_Wicab dijo...

buenas noches... de antemano le externo que su blog me parece muy interesante y al menos esa utilidad de google no la conocia.

el motivo por el cual le escribo es el siguiente:
soy alumno del tec de mina y actualmente curso la materia de desarrollo de proyectos en horario de 10 a 11 de lunes a viernes.

tengo problemas para accesar a la plataforma de moodle (creo que no estoy dado de alta o mis datos son incorrectos) y me urge para darle el seguimiento al curso.

le agradeceria micho que me ayudara. gracias, mis datos son los siguientes:

ernesto alan wicab perez
04231189
ISC 11 Semestre

Pedro Aarón dijo...

Hola amigo Caekattz!. No había visto esta opción de búsqueda por color pero me parece muy muy buena XD.

Primero pensé que sería una búsqueda de color usando el contexto en donde se encuentran las imágenes: texto asociado a la imagen, captions, metadatos,etc. Perooo... checando unas imágenes que arroja la búsqueda pude notar que no hay nada que indique el color de la imagen (inclusive metadatos asociados a la imagen en cuestión)...Tal y como había pensado inicialmente, utilizan análisis de imágenes combinado con la tecnología de análisis de textos para hacer el reconocimiento de lo buscado.

De hecho no hace mucho (2006) google compró una empresa que se dedica a ese ramo (reconocimiento en imágenes), la empresa se llama "Neven Vision"...(http://arnoldit.com/wordpress/2009/06/29/google-and-image-recognition/). Esta adquisición junto con Picasa y google maps nos indica que el manejo de imágenes es en lo que está apostando google para el futuro cercano.

Pero como te habrás de imaginar, la competencia también está apostando por desarrollar búsquedas más "inteligentes" usando extracción de información de imágenes. Microsoft tiene un buscador, muy bueno a mi parecer, llamado Bing (y como debe ser "muy parecido a google" jajaja), la página de este es:
http://www.bing.com/
Checa la búsqueda de imágenes es muy buena también.

Jajaja! me he echado un rollo y nunca mencioné como pienso que se hizo la identificación de colores y la clasificación. Pues lo que pienso es que para la clasificación se utiliza la vieja tecnología de google para las busquedas usando el contexto (como en tu ejemplo la búsqueda del texto automovil en el contexto) y para el refinamiento por color se analizan las imágenes usando los colores patrón permitidos (los 12 disponibles). Lo que se puede hacer es, basándonos en el valor RGB (u otro, como el YUV) de cada patrón, buscar que tan cercano es cada píxel de la imagen con cada patrón. Luego se toman esas cercanías para determinar que patrón es el predominante.

Nota: este análisis es muy vago y depende del proceso de búsqueda por contexto.

Dudo mucho que se realize una verdadera clasificación basada sólo en extracción de información de las imágenes. Eso está realmente en pañales hoy en día. Específicamente, me refiero a que dada una imagen se pueda saber, con una precición aceptable, que es lo que hay en ella.

Aunque esto de la extracción de información de imágenes no es mi fuerte, espero que mi comentario haya sido de ayuda. Le diré a Elías que opine al respecto. Su tesis fue de reconocimiento de objetos en imágenes. Nota: imágenes solitas sin usar información del contexto ni metadatos ni nada por el estilo.

Saludos Caekattz.

Elías Ruiz dijo...

En efecto, como dice PePO, Google usa un modelo "híbrido" de clasificación. Para poder seleccionar los carros, se usa netamente texto vinculado en el HTML, aunque lleva un orden de prioridad:
1. Si la URL a la imagen lleva la palabra "carro" o sus sinónimos, se agrega para aparecer en el resultado de la consulta. En efecto, Google tiene un tesauro, que es el que te ayuda cuando pone: "quizás quizo decir 'automovil' cuando uno se equivoca o proveyendo una sugerencia para ampliar la búsqueda. Lo que sí desconozco, es que tan "choncho" esté ese tesauro.

2. Si dentro de un frame donde va la imagen, aparece la leyenda 'carro' google asume que es su pie de foto, por tanto tambien lo agrega al resultado de la consulta, sin embargo, tengo entendido que tiene 'menos peso' en el rankeo, es decir, tales fotos no serán las primeras en el resultado de la consulta.

el buscador de imágenes de google en su forma mas simple termina ahí. que yo sepa hasta aquí no incorpora análisis de imágenes. Pero cuando se selecciona "por color" entonces sí, se preserva el ranking de la consulta anterior y "se afina" mediante el análisis digital de imágenes.

Esta fase, aunque no se como se haga exactamente, puede basarse con histogramas de color. (que es la forma mas sencilla y rápida de procesar).

Basicamente para cada imagen en RGB se le extrae un histograma. o puede ser CMY, CMYK, o CIE-LAB (ver: http://es.wikipedia.org/wiki/Espacio_de_color_Lab )(eeh... esas formulas de transformacion de espacios de color no son para preocuparse, casi cualquier paquete como photoshop las tiene integradas y software de conversión como matlab también)

Una vez extraido el histograma (es decir la frecuencia de los rojos, verdes y azules, (para 24 bits serían frecuencias de [0-255]) se normaliza, con la finalidad de observar "cual es el color mas frecuente en la imagen". Naturalmente ocurrirá lo siguiente:
1. los carros rojos tendran un histograma R muy cargado y algo vacío en G y en B.
2. las imágenes a escala de grises tendran un histograma suave pero igual tanto en R, G y B.
3. las imágenes de dibujos a lineas, solo tienen Blanco y negro puros en el histograma, de modo que están vacíos en su interior.

estos datos de histograma pueden pasar como datos en un vector de tamaño 256*3.

Elías Ruiz dijo...

ahora... una pregunta más ¿alguna estrategia automática para extraer los carros rojos?
bueno hay algoritmos que dicen "cuanto se parece un vector de números, a otro vector de números" dicho algoritmo se conoce como Nearest Neighbors, o vecinos más cercanos. la unica condición que pide es que los datos estén normalizados.

si le damos un histógrama muy rojo y lo compara con todas las imágenes de la consulta el algoritmo NN devolverá por ende, todas las imágenes "más rojas" rankeadas desde la mas roja, hasta la menos roja, es decir, la imagen más color cian (opuesto del rojo).

¿como funciona el algoritmo NN (vecinos más cercanos?) es simple. Saca las diferencias al cuadrado de los datos de los vectores. es decir, desde un enfoque estadístico, una imagen roja es la media y NN saca la desviación estándar de la imagen consultada, con respecto de una imagen roja. con ello si la desviación estándar es casi cero, la imagen es "muy roja" y cuando se aleja mucho, no lo es tanto.

Bueno, este sería el enfoque mas sencillo y que funciona. Este enfoque previamente lo he programado y puedo decir además que incluso sirve para medir que tan similares son dos fotografías (ejemplo si le das una imagen de un cielo azul con árboles verdes, fácil te devuelve otras imágenes de cielos amplios con arboles) desde luego, este enfoque no sirve "para reconocer arboles" pero puede ayudar a encontrar "cosas similares en cuanto a color".

Algo que google todavía no hace (pero seguramente pronto lo pondrá) es el análisis basado en textura.
Este análisis podría devolver imágenes de tela, metales, maderas, piel, pelo, pasto, cielo, agua, entre otras cosas. algunos de los anteriores, como las telas, hay de muchos colores, pero el chiste es conseguir la invarianza para poder recoger texturas de telas sin importar el color. este enfoque se usa aplicando a la imagen algunos procesamientos digitales, como por ejemplo, Filtro Gabor, o Filtros que reconozcan bordes. estos filtros permiten realzar algunas lineas o puntos en las imágenes. a partir de ahí el problema es mas complicado, porque no es tan fácil como crear el histograma, sino mas bien, tratar de encontrar el patron que describe la textura, como por ejemplo, ondas en el agua, cuadritos en las telas, lineas en el cabello, etc.
Esto es precisamente el área central del análisis digital de imágenes. y de ahi para reconocimiento de patrones en imágenes es todo un show.

Elías Ruiz dijo...

Para una idea un poco mas amplia, hay un evento que invita a cualquier persona o escuela, a que "invente sus algoritmos o proponga sus ideas" para tratar de reconocer cosas en imágenes. se llama imageclef. (http://imageclef.org/) Y hay de todo. dicen que los mejores equipos son los de Xerox.

Bueno, creo que fue algo extenso mi comentario, pero espero que haya ayudado a ampliar el panorama al respecto, y darnos cuenta que google le apunta en esta dirección de manera muy fuerte. y a manera de comercial, esta área de investigación tambien se estudia en el INAOE. jojojo. Muchos Saludos profe Kattz :D
y aquí seguimos en contacto ;)

Angel dijo...

Hola Kattz, gracias por compartir los comentarios de EGRESADOS DISTINGIDOS del ITMina... mucho me gustaría saber que opinan del buscador WOLFRAM ALPHA http://www.wolframalpha.com/ y sobre las tendencias de busquedas... Saludos cordiales