Introduction: Kit Ciencia Y Arte: Inteligencia Artificial

Picture of Kit Ciencia Y Arte: Inteligencia Artificial

Aprender de inteligencia artificial es mucho más fácil de lo que parece. El primer paso es entender el funcionamiento de una de las unidades más simples en programación, que por analogía con el cerebro humano, es la neurona. En la computación se le llama perceptrón, y como veremos mas adelante, funciona de manera similar a una neurona, pero dentro de la computadora. El perceptrón fue un invento de Frank Rosenblatt en 1957 como un algoritmo que permitiera "discriminar" a una computadora.

Lo interesante es que pensar que una máquina puede aprender es algo sorprenderte, pero como verán, en la computadora todo ocurre guardando unos números reales, que se utilizan en una función matemática, eso es todo.

En este instructable haremos que el Playground aprenda a separar un color , que es el que deseamos, con cualquier otro color. En el video, por ejemplo le enseñamos a distinguir el azul, y como ven aprende bastante rápido.

Contenido preparado por la Fundación Costa Rica para la Innovación, con propósitos educativos. Parte de la Colección con Circuit Playground
http://funcostarica.org/ https://www.instructables.com/id/Kit-Ciencia-Y-Arte-Circuit-Playground/

Step 1: Materiales

Picture of Materiales

Ocupamos:

  1. Circuit Playground
  2. Cable USB
  3. Pads de colores diversos

Step 2: El Perceptrón

Picture of El Perceptrón

¿Que es una neurona? La neurona es un tipo de célula del sistema nervioso que se pueden exitar y transmitir impulsos nerviosos por cambios electro-químicos. Por ahora no nos interesan los detalles, sino aspectos generales del funcionamiento de una neurona.

En la primera foto se ve el esquema de una neurona. Una neurona tiene dendritas que reciben impulsos o señales, tiene un cuerpo que integra o suma toas esas señales, y tiene una terminal o Axón que es donde transmite a efectores o a otras neuronas. Una señal entra por las dendritas y se suma con las de otras. Si la señal es fuerte, entonces se pasa por el axón a un efectos, digamos un músculo.

El perceptrón funciona de manera análoga. Veamos el segundo esquema. Se ve complicado, pero en esencia es lo mismo. Hay una serie de entradas, y estas se suman de manera ponderada, es decir, cada entrada tiene un peso, que llamamos w. Esa suma pasa por una "función de activación" que determina cuando la suma resulta en un +1, en caso de que sea mayor a un valor determinado, o cuando es -1. Las entradas en este ejemplo son el valor de lectura red, Green y Blue (RGB).

EL aprendizaje está en indicarle a la computadora cuando queremos un +1 o un -1, con eso re van re-calculando los valores w, hasta que logremos nuestro objetivo, en ese momento decimos, nuestra computadora aprendió...

En wikipedia pueden encontrar detalles, pero por el momento no son tan importantes.

Al final damos una descripción delAlgoritmo un poco más avanzada, para los que quieran entendero más a fondo.

Step 3: Percepción De Colores

Picture of Percepción De Colores

Queremos que el playground aprenda a reconocer un color (o varios). Para eso utilizamos el sensor de luz del playground.

¿Cómo un sensor de luz se puede utilizar para reconocer colores? En realidad es muy sencillo. Si prendemos un led con el color rojo, y luego se mide la intensidad de luz reflejada, prendo el led azul y mido la intensidad reflejada, y luego lo mismo con el verde. El resultado será la cantidad de color que refleja de cada color y por tanto el valor de color RGB. ven es simple.

Como se ve en las fotos, utilizamos el sensor del luz del Playground, y uno de los leds neopixel que está al lado.

También vamos a utilizar el hecho de que cuando se acerca un objeto, se oscurece la luz, para que el playground sepa cuando hay un objeto cerca.

Step 4: Código

Picture of Código

Estos dos archivos tienen que estar en el mismo directorio. El código del perceptrón está en el archivo "Perceptron.h". Solamente descarguen el archivo y descomprima. Abra el código "ArtScience_ColorLearn.ino" y súbalo al Playground

Los detalles de lo que está sucediendo están en el mismo código, y acá no daré explicaciones extras.

Step 5: Funcionando Y Retos

Picture of Funcionando Y Retos

Para ponerlo a funcionar:

  1. Acerque un color, el que quiera que aprenda, al sensor de luz
  2. El Playground hará la combinación de colores del Led y emitirá una predicción: Verde o Rojo
  3. Verde quiere decir que lo identifica como verdadero u rojo como falso
  4. Si se equivocó, presione el botón izquierdo, hasta que el playground cambie de color
  5. De esa manera vaya introduciendo colores que desee que acepte y colores que no, indicando al playgrund cuando se equivocó
  6. Después de un rato ya reconocerá el color sin equivocarse.

Retos

  1. Que aprenda más colores, no sólo uno
  2. Que aprenda de otros sensores
  3. Que aprenda algo y haga sonar el buzzer. De esa manera entrenar para dar alarmas

Step 6: Detalles Del Perceptrón (Avanzado)

Picture of Detalles Del Perceptrón (Avanzado)

Como se ve en la imágen, hay tres componentes principales de un perceptrón.

  1. Las entradas,
  2. la función de suma (con el símbolo sigma)
  3. función de activación.

Entradas y suma

Cada entrada x1, x2,... se multiplica por un peso w, y estas se suma tal que: w0(t) = x1*w1+x2*w2+...+xn*wn. Entonces sum, es la suma de cada entrada multiplicada por un peso w.

Función de activación

La función de activación out(t), es una función que toma como valor sum, y entonces, Da como resultado -1 si w0(t) es menor que 0 Da como resultado +1 si w0(t) es mayor o igual a 0.

Algoritmo de aprendizaje

El algoritmo de aprendizaje consiste en calcular correctamente los pesos w para obtener el en out(t), que se considera correcto.
En este proyecto en particular tenemos dos entradas que provienen de tres entradas de sensores de color, R y G y B, que están conectados como se ve en la foto.

Digamos entonces que son R,G y B, respectivamente. A esto hay que agregarle una tercera bias entrada que dejamos que siempre sea 1 (se conoce como bias), para evitar sumas 0.

Los valores de entrada de los sensores RGB van de 0 a 1023. Entonces, w0(t)=R*w1 + G*w2 + B*w3+bias*x4 La función de activación out(t) hará que el resultado sea -1 o +1. Noten que se utiliza t para indicar una iteración, pues estos cálculos se realizan una vez por cada loop del procesador.

Ahora bien, digamos que +1 indica color correcto y -1 incorrecto. Para corregir el color calculamos el error de la siguiente manera, error(t) = deseado(t) - out(t). Por último, con este error corregimos los pesos w, nuevo w = w + error * x * c donde c, es una constante entre 0 y 1, de aprendizaje, que se ajusta para determinar que tan rápido debe aprender (si es muy rápido a veces nunca se estabiliza).

Se corrige hasta que el playground de el resultado deseado.

Comments

elvis humberto (author)2017-07-29

Lo instale, pero la verdad no me funciono. Cuando pongo el papel con el respectivo color, los leds se quedan todo el tiempo encendiendo y apagando hasta que retire el papel, una vez retirado el papel los leds se quedan o en color rojo o en verde. Luego si yo quiero que el papel que quite sea el correcto, tengo dos opciones (si los leds estan en rojo, oprimo el botón, y si estan en verde no oprimo el botón por que ya esta correcto). El inconveniente es que cuando pongo cualquier otro papel con color diferente, me sigue dando colores verdes.

Y si le hago el procedimiento de poner un papel errado en color rojo... los demas seguiran siendo rojo incluso el que queria que fuese verde.

Si tiene la solución se lo agradezco, estoy interesado en el proyecto

Hola, Hay que cambiar el valor "threshold" del sensor de luz. es decir, en la línea

if (CircuitPlayground.lightSensor() <30)

Cambiar el valor de 30 a otro valor hasta que funcione solo cuando cuando un objeto de color esté muy cerca

About This Instructable

660views

1favorite

License:

Bio: Músico, matemático, computación, ciencia... insolente y subversivo, pero siempre propositivo
More by tomasdecamino:Cómo Crear Un InstructableKit Ciencia Y Arte: Máquinas Que Aprenden SonidoLámpara De Inventor
Add instructable to: