Gépi tanulási kód futtatása beágyazott IoT csomópontokban egyszerű objektumazonosításhoz

By Bill Giovino

Contributed By DigiKey's North American Editors

Napjainkban a dinamikus környezetekben működő IoT (dolgok internete) hálózatok kibővítési folyamatának lehetünk tanúi, amelyek most már a csupán objektumok észlelésén kívül a vizuális objektum-azonosítást is magukba foglalják, például a biztonsági, a környezetmonitorozási, a vagyonvédelmi és az ipari IoT (IIot) rendszerekben. Mivel az objektumazonosítás adaptív és magában foglalja a gépi tanulási (ML) modellek használatát, ezért összetett terület, amelyet nehéz lehet nulláról megtanulni és hatékonyan megvalósítani.

A nehézség abból adódik, hogy egy ML modell csak annyira jó, mint az adatkészlete, és a megfelelő adatok megszerzése után a rendszert be kell tanítani az ezen adatokra alapuló működésre, hogy az a gyakorlatban használható legyen.

Ez a cikk azt mutatja be a fejlesztőknek, hogy hogyan építhető be a Google TensorFlow Lite for Microcontrollers ML modellje egy Microchip Technology mikrovezérlőbe. Majd elmagyarázza, hogyan használható fel a képosztályozás és az objektumészlelés tanulási adatkészlete a TensorFlow Lite segítségével objektumok egyszerű azonosítására minimális egyéni kódolással.

Ezután bemutatja az Adafruit Industries egyik TensorFlow Lite ML kezdőkészletét, amelynek segítségével a fejlesztők megismerhetik az ML alapjait.

Gépi tanulás (ML) beágyazott megjelenítő rendszerekhez

Tágabb értelemben nézve, az ML az emberéhez hasonló mintázatfelismerési képességeket biztosít a számítógépeknek vagy beágyazott rendszereknek. Az emberi érzékelés szempontjából ez azt jelenti, hogy az emberi érzékszervi hallás és látás utánozására érzékelőként mikrofonokat és kamerákat használunk. Míg az érzékelőkkel való audio és vizuális adatrögzítés egyszerűen megoldható, az adatokat azok digitalizálása és tárolása után fel kell dolgozni, hogy össze lehessen hasonlítani őket a memóriában tárolt, ismert hangokat vagy tárgyakat képviselő mintákkal. A probléma az, hogy például egy vizuális objektum kamera által rögzített képadatai esetleg nem egyeznek meg pontosan az illető objektum memóriában tárolt adataival. Az objektum vizuális azonosítását végző ML rendszernek úgy kell feldolgoznia az adatokat, hogy a kamera által rögzített minta pontosan és hatékonyan legyen összehasonlítható a memóriában tárolt mintával.

Az érzékelők által rögzített adatok összehasonlítására különböző könyvtárak vagy motorok használhatók. A TensorFlow egy nyílt forráskódú, a minták összehasonlítására szolgáló könyvtár. A TensorFlow Lite for Microcontrollers kódkönyvtárat kifejezetten mikrovezérlőn való futtatásra tervezték, így memória- és CPU igénye kisebb, hogy gyengébb hardveren is futtatható legyen. Pontosabban egy 32 bites mikrovezérlőt igényel és kevesebb mint 25 kB memóriát használ.

Az ML motorja tehát a TensorFlow Lite for Microcontrollers, de a rendszernek ezen kívül az azonosítandó mintákat tartalmazó adatkészletre is szüksége van. A rendszer az ML motor jóságától függetlenül csak annyira lehet jó, mint a tanulási adatkészlete, és vizuális objektumoknál nagy modellek esetében némely tanulási adatkészletek több gigabájtnyi adatból is állhatnak. A több adathoz nagyobb CPU teljesítmény szükséges a gyors és pontos egyezés megtalálásához, ezért az ilyen típusú alkalmazások általában erős számítógépeken vagy csúcskategóriás laptopokon futnak.

Beágyazott rendszerek esetében csak az adott alkalmazáshoz szükséges specifikus modelleket kell tárolni egy tanulási adatkészletben. Ha egy rendszernek csupán például szerszámok és fémalkatrészek felismerése a feladata, akkor a gyümölcs- és játékmodellek eltávolíthatók. Ez csökkenti a tanulási adatkészlet méretét, következésképpen csökken a beágyazott rendszer memóriaigénye is, javítva a teljesítményt és csökkentve a költségeket.

Egy ML mikrovezérlő

A TensorFlow Lite for Microcontrollers futtatásához a Microchip Technology a gépi tanulás mikrovezérlőkben történő megvalósítását az Arm® Cortex®-M4F alapú ATSAMD51J19A-AFT mikrovezérlővel célozza meg (1. ábra). Ez 192 kB SRAM memóriával ellátott 512 kB flash memóriával rendelkezik és 120 MHz órajellel működik. Az ATSAMD51J19A-AFT a Microchip Technology ATSAMD51 ML mikrovezérlő családjának része. Megfelel az autóipar AEC-Q100 1. fokozatú minőségi előírásainak, -40°C és +125°C közötti hőmérsékleten működik, így a legkeményebb IoT és IIoT környezetben is alkalmazható. Ez egy alacsony tápfeszültségű mikrovezérlő, amely 120 MHz órajellel 1,71 és 3,63 V közötti tápfeszültségről működik.

Kép – a Microchip ATSAMD51J19A diagramja, amely egy Arm Cortex-M4F magra épül (kattintson a nagyításhoz)1. ábra: Az ATSAMD51J19A egy 120 MHZ-en működő Arm Cortex-M4F magra épül. Ez egy teljes funkcionalitású mikrovezérlő, 512 kB flash memóriával és 192 kB SRAM-mal. (Kép: Microchip Technology)

Az ATSAMD51J19A támogatja a CAN 2.0B-t ipari hálózatokhoz és a 10/100 Ethernetet a legtöbb vezetékes hálózathoz. Ez lehetővé teszi, hogy a mikrovezérlő számos IoT hálózaton működni tudjon. Az USB 2.0 interfész működhet gazda és eszköz üzemmódban is, és használható eszközök hibakeresésére vagy rendszerhálózat céljára.

Az utasítások és adatok tárolására szolgáló 4 kB méretű kombinált gyorsítótár javítja az ML kód feldolgozási teljesítményét. A lebegőpontos egység (FPU) szintén hasznos az ML kód teljesítményének javításához, valamint az érzékelők nyers adatainak feldolgozásához.

Tanulási adatkészletek tárolása

Az ATSAMD51J19A egy QSPI interfésszel is rendelkezik külső program- vagy adatmemória számára. Ez hasznos a chip saját flash memóriájának kapacitását meghaladó tanulási adatkészletek külső tárolásához. A QSPI eXecute in Place (XiP) támogatással is rendelkezik, biztosítva a külső nagy sebességű programmemória-bővítés lehetőségét.

Az ATSAMD51J19A egy SD/MMC memóriakártya-vezérlőt (SDHC) is tartalmaz, amely igen hasznos az ML alkalmazásokhoz, mivel lehetővé teszi az ML kódot és tanulási adatkészleteket tartalmazó memóriakártyák egyszerű cseréjét. Míg a TensorFlow Lite for Microcontrollers motor az ATSAMD51J19A 512 kB-os flash memóriájában képes futni, a tanulási adatkészletek rendszeresen frissíthetők és javíthatók. A tanulási adatkészlet külső QSPI flash memóriában vagy QSPI EEPROM-ban tárolható és a hálózati konfigurációtól függően távolról, a hálózaton keresztül frissíthető. Egyes rendszerek esetében azonban kényelmesebb lehet a memóriakártyát fizikailag egy továbbfejlesztett tanulási adatkészlettel rendelkező kártyára cserélni. Ebben a konfigurációban a fejlesztőnek el kell döntenie, hogy a rendszert úgy tervezze-e meg, hogy a memóriakártya működés közben cserélhető legyen, vagy le kelljen állítani az IoT csomópontot.

Ha az IoT csomópontban nagyon korlátozott a hely, akkor külső memória használata helyett előnyös volna az alkalmazás lehető legnagyobb részét a mikrovezérlő memóriájába tenni. A Microchip Technology ATSAMD51J20A-AFT-je hasonló az ATSAMD51J19A-hoz, lábkiosztása is megegyezik, viszont 1 MB flash és 256 kB SRAM memóriát tartalmaz, így nagyobb tanulási adatkészlet tárolását teszi lehetővé magán az eszközön.

Fejlesztés a TensorFlow Lite for Microcontrollers segítségével

Az Adafruit Industries a 4317 TensorFlow Lite for Microcontrollers fejlesztőkészlettel (2. ábra) támogatja az ATSAMD51J19A eszközön történő fejlesztést. A kártya 2 MB QSPI flash memóriát tartalmaz, ami a tanulási adatkészletek tárolására használható. A készlet mikrofoncsatlakozóval rendelkezik, gépi tanulás alkalmazásával végzett audio felismerési célokra. Az 1,8 hüvelyk átmérőjű 160 x 128 képpontos színes TFT LCD kijelzője fejlesztési és hibakeresési célra használható. A kijelző hangfelismerő bemutatókhoz is alkalmas, ha a TensorFlow Lite for Microcontrollers hangfelismerő tanulási adatkészlettel együtt kerül felhasználásra. Miközben a rendszer felismeri a különböző szavakat, azok megjeleníthetők a kijelzőn.

Az Adafruit Industries készlete nyolc nyomógombbal, háromtengelyes gyorsulásmérővel, fényérzékelővel, mini hangszóróval és lítium-polimer akkumulátorral is rendelkezik. Az ATSAMD51J19A USB 2.0 csatlakozóját egy akkutöltésre, hibakeresésére és programozásra szolgáló csatlakozóba vezették ki.

Kép – az Adafruit Industries 4317 TensorFlow Lite for Microcontrollers fejlesztőkészlete2. ábra: Az Adafruit Industries 4317 TensorFlow Lite for Microcontrollers fejlesztőkészlete színes TFT LCD kijelzővel rendelkezik a fejlesztéshez és az ML-műveletek eredményeinek megjelenítéséhez. (Kép: Adafruit Industries)

Az Adafruit készlet a TensorFlow Lite for Microcontrollers legújabb változatát tartalmazza. A tanulási adatkészletek az USB port segítségével tölthetők be az ATSAMD51J19A mikrovezérlő 512 kB-os flash memóriájába vagy a külső 2 MB-os QSPI memóriába.

A képfelismerés kiértékeléséhez a TensorFlow objektumészlelő tanulási készlet rátölthető a fejlesztőkártyára. A fejlesztőkártya a mikrovezérlő párhuzamos és soros csatlakozóihoz való illesztésre alkalmas csatlakozókkal rendelkezik, amelyek közül több külső kamerához való csatlakozásra is használható. A mikrovezérlőre rátöltött objektumészlelő tanulókészletnek köszönhetően az LCD felhasználható az ML-feldolgozással végzett objektumészlelés eredményeinek megjelenítésére, ha tehát például egy banánt teszünk a kamera elé, akkor a TFT-kijelző megjelenítheti a felismert ráillő objektumokat, százalékban kifejezve azt is, hogy mennyire megbízható ez a felismerés. Példa az eredmények megjelenítésére:

Banán: 95%
villáskulcs: 12%
szemüveg: 8%
fésű: 2%

Ez felgyorsíthatja az IoT objektumészlelő alkalmazások fejlesztését és segíthet diagnosztizálni a helytelen észlelési eredményeket.

Összegzés

Az ML egy bővülő terület, amely speciális ismereteket igényel a mikrovezérlő motorok és modellek nulláról történő fejlesztéséhez és hatékony megvalósításához. Egy meglévő kódkönyvtárnak, például a TensorFlow Lite for Microcontrollers-nek az olcsó, nagy hatékonyságú mikrovezérlőkön vagy fejlesztői kártyákon történő felhasználása azonban időt és pénzt takarít meg, így nagy teljesítményű ML rendszer hozható létre, amelynek segítségével az IoT csomópontban az objektumok gyorsan, megbízhatóan és hatékonyan észlelhetők.

A TensorFlow-ra és ML-re vonatkozó bővebb információkért látogasson el a maker.io oldalra és tekintse meg a következő projekteket:

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