27 de mayo de 2014

Entrega de Resultados

Investigación
Semana 16

El 20 de Mayo del 2014 llevé a cabo la penúltima reunión con mi asesora de tesis donde se dio revisión a la redacción de tesis, al blog y al código en GitHub. También se dio una segunda revisión al póster elaborado para hacer las últimas correcciones antes de mandarse a imprimir y hacer una exposición del mismo en el CIIDIT.

Tareas realizadas

  • Se movieron de la raíz del repositorio los archivos que no son usados por ningún script y que solo funcionan como prueba para cierta implementación.
  • Se agregó información al README con el fin de que aquellos desarrolladores con alguna configuración diferente de RoR puedan ejecutar las instrucciones sin problemas.
  • Se añadió funcionalidad en el controlador del servidor para que cuente el tiempo desde el momento en que recibe la imagen, hasta cuando termina de procesar justo antes de enviar la información de regreso, con el fin de tomar estos datos en los resultados de desempeño computacional.
  • Se creó un archivo que guarda el resultado de similitud para las diferentes pruebas realizadas con una misma imagen.

Correcciones del póster

  • Se agregaron los logotipos de la UANL, FIME y el CIIDIT.
  • Se eliminaron textos con información tentativa.
  • Se agregó definición de OCR y se agregó un cuadro con el procedimiento.
  • Se cambiaron las imágenes en el cuadro de propuesta por unas más recientes.
  • Se extendió la explicación del prototipo.

Ejecución de pruebas computacionales

Con la funcionalidad agregada al controlador y al script de pruebas, ahora es posible concentrar información verdadera en archivos con información separada por comas que sirven para crear tablas de velocidad de procesamiento, tamaño de archivo analizado y porcentaje de similitud de texto, para aquellos textos de imágenes previamente transcritos.

Por ejemplo en el archivo de velocidad de procesamiento tenemos en la primer columna el tiempo que tardo para cierta imagen, y el peso en Kb de la misma imagen.
11.756,330,
24.762,404,
7.373,235,
Para la prueba de similitud de texto recuperado de cierta imagen (por el momento solo dos imágenes se tienen capturadas manualmente para hacer la comparación), se le hace pasar por distintos filtros antes de ser examinada para la obtención de texto, y cada uno de estos diferentes procesos arroja un valor de similitud que esta entre el 0 y 1, donde se puede entender como 1 cuando se recuperó el 100% del texto tal cual se ve en la imagen.
0.143660212367,0.0844761382337,0.0547762191049,0.0,
0.826848249027,0.764598540146,0.836935166994,0.442250740375,
Este tipo de prueba ya se había hecho anteriormente para seleccionar cual técnica daba mejor resultado, pero no se tenía un registro de pruebas que dieran validez al mismo. Con esto ya es posible demostrarlo cuantitativamente, y no solo por percepción humana.

Resultado entregado

De entre las opciones que se tenían para entregar como resultado en el trabajo de investigación, decidí la opción del póster, el cuál fue presentado en un evento académico en el CIIDIT.

Trabajo a futuro

  • Continuar con el trabajo de investigación.
  • Crear un módulo reutilizable para otros proyectos.

20 de mayo de 2014

Finalización

Investigación
Semana 15

El 16 de Mayo del 2014 llevé a cabo la reunión número quince con mi asesora de tesis donde se dio revisión al artículo. A pesar de haber seleccionado una revista como opción para enviar el artículo a publicar, decidí no hacerlo y dedicar más tiempo a la parte final de desarrollo para un primer prototipo del trabajo de tesis.

Tareas realizadas

  • Se añadió el script de python para clasificar y evaluar productos en el servicio web.
  • Se hicieron los cambios pertinentes para unir este código con lo demás ya implementado en el lado del servidor.
  • Se cambió el valor aleatorio que se mostraba como calificación por el valor arrojado por el script.
  • Se modificó la vista web para cambiar de color el contenedor con el resultado dependiendo del valor de la calificación, donde rojo es para valores menores a 4, amarillo para valores mayores o iguales a 4 y menores a 8, y verde para valores mayores o iguales a 8.

Corrección del póster

  • Se hicieron correcciones en el póster según lo marcado en rojo hace dos entregas.
  • Se cambiaron y corrigieron algunos textos.
  • Se cambiaron las capturas de imagen del prototipo creado por unas más recientes.

Evaluación del producto desde el servicio web

Una vez añadido el script encargado de valorar un producto, se modificaron los archivos necesarios para lograr que el servidor regresará exitosamente el texto recuperado junto con el valor como resultado de la evaluación.

Como se mencionó en las tareas realizadas se modificó el color del contenedor para que este cambiará según el valor obtenido. A continuación se muestran dos capturas de este cambio.


En el siguiente caso el producto obtuvo un resultado con un valor de 5, lo cual provocó que el contenedor se pintará de amarillo. Si hubiese sido menor a 4, este se hubiera pintado en color rojo.


Tareas para la siguiente semana

  • Comprobar por lo menos un producto terminado (póster).
  • Continuar con la redacción de la tesis de ser posible.

16 de mayo de 2014

Preparación de un Artículo

Investigación
Semana 14

El 9 de Mayo del 2014 llevé a cabo la reunión número catorce con mi asesora de tesis donde se expuso frente al grupo la presentación elaborada y corregida que en su momento servirá para la defensa de tesis. También se revisó el póster y se nos hicieron correcciones en el mismo.

Tareas realizadas

Las tareas realizadas son las que se listan a continuación:
  • Se hicieron algunos ajustes de contenido en la vista principal de la aplicación web.
  • Se cambiaron de directorio los scripts de python, ya que estos se encontraban en una carpeta de acceso público.
  • Se hicieron los ajustes necesarios para que los controladores del servicio web funcionaran correctamente debido al cambio anterior.
  • Se agregó en el JSON que regresa la petición del servidor una variable que contiene el valor de la evaluación.
  • Se agregó a la vista principal un contenedor que muestra en color verde el resultado de la evaluación, justo arriba del texto recuperado.
  • Se agregaron los scripts previamente elaborados con el fin de procesar la imagen antes de la obtención de texto.

Creación de un artículo

  • Se buscó por algunas revistas y congresos del país en donde pudiéramos enviar nuestro artículo para ser publicado.
  • Se seleccionó sólo uno para después buscar los requisitos necesarios para mandar.

Revistas/Congresos considerados:

Revista seleccionada: Revista Ciencia UANL

Requisitos:
Los originales deberán tener una extensión máxima de cinco páginas (incluyendo gráficas y fotos) de acuerdo al formato que a continuación se especifica:
  • Formato. Tamaño carta; el margen superior deberá ser de 2.5 cm. y el resto de 2 cm.
  • Título. Máximo 2 renglones, tipografiado en altas y bajas, tipo Times New Roman a 24 puntos, con interlínea normal, en negritas.
  • Nombre del autor o autores. En mayúsculas con alineación al margen derecho, misma fuente tipográfica en 12 puntos, asterisco sobrescrito al final.
  • Adscripción. Colocarla en pie de página de la 2a. columna antecedida por un asterisco, en tipografía Times New Roman de 8 puntos.
  • Cuerpo del texto. A dos columnas, con tipografía Times New Roman de 10 puntos, justificado.
  • Resúmenes. No mayores de 100 palabras tanto en inglés como en español. Incluir a lo sumo cinco palabras clave tanto en inglés como en español para ser utilizadas en índices. Deben ubicarse al terminar el cuerpo y antes de las referencias. Misma tipografía que el cuerpo.
  • Referencias. Deberán ser numeradas y aparecerán en el orden que fueron citadas en el texto, utilizando la misma tipografía del cuerpo. Las fichas bibliográficas deberán contener los siguientes datos: autores o editores, título del artículo, nombre del libro o de la revista, lugar, empresa editorial, año de la publicación, volumen y número de páginas.
  • Subtítulos. Tipografía Times New Roman, 10 puntos, en negritas.
  • Notas al pie. Times New Roman, 8 puntos.
  • Material gráfico. Mínimo 3 imágenes o gráficas en blanco y negro, a una o dos columnas, máximo media página (deben entregarse originales).
  • Pie de gráficos. Tipografía Times New Roman, itálica de 9 puntos.

Procesamiento de imagen desde el servicio web

Ahora se agregaron los scripts encargados del preprocesamiento de la imagen, de tal forma que el texto recuperado es algo más entendible que lo mostrado la semana pasada.

En seguida se muestran dos capturas del trabajo realizado.


Por el momento el resultado mostrado como la evaluación es un número aleatorio, pero se espera que la próxima semana el módulo que hace esta tarea se agregue al servidor web.


Tareas para la siguiente semana

  • Agregar el módulo para evaluación de productos para después del procesamiento de imagen que ya hace el servidor.
  • Hacer mejoras en código.
  • Mejorar scripts para los experimentos.

9 de mayo de 2014

Preparación de un Póster

Investigación
Semana 13

El 29 de Abril del 2014 llevé a cabo la reunión número trece con mi asesora de tesis donde tuve revisión de la presentación elaborada la cual servirá en determinado momento en la defensa de tesis. En esta reunión se pidieron correcciones en la presentación y se nos pidió preparar un póster para esta semana.

Tareas realizadas

Las tareas realizadas son las que se listan a continuación:
  • Se crearon los iconos para la aplicación con una imagen de uso libre.
  • Se probaron otras formas de enviar una captura de imagen desde el móvil hasta el servidor.
  • En la aplicación web se agregó funciones de javascript para redimensionar la imagen antes de enviarla.
  • Se usó una librería en el controlador para poder convertir una imagen en codificación Base 64.
  • Se creó un método que se encarga de ejecutar el script simple de OCR para obtener el texto de la imagen.
  • El texto recuperado por el script es enviado desde el servidor a la aplicación web y es mostrada al usuario.

Creación de un póster

  • Se hizo uso del paquete Baposter para crear un póster en Latex.
  • Se creó el primer borrador del póster.

Enviar imagen vía AJAX y recibir texto recuperado en la aplicación web

La imagen que se muestra a continuación es una captura de la interfaz de la aplicación web desde el emulador que Chrome tiene integrado. Esto se hizo en la primer fase de prueba con el fin de mostrar errores en consola y mensajes para depurar el programa.


Ahora vemos el resultado de "tomar una imagen" (para este caso se seleccionó una imagen previamente tomada y almacenada en la computadora) y enviarla al servidor para su procesamiento. Una vez que la imagen es procesada el servidor regresa una cadena de datos del texto recuperado, los cuales muestro desde consola.


Posteriormente se hicieron las modificaciones necesarias para mostrar el texto recuperado en la misma vista, y una vez probadas nuevamente en el navegador, se probó esto mismo pero desde un dispositivo móvil.


Por el momento no se incluyeron los scripts anteriormente desarrollados los cuales son encargados del preprocesamiento y análisis de información, de tal forma que el texto recuperado actualmente por el servidor no tiene mucho sentido. En las tareas de la próxima semana ya se tiene contemplado la mejora en este aspecto.

Tareas para la siguiente semana

  • Terminar textos faltantes en la tesis.
  • Preparar un artículo.
  • Completar por lo menos un producto terminado.
  • Hacer una limpieza general al código en python.
  • Agregar el preprocesamiento de imagen y análisis de información al script que ejecuta el servidor.

29 de abril de 2014

Preparación de una Presentación

Investigación
Semana 12

El 8 de Abril del 2014 llevé a cabo la doceava reunión con mi asesora de tesis donde tuve revisión del capítulo de conclusiones y el avance de código en GitHub. En esta reunión se explicó que debería de estar incluido en la presentación de diapositivas y el uso de un paquete para la realización del mismo.

Tareas realizadas

Las tareas realizadas son las que se listan a continuación:
  • Se agregaron librerías requeridas por algunos módulos del servicio web.
  • Se modificó el script de python que ejecuta el servidor para que pueda recibir parámetros.
  • Se creó una vista sencilla para la aplicación web que se encargará de tomar la imagen del producto y se enviará al servidor para ser analizada.
  • Se implementaron los métodos necesarios para subir y almacenar la imagen en el servidor, y mensajes de estado que se regresan al usuario dependiendo del éxito o fracaso del almacenamiento del archivo.
  • Se creó un contenedor para mostrar dentro de la misma vista web, una vista previa de la imagen antes de subirla.
  • Se modificó el script que evalúa los productos donde ahora se añade un valor al producto el cual se suma con otros y se normaliza para obtener una escala del 0 al 1.

Redacción y presentación de diapositivas

  • Se agregaron algunos textos en capítulos 6 y 7.
  • Se modificaron errores en la bibliografía.
  • Se hizo uso del paquete Beamer para presentaciones en Latex.
  • Se creó el primer borrador de la presentación.

Creación de Web App

La imagen que se muestra a continuación en una captura de la interfaz de la aplicación web que se encargará de tomar la imagen del producto para luego ser enviada al servidor y ser analizada.


Se decidió hacer esta herramienta como una aplicación web con el fin de no limitar el prototipo preliminar a una sola plataforma como pudo haber sido Android. De esta manera haciendo uso de capacidades de HTML5 es posible alcanzar una experiencia agradable al usuario.

Una de estas ventajas de HTML5 es la posibilidad de adjuntar un archivo de imagen directamente tomado con la cámara del dispositivo, como si fuese una aplicación nativa, sin necesidad de abrir la galería y seleccionar una imagen previamente almacenada.


Y como se muestra en la imagen anterior, una vez tomada la imagen con la cámara, se agrega una vista previa de la misma, para que el usuario pueda corroborar que la toma fue correcta.

Avances para la siguiente semana

  • Corregir la presentación de ser necesario.
  • Preparar un póster.
  • Crear vista para mostrar los resultados obtenidos por el script ejecutado en el servidor.
  • Corregir detalles en el prototipo funcional para hacer pruebas con usuarios.

7 de abril de 2014

Conclusiones y Trabajo a Futuro

Investigación
Semana 11

El 1 de Abril del 2014 llevé a cabo la onceava reunión con mi asesora de tesis donde solicité únicamente la revisión respecto a este blog y el código en GitHub. Además se me indicó qué debería de estar cubierto en la redacción de tesis para esta semana.

Tareas realizadas

De forma general las tareas realizadas fueron las que se listan a continuación:
  • Se eliminaron lineas de código comentadas en algunos archivos que servían para hacer diferentes pruebas usando los métodos ofrecidos por OpenCV.
  • Se modificó a una función reutilizable el script encargado de recortar la imagen en el área donde se encuentra la mayor cantidad de líneas de texto.
  • Se corrigieron problemas que se ocasionaban al ejecutar algunos de los archivos de Python.
  • Se creó una nueva función sencilla encargada de determinar el valor de un producto tomando en cuenta si en el texto encontrado en la etiqueta de un producto contiene el nombre de una marca reconocida y si es de un país reconocido.

Redacción de la tesis

  • Se agregaron algunas imágenes.
  • Se redactó a manera de borrador las conclusiones y trabajo a futuro.

Valoración de productos determinado por texto encontrado

Como se mencionó en las tareas realizadas esta semana se creó una función que se encarga de determinar el valor de un producto tomando en cuenta palabras encontradas después del reconocimiento de texto. Al inicio el producto tiene un valor de cero, y este aumenta en una unidad si se encuentra que el producto es de alguna marca reconocida, y aumenta si se encuentra que es de un país listado.

Por el momento toma como entrada un archivo de texto, el cual será reemplazado posteriormente por la salida que se obtiene al reconocer texto en la imagen de la etiqueta de un producto.


Las palabras encontradas se almacenan en un arreglo al cual se itera para hacer una búsqueda de coincidencia de palabras. A continuación se muestra el arreglo impreso antes de hacer la búsqueda junto con la información de salida.

memories:research ramongonzalez$ python eco_classifier.py texts/text-sample-2.txt 
['hecho', 'en', 'mxico', 'por', 'embotelladores', 'autorizados', 'bajo', 'licencia', 'de', 'pepsico,', 'inc.', 'purchase,', 'n.y.', 'responsable', 'de', 'fabricacin', 'pepsi-cola', 'mexicana,', 's.', 'de', 'r.l.', 'de', 'c.v.,', 'bosque', 'de', 'duraznos', 'no.', '67', 'piso', '7,', 'col.', 'bosques', 'de', 'las', 'lomas,', 'delegacin', 'miguel', 'hidalgo,', 'c.p.', '11700,', 'mxico,', 'd.f.', 'ingredientes:', 'agua', 'carbonatada,', 'azcares', '(azcar', 'y/o', 'jarabe', 'de', 'maz),', 'caramelo', 'clase', 'iv,', 'concentrado', 'pepsi-cola.', 'pepsi,', 'pepsi-cola', 'y', 'el', 'logotipo', 'pepsi', 'son', 'marcas', 'registradas', 'de', 'pepsico,', 'inc.', 'consumo', 'preferente', 'y', 'lote', 'ver', 'tapa', 'o', 'cuello', 'del', 'envase,', 'consrvese', 'en', 'lugar', 'fresco.', 'cuida', 'el', 'ambiente,', 'recicla', 'el', 'envase.', '0712', 'informacin', 'nutrimental:', 'porcin', '200ml,', 'porciones', 'por', 'envase', '7,5.', 'cantidad', 'por', 'porcin:', 'contenido', 'energtico', '92', 'cal', '(391', 'kj);', 'protenas', '0', 'g;', 'grasas', '0', 'g', 'de', 'las', 'cuales:', 'grasa', 'saturada', '0', 'g;', 'carbohidratos', 'disponibles', '23', 'g', 'de', 'los', 'cuales:', 'azcares', '23', 'g;', 'fibra', 'diettica', '0', 'g;', 'sodio', '27', 'mg']
mxico is a known place
pepsico, is brand word
pepsi-cola is brand word
mxico, is a known place
pepsi-cola. is brand word
pepsi-cola is brand word
pepsi is brand word
pepsico, is brand word
Product rate: 2
memories:research ramongonzalez$

Ahora lo que sigue es darle valor a las marcas y países a listar, por ejemplo, en el caso de ser de origen mexicano tenga un valor mayor a un producto de origen extranjero, y hacerlo de igual forma con las marcas, donde aquella que tenga mayor prestigio dé como resultado un valor mayor al producto.

Avances para la siguiente semana

  • Realizar correcciones.
  • Terminar los textos faltantes en capítulos anteriores.
  • Mejorar la función encargada de valorar productos.

31 de marzo de 2014

Análisis de Experimentos

Investigación
Semana 10

El 24 de Marzo del 2014 llevé a cabo la décima reunión con mi asesora donde se dio revisión a mi trabajo de tesis.

Tareas realizadas

De forma general las tareas realizadas fueron las que se listan a continuación:
  • Se implementaron dos métodos en el modelo de datos para búsqueda de productos.
  • Se agregó funcionalidad en el controlador para recibir parámetros desde la URL.
  • Se desarrollo un método para filtrar productos por tipo de dato.
  • Se cambio al español la redacción del "README" para el servicio web.

Redacción de la tesis

  • Se corrigieron algunos errores ortográficos.

Implementación de búsqueda vía API

Haciendo uso de la API implementada es posible obtener un listado de los productos en su formato JSON. El resultado obtenido al hacer la petición por HTTP es la siguiente.


Ahora se agregó la búsqueda de productos tomando en cuenta los datos que se tienen en la descripción del producto, y es tan sencillo como agregar a la URL el parámetro "search" con el fin de escribir el criterio de búsqueda. A continuación se muestran dos ejemplos.



Por otra parte se implementó otro método que sirve para filtrar productos ya sea por nombre, compañía o calificación. Al ingresar sin enviar ningún parámetro el arreglo que obtenemos es vacío.


Pero si enviamos los parámetros de forma correcta recibimos los productos filtrados por tal rubro.




Avances para la siguiente semana

  • Realizar correcciones mencionadas.
  • Completar diccionario de palabras para reconocer buenos y/o malos aspectos de un producto que lo puedan catalogar como ecológico o no ecológico.
  • Estructurar bien el código de la implementación de mejora de imagen.