SEK | EUR | USD

Kör maskininlärningskod i en inbäddad IoT-nod för att enkelt identifiera objekt

Av Bill Giovino

Bidraget med av Digi-Keys nordamerikanska redaktörer

IoT-nätverk (sakernas internet) som körs i dynamiska miljöer kan expanderas till att utöver objektdetektering inkludera visuell objektidentifiering inom tillämpningar som säkerhet, miljöövervakning, säkerhet och industriellt IoT (IIoT). Eftersom objektidentifiering är adaptiv och involverar användning av maskininlärningsmodeller (ML) är det ett komplext fält som kan vara svårt att lära sig från grunden och att implementera effektivt.

Svårigheten beror på det faktum att en ML-modell bara är lika bra som sin datamängd, och när rätt data har inhämtats måste systemet tränas upp ordentligt för att agera på datan för att fungera praktiskt.

Denna artikel visar utvecklare hur man implementerar Googles TensorFlow Lite for Microcontrollers ML-modell i en microcontroller från Microchip Technology . Sedan förklaras hur man använder bildklassificering och inlärningsdatamängder för objektdetektering med TensorFlow Lite för att enkelt identifiera objekt med ett minimum av egen kodning.

Därpå introduceras ett TensorFlow Lite ML-startpaket frånAdafruit Industries som kan låter utvecklare göra sig förtrogna med grunderna i ML.

ML för inbäddade maskinsynssystem

ML i vid bemärkelse ger en dator eller ett inbäddat system liknande mönsterigenkänningsförmågor som en människa. Ur en mänsklig sensorisk synpunkt betyder det att man använder sensorer som mikrofoner och kameror för att efterlikna mänskliga sinnesförmågor som hörsel och syn. Sensorer är enkla att använda för att fånga upp ljud och visuell data. Men datan måste behandlas så att den kan matchas mot lagrade mönster i minnet som representerar kända ljud eller objekt när de digitaliserats och lagrats. Utmaningen är att bilddata som exempelvis tagits av en kamera för ett visuellt objekt, inte exakt matchar den lagrade datan i minnet för ett objekt. En ML-applikation som behöver identifiera objektet visuellt, måste bearbeta data så att den kan matcha det mönster som fångas av kameran exakt och effektivt till ett mönster som lagras i minnet.

Det finns olika bibliotek och motorer som används för att matcha data som registrerats av sensorerna. TensorFlow är ett kodbibliotek med öppen källkod som används för att matcha mönster. TensorFlow Lite for Microcontrollers kodbibliotek är speciellt utformat för att köras på en microcontroller och har därför ett lägre krav på minne och processor för att köras på mer begränsad hårdvara. Specifikt kräver den en 32-bitars microcontroller och använder mindre än 25 Kb flashminne.

TensorFlow Lite for Microcontrollers utgör ML-motorn men systemet behöver fortfarande en inlärningsdatamängd av de mönster det ska identifiera. Oavsett hur bra ML-motorn är, är systemet bara lika bra som dess inlärningsmängd, och för visuella objekt kan en del av inlärningsmängderna kräva flera gigabyte data för många stora modeller. Mer data kräver högre processorprestanda för att snabbt hitta en exakt matchning, varför dessa typer av applikationer normalt körs på kraftfulla datorer eller avancerade laptops.

För en inbäddad systemapplikation bör det bara behövas att man lagrar de specifika modeller som är nödvändiga för applikationen i en inlärningsdatamängd. Om ett system ska känna igen verktyg och komponenter kan modeller som representerar frukt och leksaker tas bort. Detta minskar storleken på inlärningsdatamängden, vilket i sin tur minskar minnesbehovet för det inbäddade systemet, vilket förbättrar prestandan samtidigt som kostnaderna sänks.

En ML-microcontroller

