Obsah:
- Krok 1: CNN a transferové vzdelávanie: Niektoré teórie
- Krok 2: Pripravte si prostredie
- Krok 3: Nainštalujte AXeleRate a spustite testy
- Krok 4: Znovu vycvičte model, konvertujte model Keras na.kmodel
- Krok 5: Spustite model na Sipeed Maix Bit
- Krok 6: Závery
Video: Rozpoznávanie obrazu s doskami K210 a Arduino IDE/Micropython: 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
Už som napísal jeden článok o tom, ako prevádzať ukážky OpenMV na Sipeed Maix Bit, a tiež som s touto doskou natočil video s ukážkou detekcie objektov. Jednou z mnohých otázok, ktoré si ľudia kladú, je - ako rozoznám objekt, na ktorý neurónová sieť nie je trénovaná? Inými slovami, ako si vytvoriť vlastný klasifikátor obrázkov a spustiť ho s hardvérovou akceleráciou.
Je to pochopiteľná otázka, pretože pre váš projekt pravdepodobne nemusíte rozpoznávať niektoré generické objekty, ako sú mačky, psy a lietadlá. Chcete rozpoznať niečo konkrétne, napríklad plemeno psa pre automatické dvere pre domáce zvieratá alebo druh rastliny na triedenie alebo akékoľvek iné ukončujúce aplikácie, o ktorých môžete premýšľať!
Mám ťa! V tomto článku vás naučím, ako si vytvoriť vlastný klasifikátor obrázkov s prenosovým učením v Kerase, previesť natrénovaný model do formátu.kmodel a spustiť ho na doske Sipeed (môže to byť akákoľvek doska, Bit/Dock alebo Go) pomocou programu Micropython alebo Arduino IDE. A iba vaša predstavivosť bude limitom pre úlohy, ktoré môžete s týmito znalosťami vykonávať.
AKTUALIZÁCIA MÁJ 2020: Keď som videl, ako sú môj článok a video o rozpoznávaní obrázkov s doskami K210 stále veľmi obľúbené a patrí medzi najlepšie výsledky na serveroch YouTube a Google, rozhodol som sa článok aktualizovať tak, aby obsahoval informácie o aXeleRate, rámci založenom na Kerase pre AI na Edge vyvíjam.
aXeleRate v zásade vychádza zo zbierky skriptov, ktoré som použil na školenie modelov rozpoznávania obrázkov/detekcie objektov - kombinované do jedného rámca a optimalizované pre pracovný tok v službe Google Colab. Je to pohodlnejšie na používanie a aktuálnejšie.
Starú verziu článku môžete stále vidieť na steemit.com.
Krok 1: CNN a transferové vzdelávanie: Niektoré teórie
Konvolučné neurónové siete alebo CNN sú triedou hlbokých neurónových sietí, ktoré sa najčastejšie používajú na analýzu vizuálnych obrazov. Na internete je k tejto téme veľa literatúry a v poslednej časti článku dám niekoľko odkazov. Stručne povedané, CNN si môžete predstaviť ako sériu filtrov aplikovaných na obrázok, pričom každý filter hľadá v obrázku konkrétnu vlastnosť - na nižších konvolučných vrstvách sú črtami spravidla čiary a jednoduché tvary a na vyšších vrstvách sú funkcie môžu byť konkrétnejšie, napr časti tela, špecifické textúry, časti zvierat alebo rastlín atď. Prítomnosť určitého súboru funkcií nám môže poskytnúť vodítko k tomu, aký by mohol byť predmet na obrázku. Fúzy, dve oči a čierny nos? Musí to byť mačka! Zelené listy, kmeň stromu? Vyzerá ako strom!
Dúfam, že teraz získate predstavu o fungujúcom princípe CNN. Hlboká neurónová sieť bežne potrebuje tisíce obrázkov a hodiny školenia (závisí od hardvéru, ktorý na školenie používate) na „vývoj“filtrov, ktoré sú užitočné na rozpoznanie typov požadovaných objektov. Existuje však skratka.
Model vycvičený na rozpoznávanie mnohých rôznych bežných predmetov (mačky, psy, domáce spotrebiče, doprava atď.) Už mnoho „užitočných filtrov“vyvinul, takže ho nepotrebujeme, aby sme sa naučili rozpoznávať základné tvary a súčasti. predmetov znova. Môžeme len znova vycvičiť posledných niekoľko vrstiev siete, aby rozpoznali konkrétne triedy objektov, ktoré sú pre nás dôležité. Hovorí sa tomu „prenosové učenie“. Na prenosové učenie potrebujete podstatne menej tréningových dát a výpočtového času, pretože trénujete iba niekoľko posledných vrstiev siete, zloženej možno z niekoľkých stoviek neurónov.
Znie to úžasne, však? Pozrime sa, ako ho implementovať.
Krok 2: Pripravte si prostredie
To sú dva spôsoby, ako používať aXeleRate: lokálne spustenie na počítači Ubuntu alebo v službe Google Colab. Ak chcete bežať v službe Google Colab, pozrite sa na tento príklad:
Zaradenie obrázku Colab Notebook
Teraz je oveľa jednoduchšie školiť model lokálne a exportovať ho, aby sa používal s hardvérovou akceleráciou.
Moje pracovné prostredie je Ubuntu 16.04, 64bit. Na spustenie obrazu Ubuntu môžete použiť virtuálny počítač, pretože na školenie nebudeme používať GPU. S určitými úpravami môžete školiaci skript spustiť aj v systéme Windows, ale na konverziu modelu budete potrebovať systém Linux. Na spustenie tohto tutoriálu je teda vhodnejšie prostredie Ubuntu 16.04, ktoré beží natívne alebo na virtuálnom počítači.
Začnime inštaláciou Miniconda, čo je správca prostredia pre Python. Vytvoríme izolované prostredie, takže vo vašom systémovom prostredí Pythonu nič nezmeníme omylom.
Stiahnite si inštalátor tu
Po dokončení inštalácie vytvorte nové prostredie:
conda create -n ml python = 3.7
Aktivujme nové prostredie
aktivujte ml
Pred vašim bash shellom sa zobrazí predpona s názvom prostredia, ktorá naznačuje, že v tomto prostredí teraz pracujete.
Krok 3: Nainštalujte AXeleRate a spustite testy
Nainštalujte si aXeleRate na svoj lokálny počítač pomocou
pip install git+https://github.com/AIWintermuteAI/aXeleRate
Ak chcete stiahnuť príklady, spustite:
git klon
Rýchle testy môžete vykonať pomocou testov_training.py v priečinku aXeleRate. Bude prebiehať školenie a vyvodzovanie záverov pre každý typ modelu, ukladať a prevádzať natrénované modely. Pretože ide iba o školenie na 5 epoch a množina údajov je veľmi malá, nebudete môcť získať užitočné modely, ale tento skript je určený iba na kontrolu absencie chýb.
Krok 4: Znovu vycvičte model, konvertujte model Keras na.kmodel
V tomto prípade hračky budeme trénovať model, aby rozpoznal Santa Clausa a Arduino Uno. Očividne si môžete vybrať iné triedy. Odtiaľto si stiahnite súbor údajov. Vytvorte kópiu súboru classifier.json v konfiguračnom priečinku a potom ho zodpovedajúcim spôsobom zmeňte, podobne ako v konfiguračnom súbore na snímke obrazovky - uistite sa, že cesta k priečinkom na školenia a overovanie je správna!
Spustite nasledujúci príkaz z priečinka aXeleRate:
python axelerate/train.py - c configs/santa_uno.json
Začne sa školenie. Ak sa presnosť validácie (naša validačná metrika) nezlepší po dobu 20 epoch, tréning sa predčasne zastaví. Zakaždým, keď sa zvýši presnosť validácie, model sa uloží do priečinka projektu. Po skončení školenia aXeleRate automaticky prevádza najlepší model do určených formátov - odteraz si môžete vybrať „tflite“, „k210“alebo „edgetpu“.
Krok 5: Spustite model na Sipeed Maix Bit
Existujú dva spôsoby, ako spustiť model, ktorý teraz máte, na hardvéri Sipeed Maix: mikropythonový firmvér a Arduino IDE. Mikropythonový hardvér sa používa jednoduchšie, ale zaberá značnú časť dostupnej pamäte, takže na model zostáva menej miesta. Arduino IDE je v podstate C kód, ktorý je oveľa efektívnejší a má menšiu pamäťovú stopu. Môj model má iba 1,9 Mb, takže obe možnosti fungujú. S Micropythonom môžete používať modely až 2,9 Mb, pre čokoľvek väčšie musíte zvážiť použitie Arduino IDE.
Odtiaľ si stiahnite OpenMV IDE a odtiaľ minimálny firmvér mikropythonu.
Vypálte firmvér pomocou nástroja kflash_gui. Môžete sa tiež rozhodnúť vypáliť trénovaný model tak, aby blikal, ako je to znázornené na obrázku. Alebo ho skopírujte na kartu SD (v takom prípade skopírujte.kmodel do koreňa karty SD a vložte kartu SD do súboru Sipeed Maix Bit)
Otvorte OpenMV IDE a stlačte tlačidlo pripojenia. Otvorte skript santa_uno.py z priečinka example_scripts a stlačte tlačidlo Štart. Mali by ste sledovať priamy prenos z kamery a ak otvoríte sériový terminál, získate najlepšie výsledky rozpoznávania obrazu so skóre spoľahlivosti!
Na použitie s Arduino IDE musíte najskôr dodržať postup pridávania dosiek Sipeed do Arduino IDE, ktorý je popísaný tu. Vaša verzia Arduino IDE musí byť aspoň 1.8.12. Po pridaní panelov otvorte skicu mobilenet_v1_transfer_learning.ino a nahrajte ju na server Sipeed Maix Bit. Zmeňte názov modelu na karte SD na „model“(alebo vytvorte kópiu s týmto názvom). Názvy štítkov môžete zmeniť v names.cpp. Zobrazí živý stream z kamery na obrazovke Sipeed Maix spolu s najlepším výsledkom rozpoznávania obrazu.
Krok 6: Závery
Tu je niekoľko ďalších materiálov, ktoré si môžete prečítať na tému CNN a transferového vzdelávania:
Prenosové učenie pomocou Mobilenet a Keras Tento tutoriál je skvelým vysvetlením prenosového učenia a používa upravenú verziu kódu z tohto článku.
Mačky a psy a konvolučné neurónové siete Vysvetľuje základy CNN a vizualizuje niektoré filtre. S mačkami!
Trénujte, prevádzajte a prevádzkujte MobileNet na serveroch Sipeed MaixPy a MaixDuino! Tutoriál od tímu Sipeed o tom, ako od začiatku trénovať triedy Mobilenet 1000 (bez prenosu). Môžete si stiahnuť ich vopred vycvičený model a vyskúšať to!
Dúfam, že znalosti, ktoré máte teraz, môžete využiť na stavbu úžasných projektov so strojovým videním! Dosky Sipeed si môžete kúpiť tu, patria medzi najlacnejšie možnosti dostupné pre ML na vstavaných systémoch.
Odporúča:
Umelá inteligencia a rozpoznávanie obrazu pomocou objektívu HuskyLens: 6 krokov (s obrázkami)
Umelá inteligencia a rozpoznávanie obrazu pomocou HuskyLens: Hej, čo sa deje, chlapci! Akarsh tu od CETech. V tomto projekte sa pozrieme na HuskyLens od DFRobot. Jedná sa o kamerový modul poháňaný AI, ktorý je schopný vykonávať niekoľko operácií umelej inteligencie, ako je Face Recognitio
Spracovanie obrazu s Raspberry Pi: Inštalácia OpenCV a oddelenie farieb obrazu: 4 kroky
Spracovanie obrazu s Raspberry Pi: Inštalácia OpenCV a separácie farieb obrazu: Tento príspevok je prvým z niekoľkých návodov na spracovanie obrazu, ktoré treba nasledovať. Bližšie sa pozrieme na pixely, ktoré tvoria obrázok, naučíme sa nainštalovať OpenCV na Raspberry Pi a tiež píšeme testovacie skripty na zachytenie obrázku a tiež
Šialený elektrický Budet s dlhými doskami a palubou z uhlíkových vlákien: 6 krokov (s obrázkami)
Insane Electric Longboard Budet With Carbon Fiber Deck: Hej, než budem hovoriť o sebe a prečo som sa rozhodol ísť na túto cestu, rád by som povedal, prosím, pozrite sa na moje video, kde nájdete epickú jazdeckú montáž a moje postupy tvorby, čo je tiež dôležité, prihláste sa na odber. skutočne pomôže môjmu vysokoškolskému kurzu, pretože
Zámok NFC - keď sú doskami aj tlačidlá, anténa a ďalšie : 7 krokov (s obrázkami)
Zámok NFC - keď sú doskami tiež tlačidlá, anténa a ďalšie …: Z tohto návodu si môžete vziať jednu z dvoch vecí. Môžete pokračovať a vytvoriť si vlastnú kombináciu numerickej klávesnice a čítačky NFC. Schéma je tu. Rozloženie DPS je tu. Nájdete tu kusovník materiálu na objednanie
Rozpoznávanie obrazu pomocou TensorFlow na Raspberry Pi: 6 krokov
Rozpoznávanie obrázkov pomocou TensorFlow na Raspberry Pi: Google TensorFlow je softvérová knižnica s otvoreným zdrojovým kódom na číselné výpočty pomocou grafov toku údajov. Spoločnosť Google ho používa v rôznych oblastiach strojového učenia a technológií hlbokého vzdelávania. TensorFlow bol pôvodne vyvinutý spoločnosťou Google Brai