Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Ako ste nedavno pratili vijesti, došlo je do eksplozije početnika koji razvijaju čipove za ubrzavanje zaključivanja i obuke algoritama ML-a (strojnog učenja). Međutim, većina tih čipova je još uvijek u razvoju i nije nešto što bi vaš prosječni proizvođač mogao dohvatiti. Jedina značajna iznimka do sada bio je Intel Movidius Neural Compute Stick, koji je dostupan za kupnju i dolazi s dobrim SDK -om. Ima nekoliko značajnih nedostataka - naime cijenu (oko 100 USD) i činjenicu da dolazi u USB formatu. Izvrsno je ako ga želite koristiti s prijenosnim računalom ili Raspberry PI -om, ali što ako želite raditi neke projekte za prepoznavanje slika s Arduinom? Ili Raspberry Pi Zero?
Korak 1: Sipeed MAix: AI na rubu
Ne tako davno u ruke mi je došla razvojna ploča Sipeed M1w K210, koja ima dvojezgreni RISC-V 64-bitni CPU i ima ugrađeni KPU (Neural Network Processor), posebno dizajniran za ubrzavanje CNN-a za obradu slika. Više detalja možete pročitati ovdje.
Cijena ove ploče me iskreno šokirala, to je samo 19 USD za punopravnu razvojnu ploču AI-on-the-edge s podrškom za Wi-Fi! Ipak, postoji upozorenje (naravno da postoji): mikropython firmver za ploču je još uvijek u razvoju, te općenito za sada nije previše prilagođen korisnicima. Jedini način da sada pristupite svim njegovim funkcijama je da napišete vlastiti ugrađeni C kod ili izmijenite neke postojeće demonstracije.
Ovaj vodič objašnjava kako koristiti model otkrivanja klase Mobilenet 20 za otkrivanje objekata i slanje otkrivenog objektnog koda putem UART -a, odakle ga Arduino/Raspberry Pi može primiti.
Ovaj vodič pretpostavlja da ste upoznati s Linuxom i osnovama sastavljanja C koda. Ako vam se od ove rečenice malo zavrtjelo u glavi:) samo prijeđite na korak 4, gdje učitavate moju unaprijed izgrađenu binarnu datoteku na Sipeed M1 i preskočite sastavljanje.
Korak 2: Pripremite svoje okruženje
Koristio sam Ubuntu 16.04 za kompilaciju i prijenos C koda. To je moguće učiniti u sustavu Windows, ali ja to nisam isprobao.
Preuzmite RISC-V GNU Compiler Toolchain, instalirajte sve potrebne ovisnosti.
git clone --recursive
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
Kopirajte preuzeti alatni lanac u direktorij /opt. Nakon toga pokrenite sljedeće naredbe
./configure --prefix =/opt/kendryte-toolchain --with-cmodel = medany
napraviti
Dodajte/opt/kendryte-toolchain/bin na svoj PATH sada.
Sada ste spremni za sastavljanje koda!
Korak 3: Sastavite kôd
Preuzmite kod iz mog github spremišta.
Preuzmite Kendryte K210 samostalni SDK
Kopirajte /kpu mapu iz mog github spremišta u /src mapu u SDK -u.
Pokrenite sljedeće naredbe u mapi SDK (ne /mapa src!)
mkdir build && cd build
cmake.. -DPROJ = naziv_projekta -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make
gdje je naziv_projekta naziv vašeg projekta (do vas) i -DTOOLCHAIN = trebao bi ukazivati na lokaciju vašeg risc -v alata (preuzeli ste ga u prvom koraku, sjećate se?)
Sjajno! Nadajmo se da ćete vidjeti da je kompilacija završena bez grešaka i da imate.bin datoteku koju možete prenijeti.
Korak 4: Prijenos.bin datoteke
Sada povežite svoj Sipeed M1 s računalom i iz mape /build pokrenite sljedeću naredbu
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu.bin
Gdje je kpu.bin naziv vaše.bin datoteke
Prijenos obično traje 2-3 minute, a nakon što završite vidjet ćete ploču s otkrivanjem 20 klasa. Posljednji korak za nas je povezivanje s Arduino mega ili Raspberry Pi.
!!! Ako ste upravo došli iz 2. koraka !
Pokrenite sljedeću naredbu iz mape u kojoj ste klonirali moje github spremište
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin
Prijenos obično traje 2-3 minute, a nakon što završite vidjet ćete ploču s otkrivanjem 20 klasa. Posljednji korak za nas je povezivanje s Arduino mega ili Raspberry Pi.
Korak 5: Povezivanje s Arduinom
Koristio sam Arduino Mega sa Seeed Studio Mega Shieldom, zato sam lemio Grove konektor na ploču Sipeed M1. Međutim, možete samo koristiti kratkospojne žice i spojiti Sipeed M1 izravno na Arduino Mega, slijedeći ovaj dijagram ožičenja.
Nakon toga prenesite skicu camera.ino i otvorite serijski monitor. Kad usmjerite kameru na različite objekte (popis od 20 klasa nalazi se na skici), ona bi trebala prikazati naziv klase u serijskom monitoru!
Čestitamo! Sada imate radni modul za otkrivanje slike za svoj Arduino!
Korak 6: Spajanje na Raspberry Pi
Koristio sam Grove Pi+ šešir za Raspberry Pi 2B, ali opet, kao i kod Arduina, možete jednostavno izravno spojiti Sipeed M1 na Raspberry Pi UART sučelje slijedeći ovaj dijagram ožičenja.
Nakon toga pokrenite camera_speak.py i usmjerite kameru na različite objekte, terminal će prikazati sljedeći tekst "Mislim da jest", a također, ako imate povezane zvučnike, izgovarat će ovu frazu naglas. Prilično cool, zar ne?
Korak 7: Zaključak
Ovo su vrlo uzbudljiva vremena u kojima živimo, a umjetna inteligencija i strojno učenje prodiru u sva područja našeg života. Veselim se razvoju na ovom području. Ostajem u kontaktu sa Sipeed timom i znam da aktivno razvijaju omot od mikropitona za sve potrebne funkcije, uključujući CNN ubrzanje.
Kad bude spremno, vrlo vjerojatno ću objaviti još instrukcija o tome kako koristiti vlastite CNN modele s mikropythonom. Zamislite sve uzbudljive aplikacije koje možete imati za ploču koja može pokrenuti vaše vlastite neuronske mreže za obradu slika za ovu cijenu i s ovim otiskom!