Saturday, June 27, 2009

BING== But It's Not Google

Ha sido una gran semana. A pretty amazing week.
Me parece que lo mejor, fue tener un cierre tan agradable de la carrera. El fin de semana, específicamente de Jueves a Domingo, estuve en San Francisco y tuve la grandiosa oportunidad de visitar Google en Mountain View, y recibir charlas de muchos de sus proyectos actuales. La oportunidad de tener un viaje todo pagado, i.e. avion de México City-San Francisco, hospedaje en Hilton de SF, todas las comidas y transporte pagado, me fue brindado gracias a una de las becas que brinda esta compañía, más espicífico, es la beca de Google en memoria de Anita Borg. Anita Borg fue una revolucionaria en el campo de la computación. Ella buscó traer más mujeres a está área, ya que las mujeres siempre eran y hasta cierto punto, siguen siendo, una minoría. Anita murió de cancer en 2003, pero en su honor Google apoya a las mujeres en la tecnolgía. Google busca promover que estas chicas sobre salgan en la computación-tecnología y sean dentro de esta área modelos a seguir...

Mmmm...to make a long story short, creo que quiero ahora contar lo que viví en mi visita en Google.
Un camión pasó, por todos los becari@s de Google, incluyendo no sólo a las lindas becarias de Anita Borg sino también a todos los becaRI@s de los demás grupos, (which you can check out here ) Llegamos a las 10 am y a las 10:15 el vice presidente nos dió una charla de bienvenida.
Dentro de esta charla, se habló acerca de lo importante que era para Google tener diversidad. Dijo que contratando los mejores talentos, diversidad en perspectivas, ideas y culturas llevaba a la creación de mejores productos y servicios brindados a los usuarios.
También nos contó, que la compañía estaba trabajando en un algoritmo para detectar cuando ciertos "cerebros" se dejaban de sentir agusto en la compañía y querían por ende dejarla, renunciar a su empleo. La compañía empezó a analizar en una fórmula matemática, información relacionada con los comentarios y promociones de los empleados así como de su historial de pago,para identificar cual de sus 20,000 empleados tiene más probablidad de querer renunciar.
Este algoritmo de retención, es una de las últimas medidas que ha adaptado Google para prevenir que sus mejores ingenieros, diseñadores, y ejecutivos de ventas se vayan.
...I guess, other things were touched here, but I DO not remember them..:S
Después de esta plática, llegó un hindú guiado por un labrador, pues era ciego este presentador, y nos habló acerca del proyecto de "Eyes Free Android" El proyecto de Eyes-Free ( Ojos libres) analiza lo siguiente: normalmente para usar tu celular es necesario que utilices dos de tus sentidos, el tacto y la visión. Sin embargo, existen muchas ocasiones en los cuales podrías tener tus ojos ocupados, y por ende cualquier operación con el celular se dificulta, tal es el caso de cuando nos encontramos manejando. Se busca que el proyecto de Eyes Free se use cuando las personas NO pueden ver el display de su celular.
Las aplicaciones que tiene Eyes Free son:
  • Talking Dialer== Marcador Oral: una inovación que se tiene es que permite la marcación de números con una mano, sin ver, utilizando el touch screen. Funciona de la siguiente manera: El usuario presiona alguna parte de la pantalla, apartir de aquí se crea la matriz de numeros, se toma el lugar donde presionó el usuario como centro, y se localiza allí el 5, alrededor se situán los demás números del mismo modo en el cual suelen acomodarse. You know, 6 after 5, 2 above 5 etc. Además, Cuando el usuario pasa sobre uno de los números, se escucha una voz que dice sobre que número se está pasando. De este modo, el usuario puede marcar un número telefónico sin necesidad de tener que ver la pantalla de su cel.

  • Knowing Your Location==Conoce tu localización: Esta aplicación te dice tu localización actual, usando información adquirida mediante el GPS y la red del celular. Usando un compás magnético presente en la mayoría de los celulares, te dice también si vas hacia el norte, sur, etc, y usando Google Maps te dice que edificios o localizaciones están cerca y que calles hay.

Aquí les presentó un pequeño video acerca de este proyetco:


Después de esta charla, nos dividimos en diversas sesiones, cada sesión hablaba de algún producto en particular de Google. Podíamos escojer entre una charla acerca de android, otra acerca de chrome o la que yo elegí que fue Street view. La persona que dió la charla fue un Francés, que está actualemtne a cargo de este proyecto. Es una persona que tiene mucha experriencia y ha hecho mucha investigación en Visión y en Procesamiento digital de imágnes. Me parece que la mayoría de las personas, sabe de que se trata el proyecto de street view, sin embargo, no está demás dar un pequeño resumén de él. Con Street View, es posible ver fotografías a nivel calle,hacer paseos virtuales en diversas ciudades del mundo,encontrar tiendas, parques, hoteles etc.
Google Street View surgió apartir de una idea que tuvo Larry Page, el cual equipado con su cámara, recorría las calles Standford filmando las calles y edificios. Esta idea crecio con la creacion de Google Maps.
Ahora bien, a simple vista el proyecto de Street View, podria parecer un proyectp 2/3 sencillon, no es acaso un simple video en line de las calles que hay en el mundo?
Sin embargo, existen realmente muchas cosas que se deben considerar y trabajar con ellas, dentro de este proyecto. Por ejemplo, cuando se esta decidiendo como capturar la imagen de una calle, mientras se esta manejando,se puede considerar lo siguiente:
El plano de una imagen normal proveniente de una camara produce un dibujo rectangular:

Esto, no esta mal, sin embargo,cuando se tiene una camara que se encuentra en movimiento, este metodo no se puede usar, ya que cuando se rota la camara, cambian con este metodo las perspectivas que se tienen de los objetos, de un modo drastico,se cambian las percepeciones de los objetos. Es por esto, que es necesario utilizar otra tecnica. Una bastante util para estas situaciones es una llamada Pushbroom. En esta tecnica lo que se hace es tomar un cacho vertical de la perspectiva rectagular, ubicada justo en frente de la camara y se recorta este cacho de la demas imagen. Asi mientras se mueve la camara, se tienen peque~os cachitos, los cuales se pueden unir, para producir asi una imagen cotinua, mientras la camara se mueve.
Sin embargo, existen aqui algunos problemas con la profundidad, ya que cada cahito se ve como si uno estuviera viendo directamente a el. Y si cada cachito se une, no se observa por ende la profundidad. La siguiente imagen muestra esto claramente:


En esta imagen, los coches se amontonan y los callejones no tienen nada de profundidad. Google resolvio este problem, combinando la perspectiva de pinhole con la de pushbroom. La perspectiva en 'y' se mantiene, se optimizo la perspectiva obtenida en x en cda una de las imagenes segmentadas, con el fin de minimizar la distorcion.La siguiente imagen, muestra el uso de este metodo:


Observese que en esta imagen, la cual es una con multiples perspectivas, existe un punto de fuja en el callejon y un punto de fuja diferente en la interseccion.

Bien, de este modo tenemos ya un flujo de imagene que realmente se ven en 3D, con profundidad y todo.Sin embargo en calles que no son lisas, como las que se tienen en San Francisco, este metodo hara que la imagen NO se vea real. Lo que hace Google para tomar calles empinadas es usar un jiroscopio para orientar a la camara, de modo que estos caminos mantienen el mismo angulo, a como si uno viniera caminando por una de esas lindas calles San fransicanas.=)

View Larger Map

Ahora bien, otra cosa interesante que esta aplicando Google a Street View, son numerosos filtros para que las imagenes que toma el auto de Google, se puedan ver con claridad independientemente de la hora del dia, en la que se hayan tomado. Entendi, que en numerosas ocasiones, toman varias veces una calle, y hacen una especie de promedio entre las fotos tomadas y la imagen resultante es la que se muestra. Se tambien, que analizan los caminos por los cuales, pasara el carro filmador de Google, para encontrar rutas mas cortas, y hacer todo del modo mas eficiente posible.
En la conferencia, se hablo tambien de varios problemas tecnicos que se han presentado, como son los ajustes a la camara, momentos en los cuales la camara apunta al sol e incluso brindar la suficiente energia para todas las actividades del auto. (El auto es alimentado, con muchas baterias!)

Ahora bien, una de las cosas que mas me llamo la atencion del proyecto de Street View, fue el reciente trabajo que se ha puesto, para borrar las caras de las personas que salen en las calles y respetar asi cuestiones de seguridad. A pesar de que muchas camaras ya traen integrados aplicacones de deteccion de caras, hay que tomar en cuenta, que estas aplicaciones siempre llevan acabo la detecion cuando las personas, estan puestas de frente a la camara. Es decir, si las personas estan volteando, en alguna posicion en la cual el rostro no esta de frente a la camara, la deteccion de rostro se vuelve bastante complicado. Lo peor de todo, es que estos casos, son los que mas se presentan en estas fotografias, las personas evidentemente NO estan posando para la foto. Muchas universidades han contribuido a solucionar este problema, Google tomo algoritmos elaborado por otras universidades, y elaboro un "out of the box detector" bastante robusto.Me habria agradado que hablara el frances mas acerca de este algoritmo, creo que tiene una publicacion del tema. But for now, ando en mi casa, y todos los articulos de la IEEE estan fuera de mi alcance :(
Ire ma~ana a la UNAM, y lo intentare, chance commento mas acerca de esto. (Ma~ana es mi graduacion, para any stalker que quiera felicitarme ! n_n

Hubo otra muy buena platica, que en otra ocasion hablare de ella, que trato acerca de las traducciones que hace Google, y como han encontrado que es mas eficiente, hacerlas basandose en mucha informacion de mapeo de frases. (Tu sabes, de documentos que vienen en dos idiomas> Welcome to the XXX strip joint> Bienvenido al table dance XXX....)que mejorando el algoritmo e traduccion tal cual. Basicamente lo que hacen, es que les llega una oracion, digamos: "Rainy days and sun days always get me down"
Y la quieren traducir al espa~ol, lo que suelen hacer, es ir calcuando, la probabilidad que una cierta traduccion sea equivalente otra. Calculan la probablidad de ser de cada palabra en la oracion traducida. Se escojen siempre las palabras con la mayor probabilidad, la probabilidad de ser de cada palabra selecionada se selecciona basandose en el numero de veces que ese mapeo de palabras se dio, esto es, hacen una busqueda en la red, y buscaran el numero de veces que Rainy por ejemplo, haya tenido un mapeo con lluvioso. Se observan todos los mapeos encontrados en la red con la palabra, y a cada mapeo encontrado se asigna una probabilidad, basandose n el numero de veces que fue encontrado.Ahora bien, aun no se ha terminado, se calcula tambien la probabilidad que dicha palabra selecionaa, observada en el mapeo, en este caso lluvioso, sea adecuada segun la gramatica de la lengua a la cual se esta traduciendo. De hecho, a esta probabilidad le asignan un mayor peso.(lo elevan a 1.5, on lo que se pierde la propiedad que la probabilidad de uno, pero asi es como ha resultado ser mas eficiente.)
Asi es como funciona la traduccion que brinda Google, se basan en datos encotnrados en la red =)