Sisukord:

Pildituvastus K210 tahvlite ja Arduino IDE/Micropython abil: 6 sammu (piltidega)
Pildituvastus K210 tahvlite ja Arduino IDE/Micropython abil: 6 sammu (piltidega)

Video: Pildituvastus K210 tahvlite ja Arduino IDE/Micropython abil: 6 sammu (piltidega)

Video: Pildituvastus K210 tahvlite ja Arduino IDE/Micropython abil: 6 sammu (piltidega)
Video: Eesti Keeletehnoloogia 2017 keeletarkvara päev 3/3 2024, Detsember
Anonim
Image
Image

Kirjutasin juba ühe artikli selle kohta, kuidas OpenMV demosid Sipeed Maix Bitil käivitada, ja tegin ka selle tahvliga video objektide tuvastamise demost. Üks paljudest küsimustest, mida inimesed on esitanud, on - kuidas ma saan ära tunda objekti, mille jaoks närvivõrk pole koolitatud? Teisisõnu, kuidas luua oma pildiklassifikaator ja käivitada see riistvaralise kiirendusega.

See on arusaadav küsimus, sest teie projekti jaoks ei pea te tõenäoliselt ära tundma mõningaid üldisi objekte, nagu kassid ja koerad ning lennukid. Soovite ära tunda midagi konkreetset, näiteks koera tõugu selle automaatse lemmikloomaukse jaoks või taimeliiki sortimiseks või muid väljuvaid rakendusi, millele võite mõelda!

Sain su kätte! Selles artiklis õpetan teile, kuidas luua oma kohandatud pildiklassifikaator koos ülekandeõppega Keras, teisendada koolitatud mudel.kmodel -vormingusse ja käivitada see Sipeed -plaadil (võib olla mis tahes plaat, bit/dokk või Go), kasutades Micropythonit või Arduino IDE. Ja ainult teie kujutlusvõime piirab nende teadmistega tehtavaid ülesandeid.

UUENDAMINE MAI 2020: Nähes, kuidas minu artikkel ja video pildituvastuse kohta K210 tahvlitega on endiselt väga populaarsed ning YouTube'i ja Google'i parimate tulemuste hulgas, otsustasin artiklit värskendada, lisades teabe aXeleRate, Keras-põhise AI raamistiku kohta Serv I areneb.

Põhimõtteliselt põhineb aXeleRate skriptide kogumil, mida kasutasin pildituvastuse/objektide tuvastamise mudelite koolitamiseks - kombineerituna üheks raamistikuks ja optimeeritud Google Colabi töövoo jaoks. Seda on mugavam kasutada ja ajakohasem.

Artikli vana versiooni puhul näete seda endiselt saidil steemit.com.

Samm: CNN ja ülekandeõpe: mõni teooria

CNN ja ülekandeõpe: mõni teooria
CNN ja ülekandeõpe: mõni teooria

Konvolutsioonilised närvivõrgud või CNN on sügavate närvivõrkude klass, mida kasutatakse kõige sagedamini visuaalsete kujutiste analüüsimisel. Internetis on sellel teemal palju kirjandust ja ma annan mõned lingid artikli viimases osas. Lühidalt, võite CNN -i mõelda kui pildile rakendatud filtrite seeriat, kus iga filter otsib pildilt konkreetset omadust - alumistel konvoluutsetel kihtidel on tavaliselt jooned ja lihtsad kujundid ning kõrgematel kihtidel funktsioonid. võib olla täpsem, nt kehaosad, spetsiifilised tekstuurid, loomade või taimede osad jne. Teatud omaduste kogumi olemasolu võib anda meile aimu selle kohta, milline kujutis võib olla. Vurrud, kaks silma ja must nina? Peab olema kass! Rohelised lehed, puutüvi? Näeb välja nagu puu!

Loodan, et saate nüüd idee CNN -i tööpõhimõttest. Tavaliselt vajab sügav närvivõrk tuhandeid pilte ja tunde treeninguaega (sõltub treeninguks kasutatavast riistvarast), et "arendada" filtreid, mis on kasulikud soovitud objektitüüpide tuvastamiseks. Kuid otsetee on olemas.

Mudelil, mis on koolitatud paljude erinevate tavaliste objektide (kassid, koerad, kodutehnika, transport jne) äratundmiseks, on juba palju neid kasulikke filtreid "välja töötatud", nii et me ei vaja seda põhikujude ja osade äratundmise õppimiseks objektidest uuesti. Võime võrgu viimaseid kihte lihtsalt ümber õpetada, et ära tunda meie jaoks olulisi objekte. Seda nimetatakse "ülekandeõppeks". Te vajate tunduvalt vähem treeningandmeid ja arvutate aega ülekandeõppega, kuna treenite alles paar viimast võrgu kihti, mis koosnevad võib -olla mõnesajast neuronist.

Kõlab suurepäraselt, eks? Vaatame, kuidas seda rakendada.

Samm: valmistage oma keskkond ette

Valmistage oma keskkond ette
Valmistage oma keskkond ette

AXeleRate'i kasutamiseks on kaks võimalust: kohapeal töötamine Ubuntu masinas või Google Colabis. Google Colabis töötamiseks vaadake seda näidet:

Piltide klassifikatsioon Colab Notebook

Samuti on nüüd palju lihtsam oma mudelit kohapeal koolitada ja riistvarakiirendusega kasutamiseks eksportida.

Minu töökeskkond on Ubuntu 16.04, 64bit. Ubuntu pildi käitamiseks saate kasutada virtuaalset masinat, kuna me ei kasuta treenimiseks GPU -d. Mõne muudatusega saate treeningskripti käivitada ka Windowsis, kuid mudeli teisendamiseks peate kasutama Linuxi süsteemi. Seega on selle õpetuse täitmiseks eelistatud keskkond Ubuntu 16.04, mis töötab algupäraselt või virtuaalmasinas.

Alustuseks paigaldame Miniconda, mis on Pythoni keskkonnahaldur. Loome isoleeritud keskkonna, nii et me ei muuda kogemata midagi teie süsteemi Pythoni keskkonnas.

Laadige installer alla siit

Pärast installimise lõppu looge uus keskkond:

conda create -n ml python = 3.7

Aktiveerime uue keskkonna

conda aktiveerida ml

Bashi kesta ees ilmub eesliide koos keskkonna nimega, mis näitab, et töötate praegu selles keskkonnas.

Samm: installige AXeleRate ja käivitage testid

Installige AXeleRate ja käivitage testid
Installige AXeleRate ja käivitage testid

Installige aXeleRate oma kohalikku masinasse

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

Näidete allalaadimiseks tehke järgmist.

git kloon

Kiireid teste saate käivitada kaustas aXeleRate, kasutades teste_training.py. See korraldab koolitust ja järeldab iga mudeli tüübi kohta, salvestab ja teisendab koolitatud mudeleid. Kuna see on koolitus ainult 5 ajastul ja andmekogum on väga väike, ei saa te kasulikke mudeleid hankida, kuid see skript on mõeldud ainult vigade puudumise kontrollimiseks.

4. samm: koolitage mudel ümber, teisendage Kerase mudel.kmodeliks

Treenige mudel uuesti, teisendage Kerase mudel.kmodeliks
Treenige mudel uuesti, teisendage Kerase mudel.kmodeliks

Selle mänguasja näite jaoks koolitame mudelit ära tundma jõuluvana ja Arduino Uno. Loomulikult saate valida ka teisi klasse. Laadige andmekogum siit alla. Looge konfiguratsioonikausta koopia failist classifier.json, seejärel muutke seda vastavalt sarnaselt ekraanipildil olevale konfiguratsioonifailile - veenduge, et koolitus- ja valideerimiskaustade tee on õige!

Käivitage aXeleRate kaustast järgmine käsk:

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

