Turinys:

Vaizdo atpažinimas naudojant „K210“plokštes ir „Arduino IDE/Micropython“: 6 žingsniai (su nuotraukomis)
Vaizdo atpažinimas naudojant „K210“plokštes ir „Arduino IDE/Micropython“: 6 žingsniai (su nuotraukomis)

Video: Vaizdo atpažinimas naudojant „K210“plokštes ir „Arduino IDE/Micropython“: 6 žingsniai (su nuotraukomis)

Video: Vaizdo atpažinimas naudojant „K210“plokštes ir „Arduino IDE/Micropython“: 6 žingsniai (su nuotraukomis)
Video: Топ 5 скрытых полезных программ Windows 10 2024, Lapkritis
Anonim
Image
Image

Aš jau parašiau vieną straipsnį apie tai, kaip paleisti „OpenMV“demonstracines versijas „Sipeed Maix Bit“, taip pat padariau vaizdo įrašą apie objekto aptikimo demonstraciją su šia lenta. Vienas iš daugelio žmonių užduotų klausimų yra toks - kaip aš galiu atpažinti objektą, kuriam neuronų tinklas nėra apmokytas? Kitaip tariant, kaip sukurti savo vaizdo klasifikatorių ir jį paleisti naudojant aparatūros pagreitį.

Tai suprantamas klausimas, nes jūsų projektui tikriausiai nereikia atpažinti kai kurių bendrų objektų, tokių kaip katės, šunys ir lėktuvai. Norite atpažinti kažką konkretaus, pavyzdžiui, šunų veislę, skirtą automatinėms naminių gyvūnėlių durims, ar rūšiuoti skirtą augalų rūšį, ar bet kokias kitas išeinančias programas, apie kurias galite pagalvoti!

Aš tave turiu! Šiame straipsnyje aš išmokysiu jus, kaip sukurti savo pasirinktinį vaizdų klasifikatorių, naudojant „Keras“mokymąsi, konvertuoti apmokytą modelį į.kmodel formatą ir paleisti jį „Sipeed board“(gali būti bet kokia plokštė, „Bit/Dock“arba „Go“) naudojant „Micropython“arba „Arduino IDE“. Ir tik jūsų vaizduotė apsiribos užduotimis, kurias galite atlikti naudodami šias žinias.

2020 m. GEGUŽĖS ATNAUJINIMAS: matydamas, kaip mano straipsnis ir vaizdo įrašas apie vaizdų atpažinimą naudojant K210 plokštes vis dar yra labai populiarūs ir tarp geriausių „YouTube“ir „Google“rezultatų, nusprendžiau atnaujinti straipsnį, kad jame būtų informacija apie „aXeleRate“, „Keras“pagrįstą AI sistemą. I kraštas vystosi.

„aXeleRate“iš esmės pagrįsta scenarijų rinkiniu, kurį naudoju mokydamas vaizdo atpažinimo/objektų aptikimo modelius - sujungtas į vieną sistemą ir optimizuotas darbo eigai „Google Colab“. Tai patogiau naudoti ir atnaujinti.

Senąją straipsnio versiją vis tiek galite pamatyti svetainėje steemit.com.

1 žingsnis: CNN ir perkėlimo mokymasis: kai kurios teorijos

CNN ir perkėlimo mokymasis: kai kurios teorijos
CNN ir perkėlimo mokymasis: kai kurios teorijos

Konvoliuciniai neuroniniai tinklai arba CNN yra giliųjų neuronų tinklų klasė, dažniausiai taikoma analizuojant vaizdinius vaizdus. Internete yra daug literatūros šia tema, o paskutinėje straipsnio dalyje pateiksiu keletą nuorodų. Trumpai tariant, galite galvoti apie CNN kaip filtrų seriją, pritaikytą vaizdui, kiekvienas filtras ieško konkrečios vaizdo ypatybės - apatiniuose konvoliuciniuose sluoksniuose paprastai yra linijos ir paprastos formos, o aukštesniuose - funkcijos gali būti konkretesnis, pvz kūno dalys, specifinės tekstūros, gyvūnų ar augalų dalys ir tt Tam tikrų savybių rinkinio buvimas gali padėti mums suprasti, koks gali būti paveikslėlyje esantis objektas. Ūsai, dvi akys ir juoda nosis? Turi būti katė! Žali lapai, medžio kamienas? Atrodo kaip medis!

