Turinys:
- 1 žingsnis: CNN ir perkėlimo mokymasis: kai kurios teorijos
- 2 žingsnis: Paruoškite aplinką
- 3 veiksmas: įdiekite „AXeleRate“ir paleiskite testus
- 4 žingsnis: Iš naujo apmokykite modelį, konvertuokite „Keras“modelį į.kmodel
- 5 veiksmas: paleiskite modelį „Sipeed Maix Bit“
- 6 žingsnis: Išvados
Video: Vaizdo atpažinimas naudojant „K210“plokštes ir „Arduino IDE/Micropython“: 6 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
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
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ą
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“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
Š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“
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:
Objekto aptikimas naudojant „Sipeed MaiX“plokštes („Kendryte K210“): 6 žingsniai
Objektų aptikimas naudojant „Sipeed MaiX“plokštes („Kendryte K210“): tęsdamas ankstesnį straipsnį apie vaizdo atpažinimą naudojant „Sipeed MaiX Boards“, nusprendžiau parašyti dar vieną mokymo programą, daugiausia dėmesio skiriant objektų aptikimui. Neseniai pasirodė įdomi aparatinė įranga su „Kendryte K210“mikroschema, įskaitant S
Dirbtinis intelektas ir vaizdo atpažinimas naudojant „HuskyLens“: 6 žingsniai (su nuotraukomis)
Dirbtinis intelektas ir vaizdo atpažinimas naudojant „HuskyLens“: Ei, kas, vaikinai! Akarsh čia iš CETech. Šiame projekte mes pažvelgsime į „DFRobot“„HuskyLens“. Tai dirbtiniu intelektu varomas fotoaparato modulis, galintis atlikti keletą dirbtinio intelekto operacijų, tokių kaip veido atpažinimas
Vaizdo apdorojimas naudojant „Raspberry Pi“: „OpenCV“ir vaizdo spalvų atskyrimo diegimas: 4 veiksmai
Vaizdo apdorojimas naudojant „Raspberry Pi“: „OpenCV“ir vaizdo spalvų atskyrimo diegimas: Šis įrašas yra pirmasis iš kelių vaizdo apdorojimo vadovėlių, kurie turi būti sekami. Mes atidžiau pažvelgsime į vaizdo taškus, sudarančius vaizdą, sužinosime, kaip įdiegti „OpenCV“į „Raspberry Pi“, taip pat rašome bandomuosius scenarijus, kad galėtume užfiksuoti vaizdą ir
„LoRa“(SX1278/XL1278-SMT) veikimas naudojant SPI naudojant „WeMos D1 ESP-12F ESP8277“pagrindinės plokštės modulį su OLED: 7 žingsniai
„LoRa“(SX1278/XL1278 -SMT) veikimas naudojant SPI naudojant „WeMos D1 ESP -12F ESP8277“pagrindinės plokštės modulį su OLED: tai man prireikė savaitės, kol išsiaiškinau - atrodo, niekas kitas prieš mane to nesuvokė - todėl tikiuosi, kad tai jus išgelbės kurį laiką! Nepatogiai pavadintas „WeMos D1 ESP-12F ESP8266“pagrindinės plokštės modulis su 0,96 colio OLED ekranu " yra 11 USD plėtros lenta
Vaizdo atpažinimas naudojant „TensorFlow“„Raspberry Pi“: 6 žingsniai
Vaizdo atpažinimas naudojant „TensorFlow“„Raspberry Pi“: „Google TensorFlow“yra atviro kodo programinės įrangos biblioteka, skirta skaitmeniniams skaičiavimams, naudojant duomenų srauto diagramas. „Google“ją naudoja įvairiose mašinų mokymosi ir giliųjų mokymosi technologijų srityse. „TensorFlow“iš pradžių sukūrė „Google Brai“