NOK | EUR | USD

Kjør maskinlæringskode i en innebygd IoT-node for enkelt å identifisere objekter

Av Bill Giovino

Bidrag fra Digi-Keys nordamerikanske redaktører

IoT-nettverk (tingenes internett-nettverk) som opererer i dynamiske miljøer utvides utover objektdeteksjon til å omfatte visuell objektidentifikasjon i applikasjoner som sikkerhet, miljøovervåking, sikkerhet og industriell IoT (Industrial IoT - IIoT). Ettersom objektidentifikasjon er adaptiv og innebærer bruk av maskinlæringsmodeller (ML models), er det et komplekst felt som kan være vanskelig å lære fra bunnen av og implementere effektivt.

Problemet stammer fra det faktum at en maskinlæringsmodell bare er så god som datasettet, og når de riktige dataene er anskaffet, må systemet opplæres skikkelig til å reagere på det for å være praktisk.

Denne artikkelen viser utviklere hvordan de implementerer Googles TensorFlow Lite for mikrokontrollerens maskinlæringsmodell i en Microchip Technology-mikrokontroller. Deretter vil den forklare hvordan du bruker bildeklassifiserings- og innlæringsdatasett for objektdeteksjons med TensorFlow Lite for enkelt å identifisere objekter med et minimum av tilpasset koding.

Deretter vil det introdusere et TensorFlow Lite ML startpakke fra Adafruit Industries som kan gjøre utviklere kjent med det grunnleggende i ML.

ML for innebygde visjonssystemer

ML i vid forstand gir en datamaskin eller et innebygd system lignende gjenkjenningsegenskaper som et menneske. Fra et menneskelig sensorisk synspunkt betyr dette å bruke sensorer som mikrofoner og kameraer for å etterligne menneskelige sensoriske oppfatninger av hørsel og syn. Selv om sensorer er enkle å bruke for å ta opp lyd- og visuelle data, må de behandles når dataene er digitalisert og lagret, slik at de kan matches mot lagrede mønstre i minnet som representerer kjente lyder eller objekter. Utfordringen er at bildedataene som tas eksempelvis tas av et kamera for et visuelt objekt, ikke vil samsvare nøyaktig med dataene lagret i minnet for et objekt. En maskinlæringsapplikasjon som trenger å identifisere objektet visuelt, må behandle dataene slik at de kan nøyaktig og effektivt sammenligne mønsteret kameraet har tatt opp, med et mønster som er lagret i minnet.

Det finnes forskjellige biblioteker eller motorer som brukes til å sammenligne dataene som er fanget opp av sensorene. TensorFlow er et kodebibliotek med åpen kildekode som brukes til å sammenligne mønstre. Kodebiblioteket TensorFlow Lite for mikrokontroller er spesielt designet for å kjøres på en mikrokontroller, og har som en konsekvens redusert minne- og prosessorkrav for å kjøre på mer begrenset maskinvare. Spesifikt krever den en 32-bits mikrokontroller og bruker mindre enn 25 kilobyte (Kbyte) flashminne.

Selv om TensorFlow Lite for mikrokontroller er maskinlæringsmotoren, trenger systemet likevel et læringsdatasett med mønstrene det skal identifisere. Uansett hvor god maskinlæringsmotoren er, er systemet bare like godt som læringsdatasettet, og for visuelle objekter, kan noen av læringsdatasettene kreve flere gigabyte data for mange store modeller. Flere data krever høyere prosessorytelse for raskt å finne en nøyaktig samsvar, noe som er grunnen til at disse typene programmer vanligvis kjører på kraftige datamaskiner eller bærbare datamaskiner av høy kvalitet.

For en innebygd systemapplikasjon bør det kun være nødvendig å lagre de spesifikke modellene i et læringsdatasett som er nødvendig for applikasjonen. Hvis et system skal gjenkjenne verktøy og maskinvare, kan modeller som representerer frukt og leker bli fjernet. Dette reduserer størrelsen på læringsdatasettet, noe som igjen reduserer minnebehovet til det innebygde systemet, og dermed forbedrer ytelsen – samtidig som kostnadene reduseres.

En mikrokontroller for maskinlæring

For å kjøre TensorFlow Lite for mikrokontrollere, retter Microchip-teknologien seg mot maskinlæring i mikrokontrollere med den Arm® Cortex®-M4F-baserte ATSAMD51J19A-AFT-mikrokontrolleren (figur 1). Den har 512 Kbyte flashminne med 192 Kbyte SRAM-minne og kjører på 120 megahertz (MHz). ATSAMD51J19A-AFT er en del av Microchip Technology sin mikrokontroller i ATSAMD51-familien. Den er i samsvar med AEC-Q100 klasse 1 kvalitetsstandarder og kjører over -40 °C til +125 °C, noe som gjør den anvendelig i de tøffeste IoT- og IIoT-miljøene. Det er en mikrokontroller som går på lavspennings og opererer fra 1,71–3,63 volt når den kjøres ved 120 MHz.

Skjema for Microchip ATSAMD51J19A som er basert på en Arm Cortex-M4F-kjerne (klikk for å forstørre)Figur 1: ATSAMD51J19A er basert på en Arm Cortex-M4F-kjerne som kjører ved 120 MHz. Det er en komplett mikrokontroller med 512 Kbyte flash og 192 Kbyte SRAM. (Bildekilde: Microchip Technology)

ATSAMD51J19A-nettverksalternativene inkluderer CAN 2.0B for industrielt nettverk og 10/100 Ethernet for de fleste kablede nettverk. Dette gjør at mikrokontrolleren kan fungere på en rekke IoT-nettverk. Et USB 2.0-grensesnitt støtter både verts- og enhetsmodus, samt grensesnittet kan brukes til feilsøking av enheter eller systemnettverk.

En kombinert instruksjons- og datahurtigbuffer på 4 Kbyte forbedrer ytelsen ved behandling av maskinlæringskode. En flytetallsbrikke (floating point unit – FPU) er også nyttig for å forbedre ytelsen til maskinlæringskoden, samt behandle rådata fra sensorer.

Lagre læringsdatasett

ATSAMD51J19A har også et QSPI-grensesnitt for eksternt program eller dataminnelagring. Dette er nyttig for ekstra datalagring av læringsdatasett som overskrider kapasiteten til det integrerte flashminnet på brikken. QSPI har også støtte for eXecute in Place (XiP) for ekstern, hurtig programminneutvidelse.

ATSAMD51J19A har også en SD/MMC-minnekortstyring (SDHC), som er svært nyttig for maskinlæringsapplikasjoner fordi den gir mulighet for enkel minnebytte av maskinlæringskode og læringsdatasett. Mens TensorFlow Lite for mikrokontroller kan kjøre i 512 Kbyte flash på ATSAMD51J19A, kan læringsdatasettene regelmessig oppgraderes og forbedres. Innlæringsdatasettet kan lagres i et ekstern QSPI-flashminne eller en QSPI EEPROM og kan, avhengig av nettverkskonfigurasjonen, oppgraderes eksternt via nettverket. For noen systemer kan det imidlertid være mer praktisk å bytte ut et minnekort fysisk med et annet som har et forbedret læringsdatasett. I denne konfigurasjonen må utvikleren bestemme å utforme systemet med minnekortet for utskiftning under drift (hot-swap), eller om IoT-noden må slås av.

Hvis IoT-noden er ekstremt plassbegrenset, vil det i stedet for å bruke eksternt minne, være en fordel å legge så mye av applikasjonen som mulig inn i mikrokontrollerminnet. Microchip Technology sin ATSAMD51J20A-AFT ligner og er pinnekompatibel med ATSAMD51J19A, bortsett fra at den har 1 Mbyte flash og 256 Kbyte SRAM, noe som gir mer lagring for læringsdatasett på brikken.

Utvikle med TensorFlow Lite for mikrokontrollere

Adafruit Industries støtter utvikling på ATSAMD51J19A med utviklingssettet 4317 TensorFlow Lite for Microcontrollere (figur 2). Kortet har 2 Mbyte QSPI-flashminne som kan brukes til å lagre læringsdatasett. Settet leveres med en mikrofonkontakt for maskinlæring for lydgjenkjenning. Dens 1,8-tommers farge 160 x 128 TFT-LCD-skjerm kan brukes til utvikling og feilsøking. Displayet kan også brukes til stemmegjenkjenningsdemoer når TensorFlow Lite for mikrokontrollere brukes sammen med et læringsdatasett for stemmegjenkjenning. Når applikasjonen gjenkjenner forskjellige ord, kan de vises på skjermen.

Adafruit Industries-settet har også åtte trykknapper, et treakset akselerometer, en lyssensor, en minihøyttaler og et litium-poly-batteri. USB 2.0-porten på ATSAMD51J19A føres ut til en kontakt for batterilading, feilsøking og programmering.

Bilde av Adafruit Industries 4317 TensorFlow Lite for mikrokontrollereFigur 2: Utviklingssettet Adafruit Industries sin 4317 TensorFlow Lite for mikrokontrollere, som leveres med en LCD for utvikling av type farge-TFT som kan vise resultatene av maskinlæringsoperasjoner. (Bildekilde: Adafruit Industries)

Adafruit settet leveres med den nyeste versjonen av TensorFlow Lite for mikrokontrollere. Læringsdatasett kan lastes inn ved hjelp av USB-porten i mikrokontrolleren ATSAMD51J19A sitt 512 Kbyte flashminne eller lastes inn i det eksterne 2 Mbyte QSPI-minnet.

For evaluering av bildegjenkjenning kan TensorFlow læringssett for objektdeteksjon lastes på utviklingskortet. Utviklingskortet har porter for tilkobling til mikrokontrollerens parallellporter og serieporter, hvorav flere kan brukes til å koble til et eksternt kamera. Når læringssettet for objektdeteksjon er lastet på mikrokontrolleren, kan LCD-skjermen brukes til å vise resultatet av resultatene av objektgjenkjenning maskinlæringsprosessering, så hvis den gjenkjenner en banan, kan TFT-skjermen vise gjenstandene som er gjenkjent, sammen med en prosent tillit. Resultatene kan eksempelvis vises som:

Banan: 95 %
Skiftenøkkel: 12 %
Briller: 8 %
Kam: 2 %

dette øke hastigheten på utviklingen For utvikling av applikasjoner for IoT-objektdeteksjon, samt det kan også hjelpe til med å diagnostisere eventuelle feil oppdagelsesresultater.

Konklusjon

ML er et ekspanderende felt som krever spesialiserte ferdigheter for å utvikle mikrokontroller og -modeller fra bunnen av – og implementere dem effektivt på inngangspunktet. Å bruke et eksisterende kodebibliotek som TensorFlow Lite for mikrokontroller på billige, svært effektive mikrokontroller eller utviklingstavler sparer imidlertid både tid og penger, noe som resulterer i et maskinlæringssystem med høy ytelse som kan brukes til å oppdage objekter i en IoT-node på en rask, pålitelig og effektiv måte.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

Om skribenten

Bill Giovino

Bill Giovino is an Electronics Engineer with a BSEE from Syracuse University, and is one of the few people to successfully jump from design engineer, to field applications engineer, to technology marketing.

For over 25 years Bill has enjoyed promoting new technologies in front of technical and non-technical audiences alike for many companies including STMicroelectronics, Intel, and Maxim Integrated. While at STMicroelectronics, Bill helped spearhead the company’s early successes in the microcontroller industry. At Infineon Bill orchestrated the company’s first microcontroller design wins in U.S. automotive. As a marketing consultant for his company CPU Technologies, Bill has helped many companies turn underperforming products into success stories.

Bill was an early adopter of the Internet of Things, including putting the first full TCP/IP stack on a microcontroller. Bill is devoted to the message of “Sales Through Education” and the increasing importance of clear, well written communications in promoting products online. He is moderator of the popular LinkedIn Semiconductor Sales & Marketing Group and speaks B2E fluently.

Om denne utgiveren

Digi-Keys nordamerikanske redaktører