Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Ak sledujete správy v poslednom čase, došlo k výbuchu začínajúcich spoločností vyvíjajúcich čipy na urýchlenie odvodenia a školenia algoritmov ML (strojového učenia). Väčšina z týchto čipov je však stále vo vývoji a nie je to niečo, čo by váš priemerný výrobca mohol dostať do rúk. Jedinou významnou výnimkou bola zatiaľ Intel Movidius Neural Compute Stick, ktorá sa dá kúpiť a je dodávaná s dobrou súpravou SDK. Má niekoľko významných nevýhod - konkrétne cenu (približne 100 USD) a skutočnosť, že sa dodáva vo formáte USB. Je to skvelé, ak ho chcete používať s prenosným počítačom alebo Raspberry PI, ale čo keď chcete s Arduino vykonávať niekoľko projektov na rozpoznávanie obrázkov? Alebo Raspberry Pi Zero?
Krok 1: Sipeed MAix: AI na okraji
Nie je to tak dávno, čo sa mi do rúk dostala vývojová doska Sipeed M1w K210, ktorá má dvojjadrový 64bitový procesor RISC-V a môže sa pochváliť integrovaným procesorom KPU (Neural Network Processor), špeciálne navrhnutým na urýchlenie CNN na spracovanie obrazu. Viac podrobností si môžete prečítať tu.
Cena tejto dosky ma úprimne šokovala, je to iba 19 USD za plnohodnotnú vývojovú dosku AI-on-the-edge s podporou Wi-Fi! Existuje však námietka (samozrejme, že existuje): firmvér mikropythonu pre dosku sa stále vyvíja a celkovo nie je teraz užívateľsky prívetivý. Jediný spôsob, ako v súčasnosti získať prístup ku všetkým jeho funkciám, je napísať vlastný vstavaný kód C alebo upraviť niektoré existujúce ukážky.
Tento tutoriál vysvetľuje, ako použiť model detekcie triedy Mobilenet 20 na detekciu objektov a odoslanie zisteného kódu objektu prostredníctvom UART, odkiaľ ho môže prijať Arduino/Raspberry Pi.
Tento tutoriál teraz predpokladá, že ste oboznámení s Linuxom a základmi kompilácie kódu C. Ak sa vám pri počúvaní tejto frázy trochu zatočila hlava:), preskočte na krok 4, kde nahráte môj vopred vytvorený binárny súbor na server Sipeed M1 a preskočte kompiláciu.
Krok 2: Pripravte si prostredie
Na kompiláciu a odoslanie kódu C som použil Ubuntu 16.04. V systéme Windows je to možné, ale sám som to neskúsil.
Stiahnite si RISC-V GNU Compiler Toolchain, nainštalujte všetky potrebné závislosti.
git klon-rekurzívny
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
Skopírujte stiahnutý reťazec nástrojov do adresára /opt. Potom spustite nasledujúce príkazy
./configure --prefix =/opt/kendryte-toolchain --with-cmodel = medany
urobiť
Pridajte/opt/kendryte-toolchain/bin do svojej CESTY teraz.
Teraz ste pripravení skompilovať kód!
Krok 3: Zostavte kód
Stiahnite si kód z môjho úložiska github.
Stiahnite si samostatnú súpravu Kendryte K210 SDK
Skopírujte priečinok /kpu z môjho úložiska github do priečinka /src v súprave SDK.
Spustite nasledujúce príkazy v priečinku SDK (nie v priečinku /src!)
mkdir build && cd build
cmake.. -DPROJ = nazov_projektu -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make
kde project_name je názov vášho projektu (na vás) a -DTOOLCHAIN = by mal ukazovať na umiestnenie vašej reťazca nástrojov risc -v (stiahli ste si ju v prvom kroku, pamätáte?)
Skvelé! Dúfajme, že teraz uvidíte, že kompilácia je dokončená bez chýb a máte súbor.bin, ktorý môžete nahrať.
Krok 4: Odovzdanie súboru.bin
Teraz pripojte svoj Sipeed M1 k počítaču a z priečinka /build spustite nasledujúci príkaz
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200 000 kpu.bin
Kde kpu.bin je názov vášho súboru.bin
Odovzdanie zvyčajne trvá 2 až 3 minúty. Po dokončení sa na tabuli zobrazí detekcia 20 tried. Posledným krokom pre nás je pripojenie k Arduino mega alebo Raspberry Pi.
!!! Ak ste práve prišli z kroku 2 !!
Spustite nasledujúci príkaz z priečinka, do ktorého ste klonovali moje úložisko github
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin
Odovzdanie zvyčajne trvá 2 až 3 minúty. Po dokončení sa na tabuli zobrazí detekcia 20 tried. Posledným krokom pre nás je pripojenie k Arduino mega alebo Raspberry Pi.
Krok 5: Pripojenie k Arduinu
Použil som Arduino Mega s Seeed Studio Mega Shield, preto som spájal konektor Grove s doskou Sipeed M1. Môžete však použiť prepojovacie vodiče a pripojiť Sipeed M1 priamo k Arduino Mega podľa tejto schémy zapojenia.
Potom nahrajte skicu camera.ino a otvorte sériový monitor. Keď namierite fotoaparát na rôzne objekty (zoznam 20 tried je v náčrte), malo by sa na sériovom monitore zobraziť názov triedy!
Gratulujem Teraz máte funkčný modul detekcie obrazu pre vaše Arduino!
Krok 6: Pripojenie k Raspberry Pi
Použil som klobúk Grove Pi+ pre Raspberry Pi 2B, ale znova, rovnako ako pre Arduino, môžete podľa tohto schémy zapojenia jednoducho pripojiť Sipeed M1 k rozhraniu UART Raspberry Pi.
Potom spustite Camera_speak.py a namierte fotoaparát na rôzne objekty, terminál vydá nasledujúci text „Myslím, že je“a ak máte pripojené reproduktory, vysloví túto frázu nahlas. Celkom cool, nie?
Krok 7: Záver
Toto je veľmi vzrušujúca doba, v ktorej žijeme, pričom AI a strojové učenie prenikajú do všetkých oblastí nášho života. Teším sa na vývoj v tejto oblasti. Zostávam v kontakte s tímom Sipeed a viem, že aktívne vyvíjajú obalový program pre mikropytóny pre všetky potrebné funkcie vrátane akcelerácie CNN.
Keď bude pripravený, veľmi pravdepodobne uverejním ďalšie návody na používanie vlastných modelov CNN s mikropytónom. Zamyslite sa nad všetkými vzrušujúcimi aplikáciami, ktoré môžete mať pre dosku, ktorá dokáže prevádzkovať vaše vlastné neurónové siete na spracovanie obrazu za túto cenu a s touto stopou!