Cuprins:

Cameră AI pentru Raspberry Pi / Arduino: 7 pași
Cameră AI pentru Raspberry Pi / Arduino: 7 pași

Video: Cameră AI pentru Raspberry Pi / Arduino: 7 pași

Video: Cameră AI pentru Raspberry Pi / Arduino: 7 pași
Video: Простой робот с камерой | Orange pi | Raspberry pi | OpenCV 2024, Iunie
Anonim
Image
Image

Dacă ați urmărit știrile recent, a existat o explozie de start-up-uri care dezvoltă cipuri pentru accelerarea inferenței și antrenamentului algoritmilor ML (machine learning). Cu toate acestea, majoritatea acestor cipuri sunt încă în curs de dezvoltare și nu chiar ceva ce poate face mâna producătorului dvs. mediu. Singura excepție semnificativă de până acum a fost Intel Movidius Neural Compute Stick, care este disponibil pentru cumpărare și vine cu un SDK bun. Are câteva dezavantaje semnificative - și anume prețul (aproximativ 100 USD) și faptul că vine în format stick USB. Este minunat dacă doriți să-l utilizați cu laptop sau Raspberry PI, dar dacă doriți să faceți câteva proiecte de recunoaștere a imaginilor cu Arduino? Sau Raspberry Pi Zero?

Pasul 1: Sipeed MAix: AI la Edge

Sipeed MAix: AI la margine
Sipeed MAix: AI la margine

Nu cu mult timp în urmă am pus mâna pe placa de dezvoltare Sipeed M1w K210, care are procesor dual-core RISC-V 64 biți și are un KPU (procesor de rețea neuronală), conceput special pentru accelerarea CNN pentru procesarea imaginilor. Puteți citi mai multe detalii aici.

Prețul acestei plăci ma șocat sincer, este doar 19 USD pentru o placă de dezvoltare completă AI-on-the-edge cu suport Wi-Fi! Există totuși o avertizare (desigur că există): firmware-ul micropython pentru placa este încă în curs de dezvoltare și, în general, nu este prea ușor de utilizat până acum. Singura modalitate de a accesa toate funcțiile sale este acum să scrieți propriul cod C încorporat sau să modificați unele demonstrații existente.

Acest tutorial explică modul de utilizare a modelului de detectare a clasei Mobilenet 20 pentru a detecta obiectele și a trimite codul obiectului detectat prin UART, de unde poate fi primit de Arduino / Raspberry Pi.

Acum, acest tutorial presupune că sunteți familiarizați cu Linux și elementele de bază ale compilării codului C. Dacă auzirea acestei fraze te-a cam amețit:) atunci treci doar la Pasul 4, unde îmi încarci binele pre-construit pe Sipeed M1 și sări peste compilare.

Pasul 2: Pregătiți-vă mediul

Pregătiți-vă mediul
Pregătiți-vă mediul

Am folosit Ubuntu 16.04 pentru compilarea și încărcarea codului C. Este posibil să fac asta în Windows, dar eu însămi nu am încercat-o.

Descărcați RISC-V GNU Compiler Toolchain, instalați toate dependențele necesare.

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

Copiați lanțul de instrumente descărcat în directorul / opt. După aceea, executați următoarele comenzi

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

face

Adăugați / opt / kendryte-toolchain / bin la PATH acum.

Acum sunteți gata să compilați codul!

Pasul 3: Compilați codul

Compilați codul
Compilați codul

Descărcați codul din depozitul meu github.

Descărcați Kendryte K210 SDK independent

Copiați folderul / kpu din depozitul meu github în folderul / src din SDK.

Rulați următoarele comenzi în folderul SDK (nu folderul / src!)

mkdir build && cd build

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

unde project_name este numele proiectului dvs. (depinde de dvs.) și -DTOOLCHAIN = ar trebui să indice locația lanțului de instrumente risc-v (l-ați descărcat în primul pas, vă amintiți?)

Grozav! Acum, sperăm că veți vedea compilarea terminată fără erori și aveți un fișier.bin pe care îl puteți încărca.

Pasul 4: Încărcarea fișierului.bin

Încărcarea fișierului.bin
Încărcarea fișierului.bin

Acum conectați Sipeed M1 la computer și din folderul / build executați următoarea comandă

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

Unde kpu.bin este numele fișierului dvs..bin

Încărcarea durează de obicei 2-3 minute, după ce ați terminat, veți vedea placa executând 20 de clase de detectare. Ultimul pas pentru noi este să îl conectăm la Arduino mega sau Raspberry Pi.

!!! Dacă tocmai ai venit de la Pasul 2 !

Rulați următoarea comandă din folderul în care ați clonat depozitul meu github

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

Încărcarea durează de obicei 2-3 minute, după ce ați terminat, veți vedea placa executând 20 de clase de detectare. Ultimul pas pentru noi este să îl conectăm la Arduino mega sau Raspberry Pi.

Pasul 5: Conectarea la Arduino

Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino
Conectarea la Arduino

Am folosit Arduino Mega cu Seeed Studio Mega Shield, de aceea am lipit un conector Grove pe placa Sipeed M1. Cu toate acestea, puteți utiliza doar fire jumper și conecta Sipeed M1 direct la Arduino Mega, urmând această diagramă de cablare.

După aceea încărcați schița camera.ino și deschideți monitorul Serial. Când îndreptați camera către diferite obiecte (lista celor 20 de clase se află în schiță) ar trebui să scoată numele clasei pe monitorul serial!

Felicitări! Aveți acum modul de lucru pentru detectarea imaginilor pentru Arduino!

Pasul 6: Conectarea la Raspberry Pi

Conectarea la Raspberry Pi
Conectarea la Raspberry Pi
Conectarea la Raspberry Pi
Conectarea la Raspberry Pi

Am folosit pălăria Grove Pi + pentru Raspberry Pi 2B, dar din nou, ca și în cazul Arduino, puteți conecta direct Sipeed M1 la interfața UART a Raspberry Pi urmând această schemă de conectare.

După aceea lansați camera_speak.py și îndreptați camera către diferite obiecte, terminalul va afișa următorul text „Cred că este” și, de asemenea, dacă aveți difuzoare conectate, va rosti această frază cu voce tare. Destul de cool, nu-i așa?

Pasul 7: Concluzie

Sunt momente foarte emoționante în care trăim, cu AI și învățarea automată care pătrund în toate domeniile vieții noastre. Aștept cu nerăbdare dezvoltarea în acest domeniu. Țin legătura cu echipa Sipeed și știu că dezvoltă în mod activ înfășurarea micropitonului pentru toate funcțiile necesare, inclusiv accelerarea CNN.

Când este gata, foarte probabil voi publica mai multe instructabile despre cum să utilizați propriile modele CNN cu micropiton. Gândiți-vă la toate aplicațiile interesante pe care le puteți avea pentru o placă care poate rula propriile rețele neuronale de procesare a imaginii la acest preț și cu această amprentă!

Recomandat: