jueves, 30 de enero de 2014

[Tesis] Semana 2: Introducción

Notas de la semana

La reunión correspondiente a esta semana se llevó a cabo el día 20 de enero de 2014.
Durante la reunión se corrigieron algunos de los errores cometidos en los entregables de la primera semana y se establecieron los requisitos para la siguiente entrega.


Evidencia de la segunda semana:
  • Redactar una entrada en el blog con los avances realizados durante la semana. (1 punto)
  • El segundo avance de código abarca la capacidad del programa para reconocer logotipos en diferentes posiciones, ya sea con rotación o a escala. (4 puntos)
  • El segundo avance de redacción de tesis abarca definir los objetivos y la hipotesis de la tesis (4 puntos)
  • Reunión final agendada para el día 20 de enero de 2014 (1 punto)

Avances de la redacción tesis


Para la primera semana se estableció la estructura de la tesis, después de corregir algunos errores señalados en la reunión final de la semana pasada el esqueleto de la tesis quedó de la siguiente forma

Cabe mencionar que las secciones y subsecciones pueden modificarse conforme avance el proyecto.

Para esta semana se comenzó a redactar la sección de Introducción, pero con más en énfasis en los objetivos y la hipótesis.

En resumen, estas son las subsecciones:

  • Objetivos:
El objetivo es diseñar, desarrollar e implementar una interfaz de realidad aumentada utilizando unos lentes de realidad aumentada, que permita desplegar en el campo de visión del usuario información relevante acerca de las marcas y los productos que consume comúnmente así como aquellos otros productos disponibles y que pueda adquirir en un futuro.

La información que el usuario podrá visualizar en la interfaz será principalmente información ecológica de los productos. Se busca informar a los usuarios acerca de qué tan ecológico es un producto en distintos niveles.

  • Hipótesis
La hipótesis se centra en una pregunta clave:

¿Es posible modificar o influir en las decisiones de compra de los usuarios utilizando nuevas tecnologías como la visión computacional y la realidad aumentada?

En éste caso, el proyecto de tesis hace énfasis en las características ecológicas de un producto

Aprovechando el aumento en la conciencia de las personas acerca del cuidado del medio ambiente y por la ecología, ¿será posible que la información ecológica de los productos tenga el impacto necesario para influir en la decisión de comprar o no un producto?


Avance en código


Como primer avance se logró crear un matcher sencillo de logotipos utilizando Python y OpenCV, y el método SURF para la detección de caracteristicas. El matcher lograba reconocer exitosamente los logotipos con los que fue entrenado pero su capacidad de reconocimiento estaba limitada y si los logotipos estaban girados o a diferente escala los resultados ya no eran los esperados.
Para esta semana se decidió abordar esa problemática y se decidió entrenar el matcher con los logotipos, pero en diferentes posiciones y ver el grado de mejoría

El código se encarga de tomar el logotipo en 4 diferentes posiciones (0, 90, 180 y 270 grados), despues de cada una de estas posiciones se extraen los keypoints, los descriptors y la imágen en escala de grises en forma de arreglo Numpy. Ésta información se almacena en el disco duro para el posterior entrenamiento del matcher.

90°
180°
270°

El problema que se tiene es en la etapa de entrenamiento, actualmente se utiliza el método KNN (K-nearest neighbors), es un método sencillo que permite hacer match entre pares equivalentes de elementos. Parecido a una red neuronal, se debe entrenar con muestras de lo que se quiere reconocer o clasificar. Sin embargo, tengo problemas al momento de presentarle las muestras al algoritmo.
Los samples deben tener un formato especial, los samples estan compuestos por los descriptors de los keypoints, sin embargo tengo problemas al momento de formatear todos los samples ya que las imágenes difieren en tamaño al momento de girarse, es decir, a 0 y 180 grados el logotipo aparece horizontal mientras que a 90 y 270 grados el logotipo aparece vertical.

Sin embargo, a pesar que las muestras son aceptadas por el algoritmo, no tienen el formato adecuado porque no hace match de ningún logotipo, puede ser problema al momento de modificar la forma y tamaño de los arreglos Numpy de los elementos. Se espera corregir el problema en entregas posteriores.

Los avances de código pueden encontrarse en el repositorio.

Liga al repositorio: https://github.com/jcespinosa/EcoGlasses

martes, 14 de enero de 2014

[Tesis] Semana 1: Planteamiento


Para acreditar el 10mo semestre de la carrera de Ingeniería en Tecnología de Software se optó por cursar el módulo de investigación.
El requisito para acreditar el semestre es realizar un trabajo de investigación sobre algún proyecto tecnológico cuyo resultado es la redacción de un trabajo de tesis de licenciatura.

El trabajo de tesis estará bajo supervisión de la Dra. Satu Elisa Schaeffer.


Notas de la semana


La reunión inicial se llevó a cabo el día 13 de enero de 2014.
Durante la reunión se establecieron los requisitos inciales del trabajo de tesis y se abordaron de manera general las demás actividades que se desarrollarán durante el semestre.

Para el trabajo de tesis se tomarán en cuenta 3 aspectos:
  • Blog personal donde se documentarán las notas y actividades de cada semana
  • Carpeta compartida en dropbox que contendrá los archivos de LaTeX para generar la tesis.
  • Repositorio con el código generado durante el proyecto.

Evidencia de la primera semana:
  • Crear el blog, la carpeta en dropbox y el repositorio en línea. (1 punto)
  • Programar el primer avance de código del proyecto y colocarlo en el repositorio. (4 puntos)
  • Primer avance de redacción de la tesis que consiste en el esqueleto de la tesis (cápitulos, secciones y subsecciones) (4 puntos)
  • Reunión final agendada para el día 20 de enero de 2014 (1 punto)


Acerca del proyecto de tesis


Título tentativo:

"EcoGlasses: Interfaz de realidad aumentada para asistente adaptativo de compras para consumo verde inteligente"

¿De qué trata el proyecto?

El proyecto de tesis consiste en el desarrollo de una interfaz de realidad aumentada haciendo uso de unos lentes AR que permitirá visualizar, en el campo de visión del consumidor, información relevante de un producto mientras el usuario lo sostiene en frente de si mismo.
La información que se quiere mostrar se centra principalmente en qué tan ecológico es un producto, es decir:

  • ¿qué tan reciclable es el empaque utilizado?
  • ¿qué tan verde es el proceso de manufactura?
  • ¿se trata de un producto elaborado de manera local o tuvo que ser importado?
  • ¿la empresa tiene prestigio de ser una empresa verde?

Entre otros puntos.

El software estará desarrollado utilizando el lenguaje de programación Python y la libreria OpenCV 2.7. Así mismo no se excluyen algunas otras librerias de interés como Numpy y Tkinter.
Para el hardware se estarán utilizando unos lentes Vuzix STAR 1200XLD y un equipo de computo para ejecutar el backend de la interfaz.

En una primera etapa se desarrollará un script que se encarga de procesar cada frame del video capturado con los lentes AR.

El procesamiento de cada frame consiste en extraer del mismo los logotipos del empaque que se encuentre dentro del campo de visión del usuario (y de los lentes principalmente), utilizando técnicas de visión computacional, para ello se pensaron en distintas técnicas y en éste caso se opto por el reconocimiento de patrones y caracteristicas (features) utilizando el algoritmo SURF.
Posteriormente con esa información se procede a reconocer el logotipo y/o empaque dentro de una base de datos.
Una vez extraída la información del logotipo/empaque de la base de datos se procede a consultar toda la información ecológica del producto/marca.
Finalmente la información disponible es dibujada en el campo de visión del usuario.

Será necesario crear un midware que permita comunicar de manera segura a los lentes AR con las bases de datos, que se espera se encuentren de manera remota. Para ello puede ser necesario aplicar algunas técnicas criptográficas.
Así mismo se debe incluir un servicio de almacenamiento que contenga toda la información de los productos y marcas, debe ser un servicio independiente que se pueda actualizar constantemente. Las fuentes de información serán las mismas empresas que se encargarán de ponerla a disposición de los usuarios.


Trabajos relacionados

El objetivo de esta plataforma es ofrecer a las empresas una experiencia de compras digital.
Con el software de comercio electronico, la empresa IBM ayuda a las empresas a ofrecer a sus clientes y socios una experiencia de compras personalizada mediante la cual logran interactuar con la marca a traves de la web, teléfonos móviles o las redes sociales. Esto significa que toda la información se sus productos, asi como promociones y descuentos se pueden enviar a traves de estos canales y lograr que los clientes y la marca se encuentren constantemente en contacto.

Otras capacidades de este sistema es la posibilidad de crear catálogos digitales y en línea con los cuales los usuarios pueden comparar las caracteristicas de diversos productos, la ubicación de las tiendas, capacidad de visualizar los pedidos y la disponibilidad de los productos en el inventario.

Esta iniciativa de la empresa McDonalds tiene como objetivo educar a los clientes acerca de la sustentabilidad de la empresa y sus diversas practicas ecológicas.
La aplicación cuenta con una interfaz de realidad aumentada y algunos minijuegos mediante los cuales los visitantes pueden aprender sobre las diversas iniciativas sociales y ambientales de la empresa y sus franquicias.

Las aplicaciones son iniciadas despues de escanear una serie de códigos impresos en los productos de la empresa tales como papas fritas, cajas, etcétera.
Así mismo se tiene la opción de compartir los avances de los juegos o puntuaciones a través de redes sociales.

El catálago electrónico de la empresa IKEA permite a los usuarios navegar a través de los diversos productos que la empresa pone a disposición de los usuarios. Y no solo eso, también la empresa permite visualizar cómo se verán sus productos en el hogar.
Esto permite a los usuarios conocer los productos que la empresa se encarga de distribuir y así mismo saber cómo se verán exactamente los mismos una vez que sean instalados en el hogar,

Se trata de una aplicación que puede ser utilizada a traves de una tableta o télefono celular.


Liga al repositorio: https://github.com/jcespinosa/EcoGlasses