Reconocedor de Letras de la Lengua de Senas Mexicana

Durante el semestre pasado trabajamos en un reconocedor de señas del lenguaje de sordos y logramos hacer que reconociera entre 6 distintas letras. Yo me dedique al área del pre procesamiento de imágenes, mi trabajo era tomar imágenes previamente tomadas y descubrir cuál era la mejor forma para resaltar la mano de toda la imagen y cortarla. Con esto logramos obtener un dataset para las 6 señas y con esa técnica se procesaba una imagen tomada y se clasificaba entre las del dataset.

Este semestre toca ampliar el conocimiento del reconocedor para que sea capaz de diferenciar entre todas las letras de la lengua de señas mexicana (LSM), con la excepción de las letras que incluyen movimiento como son las letras: J, K, Ñ, Q, X, Z. Existe la posibilidad de que un grupo (Q, X, Z) si sea reconocidas ya que su pose inicial no es parecida a la pose de alguna otra letra.

Inicialmente el dataset se construyó con 100 fotos de cada letra tomadas manualmente por 4 manos distintas. Estoy trabajando en una forma de cortar y procesar imágenes para el dataset adquiriendo imágenes de una fuente de video en vivo. Esto da la posibilidad de sacar cerca de 100 imágenes cada 10 segundos de video y así conseguir muchas imágenes con un mejor filtrado y procesado para alimentárselas al reconocedor.  A continuación se muestra la diferencia en las imágenes obtenidas.

miniAunque se requería de este tamaño, la técnica de pre procesado dejaba imperfecciones.

138

El enfoque para el procesamiento cambio y ahora la máscara se crea con base en los colores. Este enfoque también lo estaremos utilizando para otro proyecto el cual es un dron que detectara objetos de color rojo y se dirigirá hacia ellos.  Explicado aquí.

Obteniendo este dataset de más opciones, mayor tamaño, y mejor calidad se le pueden aplicar otras técnicas de machine learning para así lograr reconocer una mayor cantidad de señas.

Erick Ibarra

Procesamiento de Imagenes

El procesamiento de imágenes es una herramienta ampliamente utilizada en muchas áreas, como la Visión Artificial. Consiste en procesar señales, la mayoría de veces digitales, aunque también pueden ser analógicas u ópticas (captación de luz), y realizar con ellas operaciones para tener como resultado una imagen mejorada que resulta más fácil de interpretar.

Existen distintos propósitos por los cuales se exploran y utilizan distintas técnicas para analizar y manipular las imágenes. Uno de los principales es el poder observar objetos que nos son distinguibles o que no se ven por el ojo humano, esto puede suceder porque no había suficiente luz, razones climatológicas, entre otras. Por otro lado este objeto puede ser distinguible, pero no claramente visible para rescatar sus características, en este caso, como en el anterior, el uso de técnicas de procesamiento nos puede regresar una imagen más visible y nítida.

Estos procesos son muy utilizados en el área de la seguridad, por ejemplo, es muy común que en las series policiacas nos muestren estos métodos en acción, supongamos que quieren capturar a un criminal y que todo lo que tienen es un video de su acto delictivo y como escapo. El procesamiento del video (serie de imágenes) regresa la placa del vehículo en el que escapo o en el mejor de los casos el rostro fácilmente identificable.  Esto es posible, y no solo en películas, en el siguiente video se puede observar distintas entradas de imágenes y sus salidas después de ciertas técnicas.

Otra de las aplicaciones es en la búsqueda automatizada de imágenes, en esta rama se buscan características únicas en las imágenes a través de técnicas de feature extraction, con esto se logra obtener valores únicos que describen a la imagen, con estos valores se inicia una comparación con otras imágenes tratando de encontrar los resultados obtenidos (o muy parecidos) en el resto de las imágenes. Uno de los mejores ejemplos es el buscador de imágenes de Google, en el cual se le da como entrada una imagen y los algoritmos de Google la procesan y llegan a imágenes muy parecidas.

Como estas aplicaciones existen muchas otras y en muchos campos laborales donde se utilicen imágenes, como en la medicina, donde se analizan imágenes como tomografías para llegar a resultados o pronósticos más acertados que un diagnostico humano.

Fuente:

http://books.google.co.in/books?id=smBw4-xvfrIC&lpg=PP1&dq=image%20processing%20ajoy%20ray&pg=PP1#v=onepage&q&f=false

http://www.disi.unige.it/person/RovettaS/rad/image-processing-wikipedia-book.pdf

Método de Montecarlo

El método Monte Carlo es otro método estocástico (ver Cadenas de Markov) que utiliza una serie de algoritmos para realizar simulaciones aleatoriamente, esto permite asignarle valores aleatorios a un conjunto A de variables independientes, para que el conjunto B de variables dependientes tome algún valor como resultado. Acción seguida, se toma la frecuencia de que B tome cierto resultado y se calcula la probabilidad de que ese evento suceda con base al total de eventos. Esto nos permite darnos una idea de que evento es

A diferencia de las cadenas de Markov, la distribución de probabilidad no está ligada al evento anterior inmediato, en este caso la probabilidad sigue una distribución seleccionada por quien realice la simulación.

El proceso puede variar, pero se busca seguir ciertos pasos base. Los métodos comienzan por asignarle valores aleatorios dentro de algún rango y distribución definidos. Tomando estos valores, se calculan las variables del conjunto B que dependen de nuestro primer conjunto. Estos eventos son almacenados y el proceso se repite hasta cierto número de iteraciones. De todas las iteraciones realizadas se busca el valor deseado o pronostico del conjunto B y se muestra que tan frecuente es que se llegue a esos resultados, tomando en cuenta un supuesto o valor esperado del conjunto A, pero sin saber exactamente qué valor puede tomar.

Del método de Monte Carlo surgen algunas variables, entre las cuales se encuentran la Búsqueda de Arboles Monte Carlo o  Arboles de Juego Monte Carlo. Dicho algoritmo busca simular un árbol de juegos como en el Método Min-Max, tomando en cuenta la posición del árbol donde se encuentre realiza iteraciones y calcula aleatoriamente alguna rama del árbol y regresa los resultados al nodo raíz, es decir de donde nació el árbol y con estos resultados es posible llegar a conclusiones como que movimiento es más probable que termine en el juego ganado.

En la siguiente liga se encuentra una breve explicación del uso del método de Monte Carlo en árboles, así como un ejemplo donde un juego de Conecta-4, realiza un determinado número de iteraciones para saber cuál es el movimiento que es más probable que lo lleve a la victoria.

http://beej.us/blog/data/monte-carlo-method-game-ai/

En este caso el jugador determina el número de iteraciones que el método va a realizar antes de efectuar un movimiento. Entre mayor sea el número de iteraciones, se puede decir que aumenta la dificultad, debido a que se recorren más ramas del árbol y se llega a probabilidades más precisas.

Como esta aplicación del método en el área de los juegos, existen muchas otras en la mayoría de las áreas. Estas simulaciones llegan a ser más precisas que la intuición humana por lo que son muy utilizadas para pronosticar resultados en la industria o en las finanzas para el análisis de riesgos.

Otra de sus aplicaciones es para ayudar a la Visión Artificial para poder localizar una posible fuente de luz de alguna imagen y con ello poder ubicar los objetos de la imagen en un espacio.

Fuente:

http://sander.landofsand.com/publications/AIIDE08_Chaslot.pdf

https://dl.dropboxusercontent.com/u/13074288/Apunte_Teorico_MC_2005.pdf

Vision Artificial

La realidad para los seres humanos consta de 3 dimensiones espaciales, sin embargo nuestros ojos como las cámaras o sensores con las que las computadoras pueden tomar perspectiva del mundo real solo pueden recibir imágenes en 2 dimensiones. El ser humano al contar con visión binocular y un cerebro que puede lograr sin problema la fusión sensorial, es capaz de percibir las 3 dimensiones y así poder ubicase en un espacio.

Por otro lado, una computadora solo puede recibir imágenes en 2 dimensiones. Para las personas una imagen vale más que mil palabras, ya que puede percibir e interpretar muchas conclusiones a partir de una sola imagen. Para una computadora, una imagen solo consta de bits y esto reduce significativamente la posibilidad de una interpretación. Es por esto que surge la rama llamada Visión Artificial, también conocida como visión computacional o procesamiento de imágenes. Esta rama utiliza la captación y procesamiento de señales con el fin de que una computadora pueda entender y así poder describir y llegar a resultados.

Nuestro cerebro para percibir y reconocer objetos realiza una serie de tareas automáticamente, y por lo mismo aun no podemos descifrar que hace para así simular estos comportamientos. Es por esto que existen distintos técnicas para recuperar la dimensión que perdimos (profundidad).

Una técnica utilizada por Microsoft Live Labs, es la de analizar un conjunto de imágenes de algún objeto, y usando técnicas como el reconocimiento de patrones, reconocer las áreas comunes de las imágenes y así poder unirlas y crear un modelo en 3 dimensiones.

Otra técnica para recuperar la profundidad es la de utilizar los distintos tonos presentes en una imagen para localizar relieves (sombras). Con estos relieves poder localizar la fuente de luz en la imagen y así llegar a un modelo de la forma de los objetos.

Entre las principales aplicaciones se encuentran:

• Reconocimiento Facial: https://www.youtube.com/watch?v=mdhvRNYX0PI
• Reconocimiento de Objetos: https://www.youtube.com/watch?v=tlC2O9T9jks
• Seguimiento de Objetos: https://www.youtube.com/watch?v=whwsLjLjEiY
• Análisis de comportamiento: https://www.youtube.com/watch?v=o0GVUgTdxKg
• Robótica: https://www.youtube.com/watch?v=kKDd2vIjtEU
• Detección Remota: https://www.youtube.com/watch?v=Dwl6rli1EiY

Fuente: