Spouštějte kód strojového učení ve vestavěném uzlu IoT pro snadnou identifikaci objektů

By Bill Giovino

Contributed By DigiKey's North American Editors

Sítě internetu věcí (IoT) fungující v dynamických prostředích se neustále rozšiřují i nad rámec detekce objektů tak, aby zahrnovaly vizuální identifikaci objektů v aplikacích, jako je zabezpečení, monitorování životního prostředí, bezpečnost a průmyslový IoT (IIoT). Vzhledem k tomu, že identifikace objektů je adaptivní a zahrnuje použití modelů strojového učení (ML), jde o komplexní obor, ve kterém může být obtížné se orientovat bez předchozích znalostí a provádět efektivní implementace.

Tato obtížnost vyplývá z faktu, že model ML je pouze tak dobrý, jak dobrá je jeho datová sada. A jakmile se jednou získají správná data, systém se musí na jejich základě pravidelně trénovat, aby obstál v praxi.

V tomto článkům ukážeme vývojářům, jak implementovat model ML TensorFlow Lite for Microcontrollers společnosti Google do mikrokontroléru společnosti Microchip Technology. Dále v něm vysvětlíme, jak používat datové sady učící se obrazovou klasifikaci a detekci objektů ke snadné identifikaci objektů s minimem vlastního kódování na platformě TensorFlow Lite.

A také pak představíme startovací sadu ML TensorFlow Lite od společnosti Adafruit Industries, která vývojářům pomůže se seznámit se základy ML.

ML pro zabudované systémy vidění

V širokém smyslu slova poskytne ML počítači nebo vestavěnému systému podobné schopnosti rozpoznávání vzorů, jako má člověk. Z pohledu lidských smyslů to znamená použít snímače, jako jsou mikrofony a kamery, které napodobí vnímání lidskými smysly – sluchem a zrakem. Snímače lze k zachycování zvuku a vizuálních dat použít celkem snadno, jakmile se však data digitalizují a uloží, musí být následně zpracována, aby je bylo možné porovnat se vzory uloženými v paměti, které reprezentují zvuky nebo objekty. Problém spočívá v tom, že obrazová data vizuálního objektu zachycená kamerou nemusí například přesně odpovídat datům uloženým v paměti a vztahujícím se k danému objektu. Aplikace ML, která potřebuje objekt vizuálně identifikovat, musí zpracovat data tak, aby bylo možné přesně a efektivně porovnat vzor zachycený kamerou se vzorem uloženým v paměti.

K porovnávání dat zachycených snímači se používají různé knihovny nebo moduly. TensorFlow je knihovna open source kódů, která se používá právě k porovnávání vzorů. A knihovna kódů TensorFlow Lite for Microcontrollers je určena speciálně ke spouštění v mikrokontroléru. Má proto nižší požadavky na paměť a procesor, aby ji bylo možné spouštět v hardwaru s omezenými možnostmi. Knihovna vyžaduje konkrétně 32bitový mikrokontrolér a využívá méně než 25 kilobajtů (kB) paměti flash.

Ale TensorFlow Lite for Microcontrollers je pouze modul ML, systém stále potřebuje datovou sadu k učení vzorů, které má identifikovat. Bez ohledu na to, jak dobrý je modul ML, je celý systém pouze tak dobrý, jak dobrá je jeho učící datová sada. U některých vizuálních objektů mohou pro mnoho velkých modelů vyžadovat některé učící datové sady mnoho gigabajtů dat. Více dat vyžaduje vyšší výkon procesoru, aby bylo možné rychle najít přesnou shodu. A to je důvodem, proč tyto typy aplikací normálně běží na výkonných počítačích nebo špičkových noteboocích.

U aplikací vestavěných systémů by mělo být nezbytné uložit pouze takové konkrétní modely pro učící datové sady, které budou pro danou aplikaci nutné. Pokud se od systému očekává, že bude rozeznávat nástroje a nářadí, lze pak odebrat modely vztahující se k ovoci a hračkám. Sníží se tím velikost učící datové sady, což má zase vliv na snížení požadavků na paměť vestavěného systému. Vylepšuje se tak výkon a zároveň snižují náklady.

Mikrokontrolér ML

Chcete-li spustit modul TensorFlow Lite for Microcontrollers, společnost Microchip Technology cílí na strojové učení v mikrokontrolérech pomocí mikrokontroléru Arm® ATSAMD51J19A-AFT s procesorem Cortex®-M4F (obr. 1). Je vybaven pamětí flash 512 kilobajtů se 192 kilobajty paměti SRAM a běží s frekvencí 120 megahertzů (MHz). Produkt ATSAMD51J19A-AFT je součástí řady mikrokontrolérů ML ATSAMD51 společnosti Microchip Technology. Mikrokontrolér odpovídá standardu kvality AEC-Q100 úrovně 1 pro automobilový průmysl a funguje při teplotách od −40 °C do +125 °C, takže jej lze používat i v nejnáročnější prostředích IoT a IIoT. Jde o nízkonapěťový mikrokontrolér – při provozu s frekvencí 120 MHz běží na 1,71 až 3,63 V.

Schéma mikrokontroléru ATSAMD51J19A společnosti Microchip založeného na jádru Arm Cortex-M4F (zvětšíte kliknutím)Obrázek 1: Mikrokontrolér ATSAMD51J19A je založen na jádru Arm Cortex-M4F běžícím s frekvencí 120 MHz. Jde o plně vybavený mikrokontrolér s 512 kilobajty paměti flash a 192 kilobajty paměti SRAM. (Zdroj obrázku: společnost Microchip Technology)

Mezi možnosti sítí mikrokontroléru ATSAMD51J19A patří specifikace CAN 2.0B pro průmyslové sítě a ethernetové připojení 10/100 pro většinu kabelových sítí. Mikrokontroléru to umožňuje fungovat v celé řadě sítí IoT. Rozhraní USB 2.0 podporuje režim ovládání jak hostitele, tak zařízení a lze jej využít k ladění zařízení nebo k připojení systému k síti.

Při zpracovávání kódu ML vylepšuje výkon 4kilobajtová kombinovaná mezipaměť pro pokyny a data. Užitečnou výbavou ke zlepšení výkonu kódu ML stejně jako ke zpracování nezpracovaných dat snímačů je jednotka s plovoucí desetinnou čárkou („floating point unit“, FPU).

Ukládání učících datových sad

Mikrokontrolér ATSAMD51J19A je vybaven také rozhraním QSPI pro externí programovou paměť nebo paměť pro uložení dat. To se velmi hodí jako další úložiště dat pro učící datové sady, které překračují kapacitu uložení dat paměti flash na čipu. Rozhraní QSPI obsahuje také podporu eXecute in Place (XiP) pro externí rozšíření vysokorychlostní programové paměti.

Mikrokontrolér ATSAMD51J19A má i hostitelský řadič (SDHC) paměťové karty SD/MMC, který je velmi užitečný pro aplikace ML, protože umožňuje snadné přepnutí pamětí kódu ML a učících datových sad. Zatímco modul TensorFlow Lite for Microcontrollers může běžet s 512 kilobajty paměti flash v mikrokontroléru ATSAMD51J19A, učící datové sady lze pravidelně upgradovat a vylepšovat. Učící datovou sadu lze uložit na externím disku flash QSPI nebo QSPI EEPROM a v závislosti na konfiguraci sítě lze provádět upgrade na dálku prostřednictvím sítě. U některých systémů však může být pohodlnější paměťovou kartu fyzicky vyměnit za jinou, která obsahuje vylepšenou učící datovou sadu. Při této konfiguraci musí vývojář rozhodnout, zda má být systém navržen s paměťovou kartou vyměnitelnou za provozu, nebo zda bude třeba uzel IoT vypnout.

