Obsah:
- Krok 1: CNN a přenosové učení: Nějaká teorie
- Krok 2: Připravte si prostředí
- Krok 3: Nainstalujte si AXeleRate a spusťte testy
- Krok 4: Znovu trénujte model, převeďte model Keras na.kmodel
- Krok 5: Spusťte model na Sipeed Maix Bit
- Krok 6: Závěry
Video: Rozpoznávání obrazu s deskami K210 a Arduino IDE/Micropython: 6 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Už jsem napsal jeden článek o tom, jak spustit ukázky OpenMV na Sipeed Maix Bit a také jsem s touto deskou natočil video demo detekce objektů. Jednou z mnoha otázek, které si lidé pokládají, je - jak poznám objekt, na který neuronová síť není vycvičená? Jinými slovy, jak vytvořit vlastní klasifikátor obrázků a spustit jej s hardwarovou akcelerací.
To je pochopitelná otázka, protože u vašeho projektu pravděpodobně nemusíte rozpoznávat některé generické objekty, jako jsou kočky, psi a letadla. Chcete rozpoznat něco konkrétního, například plemeno psa pro automatické dveře pro domácí zvířata nebo druh rostliny pro třídění nebo jakékoli jiné aplikace, na které můžete myslet!
Mám tě! V tomto článku vás naučím, jak si vytvořit vlastní klasifikátor obrázků pomocí přenosového učení v Kerasu, převést natrénovaný model do formátu.kmodel a spustit jej na desce Sipeed (může být jakákoli deska, Bit/Dock nebo Go) pomocí Micropythonu nebo Arduino IDE. A pouze vaše představivost bude limitem úkolů, které s těmito znalostmi můžete dělat.
AKTUALIZACE KVĚTEN 2020: Když jsem viděl, jak jsou můj článek a video o rozpoznávání obrázků s deskami K210 stále velmi populární a mezi nejlepšími výsledky na YouTube a Google, rozhodl jsem se článek aktualizovat tak, aby obsahoval informace o aXeleRate, frameworku založeném na Kerasu pro AI na Edge vyvíjím.
aXeleRate v zásadě vychází ze sbírky skriptů, které jsem používal pro školení modelů rozpoznávání obrázků/detekce objektů - kombinované do jednoho rámce a optimalizované pro pracovní postup na Google Colab. Používání je pohodlnější a aktuálnější.
Starou verzi článku můžete stále vidět na webu steemit.com.
Krok 1: CNN a přenosové učení: Nějaká teorie
Konvoluční neurální sítě nebo CNN je třída hlubokých neuronových sítí, která se nejčastěji používá k analýze vizuálních snímků. Na internetu je k tomuto tématu spousta literatury a v poslední části článku dám pár odkazů. Stručně řečeno, CNN můžete považovat za řadu filtrů aplikovaných na obrázek, přičemž každý filtr hledá v obrázku konkrétní prvek - na nižších konvolučních vrstvách jsou rysy obvykle čáry a jednoduché tvary a na vyšších vrstvách funkce může být konkrétnější, např části těla, specifické textury, části zvířat nebo rostlin atd. Přítomnost určité sady funkcí nám může poskytnout vodítko k tomu, jaký by mohl být předmět na obrázku. Vousy, dvě oči a černý nos? Musí to být kočka! Zelené listy, kmen stromu? Vypadá jako strom!
Doufám, že teď máte představu o principu fungování CNN. Hluboká neuronová síť obvykle potřebuje tisíce obrázků a hodiny tréninkového času (závisí na hardwaru, který k tréninku používáte) k „vývoji“filtrů, které jsou užitečné pro rozpoznávání typů požadovaných objektů. Ale existuje zkratka.
Model vycvičený k rozpoznávání spousty různých běžných předmětů (kočky, psi, domácí spotřebiče, doprava atd.) Už má spoustu těch užitečných filtrů „vyvinutých“, takže nepotřebujeme, abychom se naučili rozpoznávat základní tvary a části předmětů znovu. Můžeme jen znovu vycvičit posledních několik vrstev sítě, abychom rozpoznali konkrétní třídy objektů, které jsou pro nás důležité. Říká se tomu „přenosové učení“. S přenosovým učením potřebujete podstatně méně tréninkových dat a výpočetního času, protože trénujete jen několik posledních vrstev sítě, složených možná z několika stovek neuronů.
Zní to úžasně, že? Podívejme se, jak jej implementovat.
Krok 2: Připravte si prostředí
To jsou dva způsoby, jak používat aXeleRate: běží lokálně na počítači Ubuntu nebo v Google Colab. Pro spuštění v Google Colab se podívejte na tento příklad:
Klasifikace obrázků Notebook Colab
Místní školení vašeho modelu a export jeho použití s hardwarovou akcelerací je nyní také mnohem jednodušší.
Moje pracovní prostředí je Ubuntu 16.04, 64bit. Ke spuštění obrazu Ubuntu můžete použít virtuální počítač, protože GPU nebudeme používat pro školení. S některými úpravami můžete také spustit tréninkový skript na Windows, ale pro převod modelu budete muset použít systém Linux. Preferovaným prostředím pro spuštění tohoto kurzu je Ubuntu 16.04, běžící nativně nebo na virtuálním počítači.
Začněme instalací Miniconda, což je správce prostředí pro Python. Vytvoříme izolované prostředí, takže ve vašem systémovém prostředí Pythonu nic nezměníme omylem.
Stáhněte si instalační program zde
Po dokončení instalace vytvořte nové prostředí:
conda create -n ml python = 3.7
Pojďme aktivovat nové prostředí
aktivujte ml
Před vaším bash shellem se zobrazí předpona s názvem prostředí, což znamená, že v tomto prostředí nyní pracujete.
Krok 3: Nainstalujte si AXeleRate a spusťte testy
Nainstalujte si aXeleRate na svůj lokální počítač pomocí
pip install git+https://github.com/AIWintermuteAI/aXeleRate
Chcete -li stáhnout příklady, spusťte:
klon git
Rychlé testy můžete spustit s testy_training.py ve složce aXeleRate. Bude spouštět školení a odvozování pro každý typ modelu, ukládat a převádět natrénované modely. Protože se jedná pouze o školení pro 5 epoch a datová sada je velmi malá, nebudete moci získat užitečné modely, ale tento skript je určen pouze pro kontrolu absence chyb.
Krok 4: Znovu trénujte model, převeďte model Keras na.kmodel
Pro tento příklad hračky budeme trénovat model, aby rozpoznal Santa Clause a Arduino Uno. Očividně si můžete vybrat jiné třídy. Stáhněte si datovou sadu odtud. Vytvořte kopii souboru classifier.json ve složce config a poté ji odpovídajícím způsobem změňte, podobně jako konfigurační soubor na snímku obrazovky - ujistěte se, že cesta ke složkám pro školení a ověřování je správná!
Ze složky aXeleRate spusťte následující příkaz:
python axelerate/train.py - c configs/santa_uno.json
Začne školení. Pokud se přesnost ověření (naše validační metrika) nezlepší po dobu 20 epoch, trénink se předčasně zastaví. Pokaždé, když se přesnost ověření zlepší, model se uloží do složky projektu. Po skončení tréninku aXeleRate automaticky převede nejlepší model na určené formáty - nyní si můžete vybrat „tflite“, „k210“nebo „edgetpu“.
Krok 5: Spusťte model na Sipeed Maix Bit
Existují dva způsoby, jak spustit model, který nyní máte, na hardwaru Sipeed Maix: firmware mikropythonu a Arduino IDE. Mikropythonový hardware se používá snadněji, ale zabírá významnou část dostupné paměti, takže pro model zbývá méně místa. Arduino IDE je v podstatě C kód, který je mnohem efektivnější a má menší paměťovou stopu. Můj model má pouze 1,9 Mb, takže obě možnosti fungují. S Micropythonem můžete použít modely o velikosti až 2,9 Mb, pro cokoli většího musíte zvážit použití Arduino IDE.
Stáhněte si OpenMV IDE odtud a minimální firmware mikropythonu odtud.
Firmware vypalte pomocí nástroje kflash_gui. Můžete se také rozhodnout vypálit trénovaný model na flash, jak ukazuje obrázek. Nebo jej zkopírujte na kartu SD (v takovém případě zkopírujte.kmodel do kořenového adresáře karty SD a vložte kartu SD do bitů Sipeed Maix Bit)
Otevřete OpenMV IDE a stiskněte tlačítko připojit. Otevřete skript santa_uno.py ze složky example_scripts a stiskněte tlačítko Start. Měli byste sledovat živý přenos z kamery a pokud otevřete sériový terminál, získáte nejlepší výsledek rozpoznávání obrazu se skóre spolehlivosti!
Pro použití s Arduino IDE musíte nejprve dodržet postup pro přidání desek Sipeed do Arduino IDE, který je zdokumentován zde. Vaše verze Arduino IDE musí být alespoň 1.8.12. Poté, co přidáte desky, otevřete skicu mobilenet_v1_transfer_learning.ino a nahrajte ji na Sipeed Maix Bit. Změňte název modelu na kartě SD na „model“(nebo vytvořte kopii s tímto názvem). Názvy popisků můžete změnit v names.cpp. Zobrazí živý kamerový stream na obrazovce Sipeed Maix spolu s nejlepším výsledkem rozpoznávání obrazu.
Krok 6: Závěry
Zde je několik dalších materiálů, které si můžete přečíst na téma CNN a přenosové učení:
Přenosové učení pomocí Mobilenet a Keras Skvělý výklad k přenosovému učení, tento tutoriál používá upravenou verzi kódu z tohoto článku.
Kočky a psi a konvoluční neurální sítě Vysvětluje základy CNN a vizualizuje některé filtry. S kočkami!
Trénujte, převádějte, provozujte MobileNet na Sipeed MaixPy a MaixDuino! Výukový program týmu Sipeed o tom, jak trénovat třídy Mobilenet 1000 od nuly (žádné přenosové učení). Můžete si stáhnout jejich předem natrénovaný model a vyzkoušet ho!
Doufám, že znalosti, které nyní máte, můžete použít k vybudování úžasných projektů se strojovým viděním! Desky Sipeed můžete koupit zde, patří mezi nejlevnější možnosti dostupné pro ML na vestavěných systémech.
Doporučuje:
Umělá inteligence a rozpoznávání obrazu pomocí HuskyLens: 6 kroků (s obrázky)
Umělá inteligence a rozpoznávání obrazu pomocí HuskyLens: Hej, co se děje, lidi! Akarsh zde od CETech. V tomto projektu se podíváme na HuskyLens od DFRobot. Jedná se o kamerový modul poháněný AI, který je schopen provádět několik operací umělé inteligence, jako je Face Recognitio
Systém rozpoznávání a hašení požáru založený na zpracování obrazu: 3 kroky
Systém rozpoznávání a hašení požáru založený na zpracování obrazu: Dobrý den, přátelé, toto je systém detekce požáru a hasicího zařízení založený na zpracování obrazu pomocí Arduina
Zpracování obrazu s Raspberry Pi: Instalace OpenCV a separace barev obrazu: 4 kroky
Zpracování obrazu s Raspberry Pi: Instalace OpenCV a separace barev obrazu: Tento příspěvek je prvním z několika tutoriálů pro zpracování obrazu, které je třeba následovat. Podíváme se blíže na pixely, které tvoří obrázek, naučíme se instalovat OpenCV na Raspberry Pi a také píšeme testovací skripty pro zachycení obrázku a také
Jak nastavit IDE Arduino tak, aby fungovalo s deskami Tinusaur .: 3 kroky
Jak nastavit IDE Arduino tak, aby fungovalo s deskami Tinusaur .: Toto je krátký návod, jak nastavit Arduino IDE tak, aby fungoval s deskami Tinusaur. V zásadě funguje tak, aby fungoval s mikrokontroléry Atmel ATtiny85/45/25. . Jediným rozdílem je, že se na seznamu desek objeví jako Tinusau
Rozpoznávání obrazu pomocí TensorFlow na Raspberry Pi: 6 kroků
Rozpoznávání obrazu pomocí TensorFlow na Raspberry Pi: Google TensorFlow je softwarová knihovna s otevřeným zdrojovým kódem pro numerické výpočty využívající grafy toku dat. Google ho používá v různých oblastech strojového učení a technologií hlubokého učení. TensorFlow byl původně vyvinut společností Google Brai