Koolitus algab. Kui valideerimise täpsus (meie valideerimismõõdik) 20 ajastu jooksul ei parane, lõpetatakse koolitus enneaegselt. Iga kord, kui valideerimise täpsus paraneb, salvestatakse mudel projekti kausta. Pärast treeningu lõppu teisendab aXeleRate parima mudeli automaatselt määratud vormingutesse - praeguse seisuga saate valida "tflite", "k210" või "edgetpu".

Samm 5: Käivitage mudel Sipeed Maixi bitil

Käivitage mudel Sipeed Maixi bitil
Käivitage mudel Sipeed Maixi bitil
Käivitage mudel Sipeed Maixi bitil
Käivitage mudel Sipeed Maixi bitil
Käivitage mudel Sipeed Maixi bitil
Käivitage mudel Sipeed Maixi bitil

Sipeed Maixi riistvaral olemasoleva mudeli käitamiseks on kaks võimalust: micropython püsivara ja Arduino IDE. Micropythoni riistvara on lihtsam kasutada, kuid see hõivab märkimisväärse osa saadaolevast mälust, seega jääb mudelile vähem ruumi. Arduino IDE on põhimõtteliselt C -kood, mis on palju tõhusam ja millel on väiksem mälu jalajälg. Minu mudel on vaid 1,9 MB, nii et mõlemad võimalused töötavad selle jaoks. Micropythoniga saate kasutada nii suuri kui 2,9 Mb mudeleid, millekski suuremaks peate kaaluma Arduino IDE kasutamist.

Laadige siit alla OpenMV IDE ja siit minimaalne mikropythoni püsivara.

Põletage püsivara tööriistaga kflash_gui. Samuti saate valida, kas põletada koolitatud mudel ka vilkuma, nagu on näidatud ekraanipildil. Või kopeerige see SD -kaardile (sel juhul kopeerige.kmodel SD -kaardi juure ja sisestage SD -kaart Sipeed Maix Bit'i)

Avage OpenMV IDE ja vajutage ühendamisnuppu. Avage skript santa_uno.py kaustast example_scripts ja vajutage nuppu Start. Te peaksite nägema kaamerast otseülekannet ja kui avate jadaterminali, saate enesekindluse skooriga parima pildi tuvastamise tulemuse!

Arduino IDE -ga kasutamiseks peate esmalt järgima protseduuri Sipeed -plaatide lisamiseks Arduino IDE -sse, mis on siin dokumenteeritud. Teie Arduino IDE versioon peab olema vähemalt 1.8.12. Pärast tahvlite lisamist avage eskiis mobilenet_v1_transfer_learning.ino ja laadige see üles Sipeed Maix Bitile. Muutke SD -kaardil oleva mudeli nimi mudeliks (või tehke selle nimega koopia). Saate muuta siltide nimesid nimedes.cpp. See näitab kaamera otseülekannet Sipeed Maixi ekraanil koos pildituvastuse parima tulemusega.

6. samm: Järeldused

Siin on veel mõned materjalid, mida lugeda CNN -ide ja ülekandeõppe teemal:

Ülekandeõpe Mobileneti ja Kerase abil Ülekandeõppe suurepärane selgitus, see õpetus kasutab selle artikli koodi muudetud versiooni.

Kassid ja koerad ning konvolutsioonilised närvivõrgud Selgitab CNN -ide põhitõdesid ja visualiseerib mõningaid filtreid. Kassidega!

Treenige, teisendage, käivitage MobileNet teenustes Sipeed MaixPy ja MaixDuino! Sipeedi meeskonna õpetus Mobilenet 1000 klasside nullist väljaõpetamiseks (ilma ülekandeõppeta). Saate nende eelkoolitatud mudeli alla laadida ja seda proovida!

Loodetavasti saate oma olemasolevaid teadmisi kasutada masina nägemisega vingete projektide loomiseks! Siipplaate saate osta siit, need on ühed odavaimad võimalused, mis on manussüsteemides ML -i jaoks saadaval.

Soovitan: