Tartalomjegyzék:

Képfelismerés K210 tábla és Arduino IDE/Micropython segítségével: 6 lépés (képekkel)
Képfelismerés K210 tábla és Arduino IDE/Micropython segítségével: 6 lépés (képekkel)

Videó: Képfelismerés K210 tábla és Arduino IDE/Micropython segítségével: 6 lépés (képekkel)

Videó: Képfelismerés K210 tábla és Arduino IDE/Micropython segítségével: 6 lépés (képekkel)
Videó: Képfelismerő készítés 1.1 - Mit jelent a képfelismerés? 2024, Június
Anonim
Image
Image

Már írtam egy cikket az OpenMV demók futtatásáról a Sipeed Maix Bit -en, és készítettem egy videót az objektumfelismerő bemutatóról ezzel a táblával. Az emberek által feltett számos kérdés közül az egyik - hogyan lehet felismerni egy olyan objektumot, amelyre a neurális hálózat nincs kiképezve? Más szóval, hogyan lehet saját képosztályozót készíteni és hardveres gyorsítással futtatni.

Ez érthető kérdés, mivel a projekt során valószínűleg nem kell felismernie néhány általános tárgyat, például a macskákat, kutyákat és repülőgépeket. Szeretne felismerni valami konkrétat, például egy kutyafajtát az automatikus kisállat -ajtóhoz, vagy egy növényfajtát a válogatáshoz, vagy bármilyen más kilépő alkalmazást, amire gondolhat!

Elkaptalak! Ebben a cikkben megtanítom, hogyan lehet saját egyéni képosztályozót létrehozni az átviteli tanulással Kerasban, konvertálni a betanított modellt.kmodel formátumba, és futtatni Sipeed boardon (lehet bármilyen tábla, Bit/Dock vagy Go) a Micropython vagy Arduino IDE. És csak a fantáziája szab határt azoknak a feladatoknak, amelyeket ezzel a tudással elvégezhet.

2020. MÁJUSI FRISSÍTÉS: Látva, hogy a K210 táblákkal történő képfelismerésről szóló cikkem és videóm továbbra is nagyon népszerű, és a YouTube és a Google legjobb eredményei között döntöttem úgy, hogy frissítem a cikket, hogy tartalmazza az aXeleRate, Keras-alapú AI keretrendszerről szóló információkat. Él I fejlődik.

Az aXeleRate lényegében a szkriptek gyűjteményén alapul, amelyeket képfelismerő/objektum -felismerő modellek oktatására használtam - egyetlen keretbe egyesítve és a Google Colab munkafolyamatára optimalizálva. Kényelmesebb használni és naprakész.

A cikk régi verziójában továbbra is megtekintheti a steemit.com webhelyen.

1. lépés: CNN és transzfer tanulás: néhány elmélet

CNN és transzfer tanulás: néhány elmélet
CNN és transzfer tanulás: néhány elmélet

A Convolutional Neural Networks vagy a CNN a mély neurális hálózatok egy osztálya, amelyet leggyakrabban vizuális képek elemzésére alkalmaznak. Rengeteg irodalom található az interneten a témában, és néhány linket adok a cikk utolsó részében. Röviden, a CNN -re úgy gondolhat, mint egy szűrő sorozatra, amelyet a képre alkalmaznak, és minden szűrő egy bizonyos jellemzőt keres a képen - az alsó konvolúciós rétegeken a jellemzők általában vonalak és egyszerű formák, a magasabb rétegeken pedig a jellemzők lehet konkrétabb, pl testrészek, különleges textúrák, állatok vagy növények részei stb. Bizonyos jellemzők jelenléte nyomon követheti, hogy mi lehet a képen látható tárgy. Bajusz, két szem és fekete orr? Biztos macska! Zöld levelek, fatörzs? Úgy néz ki, mint egy fa!

Remélem, most már érti a CNN működési elvét. Általában egy mély ideghálózatnak több ezer képre és több órányi képzési időre van szüksége (az edzéshez használt hardvertől függően), hogy "kifejlesszen" olyan szűrőket, amelyek hasznosak a kívánt típusú objektumok felismeréséhez. De van egy parancsikon.

Egy modell, amely sok különböző gyakori tárgy (macskák, kutyák, háztartási gépek, szállítás stb.) Felismerésére képzett, már sok ilyen hasznos szűrőt "kifejlesztett", így nincs szükségünk az alapvető formák és alkatrészek felismerésére. ismét a tárgyakról. Csak átnevelhetjük a hálózat utolsó néhány rétegét, hogy felismerjük a számunkra fontos objektumok bizonyos osztályait. Ezt hívják "transzfer tanulásnak". Lényegesen kevesebb edzési adatra és időszámításra van szüksége az átviteli tanulással, mivel csak a hálózat utolsó néhány rétegét képzi, talán néhány száz idegsejtből.

Fantasztikusan hangzik, igaz? Lássuk, hogyan kell végrehajtani.

2. lépés: Készítse elő a környezetet

Készítse elő környezetét
Készítse elő környezetét

Az aXeleRate kétféleképpen használható: helyben futás Ubuntu gépen vagy a Google Colabban. A Google Colabban való futtatáshoz nézze meg ezt a példát:

Képosztályozás Colab Notebook

A modell helyi oktatása és hardveres gyorsítással történő exportálása is sokkal egyszerűbb.

Munkakörnyezetem az Ubuntu 16.04, 64bit. Használhatja a Virtuális gépet az Ubuntu kép futtatásához, mivel nem fogunk GPU -t használni az edzéshez. Néhány módosítással futtathatja a képzési szkriptet Windows rendszeren is, de a modell átalakításához Linux rendszert kell használnia. Tehát az oktatóprogram végrehajtásához előnyös környezet az Ubuntu 16.04, natív vagy virtuális gépen fut.

Kezdjük a Miniconda telepítésével, amely a Python környezetkezelője. Izolált környezetet hozunk létre, így véletlenül nem változtatunk semmit a rendszer Python környezetében.

Töltse le a telepítőt itt

A telepítés befejezése után hozzon létre egy új környezetet:

conda create -n ml python = 3.7

Aktiváljuk az új környezetet

conda aktiválja ml

A bash shell előtt egy előtag jelenik meg a környezet nevével, ami azt jelzi, hogy jelenleg a környezetben dolgozik.

3. lépés: Az AXeleRate telepítése és tesztek futtatása

Telepítse az AXeleRate és futtassa a teszteket
Telepítse az AXeleRate és futtassa a teszteket

Telepítse az aXeleRate -t a helyi számítógépre a

pip install git+https://github.com/AIWintermuteAI/aXeleRate

Példák letöltéséhez futtassa:

git klón

Gyors teszteket futtathat az aXeleRate mappában található tests_training.py paranccsal. Képzést és következtetést fog futtatni minden modelltípushoz, menteni és átalakítani a betanított modelleket. Mivel ez csak 5 korszak képzése, és az adathalmaz nagyon kicsi, nem fog tudni hasznos modelleket beszerezni, de ez a szkript csak a hibák hiányának ellenőrzésére szolgál.

4. lépés: Tanítsa újra a modellt, konvertálja a Keras modellt.kmodel-re

Tanítsa újra a modellt, konvertálja a Keras modellt.kmodel-re
Tanítsa újra a modellt, konvertálja a Keras modellt.kmodel-re

Ehhez a játékpéldához a modellt fogjuk kiképezni a Mikulás és Arduino Uno felismerésére. Természetesen más osztályokat is választhat. Töltse le az adatkészletet innen. Hozzon létre egy példányt a classifier.json fájlból a konfigurációs mappában, majd ennek megfelelően módosítsa, hasonlóan a képernyőkép konfigurációs fájljához - győződjön meg arról, hogy a képzési és érvényesítési mappák elérési útja helyes!

Futtassa a következő parancsot az aXeleRate mappából:

python axelerate/train.py - c configs/santa_uno.json

Elkezdődik a képzés. Ha az érvényesítési pontosság (érvényesítési mutatónk) nem javul 20 korszakra, a képzés idő előtt leáll. Minden alkalommal, amikor az ellenőrzési pontosság javul, a modell a projekt mappájába kerül mentésre. Az edzés befejezése után az aXeleRate automatikusan átalakítja a legjobb modellt meghatározott formátumokká - mostantól választhat a "tflite", a "k210" vagy az "edgetpu" közül.

5. lépés: Futtassa a modellt a Sipeed Maix Bit -en

Futtassa a modellt a Sipeed Maix Bit -en
Futtassa a modellt a Sipeed Maix Bit -en
Futtassa a modellt a Sipeed Maix Bit -en
Futtassa a modellt a Sipeed Maix Bit -en
Futtassa a modellt a Sipeed Maix Bit -en
Futtassa a modellt a Sipeed Maix Bit -en

A Sipeed Maix hardveren kétféleképpen futtathatja a modellt: micropython firmware és Arduino IDE. A Micropython hardvert könnyebb használni, de a rendelkezésre álló memória jelentős részét elfoglalja, így kevesebb hely marad a modell számára. Az Arduino IDE alapvetően C kód, amely sokkal hatékonyabb és kisebb memóriaterheléssel rendelkezik. A modellem mindössze 1,9 MB, így mindkét lehetőség működik. Használhat akár 2,9 Mb méretű modelleket is a Micropython segítségével, bármi nagyobb esetén meg kell fontolnia az Arduino IDE használatát.

Töltse le az OpenMV IDE -t innen, és a minimális micropython firmware -t innen.

Írja le a firmware -t a kflash_gui eszközzel. Azt is választhatja, hogy a képzett modellt villogásra is égeti, amint az a képernyőképen is látható. Vagy másolja SD -kártyára (ebben az esetben másolja a

Nyissa meg az OpenMV IDE -t, és nyomja meg a csatlakozás gombot. Nyissa meg a santa_uno.py szkriptet az example_scripts mappából, és nyomja meg a Start gombot. Látnia kell az élő közvetítést a kamerából, és ha megnyitja a Soros terminált, akkor a legjobb képfelismerési eredmény lesz a bizalmi pontszámmal!

Az Arduino IDE -vel való használathoz először kövesse a Sipeed táblák Arduino IDE -hez való hozzáadásának eljárását, amelyet itt dokumentál. Az Arduino IDE verziójának legalább 1.8.12 -nek kell lennie. A táblák hozzáadása után nyissa meg a mobilenet_v1_transfer_learning.ino vázlatot, és töltse fel a Sipeed Maix Bit -re. Változtassa meg a modell nevét az SD -kártyán "model" -re (vagy készítsen másolatot ezzel a névvel). Megváltoztathatja a címkék nevét a names.cpp fájlban. Megjeleníti az élő kamerafolyamot a Sipeed Maix képernyőn, valamint a legfelső képfelismerési eredményt.

6. lépés: Következtetések

Íme néhány további anyag a CNN -ek és a transzfer tanulás témakörében:

Transzfer tanulás Mobilenet és Keras használatával A transzfer tanulás nagyszerű magyarázata, ez az oktatóanyag a cikkben található kód módosított verzióját használja.

Macskák és kutyák és konvolúciós ideghálózatok Elmagyarázza a CNN -ek mögött meghúzódó alapokat, és megjelenít néhány szűrőt. Macskákkal!

Tanuljon, konvertáljon, futtasson MobileNetet a Sipeed MaixPy és a MaixDuino rendszeren! Egy oktatóanyag a Sipeed csapattól a Mobilenet 1000 osztályok nulláról történő kiképzéséről (nincs transzfer tanulás). Letöltheti az előre betanított modelljüket, és kipróbálhatja!

Reméljük, hogy a mostani ismereteit felhasználva félelmetes projekteket építhet gépi látással! Itt vásárolhat Sipeed táblákat, ezek a legolcsóbb opciók közé tartoznak az ML beágyazott rendszereken.

Ajánlott: