Rulați cod de învățare automată într-un nod IoT embedded pentru a identifica ușor obiecte

8 FEBRUARIE 2021

Acest articol va arăta dezvoltatorilor cum să implementeze modelul ML TensorFlow Lite pentru Microcontrolere, de la Google, într-un microcontroler produs de Microchip Technology. Articolul va explica, apoi, cum să utilizați clasificarea imaginilor și setul de date de învățare pentru recunoașterea obiectelor cu TensorFlow Lite, pentru a identifica obiecte cu ușurință, cu un minim de programare particularizată. În final, articolul va prezenta kitul de start TensorFlow Lite ML de la Adafruit Industries, care poate familiariza dezvoltatorii cu fundamentele ML.

Operând în medii dinamice, rețelele Internetului Lucrurilor (IoT) se extind dincolo de detectarea obiectelor, pentru a include identificarea vizuală a obiectelor în aplicații de securitate, monitorizare mediu, protecție și IoT industrial (IIoT). Deoarece identificarea obiectelor este adaptivă și implică modele de învățare automată ML (machine learning), acesta este un domeniu complex, care poate fi dificil de învățat, de la zero și de aplicat eficient.

Dificultatea derivă din faptul că un model ML este la fel de bun, pe cât este setul său de date, iar odată ce datele achiziționate sunt corecte, sistemul trebuie să fie instruit în mod corespunzător astfel încât acțiunea acestuia să fie una practică.

ML pentru sisteme integrate de viziune

ML, în sens larg, conferă unui computer sau unui sistem embedded o capacitate de recunoaștere a tiparelor asemănătoare omului. Din punct de vedere senzorial (uman), aceasta înseamnă utilizarea unor senzori precum microfoane și camere, pentru a imita percepțiile senzoriale umane asupra auzului și văzului. Deși senzorii sunt ușor de utilizat pentru a capta date audiovizuale, odată ce datele sunt digitizate și stocate, acestea trebuie procesate pentru a le compara cu modelele stocate în memorie, care reprezintă sunete și obiecte cunoscute. Provocarea constă în faptul că datele de imagine captate de o cameră fixată asupra obiect nu se vor potrivi exact cu datele stocate în memorie pentru acel obiect. O aplicație ML, care trebuie să identifice vizual obiectul, trebuie să proceseze datele pentru a putea potrivi cu precizie și eficiență modelul captat de cameră cu un model stocat în memorie.

Există diferite biblioteci sau motoare utilizate pentru potrivirea datelor captate de senzori. TensorFlow este o bibliotecă de cod open-source, utilizată pentru a compara modelele. Biblioteca de coduri TensorFlow Lite pentru Microcontrolere este special creată pentru a rula pe un microcontroler și, în consecință, a redus cerințele de memorie și procesare (CPU) pentru a putea rula pe un hardware mai limitat. Mai exact, TensorFlow Lite necesită un microcontroler pe 32 de biți și utilizează mai puțin de 25 KB de memorie flash.

Cu toate acestea, chiar dacă TensorFlow Lite pentru Microcontrolere este motorul ML, sistemul are încă nevoie de un set de date de învățare a tiparelor (modelelor) pe care trebuie să le identifice. Indiferent de cât de bun ar fi motorul ML, sistemul este la fel de bun pe cât este setul său de date de învățare, iar pentru imagini, unele seturi de date de învățare pot necesita mai mulți gigaocteți de date pentru multe modele mari. Mai multe date necesită performanțe mai mari ale procesorului, pentru a găsi rapid o potrivire exactă, motiv pentru care aceste tipuri de aplicații rulează în mod normal pe computere puternice sau laptopuri performante, de ultimă generație.

Pentru o aplicație de sistem embedded, numai acele tipare specifice, care sunt solicitate de aplicație ar trebui să fie stocate într-un set de date de învățare. Dacă, de exemplu, un sistem ar trebui să recunoască unelte și dispozitive hardware, atunci modelele care reprezintă fructe și jucării pot fi eliminate. Acest lucru reduce dimensiunea setului de date de învățare, care la rândul său scade cerințele de memorie ale sistemului embedded, îmbunătățind astfel performanța și reducând, în același timp, costurile.

Un microcontroler ML

Figura 1: ATSAMD51J19A se bazează pe un nucleu Arm Cortex-M4F ce operează la 120 MHz. Este un microcontroler complet, cu 512 KB de memorie flash și 192 KB de memorie SRAM. (Sursă imagine: Microchip Technology)

Pentru a rula TensorFlow Lite pentru Microcontrolere, Microchip Technology și-a propus ca țintă pentru implementarea învățării automate în microcontrolere, dispozitivul ATSAMD51J19A-AFT bazat pe Arm® Cortex®-M4F (Figura 1). Acest microcontroler dispune de 512 KB (Kbytes) de memorie flash și 192 KB de memorie SRAM și rulează la 120MHz. ATSAMD51J19A-AFT face parte din familia de microcontrolere ML ATSAMD51 de la Microchip Technology. Este conform cu standardele de calitate AEC-Q100 Grade 1 din industria auto și operează la temperaturi cuprinse între -40°C și +125°C, putând fi utilizat în cele mai dure medii IoT și IIoT. Este un microcontroler de joasă tensiune și operează de la 1,71 la 3,63V, atunci când frecvența de lucru este 120 MHz.

Opțiunile de rețea ale ATSAMD51J19A includ CAN 2.0B pentru rețele industriale și 10/100 Ethernet pentru majoritatea rețelelor cu fir. Acest lucru permite microcontrolerului să funcționeze într-o varietate de rețele IoT. Interfața USB 2.0 suportă ambele moduri de operare – gazdă și dispozitiv – putând fi utilizată pentru depanarea dispozitivului sau pentru conectare în rețea.

Atunci când se procesează cod ML, performanțele sunt îmbunătățite cu ajutorul unei memorii cache de 4 KB. Unitatea în virgulă mobilă (FPU) este, de asemenea, utilă atât pentru îmbunătățirea acestor performanțe, cât și pentru procesarea datelor brute de la senzori.

Stocarea seturilor de date de învățare

ATSAMD51J19A dispune și de o interfață QSPI pentru stocarea externă a programului sau a datelor. Acest lucru este util pentru stocarea datelor suplimentare pentru seturile de date de învățare, care depășesc capacitatea memoriei flash de pe cip. QSPI suportă, de asemenea, XiP (eXecute in Place) pentru extinderea memoriei de program externe de mare viteză.

ATSAMD51J19A beneficiază și de un controler gazdă pentru card de memorie SD/MMC (SDHC), care este foarte util pentru aplicații ML, deoarece permite o alocare eficientă a memoriei (swapping) în ceea ce privește spațiul de memorie necesar codării ML și seturilor de date de învățare. În timp ce motorul TensorFlow Lite pentru Microcontrolere „se descurcă” cu 512 Kbyte de memorie flash disponibilă pe ATSAMD51J19A, seturile de date de învățare, fiind actualizate și îmbunătățite regulat, au nevoie de mai multă memorie. Setul de date de învățare poate fi stocat într-o memorie flash QSPI externă sau EEPROM QSPI și, în funcție de configurația rețelei poate fi actualizat de la distanță prin rețea. Totuși, pentru unele sisteme, ar putea fi mult mai convenabil să înlocuiți fizic un card de memorie cu un altul care dispune de un set de date de învățare îmbunătățit. În această configurație, dezvoltatorul trebuie să decidă dacă sistemul ar trebui proiectat pentru înlocuirea cardului de memorie în timpul funcționării (hot-swap) sau dacă nodul IoT trebuie să fie oprit.

Dacă nodul IoT are constrângeri extreme legate de spațiu, atunci, în loc să utilizați memoria externă, poate fi avantajos să introduceți cât mai mult din aplicație în memoria microcontrolerului. ATSAMD51J20A-AFT de la Microchip Technology este similar (și pin compatibil) cu ATSAMD51J19A, dar dispune, în schimb, de 1 MB (Mbyte) de memorie flash și de 256 KB de memorie SRAM, oferind mai mult spațiu de stocare pe cip pentru seturile de date de învățare.

Dezvoltare cu TensorFlow Lite pentru Microcontrolere

Figura 2: Kitul de dezvoltare 4317 TensorFlow Lite pentru Microcontrolere de la Adafruit Industries vine cu ecran TFT LCD color pentru dezvoltare și poate afișa rezultatele operațiilor ML. (Sursă imagine: Adafruit Industries)

Adafruit Industries asigură suport pentru dezvoltarea de aplicații cu ATSAMD51J19A prin kitul de dezvoltare 4317 TensorFlow Lite pentru Microcontrolere (Figura 2). Placa are 2 MB de memorie flash QSPI, ce poate fi utilizată pentru a stoca seturi de date de învățare. De asemenea, aceasta dispune de un conector jack pentru microfon, pentru recunoaștere audio ML. Ecranul său TFT LCD color, de 1,8 inch, 160 × 128 poate fi utilizat pentru dezvoltare și depanare, dar și pentru demonstrații de recunoaștere voce, atunci când TensorFlow Lite pentru Microcontrolere este folosit cu un set de date de învățare a recunoașterii vocii. Dacă aplicația recunoaște diferite cuvinte, acestea pot fi afișate pe ecran.

Kitul Adafruit Industries conține, de asemenea, opt butoane cu apăsare, un accelerometru pe trei axe, un senzor de lumină, un mini-difuzor și o baterie litiu-polimer. Portul USB 2.0 de pe ATSAMD51J19A este folosit pentru încărcarea bateriei, pentru depanare și programare.

Kitul Adafruit dispune de cea mai recentă versiune a TensorFlow Lite pentru Microcontrolere. Seturile de date de învățare pot fi încărcate în memoria flash de 512 KB a microcontrolerului ATSAMD51J19A utilizând portul USB sau pot fi încărcate într-o memorie externă QSPI de 2 MB.

Pentru evaluarea recunoașterii imaginii, setul de învățare pentru detectarea obiectelor TensorFlow poate fi încărcat în placa de dezvoltare. Aceasta dispune de porturi pentru conectarea la porturile seriale și paralele ale microcontrolerului, multe dintre ele putând fi utilizate pentru conectare la o cameră externă. Cu setul de învățare pentru detectarea obiectelor încărcat în microcontroler, ecranul LCD poate fi utilizat pentru a afișa rezultatele procesării ML de detectare a obiectelor, astfel încât, dacă recunoaște o banană, ecranul TFT ar putea afișa obiectele recunoscute împreună cu un procent de încredere. Un exemplu de afișare a rezultatelor ar putea arăta astfel:

Banană: 95%
Cheie: 12%
Ochelari: 8%
Pieptene: 2%

Acest kit accelerează dezvoltarea de aplicații IoT de recunoaștere a obiectelor și ajută la diagnosticarea rezultatelor de detecție incorecte.

Concluzie

ML este un domeniu în expansiune, care necesită abilități specializate pentru a dezvolta, de la zero, modele și motoare de microcontrolere, pentru ca, apoi, acestea să fie implementate eficient la marginea rețelei. Totuși, prin utilizarea unei biblioteci de cod existente – precum Tensor Flow Lite pentru Microcontrolere – în microcontrolere ieftine, dar foarte eficiente sau în plăci de dezvoltare, se reduc costurile și timpul de dezvoltare, rezultând un sistem ML de înaltă performanță, care poate fi utilizat pentru a detecta obiecte într-un nod IoT rapid, fiabil și eficient.

Pentru mai multe informații despre TensorFlow și ML, intrați pe maker.io și examinați aceste proiecte:

Autor:  Rolf Horn, Inginer de aplicații la Digi-Key Electronics

Digi-Key Electronics   |    https://www.digikey.ro

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre