Aprendizaje automático simple con Arduino KNN Deja un comentario

Los algoritmos de aprendizaje automático (ML) vienen en todas las formas y tamaños, cada uno con sus propias compensaciones. Continuamos nuestra exploración de TinyML en Arduino con un vistazo a la biblioteca Arduino KNN.

Además de los potentes marcos de aprendizaje profundo como TensorFlow para Arduino, también hay enfoques clásicos de ML adecuados para conjuntos de datos más pequeños en dispositivos integrados que son útiles y fáciles de entender: uno de los más simples es KNN.

¡Una ventaja de KNN es que una vez que el Arduino tiene algunos datos de ejemplo, está listo para clasificar al instante! Hemos lanzado una nueva biblioteca Arduino para que pueda incluir KNN en sus bocetos de forma rápida y sencilla, sin necesidad de capacitación fuera del dispositivo o herramientas adicionales.

En este artículo, veremos KNN utilizando el ejemplo de clasificador de color. Hemos mostrado la misma aplicación con aprendizaje profundo antes: KNN es un enfoque más rápido y ligero en comparación, pero no escalará también a conjuntos de datos más complejos y más grandes.

Bosquejo de ejemplo de clasificación de color

En este tutorial, veremos cómo clasificar objetos por color usando la biblioteca Arduino_KNN en el Arduino Nano 33 BLE Sense.

Para configurar, necesitará lo siguiente:

  • Placa de detección Arduino Nano 33 BLE
  • Cable micro USB
  • Abra el Arduino IDE o Arduino Create
  • Instale el [19459002 ] Arduino_KNN biblioteca
  • Seleccione ColorClassifier de Archivo> Ejemplos> Arduino_KNN
  • Compile este boceto y cárguelo en su placa Arduino

La biblioteca Arduino_KNN [1945901111] La biblioteca Arduino_KNN

El boceto de ejemplo utiliza la biblioteca Arduino_KNN. La biblioteca proporciona una interfaz simple para utilizar KNN en sus propios bocetos:

 #include 

// Crea un nuevo KNNClassifier
KNNClassifier myKNN (ENTRADAS); 

En nuestro ejemplo ENTRADAS = 3 – para los valores rojo, verde y azul del sensor de color.

Muestreo de colores de objeto

Cuando abra el Monitor de serie, debería ver el siguiente mensaje:

 Clasificador de color Arduino KNN
Muéstrame un ejemplo Apple 

La placa Arduino está lista para muestrear un color de objeto. Si no tiene una Manzana, Pera y Naranja a mano, es posible que desee editar el boceto para colocar diferentes etiquetas. Tenga en cuenta que el sensor de color funciona mejor en una habitación bien iluminada en objetos mate, no brillantes y cada uno ¡La clase necesita tener colores distintos! (El sensor de color no es ideal para distinguir entre una naranja y una mandarina, pero podría detectar qué tan madura es una naranja. Si desea clasificar los objetos por forma, siempre puede usar una cámara ). [ 19459004]

Cuando coloca la placa Arduino cerca del objeto, muestra el color y lo agrega a los ejemplos de KNN junto con un número que etiqueta la clase a la que pertenece el objeto (es decir, números 0,1 o 2 que representan Apple, Orange o Pear) . Las técnicas de ML en las que proporciona datos de ejemplo etiquetados también se denominan aprendizaje supervisado .

El código en el boceto para agregar los datos de ejemplo a la función KNN es el siguiente:

 readColor (color);

// Añadir color de ejemplo al modelo KNN
myKNN.addExample (color, currentClass); 

Los niveles de rojo, verde y azul de la muestra de color también se emiten en serie:

El boceto toma 30 muestras de color para cada clase de objeto. Puede mostrarle un objeto y tomará muestras del color 30 veces. ¡No necesita 30 manzanas para este tutorial! (Aunque un conjunto de datos más amplio haría que el modelo sea más generalizado).

Clasificación

¡Con los ejemplos de muestras adquiridos, el boceto ahora le pedirá que adivine su objeto! El ejemplo lee el sensor de color usando la misma función que cuando adquirió los datos de entrenamiento, solo que esta vez llama a la función clasificar que adivinará una clase de objeto cuando le muestres un color:

 readColor (color);

 // Clasifica el objeto
 clasificación = myKNN.classify (color, K); 

Puede intentar mostrarle un objeto y ver cómo funciona:

 Déjame adivinar tu objeto
0.44,0.28,0.28
Me mostraste una manzana 

Nota: No será 100% preciso, especialmente si la superficie del objeto varía o las condiciones de iluminación cambian. Puede experimentar con diferentes números de ejemplos, valores para k y diferentes objetos y entornos para ver cómo esto afecta los resultados.

¿Cómo funciona KNN?

Aunque la biblioteca Arduino_KNN hace los cálculos por usted, es útil comprender cómo funcionan los algoritmos de ML al elegir uno para su aplicación. En pocas palabras, el algoritmo KNN clasifica los objetos comparando qué tan cerca están de los ejemplos vistos anteriormente. Aquí hay un gráfico de ejemplo con puntos de datos de temperatura y humedad diarios promedio. Cada ejemplo está etiquetado con una temporada:

Para clasificar un nuevo objeto (el “?” En el gráfico) el clasificador KNN busca los ejemplos anteriores más similares que ha visto. Como hay dos entradas en nuestro ejemplo, el algoritmo hace esto calculando la distancia entre el nuevo objeto y cada uno de los ejemplos anteriores. Puede ver que el ejemplo más cercano arriba está etiquetado como “Invierno”.

La k en KNN es solo el número de ejemplos más cercanos que considera el algoritmo. Con k = 3 cuenta los tres ejemplos más cercanos. En el cuadro anterior, el algoritmo daría dos votos para la primavera y uno para el invierno, por lo que el resultado cambiaría a primavera.

Una desventaja de KNN es que cuanto mayor es la cantidad de datos de ejemplo de entrenamiento, más tiempo necesita pasar el algoritmo KNN comprobando cada vez que clasifica un objeto. Esto hace que KNN sea menos factible para grandes conjuntos de datos y es una gran diferencia entre KNN y un enfoque basado en el aprendizaje profundo.

Clasificación de objetos por color

En nuestro ejemplo de clasificador de color hay tres entradas del sensor de color. Los colores de ejemplo de cada objeto pueden considerarse como puntos en un espacio tridimensional posicionado en los ejes rojo, verde y azul. Como de costumbre, el algoritmo KNN adivina los objetos al verificar qué tan cerca están las entradas de los ejemplos vistos anteriormente, pero debido a que hay tres entradas esta vez, tiene que calcular las distancias en el espacio tridimensional . Cuantas más dimensiones tengan los datos, más trabajo tendrá para calcular el resultado de la clasificación.

Más pensamientos

Esto es solo una muestra rápida de lo que es posible con KNN. Encontrará un ejemplo para la orientación del tablero en los ejemplos de la biblioteca, así como un ejemplo simple para que pueda construir. Puede usar cualquier sensor en la placa BLE Sense como entrada, e incluso combinar KNN con otras técnicas de ML.

Por supuesto, hay otros recursos de aprendizaje automático disponibles para Arduino que incluyen Tutoriales de TensorFlow Lite así como soporte de herramientas profesionales como Edge Impulse y Qeexo . Invitaremos a más expertos a explorar más el aprendizaje automático en Arduino en las próximas semanas.

Puede seguir cualquier respuesta a esta entrada a través del feed RSS 2.0 .
Puede dejar una respuesta o trackback desde su propio sitio.

Fuente:

Simple machine learning with Arduino KNN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?