Inteligența artificială a lucrurilor – Implementarea pe microcontrolere

9 NOIEMBRIE 2021

În ultimii ani, s-a înregistrat o explozie a numărului de dispozitive IoT conectate în piețe atât de diverse precum automatizarea industrială, casele inteligente, automatizarea clădirilor și dispozitivele purtabile. Aceste dispozitive conectate, sau “lucruri”, au o trăsătură comună – toate comunică între ele și fac schimb de date generate de mai mulți senzori. O nouă prognoză de la International Data Corporation estimează că vor exista 41,6 miliarde de dispozitive IoT conectate, sau "lucruri", care vor genera 79,4 zettabytes (ZB) de date în 2025.

Pe măsură ce numărul de dispozitive conectate crește, la fel se întâmplă și cu cantitatea de date generate. Aceste date pot fi colectate și, în multe cazuri, analizate și utilizate pentru a lua decizii pe propriile dispozitive, fără a fi nevoie de conectivitate la cloud. Această abilitate de a analiza datele, de a extrage informații din ele și de a lua decizii autonome pe baza analizei, reprezintă esența inteligenței artificiale (AI). O combinație între AI și IoT, sau Inteligența artificială a lucrurilor (Artificial Intelligence of Things – AIoT), permite crearea de dispozitive “inteligente” care învață din date și iau decizii în mod independent, fără intervenție umană. Acest lucru determină ca produsele să aibă interacțiuni mai logice cu mediul înconjurător, similare cu cele ale oamenilor.

Există o serie de factori determinanți pentru această tendință de a crea inteligență pe dispozitivele periferice (edge) – creșterea procesului decizional la marginea sistemului reduce latența și costurile asociate conectivității în cloud și face posibilă operarea în timp real. Lipsa lățimii de bandă către cloud este un alt motiv pentru a muta calculul și luarea deciziilor pe dispozitivul edge. Securitatea este, de asemenea, un aspect de luat în considerare – cerințele de intimitate și confidențialitate a datelor impun ca acestea să fie procesate și stocate chiar pe dispozitivul respectiv.

Combinația dintre AI și IoT a deschis noi piețe pentru microcontrolere. Ea a permis un număr tot mai mare de noi aplicații și cazuri de utilizare care pot folosi microcontrolere combinate cu accelerare AI pentru a facilita controlul inteligent. Aceste microcontrolere activate de AI oferă o combinație unică de capabilitate DSP pentru calcul și învățare automată (ML) pentru inferență și sunt utilizate acum în aplicații atât de diverse, cum ar fi detectarea cuvintelor cheie, fuziune de senzori, analiza vibrațiilor și recunoașterea vocii. Microcontrolerele cu performanțe mai ridicate permit aplicații mai complexe în domeniul viziunii și imagisticii, cum ar fi recunoașterea feței, analiza amprentelor digitale și roboții autonomi.

Tehnologii AI

După cum s-a discutat, AI este tehnologia care permite dispozitivelor IoT să învețe din datele anterioare, să ia decizii și să își ajusteze răspunsurile pe baza unor noi date, toate acestea fără intervenția oamenilor. Iată câteva tehnologii care permit utilizarea inteligenței artificiale în dispozitivele IoT:

Machine learning (ML): Algoritmii de învățare automată construiesc modele pe baza datelor reprezentative, permițând dispozitivelor să identifice modele în mod automat, fără intervenție umană. Furnizorii de ML oferă algoritmi, API-uri și instrumente necesare pentru a instrui modele ce pot fi apoi integrate în sistemele embedded. Aceste sisteme încorporate utilizează apoi modelele preinstruite pentru a face inferențe sau predicții pe baza unor noi date de intrare. Exemple de aplicații sunt hub-uri de senzori, detectare cuvinte cheie, întreținere predictivă și clasificare.

Deep learning: Învățarea profundă este o formă de învățare automată care instruiește un sistem prin utilizarea mai multor straturi ale unei rețele neuronale pentru a extrage progresiv caracteristici și informații de nivel superior din date de intrare complexe. Învățarea profundă funcționează cu date de intrare foarte mari, diverse și complexe și permite sistemelor să învețe iterativ, îmbunătățind rezultatul la fiecare pas. Exemple de aplicații care utilizează învățarea profundă sunt procesarea imaginilor, chatbots (entitate artificială conversațională) pentru serviciul de relații cu clienții și recunoașterea fețelor.

Natural language processing (NLP): Procesarea limbajului natural este o ramură a inteligenței artificiale care se ocupă de interacțiunea dintre sisteme și oameni folosind limbajul natural. NLP ajută sistemele să înțeleagă și să interpreteze limbajul uman (text sau vorbire) și să ia decizii pe baza acestuia. Exemple de aplicații sunt sistemele de recunoaștere a vorbirii, traducerea automată și dactilografierea predictivă.

Computer vision: Viziunea automată/computerizată este un domeniu al inteligenței artificiale care instruiește mașinile să colecteze, să interpreteze și să înțeleagă date de imagine și să ia măsuri pe baza acestor date. Mașinile colectează imagini/video digitale de la camerele de luat vederi, utilizează modele de învățare profundă și instrumente de analiză a imaginilor pentru a identifica și clasifica cu precizie obiectele și pentru a acționa pe baza a ceea ce “văd”. Exemple: detectarea defecțiunilor pe linia de asamblare în producție, diagnosticarea medicală, recunoașterea fețelor în magazinele de vânzare cu amănuntul și testarea mașinilor fără șofer.

AIoT bazată pe microcontrolere

Figura 1: Instruirea și inferența rețelei neuronale (© Renesas)

În trecut, AI era apanajul microprocesoarelor (MPU) și al unităților de procesare grafică (GPU) cu nuclee CPU puternice, resurse de memorie mari și conectivitate în cloud pentru analiză. În ultimii ani însă, odată cu tendința de extindere a inteligenței la periferie, observăm cum microcontrolerele încep să fie utilizate în aplicații AIoT embedded. Mutarea către margine este determinată de considerente legate de latență și de costuri și implică mutarea calculului mai aproape de date. Inteligența artificială implementată pe dispozitivele IoT bazate pe microcontroler permite luarea de decizii în timp real și un răspuns mai rapid la evenimente, având ca avantaje cerințe mai mici de lățime de bandă, consum redus de putere, latență mai mică, costuri mai mici și securitate mai mare. AIoT este susținută de capabilitatea de calcul mai mare a microcontrolerelor recente, precum și de disponibilitatea unor structuri de rețele neuronale (NN – neural network) mai potrivite pentru microcontrolerele cu resurse limitate, care sunt utilizate în aceste dispozitive terminale.

O rețea neuronală este o colecție de noduri, dispuse în straturi care primesc informații de intrare de la un strat anterior și generează o ieșire care este calculată dintr-o sumă ponderată și polarizată a intrărilor. Această ieșire este transmisă stratului următor de-a lungul tuturor conexiunilor sale de ieșire. În timpul instruirii, datele de instruire sunt introduse în primul strat sau în stratul de intrare al rețelei, iar ieșirea din fiecare strat este transmisă la următorul. Ultimul strat sau stratul de ieșire generează predicțiile modelului, care sunt comparate cu valorile așteptate cunoscute pentru a evalua eroarea modelului. Procesul de instruire implică rafinarea sau ajustarea ponderilor și polarizărilor fiecărui strat al rețelei la fiecare iterație, folosind un proces numit ‘backpropagation’ (retropropagare), până când ieșirea rețelei se corelează îndeaproape cu valorile așteptate. Cu alte cuvinte, rețeaua “învață” iterativ din setul de date de intrare și îmbunătățește progresiv precizia predicției de ieșire.

Instruirea rețelei neuronale necesită performanțe de calcul și memorie foarte ridicate și se realizează, de obicei, în cloud. După instruire, acest model NN preinstruit este încorporat în microcontroler și utilizat ca motor de inferență pentru noile date primite, pe baza instruirii sale.

Această generare a inferenței necesită o performanță de calcul mult mai mică decât antrenarea modelului și, prin urmare, este potrivită pentru un microcontroler. Ponderile acestui model NN preinstruit sunt fixe și pot fi plasate în memoria flash, reducând astfel cantitatea de memorie SRAM necesară și făcându-l potrivit pentru microcontrolerele cu resurse mai limitate.

Implementarea pe microcontrolere

Implementarea AIoT pe microcontrolere presupune câțiva pași. Cea mai frecventă abordare constă în utilizarea uneia dintre structurile de rețele neuronale (NN) disponibile, cum ar fi Caffe sau Tensorflow Lite, potrivite pentru soluții de dispozitive terminale bazate pe microcontroler. Instruirea modelului NN pentru învățare automată se face în cloud de către specialiști în AI, folosind instrumente oferite de furnizorii de AI. Optimizarea modelului NN și integrarea în microcontroler se realizează cu ajutorul instrumentelor livrate de furnizorul de AI și de producătorul microcontrolerului. Inferențierea se realizează pe microcontroler folosind modelul NN preinstruit.

Prima etapă a procesului se realizează complet offline și presupune colectarea unei cantități mari de date de la dispozitivul terminal sau de la aplicație, care este apoi utilizată pentru a instrui modelul NN. Topologia modelului este definită de către dezvoltatorul AI pentru a utiliza cât mai bine datele disponibile și pentru a furniza rezultatul necesar pentru aplicația respectivă. Instruirea modelului NN se face prin trecerea iterativă a seturilor de date prin model, cu scopul de a minimiza continuu eroarea la ieșirea modelului. Există instrumente disponibile în cadrul NN care pot ajuta în acest proces.

În cea de-a doua etapă, aceste modele preinstruite, optimizate pentru anumite funcții, cum ar fi detectarea cuvintelor cheie sau recunoașterea vorbirii, sunt convertite într-un format adecvat pentru microcontrolere. Primul pas în acest proces este convertirea într-un fișier ‘flat buffer’ (n.red.: o bibliotecă software) cu ajutorul unui convertor AI. Opțional, acesta poate fi rulat prin cuantificator, pentru a reduce dimensiunea și a-l optimiza pentru microcontroler. Acest fișier flat buffer este apoi convertit în cod C și transferat către microcontrolerul țintă ca fișier executabil.

Figura 2: Implementarea AI pe microcontrolere folosind modele preinstruite offline (© Renesas)

Microcontrolerul, echipat cu modelul AI încorporat preinstruit, poate fi acum integrat în dispozitivul final. Atunci când intră date noi, acestea sunt rulate prin model și se generează o inferență pe baza instruirii. Atunci când apar noi tipuri de date, modelul NN poate fi trimis înapoi în cloud pentru reinstruire, iar noul model reinstruit poate fi programat pe microcontroler, eventual prin actualizări de firmware OTA.

Există două moduri diferite în care poate fi arhitecturizată o soluție de inteligență artificială bazată pe microcontroler. În scopul acestei discuții, presupunem utilizarea nucleelor Arm Cortex-M în microcontrolerele țintă.

În prima metodă, modelul NN convertit este executat în nucleul CPU Cortex-M și este accelerat cu ajutorul bibliotecilor CMSIS-NN. Aceasta este o configurație simplă, care poate fi gestionată fără accelerare hardware suplimentară și este potrivită pentru aplicațiile AI mai simple, cum ar fi identificarea cuvintelor cheie, analiza vibrațiilor și hub-urile de senzori.

O opțiune mai sofisticată și mai performantă presupune includerea unui accelerator NN sau a unui hardware de tip Micro Neural Processing Unit (u-NPU) în microcontroler. Aceste u-NPU accelerează învățarea automată în dispozitivele terminale IoT cu resurse limitate și ar putea suporta compresia care poate reduce puterea și dimensiunea modelului. Ele suportă operatori care pot executa integral majoritatea rețelelor NN uzuale pentru procesarea audio, recunoașterea vorbirii, clasificarea imaginilor și detectarea obiectelor. Rețelele care nu sunt suportate de u-NPU pot fi transferate în nucleul principal al procesorului fiind accelerate de bibliotecile CMSIS-NN. În această metodă, modelul NN este executat în u-NPU.

Aceste metode arată doar câteva modalități de încorporare a AI în dispozitivele bazate pe microcontroler. Pe măsură ce microcontrolerele împing limitele de performanță la niveluri mai ridicate, mai apropiate de cele așteptate de la microprocesoare, sperăm să ajungem să vedem capabilități complete de inteligență artificială, inclusiv algoritmi ușori de învățare și de inferență, integrate direct în microcontrolere.

Renesas și AI

Renesas dispune de o familie cuprinzătoare de microcontrolere bazate pe Arm, familia RA, aceasta fiind capabilă să ruleze aplicații de inteligență artificială. Toate microcontrolerele din familia RA suportă nuclee Arm Cortex-M și un set bogat de caracteristici care include memorie Flash și SRAM on-chip și periferice pentru comunicații seriale, Ethernet, funcții grafice/HMI și analogice. De asemenea, acestea suportă securitate avansată cu criptografie simetrică și asimetrică, stocare imuabilă, izolare a activelor de securitate și rezistență la falsificare.

Renesas colaborează îndeaproape cu partenerii din ecosistem pentru a aduce soluții AI end-to-end în domeniul analizei predictive, al aplicațiilor de viziune și al aplicațiilor vocale, printre altele. Aceste noi tehnologii AIoT au deschis noi oportunități semnificative pentru microcontrolerele Renesas. Aplicațiile care utilizează aceste capabilități acoperă segmente de piață precum automatizarea industrială, locuințe inteligente, automatizarea clădirilor, sănătate și agricultură.

Soluția “e-AI” (embedded AI) de la Renesas utilizează ambele modele NN populare, Caffe dezvoltat de UC Berkeley și TensorFlow de la Google. Aceasta utilizează Deep Neural Network (DNN), o rețea multistrat, deosebit de potrivită pentru aplicații care implică clasificarea imaginilor, recunoașterea vocii sau procesarea limbajului natural.

Instrumentele Renesas e-AI încorporate în mediul de dezvoltare integrat e2 Studio convertesc modelul NN într-o formă (bazată pe C/C++) ce poate fi utilizată de microcontroler și ajută la implementarea modelului NN preinstruit pe microcontrolerul țintă. Acest microcontroler activat de AI poate fi acum integrat în dispozitive terminale IoT.

Viitorul înseamnă AI la marginea rețelei

Implementarea AI pe microcontrolere cu resurse limitate va crește exponențial în viitor și vom continua să asistăm la apariția unor noi aplicații și cazuri de utilizare pe măsură ce microcontrolerele vor depăși limitele de performanță și vor estompa linia de demarcație dintre microcontrolere și microprocesoare, iar modelele NN din ce în ce mai “subțiri”, potrivite pentru dispozitive cu resurse limitate, vor deveni disponibile. În viitor, odată cu îmbunătățirea performanțelor microcontrolerelor, vom asista probabil la implementarea unor algoritmi de învățare ușori, pe lângă inferență, care să fie executați direct pe microcontroler. Acest lucru va deschide noi piețe și aplicații pentru producătorii de microcontrolere și va deveni un domeniu de investiții importante pentru aceștia.

Autor: Kavita Char, Renesas Electronics

Despre autor: Kavita Char este Senior Staff Product Marketing Manager la Renesas Electronics America. Are peste 20 de ani de experiență în inginerie software/aplicații și în roluri de management de produs. Datorită unei experiențe vaste în domeniul aplicațiilor IoT, al microcontrolerelor și al conectivității wireless, ea este acum responsabilă la Renesas cu definirea și organizarea de la concept și până la lansarea pe piață a următoarei generații de microcontrolere și soluții de înaltă performanță bazate pe Arm.

Renesas Electronics Europe  |    https://www.renesas.com

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