Pokud je v uzlu IoT místo extrémně omezené, bylo by výhodnější místo použití externí paměti vložit co nejvíce z aplikace do paměti mikrokontroléru. Mikrokontrolér ATSAMD51J20A-AFT společnosti Microchip Technology je podobný a má piny kompatibilní s mikrokontrolérem ATSAMD51J19A, ale kromě toho má 1 megabajt paměti flash a 256 kilobajtů paměti SRAM, takže na čipu poskytuje větší úložiště pro datové učící sady.

Vývoj s modulem TensorFlow Lite for Microcontrollers

Společnost Adafruit Industries podporuje vývoj mikrokontroléru ATSAMD51J19A prostřednictvím své vývojové soupravy 4317 TensorFlow Lite for Microcontrollers (obr. 2). Deska je vybavena 2 megabajty paměti flash QSPI, které lze použít k uložení učících datových sad. Souprava se dodává s jackem pro mikrofon pro rozpoznávání zvuku ML. K vývoji a ladění lze použít 1,8palcový barevný displej TFT LCD 160 × 128. Displej lze využít také k ukázkám rozpoznávání hlasu, pokud se modul TensorFlow Lite for Microcontrollers používá s učící datovou sadou pro rozpoznávání hlasu. Slova rozpoznávaná aplikací lze zobrazovat na obrazovce.

Souprava společnosti Adafruit Industries má také 8 tlačítek, 3osý akcelerometr, snímač světla, minireproduktor a lithiovou polymerovou baterii. Port USB 2.0 mikrokontroléru ATSAMD51J19A slouží jako konektor k nabíjení baterie, ladění a programování.

Obrázek soupravy 4317 TensorFlow Lite for Microcontrollers společnosti Adafruit IndustriesObrázek 2: Vývojová souprava 4317 TensorFlow Lite for Microcontrollers společnosti Adafruit Industries se dodává s barevným displejem TFT LCD pro vývoj a lze na něm zobrazovat výsledky operací ML. (Zdroj obrázku: společnost Adafruit Industries)

Souprava společnosti Adafruit se dodává s nejnovější verzí modulu TensorFlow Lite for Microcontrollers. Učící datové sady lze nahrát pomocí portu USB do 512kilobajtové paměti flash mikrokontroléru ATSAMD51J19A nebo nahrát do externí 2megabajtové paměti QSPI.

Požadujete-li vyhodnocování rozpoznávání obrazu, lze do vývojové desky nahrát učící sadu detekce objektů TensorFlow. Vývojová deska je vybavena porty k připojení paralelních a sériových portů mikrokontroléru, z nichž lze mnohé využít k připojení externí kamery. Je-li do mikrokontroléru nahrána učící sada detekce objektů, lze displej LCD použít k zobrazení výstupu výsledků zpracování ML detekce objektů. Když je tedy rozpoznán banán, na displeji TFT se mohou objevit rozpoznané objekty spolu s procenty spolehlivosti. Zobrazení výsledků může být například následující:

Banán: 95 %
Klíč: 12 %
Brýle: 8 %
Hřeben: 2 %

K vývoji aplikací detekce objektů IoT tak lze urychlit vývoj a napomoci diagnóze všech nesprávných výsledků detekce.

Závěr

Strojové učení rozšiřuje pole, které vyžaduje specializované znalosti k vývoji modulů mikrokontrolérů a modelů od samotného začátku a konče jejich implementací. Používání knihovny s existujícím kódem, jako je TensorFlow Lite for Microcontrollers, v cenově přijatelných a vysoce efektivních mikrokontrolérech nebo vývojových deskách šetří čas a peníze. Vede to také k vysoce výkonnému systému ML, který lze v uzlu IoT využívat k rychlé, spolehlivé a efektivní detekci objektů.

Chcete-li se dozvědět další informace o modulu TensorFlow a ML, přejděte na web maker.io a prozkoumejte tyto projekty:

DigiKey logo

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 DigiKey or official policies of DigiKey.

About this author

Image of Bill Giovino

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.

About this publisher

DigiKey's North American Editors