Kazalo:

AI kamera za Raspberry Pi/Arduino: 7 korakov
AI kamera za Raspberry Pi/Arduino: 7 korakov

Video: AI kamera za Raspberry Pi/Arduino: 7 korakov

Video: AI kamera za Raspberry Pi/Arduino: 7 korakov
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Junij
Anonim
Image
Image

Če ste nedavno spremljali novice, je prišlo do eksplozije zagonskih podjetij, ki razvijajo čipe za pospeševanje sklepanja in usposabljanja algoritmov ML (strojnega učenja). Vendar pa je večina teh čipov še v razvoju in res ni nekaj, kar bi lahko dobil vaš povprečen proizvajalec. Edina pomembna izjema doslej je bila Intel Movidius Neural Compute Stick, ki je na voljo za nakup in ima dober SDK. Ima nekaj pomembnih pomanjkljivosti - in sicer ceno (okoli 100 USD) in dejstvo, da je v obliki USB ključka. Super je, če ga želite uporabljati s prenosnikom ali Raspberry PI, kaj pa, če želite z Arduinom narediti nekaj projektov za prepoznavanje slik? Ali Raspberry Pi Zero?

1. korak: Sipeed MAix: AI na robu

Sipeed MAix: AI na robu
Sipeed MAix: AI na robu

Ne tako dolgo nazaj sem dobil v roke razvojno ploščo Sipeed M1w K210, ki ima dvojedrni 64-bitni procesor RISC-V in se ponaša z vgrajenim procesorjem nevronskih omrežij (CPU), posebej zasnovanim za pospeševanje CNN za obdelavo slik. Več podrobnosti si lahko preberete tukaj.

Cena te plošče me je odkrito šokirala: samo 19 USD za polnopravno razvojno ploščo AI-on-the-edge s podporo za Wi-Fi! Obstaja pa opozorilo (seveda obstaja): vdelana programska oprema mikropythona za ploščo je še v razvoju, na splošno pa zaenkrat ni preveč prijazna do uporabnika. Edini način, da trenutno dostopate do vseh njegovih funkcij, je, da napišete svojo vdelano kodo C ali spremenite nekatere obstoječe predstavitve.

Ta vadnica pojasnjuje, kako uporabiti model zaznavanja razreda Mobilenet 20 za odkrivanje predmetov in pošiljanje zaznane kode objekta prek UART, od koder jo lahko sprejme Arduino/Raspberry Pi.

Ta vadnica predpostavlja, da poznate Linux in osnove sestavljanja kode C. Če vas je ob tem stavku malce omotilo:), pojdite na 4. korak, kjer naložite mojo vnaprej izdelano binarno datoteko v Sipeed M1 in preskočite sestavljanje.

2. korak: Pripravite svoje okolje

Pripravite svoje okolje
Pripravite svoje okolje

Za zbiranje in nalaganje kode C sem uporabil Ubuntu 16.04. V operacijskem sistemu Windows je to mogoče, vendar tega nisem poskusil.

Prenesite RISC-V GNU Compiler Toolchain, namestite vse potrebne odvisnosti.

git clone --recursive

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-bistven bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

Prenesite preneseno orodno verigo v imenik /opt. Po tem zaženite naslednje ukaze

./configure --prefix =/opt/kendryte-toolchain --with-cmodel = medany

narediti

Dodajte/opt/kendryte-toolchain/bin v svojo PATH zdaj.

Zdaj ste pripravljeni na sestavljanje kode!

3. korak: Zberite kodo

Zberite kodo
Zberite kodo

Prenesite kodo iz mojega skladišča github.

Prenesite samostojni SDK Kendryte K210

Kopirajte mapo /kpu iz mojega skladišča github v mapo /src v SDK -ju.

Zaženite naslednje ukaze v mapi SDK (ne v mapi /src!)

mkdir build && cd build

cmake.. -DPROJ = ime_projekta -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make

kjer je ime_projekta ime vašega projekta (odvisno od vas) in -DTOOLCHAIN = naj kaže na lokacijo vaše orodne verige risc -v (prenesli ste jo v prvem koraku, se spomnite?)

Super! Zdaj upajmo, da bo kompilacija končana brez napak in da imate datoteko.bin, ki jo lahko naložite.

4. korak: Nalaganje datoteke.bin

Nalaganje datoteke.bin
Nalaganje datoteke.bin

Zdaj povežite svoj Sipeed M1 z računalnikom in iz mape /build zaženite naslednji ukaz

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu.bin

Kjer je kpu.bin ime vaše datoteke.bin

Nalaganje običajno traja 2-3 minute, potem ko bo končano, boste na plošči izvedeli zaznavanje 20 razredov. Zadnji korak za nas je, da ga povežemo z Arduino mega ali Raspberry Pi.

!!! Če ste pravkar prišli iz 2. koraka !!

Zaženite naslednji ukaz iz mape, kjer ste klonirali moje skladišče github

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin

Nalaganje običajno traja 2-3 minute, potem ko bo končano, boste na plošči izvedeli zaznavanje 20 razredov. Zadnji korak za nas je, da ga povežemo z Arduino mega ali Raspberry Pi.

5. korak: Povežite se z Arduinom

Povezava z Arduinom
Povezava z Arduinom
Povezava z Arduinom
Povezava z Arduinom
Povezava z Arduinom
Povezava z Arduinom

Uporabil sem Arduino Mega z Seeed Studio Mega Shield, zato sem priključil priključek Grove na ploščo Sipeed M1. Lahko pa uporabite samo mostične žice in priključite Sipeed M1 neposredno na Arduino Mega, po tem diagramu ožičenja.

Po tem naložite skico camera.ino in odprite serijski monitor. Ko kamero usmerite na različne predmete (na skici je seznam 20 razredov), naj na serijskem monitorju prikaže ime razreda!

Čestitamo! Zdaj imate delujoči modul za odkrivanje slik za vaš Arduino!

6. korak: Povezovanje z Raspberry Pi

Povezovanje z Raspberry Pi
Povezovanje z Raspberry Pi
Povezovanje z Raspberry Pi
Povezovanje z Raspberry Pi

Za Raspberry Pi 2B sem uporabil klobuk Grove Pi+, vendar spet, tako kot pri Arduinu, lahko Sipeed M1 neposredno povežete z UART vmesnikom Raspberry Pi po tem diagramu ožičenja.

Po tem zaženite camera_speak.py in usmerite kamero na različne predmete, terminal bo izpisal naslednje besedilo "Mislim, da je" in tudi, če imate priključene zvočnike, bo to frazo izgovoril na glas. Precej kul, kajne?

7. korak: Zaključek

To so zelo izstopni časi, v katerih živimo, saj AI in strojno učenje prodreta na vsa področja našega življenja. Veselim se razvoja na tem področju. Ostajam v stiku z ekipo Sipeed in vem, da aktivno razvijajo ovojnico z mikropitonom za vse potrebne funkcije, vključno s pospeševanjem CNN.

Ko bo pripravljen, bom zelo verjetno objavil več navodil za uporabo lastnih modelov CNN z mikropythonom. Pomislite na vse zanimive aplikacije, ki jih lahko imate za ploščo, na kateri lahko za to ceno in s tem odtisom upravljate svoja nevronska omrežja za obdelavo slik!

Priporočena: