2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Toto je druhý článek ze série o Sipeed AI na platformě mikrokontrolérů Edge. Tentokrát budu psát o MaiX Bit (odkaz na Seeed Studio Shop), menší vývojové desce připravené na breadboard. Jeho specifikace jsou velmi podobné MaiX Dock, desce, kterou jsem použil v minulém tutoriálu, protože používají stejný čip Kendryte K210.
K vyzkoušení některých ukázek OpenMV použijeme firmware mikropythonu. Zde je popis z domovské stránky OpenMV:
Projekt OpenMV je o vytváření levných, rozšiřitelných modulů strojového vidění poháněných Pythonem a jeho cílem je stát se „Arduino of Machine Vision“. … Python výrazně usnadňuje práci s algoritmy strojových vizí. Metoda find_blobs () v kódu například najde barevné objekty BLOB a vrátí seznam 8 hodnotných objektů představujících každý nalezený barevný blob. V Pythonu lze procházení seznamu objektů vrácených find_blobs () a kreslení obdélníku kolem každého barevného blobu snadno provést pouze ve dvou řádcích kódu.
Navzdory tomu, že funkce MaiX Bit obsahuje vyhrazený akcelerátor neuronových sítí, někdy může být jednodušší použít k provedení práce pevně zakódované algoritmy OpenMV nebo je použít vedle sebe.
Napadají mě některé případy použití:
1) Detekce linky pro robota sledujícího linku
2) Detekce semaforů s detekcí kruhu a barev
3) Použití detekce obličejů k vyhledání obličejů pro rozpoznávání obličejů (s DNN)
Úložiště Github pro tento článek
Krok 1: Firmware Flash Micropython
Nejprve budeme muset flashovat mikropython firmware na naši desku. Předkompilovaný binární soubor je součástí úložiště github pro tento článek spolu s kflash.py (nástroj pro flash). Pokud si přejete zkompilovat firmware ze zdrojového kódu, stáhněte si zdrojový kód z https://github.com/sipeed/MaixPy, nainstalujte řetězec nástrojů a zkompilujte zdrojový kód do souboru maixpy.bin. Podrobné pokyny k sestavení naleznete zde.
Flashujte binární soubor pomocí
sudo python3 kflash.py kpu.bin
Po úspěšném blikání pokračujte dalším krokem.
Krok 2: Připojte se k MaiX Bit
Nyní by náš bit MaiX měl být přístupný prostřednictvím sériového připojení USB s přenosovou rychlostí 115200. Svůj oblíbený software můžete použít pro sériovou komunikaci nebo pouze příkazy kočka a echo, cokoli vyhovuje vašim potřebám. Používal jsem obrazovku pro sériovou komunikaci a bylo to velmi pohodlné.
Příkaz pro navázání relace sériové komunikace s obrazovkou je
obrazovka sudo /dev /ttyUSB0 115200
kde /dev /ttyUSB0 je adresa vašeho zařízení.
Možná budete muset stisknout tlačítko reset na mikrokontroléru, aby se zobrazila uvítací zpráva a výzva pro překladače pythonu.
Krok 3: Spusťte ukázky
Nyní můžete vstoupit do režimu kopírování stisknutím Ctrl+E a zkopírovat a vložit demo kódy. Chcete -li je spustit, stiskněte Ctrl+D v režimu kopírování.
Pokud si nepřejete nahrávat videa, musíte okomentovat řádky pro nahrávání videa. Jinak kód vyvolá výjimku, pokud není vložena žádná karta SD
Zde jsou krátké popisy každé ukázky:
Najít kruhy - používá funkci find_circles z OpenMV. Vyžaduje více vylepšení pro vaši konkrétní aplikaci, zejména prahovou hodnotu (řídí, jaké kruhy jsou detekovány z transformace Hough. Jsou vráceny pouze kruhy s velikostí větší nebo rovnou prahové hodnotě) a hodnoty r_min, r_max.
Najít obdélníky - používá funkci find_rects z OpenMV. Můžete si pohrát s prahovou hodnotou, ale hodnota, kterou mám v ukázce, funguje docela dobře při hledání obdélníků.
Najít tváře, najít oči - používá funkci find_features s Haar Cascade pro detekci očí a čelní tváře na obrázku. Můžete si pohrát s prahovými hodnotami a hodnotami měřítka pro správný kompromis mezi přesností a rychlostí.
Najít nekonečné čáry - pomocí funkce find_lines najde všechny nekonečné čáry v obraze pomocí transformace Hough.
Detect color - používá funkci get_statistics k získání percentilového objektu a poté převádí průměrné hodnoty řazené kolekce LAB na řazené hodnoty RGB. Tento příklad jsem napsal sám a funguje docela dobře, ale mějte na paměti, že výsledky detekce barev budou ovlivněny okolními světelnými podmínkami.
Mnoho dalších zajímavých ukázek najdete v úložišti OpenMV github! Většinou jsou kompatibilní s mikropythonem MaiX Bit, jediné, co si musíte pamatovat, je přidat sensor.run (1) po nastavení pixformátu a velikosti rámce.
Šťastné experimentování s kódem OpenMV. Pokud máte nějaké dotazy nebo se chcete podělit o nějaké své zajímavé výsledky, neváhejte mě kontaktovat na Youtube nebo LinkedIn. Promiňte, půjdu udělat nějaké roboty!