Tikiuosi, kad dabar supratote apie CNN veikimo principą. Paprastai giliam nervų tinklui reikia tūkstančių vaizdų ir valandų treniruočių laiko (priklauso nuo aparatūros, kurią naudojate mokymui), kad sukurtumėte filtrus, kurie būtų naudingi norint atpažinti norimų objektų tipus. Tačiau yra nuoroda.

Modelis, išmokytas atpažinti daugybę skirtingų bendrų objektų (katės, šunys, buitinė technika, transportas ir kt.), Jau turi daug tų naudingų filtrų, „sukurtų“, todėl mums to nereikia norint išmokti atpažinti pagrindines formas ir dalis vėl iš objektų. Mes galime tiesiog išmokyti kelis paskutinius tinklo sluoksnius atpažinti tam tikras mums svarbias objektų klases. Tai vadinama „perkėlimo mokymusi“. Jums reikia žymiai mažiau treniruočių duomenų ir skaičiuoti laiko mokantis perkėlimo, nes mokote tik paskutinius tinklo sluoksnius, kuriuos sudaro galbūt keli šimtai neuronų.

Skamba nuostabiai, tiesa? Pažiūrėkime, kaip tai įgyvendinti.

2 žingsnis: Paruoškite aplinką

Paruoškite savo aplinką
Paruoškite savo aplinką

Yra du būdai, kaip naudoti „aXeleRate“: veikia vietoje „Ubuntu“kompiuteryje arba „Google Colab“. Jei norite paleisti „Google Colab“, peržiūrėkite šį pavyzdį:

Vaizdo klasifikacija „Colab Notebook“

Dabar taip pat daug lengviau mokyti savo modelį vietoje ir eksportuoti jį naudoti su aparatūros pagreičiu.

Mano darbo aplinka yra „Ubuntu 16.04“, 64 bitų. „Ubuntu“vaizdui paleisti galite naudoti virtualią mašiną, nes mes nenaudosime GPU mokymui. Su kai kuriais pakeitimais taip pat galite paleisti mokymo scenarijų sistemoje „Windows“, tačiau norėdami konvertuoti modelį turėsite naudoti „Linux“sistemą. Taigi, tinkamiausia aplinka šiam vadovėliui vykdyti yra „Ubuntu 16.04“, veikianti natūraliai arba virtualioje mašinoje.

Pradėkime diegdami „Miniconda“, kuri yra „Python“aplinkos tvarkyklė. Mes sukursime izoliuotą aplinką, todėl atsitiktinai nieko nepakeisime jūsų sistemos „Python“aplinkoje.

Atsisiųskite diegimo programą čia

Baigę diegti, sukurkite naują aplinką:

conda sukurti -n ml python = 3.7

Suaktyvinkime naują aplinką

conda aktyvuoti ml

Prieš jūsų „bash“apvalkalą bus rodomas priešdėlis su aplinkos pavadinimu, rodančiu, kad dabar dirbate toje aplinkoje.

3 veiksmas: įdiekite „AXeleRate“ir paleiskite testus

Įdiekite „AXeleRate“ir paleiskite testus
Įdiekite „AXeleRate“ir paleiskite testus

Įdiekite „aXeleRate“savo vietiniame kompiuteryje naudodami

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

Norėdami atsisiųsti pavyzdžių, paleiskite:

git klonas

Galite atlikti greitus testus naudodami test_training.py aplanke aXeleRate. Ji vykdys mokymus ir padarys išvadas kiekvienam modelio tipui, išsaugos ir konvertuos apmokytus modelius. Kadangi tai tik 5 epochų mokymai, o duomenų rinkinys yra labai mažas, negalėsite gauti naudingų modelių, tačiau šis scenarijus skirtas tik patikrinti, ar nėra klaidų.

4 žingsnis: Iš naujo apmokykite modelį, konvertuokite „Keras“modelį į.kmodel

Iš naujo apmokykite modelį, konvertuokite „Keras“modelį į.kmodel
Iš naujo apmokykite modelį, konvertuokite „Keras“modelį į.kmodel

Šiame žaislo pavyzdyje mes mokysime modelį atpažinti Kalėdų Senelį ir Arduino Uno. Akivaizdu, kad galite pasirinkti kitas klases. Atsisiųskite duomenų rinkinį iš čia. Sukurkite failo classifier.json kopiją konfigūracijos aplanke, tada atitinkamai pakeiskite ją, panašiai kaip konfigūracijos failą ekrano kopijoje - įsitikinkite, kad kelias į mokymo ir patvirtinimo aplankus yra teisingas!

Vykdykite šią komandą iš aplanko aXeleRate:

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

Prasidės mokymai. Jei patvirtinimo tikslumas (mūsų patvirtinimo metrika) negerėja 20 epochų, mokymas bus nutrauktas anksčiau laiko. Kaskart tobulėjant patvirtinimo tikslumui, modelis išsaugomas projekto aplanke. Pasibaigus treniruotėms, „aXeleRate“automatiškai konvertuoja geriausią modelį į nurodytus formatus - nuo šiol galite pasirinkti „tflite“, „k210“arba „edgetpu“.

5 veiksmas: paleiskite modelį „Sipeed Maix Bit“

Paleiskite modelį „Sipeed Maix Bit“
Paleiskite modelį „Sipeed Maix Bit“
Paleiskite modelį „Sipeed Maix Bit“
Paleiskite modelį „Sipeed Maix Bit“
Paleiskite modelį „Sipeed Maix Bit“
Paleiskite modelį „Sipeed Maix Bit“

Yra du būdai paleisti dabar turimą modelį „Sipeed Maix“aparatinėje įrangoje: „micropython“programinė įranga ir „Arduino IDE“. „Micropython“aparatinę įrangą lengviau naudoti, tačiau ji užima didelę laisvos atminties dalį, todėl modeliui lieka mažiau vietos. „Arduino IDE“iš esmės yra C kodas, kuris yra daug efektyvesnis ir turi mažesnį atminties pėdsaką. Mano modelis yra tik 1,9 MB, todėl abi parinktys jam tinka. Naudodami „Micropython“galite naudoti net 2,9 Mb dydžio modelius, bet ką didesnio reikia apsvarstyti naudojant „Arduino IDE“.

Atsisiųskite „OpenMV IDE“iš čia ir minimalią „Micropython“programinę įrangą iš čia.

Sudeginkite programinę -aparatinę įrangą naudodami įrankį kflash_gui. Taip pat galite pasirinkti sudeginti apmokytą modelį, kad jis taip pat mirksėtų, kaip parodyta ekrano kopijoje. Arba nukopijuokite jį į SD kortelę (tokiu atveju nukopijuokite.kmodel į SD kortelės šaknį ir įdėkite SD kortelę į „Sipeed Maix Bit“)

Atidarykite „OpenMV IDE“ir paspauskite prisijungimo mygtuką. Atidarykite santa_uno.py scenarijų iš aplanko example_scripts ir paspauskite mygtuką Pradėti. Turėtumėte matyti tiesioginį srautą iš fotoaparato ir, atidarę serijinį terminalą, gausite geriausią vaizdo atpažinimo rezultatą su pasitikėjimo balu!

Jei norite naudoti su „Arduino IDE“, pirmiausia turite laikytis čia aprašytos „Sipeed“plokščių pridėjimo prie „Arduino IDE“procedūros. Jūsų „Arduino IDE“versija turi būti bent 1.8.12. Pridėję lentas, atidarykite „mobilenet_v1_transfer_learning.ino“eskizą ir įkelkite jį į „Sipeed Maix Bit“. Pakeiskite modelio pavadinimą SD kortelėje į „modelis“(arba padarykite kopiją šiuo pavadinimu). Galite pakeisti etikečių pavadinimus varduose.cpp. Jis parodys tiesioginį fotoaparato srautą „Sipeed Maix“ekrane kartu su geriausiu vaizdo atpažinimo rezultatu.

6 žingsnis: Išvados

Štai dar keletas medžiagų, kurias reikia perskaityti CNN ir mokymosi perkelti tema:

Mokymasis perkelti naudojant „Mobilenet“ir „Keras“Puikus mokymosi perkėlimo paaiškinimas, šioje pamokoje naudojama modifikuota to straipsnio kodo versija.

Katės ir šunys bei evoliuciniai nervų tinklai Paaiškina CNN pagrindus ir vizualizuoja kai kuriuos filtrus. Su katėmis!

Treniruokitės, konvertuokite, paleiskite „MobileNet“„Sipeed MaixPy“ir „MaixDuino“! „Sipeed“komandos vadovėlis, kaip mokyti „Mobilenet 1000“klases nuo nulio (be perkėlimo). Galite atsisiųsti jų iš anksto apmokytą modelį ir išbandyti!

Tikimės, kad galėsite panaudoti turimas žinias kurdami nuostabius projektus su mašininiu matymu! Čia galite nusipirkti „Sipeed“plokščių, jos yra vienos pigiausių ML parinkčių įterptosiose sistemose.

Rekomenduojamas: