Redes neuronales: Visión artificial 

17.07.2017

Introducción

Las redes neuronales son un modelo computacional basado en neuronas artificiales, de forma análoga a las neuronas en los cerebros biológicos. Cada unidad neuronal está conectada con muchas otras y los enlaces entre ellas pueden incrementar o inhibir el estado de activación de las neuronas adyacentes. Se han utilizado para resolver una amplia variedad de tareas, como la visión por computador y el reconocimiento de voz, que son difíciles de resolver usando la ordinaria programación basado en reglas. 

La neurona artificial es una unidad de cálculo que intenta modelar el comportamiento de una neurona "natural", similares a las que constituyen del cerebro humano. Ella es la unidad esencial con la cual se construye una red neuronal artificial. El resultado del cálculo en una neurona consiste en realizar una suma ponderada de las entradas, seguida de la aplicación de una función no lineal, como se ilustra en la siguiente figura:

  • Xi = es el valor de la i-ésima entrada.
  • Wi = es el peso de la conexión entre la i-ésima entrada y la neurona.
  • θi = es el valor umbral.
  • o = es la salida de la neurona.
  • s = es la función no lineal conocida como función de activación.

El aprendizaje profundo es un conjunto amplio de métodos de aprendizaje automático basados en aprender representaciones de datos. Por ejemplo, una imagen puede ser representada en muchas formas, una de ellas puede ser un vector de píxeles, pero algunas representaciones hacen más fácil aprender tareas de interés, por ejemplo "¿como representar mejor una cara humana?", la investigación en esta área intenta definir qué representaciones son mejores.

El aprendizaje automático es una rama de la inteligencia artificial cuyo objetivo es desarrollar técnicas que permitan a las computadoras aprender. De forma más concreta, son programas capaces de generalizar comportamientos a partir de información suministrada en forma de ejemplos. Gran parte de la investigación realizada en aprendizaje automático está enfocada al diseño de soluciones factibles. 

El algoritmo backpropagation de aprendizaje supervisado que se usa para entrenar redes neuronales artificiales. Una vez que se ha aplicado un patrón a la entrada de la red como estímulo, este se propaga desde de la primer capa a través de las capaz siguientes de la red, hasta generar una salida. La señal de salida se compara con la salida deseada y se calcula un porcentaje de error para cada una de las neuronas.

Aprendizaje supervisado, se nos da una serie de ejemplos y el objetivo es encontrar una función que permita determinar en qué clase corresponden los futuros datos de entrada. En este ejercicio se tiene implícitamente el conocimiento previo sobre el problema. El programador le indicara a la red neuronal artificial cuando la solución propuesta sea correcta o incorrecta. Tareas que caen dentro del paradigma de aprendizaje supervisado son el reconocimiento de patrones y la regresión (aproximación de función). Esto puede ser pensado como el aprendizaje con un "maestro".

Un perceptrón multicapa es una red con alimentación hacia delante, compuesta de varias capaz de neuronas entre la entrada y la salida, esta red permite establecer regiones de decisión más complejas.

Podemos expresar la estructura del perceptrón de la siguiente forma:

Donde:

  • Pi = Entradas a la neurona
  • Wi = Pesos sinápticos
  • b = Umbral de activación
  • f = Función de activación 

La función de activación de una neurona se define como una composición de otras funciones. La característica más importante de la función de activación es que proporciona una transición suave como valores de entrada de cambio, es decir, un pequeño cambio en la entrada produce un pequeño cambio en la producción. Este se representa como una estructura de red, con flechas que representan las dependencias entre variables.

Tipos de RNA según su entrada de datos:

  • Redes analógicas: procesan datos de entrada con valores continuos y, habitualmente, acotados. Ejemplos de este tipo de redes son: Hopfield, Kohonen y las redes de aprendizaje competitivo.
  • Redes discretas: procesan datos de entrada de naturaleza discreta; habitualmente valores lógicos booleanos. Ejemplos de este segundo tipo de redes son: las máquinas de Boltzmann y Cauchy, y la red discreta de Hopfield

La visión artificial es una disciplina científica que incluye métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real. Tal como los ojos y cerebros humanos, la visión por computador trata de percibir y comprender una imagen o secuencia de imágenes y actuar según convenga en una determinada situación. Hay muchas tecnologías que utilizan la visión por computador, como son el reconocimiento de objetos, la detección de eventos y la restauración de imágenes.

Reconocimiento de objetos (visión por computadoras) es la tarea para de identificar objetos en una imagen o video. Para este problema se han implementado muchos métodos durante múltiples décadas, basados en dos tipos de descriptores:

**Métodos basados en apariencia

Usa imágenes de ejemplo (llamadas plantillas), los objetos se ven diferentes bajo una variedad de condiciones:

  • Cambios en la iluminación o color
  • Cambios en la dirección de observación
  • Cambios en tamaño / forma

Es imposible representar todas las apariencias de un objeto

  1. Emparejamiento de bordes

Usa técnicas de detección de bordes, tales como Algoritmo de Canny. Estrategia:

  • Detecta bordes en la imagen
  • Compara los bordes de la imagen para encontrar la plantilla
  • Debe considerar el rango de las posibles posiciones de la plantilla

Medida:

  • Bueno - cuenta el número de bordes superpuestos. No es robusto a cambios en la forma
  • Mejor - Cuenta el número de pixeles del borde de la plantilla con alguna distancia de un borde en la imagen de búsqueda
  • Óptimo - Determina la distribución de probabilidad de la distancia para el borde próximo en la imagen de búsqueda (si la plantilla está en posición correcta). Estima la probabilidad de cada posición de la plantilla generando imagen

2.       Búsca Divide y Vencerás

Estrategia:

  • Considera todas las posiciones como un conjunto (una celda en el espacio de las posiciones)
  • Determina el salto menor en la puntuación en la mejor puntuación de la celda
  • Si el salto es muy largo, poda la celda
  • Si el salto no es muy largo divide la celda en subceldas y tratas cada subcelda recursivamente
  • Paras cuando la celda sea "suficientemente pequeña"

Distinto a la búsqueda multi-resolución, esta técnica garantiza encontrar todas las parejas que cumplan el criterio (asumiendo que el menor salto es exacto). Encontrando el salto:

  • Para encontrar el menor salto sobre la mejor puntuación, considerando la puntuación para la posición de la plantilla representada por el centro de la celda
  • Substraiga el cambio máximo de la posición "central" para cualquier posición en la celda(ocurre en las esquinas de la celda)
  • Las complejidades se generan a partir de la determinación de los saltos en la distancia

3.      Emparejamiento por escala de grises

  • Las esquinas son comúnmente cambios en la iluminación, sin embargo desperdician mucha información
  • Debes computar la distancia de pixel como una función de la posición del pixel y la intensidad del mismo
  • Puede ser aplicado a imágenes en colores también

4.      Emparejamiento del gradiente

  • Otra forma de ser robusto a los cambios de la iluminación sin desperdiciar mucha información para comparar el gradiente de las imágenes
  • El emparejamiento se realiza como el emparejamiento por escala de grises
  • Alternativa simple: Usa la correlación (normalizada)

5.      Histograma de las respuestas receptivas del campo

  • Evita explícitos campos de correspondencia
  • Relaciones entre distintos puntos de la imagen implícitamente codificado en las respuestas receptivas del campo
  • Swain and Ballard (1991), Schiele and Crowley (2000), Linde and Lindeberg (2004, 2012)

6.      Grandes modelbases

  • Un acercamiento hacia la búsqueda eficiente de la base de datos para una imagen específica para usar eigenvectors de las planillas (llamados eigenfaces)
  • Modelbases son una colección de modelos geométricos del objeto que quieres reconocer

Matlab es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio. Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes). 

Image Processing and Computer Vision (MathWorks) proporciona un entorno integral para obtener información sobre los datos de imagen y video, desarrollar algoritmos y explorar los compromisos de implementación. El desarrollo de algoritmos es fundamental para el procesamiento de imágenes y la visión por computadora porque cada situación es única, y las buenas soluciones requieren múltiples iteraciones de diseño. Algunas de las funciones que podemos realizar son:

  • Adquirir imágenes y video de hardware de imagen 
  • Utilizar herramientas gráficas para visualizar y manipular imágenes y videos 
  • Desarrollar nuevas ideas utilizando bibliotecas de algoritmos de referencia estándar 
  • Migrar diseños a hardware incrustado 

Computer Vision System Toolbox (MathWorks) proporciona algoritmos, funciones y aplicaciones para diseñar y simular sistemas de procesamiento de imágenes y video. Puede realizar la detección, extracción y coincidencia de funciones, detección y seguimiento de objetos, estimación de movimiento y procesamiento de video. Para la visión por ordenador tridimensional, la caja de herramientas del sistema soporta la calibración de la cámara, visión estéreo, reconstrucción tridimensional y procesamiento en nube de punto 3D. Con los marcos basados ​​en aprendizaje automático, puede entrenar sistemas de detección de objetos, reconocimiento de objetos y recuperación de imágenes.


Mi experiencia con la visión artificial

Realicé un verano científico dentro del Instituto Politecnico Nacional, que tenia como objetivo investigar la vission artificial y sus aplicaciones dentro de la ingeniería. Una herramienta importante para llevar acabo fue Matlab y su toolbox "computer visión system".

Descripcion general del proyecto:

Se utilizo una red neuronal artificial del tipo backpropagation con entrenamiento supervisado (previamente entrenada) para conocer los rostros y cuerpos de personas dentro de una imagen

Los programas a continuación se basan en la extracción de las catacfteristicas principales de la imagen, algunas características comunes que pueden representar a un objeto son: Edge, Corner, Template, SURF, MSER; La selección de las características mas representativas del objeto dependerán de la imagen en si.

Matlab nos permite mediante funciones ya establecidas, realizar el tratamiento necesario a la imagen con el propósito de faciliar los cálculos matemáticos a la red neuronal y obtener resultados fructíferos en poco tiempo. Realice pruebas con diferentes técnicas de reconocimiento de patrones pertenecientes a la biblioteca antes mencionada, algunas de las cuales son: Feature matching, Face detection, People detection, KLT Tracking, Multiple Object Traking entre otras.

Mostrare los resultados obtenidos haciendo uso de las primeras tres técnicas antes mencionadas:

Feature matching

Esta técnica de reconocimiento se basa en la detección de características para encontrar objetos dentro de una imagen. Para este ejemplo se pretende encontrar el burro blanco sobre el escritorio, el primer paso de nuestro programa localiza las características más relevantes de la imagen.

Señalamos las 25 más importantes y las proyectamos.

Escaneamos la segunda imagen, que es aquella que posee al burro blanco perdido.

Nota: este método no se ve afectado por variaciones de escala o rotaciones del objeto a encontrar. 

Relacionamos las características iguales de cada imagen.

Descartamos las características pertenecientes al fondo.

Aplicamos método RANSAC para la transformación geométrica encontrando así a nuestro burro blanco.

Para revisar el funcionamiento del programa anterior es necesario descargar en una misma carpeta el programa y las imágenes a continuación:

Face detection

Dentro de este algoritmo usaremos el concepto de detección categórica que nos permite detectar mediante la estructura general del rostro humano a cualquier persona. De igual manera esta clase de detección necesita describir las características del objeto, por lo tanto será necesario usar descriptores de región y un algoritmo clasificador, que ayuda a reconocer las características específicas que representan un rosto. Los algoritmos de aprendizaje más eficientes son SVM, Adaboost, Viola-Jones.

El primer paso será detectar los posibles rostros de todas las personas contenidas en una imagen.

Procedemos a encontrar los cuerpos en la imagen inicial, los cuerpos señalados serán aquellos que cumplan con las características previamente definidas, dentro de nuestro programa podemos establecer las dimensiones que debe tener el individuo, esto evitara errores en la detección.

Por último, hacemos un filtro señalando solo aquellos rostros que además posean cuerpo, descartando las posibles detecciones erróneas.

Para revisar el funcionamiento del programa anterior es necesario descargar en una misma carpeta el programa y las imágenes a continuación: 

© 2017 El blog tecnológico de Yevgeny. Todos los derechos reservados.
Creado con Webnode
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar