Design en model til billedklassificering på Azure Sphere

Fuldført

I dette modul designer du en lille indlejret kantbilledklassifikationsapplikation til Azure Sphere. Prøven evaluerer et enkelt billede, der er kompileret ind i applikationen i stedet for at behandle en strøm eller lokalisere områder inden for en scene. Du kører lokal helbillede-klassifikation for ét compil-time 32x32 RGB inputbillede på en af de Azure Sphere MT3620 Cortex-M4F realtidskerner ved at bruge Arm's CMSIS-NN-kerner. En mikrocontroller er et kompakt integreret kredsløbsintegreret system, der er designet til at skabe en løsning til en bestemt handling. Mikrocontrollere omfatter typisk en processor, hukommelse og eksterne enheder med input/output (I/O) på en enkelt chip.

Azure Sphere er en sikker programplatform på højt niveau med indbyggede kommunikations- og sikkerhedsfunktioner til internetforbundne enheder. Det består af en sikret, tilsluttet, crossover mikrocontroller enhed (MCU), et brugerdefineret højt niveau Linux-baseret operativsystem (OS) og en cloud-baseret sikkerhedstjeneste, der leverer kontinuerlig, vedvarende sikkerhed.

Azure Sphere MCU integrerer behandlingsfunktioner i realtid med mulighed for at køre et operativsystem på højt niveau. En Azure Sphere MCU, sammen med sit operativsystem og applikationsplatform, muliggør oprettelsen af sikre, forbundne indlejrede enheder, som kan opdateres, kontrolleres, overvåges og vedligeholdes eksternt. En højniveauapplikation kan bruge internet- og cloud-tjenester, mens en RTApp kører lokalt på en realtidskerne og kun kan kommunikere med en højniveauapplikation. For dette eksempel kører inferensen på den indlejrede enhed i stedet for i en cloud-runtime.

I dette modul bruger vi Azure Sphere MT3620-boardet. Applikationen uploader ikke nye billeder under kørsel. I stedet inkluderer eksemplet ét 32x32 RGB-billede som C-data ved byggetidspunktet. Når RTApp kører, klassificerer den hele billedet i en af CIFAR-10-klasserne.

Det neurale netværk, der bruges af prøven, er en Caffe-trænet model baseret på CIFAR-10 datasættet, som indeholder 60.000 32x32 farvebilleder fordelt på 10 klasser. Modelarkitekturen har tre konvolutionslag med ReLU- og max-pooling-trin, efterfulgt af et fuldt forbundet outputlag for klassescorerne.

For en fuld maskinlæring-til-mikrocontroller arbejdsgang bliver en trænet flydende komma-model ofte kvantiseret og eksporteret til kildefiler, som indlejret C-kode kan kompilere. Kvantisering reducerer hukommelsesforbrug og beregningsomkostninger ved at repræsentere tensorer, såsom vægte og aktiveringer, med heltals- eller fastpunktværdier med lav bitbredde. Dette modul træner, kvantiserer eller eksporterer ikke modellen. Disse trin er allerede gennemført, og du bruger forudkvantiserede Q7-modeldata og billeddata i C-headerfiler til CMSIS-NN slutning.

De komponenter, du skal bruge, er:

  • Azure Sphere MT3620 Board: MT3620 er den første Azure Sphere-certificerede MCU. Azure Sphere-certificerede MCU'er er en ny klasse af sikre, forbundne mikrocontrollere på tværs.

  • CIFAR-10 datasæt: består af 60.000 32x32 farvebilleder fordelt på 10 klasser. Referencedokumentationen er CIFAR-.

  • Neuralt netværk: Vi bruger et Caffe-trænet CIFAR-10 konvolutionelt neuralt netværk med tre konvolutionslag, ReLU- og max-pooling-trin samt et fuldt forbundet outputlag.

  • CMSIS-NN Library: en samling effektive neurale netværkskerner, der er udviklet for at maksimere ydeevnen og minimere hukommelsesfodaftrykket for neurale netværk på Cortex-M processorkerner. Nuværende CMSIS-NN dokumentation beskriver bibliotekskoncepterne og understøttede kerner. Dette eksempel bruger ældre CMSIS_5 NN Q7 API'er og datatyper, såsom funktioner kaldet arm_softmax_q7, så brug CMSIS_5 NN-dokumentationen, når du tjekker netop disse specifikke Q7-funktionssignaturer. Referencen er ARM-.

  • Hello World Real-Time Application: Dette er det eksempelprogram, du skal tilpasse. Den viser, hvordan du opretter et eksempelprogram til kerner i realtid på en Azure Sphere-enhed ved hjælp af Visual Studio Code.

For at opsummere skal du ændre det eksisterende Hello World Real-Time Application-projekt. I dette modul klones du sample-repositoryet, justerer konfigurationen og opdaterer kildekoden. Du tilføjer CMSIS-NN-biblioteket og kalder Q7-inferensfunktionerne, som projektet bruger. Under udviklingen bygger du RTApp, sideloader det til Azure Sphere-enheden for lokal testning og ser klassifikationsoutputtet i en terminalemulator. Cloud-udrulning gennem Azure Sphere-katalog, produkt- og enhedsgruppe-workflows er en separat produktionsopdateringsproces, ikke runtime-stien for dette lokale inferenseksempel.