Sisukord:
- Samm: CNN ja ülekandeõpe: mõni teooria
- Samm: valmistage oma keskkond ette
- Samm: installige AXeleRate ja käivitage testid
- 4. samm: koolitage mudel ümber, teisendage Kerase mudel.kmodeliks
- Samm 5: Käivitage mudel Sipeed Maixi bitil
- 6. samm: Järeldused
Video: Pildituvastus K210 tahvlite ja Arduino IDE/Micropython abil: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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
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
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 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
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
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:
Tehisintellekt ja pildituvastus HuskyLensi abil: 6 sammu (piltidega)
Tehisintellekt ja kujutiste äratundmine HuskyLensi abil: Hei, mis toimub, poisid! Akarsh siin CETechist. Selles projektis vaatame üle DFRoboti HuskyLensi. See on tehisintellektiga töötav kaameramoodul, mis on võimeline tegema mitmeid tehisintellekti toiminguid, näiteks näotuvastust
ESP32 kasutamise alustamine - ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkuv kood: 3 sammu
ESP32 kasutamise alustamine | ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkumiskood: selles juhendis näeme, kuidas alustada esp32 -ga töötamist ja kuidas esp32 -tahvleid Arduino IDE -sse installida, ning programmeerime esp 32, et käivitada vilkumiskood arduino ide abil
Esp 8266 Esp-01 alustamine Arduino IDE-ga - Esp -tahvlite installimine Arduino Ide'i ja Esp -i programmeerimine: 4 sammu
Esp 8266 Esp-01 alustamine Arduino IDE-ga | Esp-tahvlite installimine Arduino Ide'i ja Esp programmeerimine: Selles juhendis õpime, kuidas esp8266 tahvleid Arduino IDE-sse installida ja kuidas esp-01 programmeerida ning sellesse koodi üles laadida. Kuna esp-tahvlid on nii populaarsed, mõtlesin juhiste parandamiseks see ja enamik inimesi seisab silmitsi probleemiga
Arduino IDE: kohandatud tahvlite loomine: 10 sammu
Arduino IDE: kohandatud tahvlite loomine: viimase kuue kuu jooksul olen kulutanud palju aega erinevate teekide teisaldamisele Robo HAT MM1 tahvlile, mille on välja töötanud Robotics Masters. See on toonud kaasa nende raamatukogude kohta palju avastamist, nende toimimist kulisside taga ja mis kõige tähtsam
Pildituvastus TensorFlow abil Raspberry Pi -l: 6 sammu
Pildituvastus TensorFlow abil Raspberry Pi-l: Google TensorFlow on avatud lähtekoodiga tarkvararaamatukogu numbriliseks arvutamiseks, kasutades andmevoograafikuid. Google kasutab seda erinevates masinõppe ja süvaõppetehnoloogiate valdkondades. TensorFlow töötas algselt välja Google Brai