För att köra TensorFlow Lite for Microcontrollers, fokuserar Microchip Technology på maskininlärning i microcontrollers med den Arm® Cortex®-M4F-baserade ATSAMD51J19A-AFT-microcontrollern (Figur 1). Den har 512 kbyte flashminne med 192 Kb SRAM-minne och körs med 120 MHz. ATSAMD51J19A-AFT är en del av Microchip Technologys ATSAMD51 ML-microcontrollerfamilj. Den överensstämmer med fordonskvalitetsstandarden AEC-Q100 och kan köras mellan -40 och +125 °C, vilket gör den lämplig för de hårdaste IoT- och IIoT-miljöerna. Det är en lågspänningsmicrocontroller som matas med 1,71-3,63 volt när den körs vid 120 MHz.

Diagram över Microchip ATSAMD51J19A är baserad på en Arm Cortex-M4F-kärna (klicka för att förstora)Figur 1: ATSAMD51J19A är baserad på en Arm Cortex-M4F-kärna som körs vid 120 MHz. Det är en komplett microcontroller med 512 Kb flash och 192 Kb SRAM. (Bildkälla: Microchip Technology)

Nätverksalternativen för ATSAMD51J19A inkluderar CAN 2.0B för industriella nätverk och 10/100 Ethernet för de flesta trådbundna nätverk. Detta gör att microcontrollern fungerar med en mängd olika IoT-nätverk. Ett USB 2.0-gränssnitt stöder både värdläge och enhetsläge och kan användas för enhetsfelsökning eller systemnätverk.

En 4 Kb kombinerad instruktions- och datacache förbättrar prestandan vid behandling av ML-kod. En flyttalsprocessor (FPU) är också användbar för att förbättra prestandan på ML-koden samt för att behandla rå sensordata.

Lagring av inlärningsdatamängder

ATSAMD51J19A har också ett QSPI-gränssnitt för extern lagring av program- eller dataminne. Detta är användbart för ytterligare datalagring om inlärningsdatamängderna överskrider kapaciteten för flashminnet på chipet. QSPI har också eXecute in Place (XiP) stöd för extern, snabb programminnesexpansion.

ATSAMD51J19A har också en SD/MMC-minneskortsvärdkontroll (SDHC) vilket är mycket användbart för ML-applikationer, eftersom det gör det enkelt att byta plats på ML-kod och inlärningsdatamängder. Medan TensorFlow Lite for Microcontrollers-motorn kan köras med 512 Kb-flashminnet på ATSAMD51J19A, kan inlärningsdatamängderna uppgraderas och förbättras regelbundet. Inlärningsdatamängden kan lagras i ett externt QSPI-flash eller QSPI EEPROM och kan, beroende på nätverkskonfigurationen, fjärruppgraderas via nätverket. För vissa system kan det dock vara mer praktiskt att fysiskt byta ut ett minneskort mot ett annat som har en förbättrad inlärningsdatamängd. I denna konfiguration måste utvecklaren bestämma om systemet ska utformas för att "hot-swappa" minneskortet eller om IoT-noden måste stängas av.

Om IoT-noden är extremt utrymmesbegränsad, skulle det istället för att använda externt minne vara fördelaktigt att lägga så mycket av applikationen som möjligt i microcontrollerminnet. Microchip Technologys ATSAMD51J20A-AFT liknar och är stiftkompatibel med ATSAMD51J19A, förutom att den har 1 Mbyte flash och 256 Kb SRAM, vilket ger mer lagring på chippet för inlärningsdatamängder.

Utveckla med TensorFlow Lite for Microcontrollers

Adafruit Industries stöder utveckling på ATSAMD51J19A med4317-utvecklingssatsen TensorFlow Lite for Microcontrollers (figur 2). Kortet har 2 Mbyte QSPI-flash som kan användas för att lagra inlärningsdatamängder. Satsen levereras med ett mikrofonuttag för ML-ljudigenkänning. Dess 1,8 tums 160x128 TFT LCD-färgskärm kan användas för utveckling och felsökning. Displayen kan också användas för demos för röstigenkänning när TensorFlow Lite for Microcontrollers används med en datauppsättning för inlärning av röstigenkänning. Vartefter applikationen känner igen olika ord kan de visas på skärmen.

Adafruit Industries-satsen har också åtta tryckknappar, en treaxlig accelerometer, en ljussensor, en minihögtalare och ett litiumpolymer-batteri. USB 2.0-porten på ATSAMD51J19A har förts ut till en kontakt för batteriladdning, felsökning och programmering.

Bild på Adafruit Industries 4317 TensorFlow Lite för MicrocontrollersFigur 2: Adafruit Industries 4317-utvecklingssats TensorFlow Lite för Microcontrollers levereras med en TFT färg-LCD för utveckling och kan visa resultaten av ML-arbetsmoment. (Bildkälla: Adafruit Industries)

Adafruit-satsen levereras med den senaste versionen av TensorFlow Lite for Microcontrollers. Inlärningsdatamängderna kan laddas in med USB-porten i ATSAMD51J19A-microcontrollerns 512 Kb flashminne eller laddas i det externa 2 Mb QSPI-minnet.

För utvärdering av bildigenkänning kan TensorFlow-inlärningsmängden för objektdetektering laddas till utvecklingskortet. Utvecklingskortet har portar för anslutning till microprocessorns parallella och seriella portar, varav många kan användas för att ansluta till en extern kamera. Med objektdetekteringsdatamängden laddad till microcontrollern kan LCD-skärmen användas för att visa resultaten från ML-processningen för objektdetektering. Så om den känner igen en banan kan TFT-skärmen visa de objekt som känns igen tillsammans med en konfidensprocentandel. Resultaten kan exempelvis visas som:

Banan: 95 %
Skiftnyckel: 12 %
Glasögon: 8 %
Kam: 2 %

För utveckling av IoT-objektdetekteringsapplikationer kan detta påskynda utvecklingen och hjälpa till att diagnostisera eventuella felaktiga identifieringsresultat.

Slutsats

ML är ett växande område som kräver specialkunskaper för att utveckla microcontrollermotorer och -modeller från grunden och implementera dem effektivt i kanten av molnet. Genom att använda ett befintligt kodbibliotek som TensorFlow Lite for Microcontrollers på billiga, mycket effektiva microcontrollers eller utvecklingskort, kan man spara tid och pengar, vilket resulterar i ett ML-system med hög prestanda som kan användas för att snabbt upptäcka objekt i en IoT-nod, tillfölitligt och effektivt.

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 arbetar som elektronikingenjör och har kandidatexamen i elektroteknik från Syracuse University. Han är en av få personer som med framgång har bytt karriär från konstruktör via fältapplikationsingenjör till att arbeta med marknadsföring av teknik.

I mer än 25 år har Bill arbetat med att marknadsföra ny teknik för en publik både med och utan tekniska kunskaper för många företag (bland dem kan nämnas STMicroelectronics, Intel och Maxim Integrated). På STMicroelectronics var Bill en av de drivande personerna i att leda företagets framgångar på den nya branschen för mikrostyrenheter. På Infineon drev Bill konstruktionen av prisvinnande mikrostyrenheter för bilindustrin i USA. I sin roll som marknadsföringskonsult för CPU Technologies har Bill hjälpt många företag att omvandla mindre framgångsrika produkter till framgångshistorier.

Bill var tidig med att använda sakernas internet, bland annat genom att placera den första kompletta TCP/IP-stacken på en mikrostyrenhet. Bill tror mycket på att försäljning ska bedrivas genom utbildning och att det är allt viktigare med tydlig, välskriven kommunikation för att marknadsföra produkter online. Han är moderator för den populära gruppen Linkedin Semiconductor Sales & Marketing och kan allt om B2E.

Om utgivaren

Digi-Keys nordamerikanska redaktörer