Vous êtes sur la page 1sur 12

Tecnológico Nacional de México.

Instituto Tecnológico de La Laguna

División de Posgrado e investigación


Maestría en ciencias en Ingeniería Eléctrica
Instrumentación Electrónica

Inteligencia Artificial

Ivan Alejandro López Mercado


# Control: M1813047

Red Neuronal para Reconocimiento de Objetos

04/03/2019
Introducción

La Inteligencia Artificial (IA) es probablemente una de las ramas de las


Ciencias de la Computación que más crecimiento está teniendo en la
actualidad. Pese a haber nacido hace más de 70 años, se encuentra en el
periodo de su historia en el que mayor interés ha generado debido a la
revolución que está provocando en el mercado actual. Por este motivo, y
porque la Inteligencia Artificial está suscitando muchas cuestiones e
interés entre nuestros clientes, desde Xeridia vamos a publicar una serie
de artículos en nuestro blog, comenzando con una introducción que sirva
para poner en contexto el concepto de Inteligencia Artificial.

Hasta hace poco, existía una limitación de capacidad de cómputo que


hacía que la Inteligencia Artificial proporcionara resultados muy pobres en
los problemas en los que se aplicaba, lo que produjo varios periodos
históricos de descontento en la industria y una considerable reducción
tanto del interés en esta disciplina como del número de investigadores
dedicados.

Sin embargo, en los últimos años la Inteligencia Artificial está cogiendo


gran impulso, al ser capaz de resolver problemas con ordenadores que
antes no se consideraba posible, llegando a niveles a los que nunca antes
se había llegado. Incluso los dispositivos móviles se benefician de
investigaciones en este campo, por ejemplo, a través del texto predictivo
del teclado, del desbloqueo de pantalla con huella dactilar o de la detección
de rostros en los fotogramas captados por la cámara. Se podrían enumerar
varias razones que han servido de motor de despegue de la IA, pero
destaca con especial énfasis la democratización de la capacidad de
cómputo, en especial a partir del año 2009 con la publicación del primer
artículo científico sobre la paralelización masiva de cómputo de IA usando
GPUs[1] y otro en 2010[2], por la demostración de su uso en el
reconocimiento automático de dígitos escritos a mano, superando por
primera vez la capacidad humana en esta tarea. De esta forma, la
Inteligencia Artificial adquiere su nombre debido a la capacidad que tiene
un dispositivo electrónico de resolver problemas para los que se requiere
inteligencia y que, de forma tradicional (programando), no podría
resolverse en un ordenador.
Marco Teórico

Las redes neuronales artificiales (también


conocidas como sistemas conexionistas) son
un modelo computacional vagamente
inspirado en el comportamiento observado
en su homólogo biológico1. Consiste en un
conjunto de unidades, llamadas neuronas
artificiales, conectadas entre sí para
transmitirse señales. La información de
entrada atraviesa la red neuronal (donde se
somete a diversas operaciones) produciendo
unos valores de salida.

Fig. 1 Red Neuronal Artificial

Cada neurona está conectada con otras a través de unos enlaces. En estos
enlaces el valor de salida de la neurona anterior es multiplicado por un
valor de peso. Estos pesos en los enlaces pueden incrementar o inhibir el
estado de activación de las neuronas adyacentes. Del mismo modo, a la
salida de la neurona, puede existir una función limitadora o umbral, que
modifica el valor resultado o impone un límite que se debe sobrepasar
antes de propagarse a otra neurona. Esta función se conoce como función
de activación.

Fig. 2 Red Artificial en bloques

Estos sistemas aprenden y se forman a sí mismos, en lugar de ser


programados de forma explícita, y sobresalen en áreas donde la detección
de soluciones o características es difícil de expresar con la programación
convencional. Para realizar este aprendizaje automático, normalmente, se
intenta minimizar una función de pérdida que evalúa la red en su total.
Los valores de los pesos de las neuronas se van actualizando buscando
reducir el valor de la función de pérdida. Este proceso se realiza mediante
la propagación hacia atrás.

Propagación hacia atrás y el resurgimiento

El método de back-propagation (o entrenamiento hacia atrás) es un sistema


automático de entrenamiento de redes neuronales con capas ocultas,
perfeccionado en la década de los 80.

En este tipo de redes, el problema a la hora de entrenarlas estriba en que


sólo conocemos la salida de la red y la entrada, de forma que no se pueden
ajustar los pesos sinápticos asociados a las neuronas de las capas ocultas,
ya que no podemos inferir a partir del estado de la capa de salida como
tiene que ser el estado de las capas ocultas.

El sistema de entrenamiento mediante back-propagation consiste en:

 Empezar con unos pesos sinápticos cualquiera (generalmente


elegidos al azar).
 Introducir unos datos de entrada (en la capa de entradas) elegidos al
azar entre los datos de entrada que se van a usar para el
entrenamiento.
 Dejar que la red genere un vector de datos de salida (propagación
hacia delante).
 Comparar la salida generada por al red con la salida deseada.
 La diferencia obtenida entre la salida generada y la deseada
(denominada error) se usa para ajustar los pesos sinápticos de las
neuronas de la capa de salidas.
 El error se propaga hacia atrás (back-propagation), hacia la capa de
neuronas anterior, y se usa para ajustar los pesos sinápticos en esta
capa.
 Se continua propagando el error hacia atrás y ajustando los pesos
hasta que se alcance la capa de entradas.

Este proceso se repetirá con los diferentes datos de entrenamiento.


El método por el cual el error es propagado hacia atrás fue descubierto por
D.E. Rumelhart, G.E. Hinton y R.J. Williams en 1986, y casi al mismo al
tiempo por Parker (1985) y Le Cun (1985).
Problema y solución.

Reconocimiento de objetos es la tarea para encontrar e identificar objetos


a través de sus características usando sensores. Los humanos
reconocemos una multitud de objetos con poco esfuerzo viendo o sintiendo
sus características físicas, en diferentes tamaños, en diferentes colores o
diferentes ángulos. Los objetos pueden ser reconocidos cuando están
parcialmente obstruidos de alguna de sus características, es decir si no
conocemos su peso podemos distinguirlo por su color o su tamaño. No
obstante esta tarea es un desafío para los sistemas de reconocimiento
creados a través de la Historia. Para este problema se han implementado
muchos métodos durante múltiples décadas.

Material Utilizado

Sensor ultrasónico

Miden la distancia mediante el uso de ondas ultrasónicas. El cabezal emite


una onda ultrasónica y recibe la onda reflejada que retorna desde el
objeto. Los sensores ultrasónicos miden la distancia al objeto contando el
tiempo entre la emisión y la recepción.

Un sensor óptico tiene un transmisor y receptor, mientras que un sensor


ultrasónico utiliza un elemento ultrasónico único, tanto para la emisión como la
recepción. En un sensor ultrasónico de modelo reflectivo, un solo oscilador emite y
recibe las ondas ultrasónicas, alternativamente. Esto permite la miniaturización del
cabezal del sensor.
Galga Extensiométrica

Las galgas extensiométricas son


sensores cuya resistencia varía con la
fuerza aplicada. Estos sensores convierten
la fuerza, presión, tensión, peso, etc, en un
cambio de la resistencia eléctrica el cual
puede ser medido.

Este tipo de sensores son los


elementos más importantes en el diseño de
transductores de presión y células de carga. La correcta utilización de la
galgas para medir fuerzas y deformaciones es una de las herramientas más
importantes en la ingeniería o la construcción.

Sensor RGB

El sensor de color RGB es un dispositivo


electrónico que nos permite interpretar el color
de una manera equivalente a la del ser humano.
El principio básico es que este sensor dispone
de unos fotoreceptores a modo de matriz que
nos permite identificar los colores Rojo –
Verde – Azul.

La matriz de los sensores está formada por 16 fotodiodos con un


filtro rojo, 16 con un filtro verde, 16 con un filtro azul y otros 16 sin filtrar.
Los 64 fotodiodos no funcionan de manera simultánea sino que se activan
por grupos de color antes de realizar la medición de la intensidad de luz
que incide en ellos. Para elegir qué filtros deben activarse en cada
momento, los TCS3200 disponen de dos patillas, S2 y S3, con las que
configurarlos.

Una vez obtenida la lectura de la iluminación, la corriente se


convierte a frecuencia en forma de onda cuadrada con un ciclo de trabajo
del 50% (mitad pulso alto, mitad pulso bajo).
Procedimiento.

Se realizaron 3 puntos principales para este sistema de


reconocimiento de objetos: la estructura, la interfaz gráfica y finalmente la
comunicación para el envió de datos entre la placa arduino y MATLAB.

La estructura del sistema.

Una vez que supimos las características de los objetos que íbamos a
identificar (Peso, Color, Tamaño) conseguimos los objetos que
necesitaremos.

La estructura que diseñamos constaba de dos plataformas, la


primera es la base del sistema de 18 x 18 cm, en esta colocamos la galga
extensiométrica en un extremo y en el otro extremo la base donde
pondremos los objetos a reconocer.

En la base donde reconoceremos el objeto consta de una plataforma


de 16 x 7 cm, en esta base los dos sensores ultrasónicos y el sensor RGB
para el reconocimiento del objeto (Ver figura 3).

Fig. 3 Vista Lateral de la Estructura.


Fig. 4 Vista Frontal con sensores

Fig. 5 Vista frontal Real de la Estructura

Fig. 6 Estructura Completa


La interfaz creada

La interfaz creada en MATLAB usando la herramienta GUIDE,


creamos una pequeña aplicación visual la cual nos ayuda a crear la red,
comunicarnos con arduino para obtener los datos y además nos mostrara
los datos del objeto reconocido por el sistema.

Fig. 7 Interfaz Desarrollada

Como observamos en la fig. 7, La acción del botón “Activar” es crear


la red Neuronal del sistema, con la matriz de entradas, la matriz de salida,
además de la red usando el método de entrenamiento de Backpropagation.

Fig. 8 Red Neuronal creada


Tenemos 5 entradas a la red, el peso del objeto, el tamaño, y los 3
valores correspondientes del sensor RGB, es decir el valor del color Rojo,
Verde y Azul.

A la salida tendremos únicamente un valor que nos indicara de que


objeto se trata.

En la interfaz podemos observar además el peso y el tamaño del objeto,


además de una imagen que nos mostrara de que objeto se trata.

La comunicación entre Arduino – MATLAB

Arduino se encarga de realizar las mediciones correspondientes y después


enviarlas a través del puerto serie donde MATLAB las recibe y las utiliza para
evaluar la red creada.

El código en arduino consta principalmente de 3 subrutinas la primer


subrutina obtiene los valores del sensor de RGB, la segunda subrutina obtiene la
distancia a través de dos sensores ultrasónicos, sabemos que la distancia entre
los dos sensores es de 13 cm, así que obtenemos la distancia entre el sensor y el
objeto de un sensor y después del segundo, esas cantidades las sumamos y las
restamos a los 13 cm, así obtenemos el tamaño del objeto, y finalmente la tercer
subrutina lo que hace es medir el peso a través de la galga extensiométrica.

Al final imprimimos en una cadena estos 5 valores y los recocimos en


MATLAB, el único inconveniente en este sistema es que tenemos que esperar
unos segundos para la calibración de la galga extensiométrica, si no estaremos
recibiendo datos equivocados.
Resultados

Como resultado obtuvimos una red entrenada adecuadamente ya que en


las pruebas reconoció los objetos con facilidad y sin fallas en varias ocasiones.

La interfaz es de gran ayuda para el uso de la red Neuronal, es decir


ahorramos la molestia de entender la red y reconocer el objeto con facilidad
presionando únicamente dos botones.

El problema si necesitáramos cambiar de computadora seria que la


aplicación tiene por defecto el puerto COM utilizado en esta computadora, es decir
tendremos que instalar o asignar el puerto COM10 directamente al Arduino MEGA
para poder usar la aplicación.

Para arreglar el problema de esperar por la calibración de la galga


extensiométrica, la aplicación le indicara en que momento deberá poner el objeto
en la plataforma y así evitar que el arduino nos envie datos incorrectos

Fig. 9 Ejemplo de un objeto reconocido


Fig. 10 Objeto reconocido por el sistema

Recordemos que la red tiene definidas las salidas que dependen de


las entradas, entonces cuando obtenemos nuestro vector de salida lo que
hacemos es compararlo y el valor que tenga mayor valor nos dará la
imagen que se debe mostrar.

Podemos observar que existe una pequeña diferencia entre el peso


de la caja y el peso mostrado, pero recordemos que este tipo de sensores
tienen un pequeño intervalo de error asi que podemos decartarlo.

Vous aimerez peut-être aussi