Indholdsfortegnelse:

AI -kamera til Raspberry Pi/Arduino: 7 trin
AI -kamera til Raspberry Pi/Arduino: 7 trin

Video: AI -kamera til Raspberry Pi/Arduino: 7 trin

Video: AI -kamera til Raspberry Pi/Arduino: 7 trin
Video: Простой робот с камерой | Orange pi | Raspberry pi | OpenCV 2024, November
Anonim
Image
Image

Hvis du har fulgt nyhederne for nylig, var der en eksplosion af start-ups, der udviklede chips til at accelerere ML (machine learning) algoritmer inferens og træning. Men de fleste af disse chips er stadig under udvikling og egentlig ikke noget din almindelige maker kan få fat på. Den eneste betydelige undtagelse hidtil var Intel Movidius Neural Compute Stick, som kan købes og leveres med en god SDK. Det har nogle få betydelige ulemper - nemlig prisen (omkring 100 USD) og det faktum, at det kommer i USB -stick -format. Det er fantastisk, hvis du vil bruge det med bærbar computer eller Raspberry PI, men hvad nu hvis du vil lave nogle billedgenkendelsesprojekter med Arduino? Eller Raspberry Pi Zero?

Trin 1: Sipeed MAix: AI at the Edge

Sipeed MAix: AI at the Edge
Sipeed MAix: AI at the Edge

For ikke så længe siden fik jeg mine hænder på Sipeed M1w K210 udviklingsplade, der har dual-core RISC-V 64bit CPU og kan prale af en indbygget KPU (Neural Network Processor), specielt designet til at accelerere CNN til billedbehandling. Du kan læse flere detaljer her.

Prisen på dette board chokerede mig ærligt talt, det er kun 19 USD for fuldt udviklet AI-on-the-edge udviklingsbræt med Wi-fi-understøttelse! Der er dog en advarsel (selvfølgelig er der): micropython -firmwaren til tavlen er stadig under udvikling, og generelt er den ikke for brugervenlig fra nu af. Den eneste måde at få adgang til alle dens funktioner lige nu er at skrive din egen indlejrede C -kode eller ændre nogle eksisterende demoer.

Denne vejledning forklarer, hvordan du bruger detektionsmodel i Mobilenet 20 -klassen til at registrere objekterne og sende den registrerede objektkode via UART, hvorfra den kan modtages af Arduino/Raspberry Pi.

Nu går denne vejledning ud fra, at du er fortrolig med Linux og det grundlæggende ved kompilering af C -kode. Hvis du blev lidt svimmel af at høre denne sætning:) skal du bare springe til trin 4, hvor du uploader min præbyggede binær til Sipeed M1 og springer kompilering over.

Trin 2: Forbered dit miljø

Forbered dit miljø
Forbered dit miljø

Jeg brugte Ubuntu 16.04 til C -kodekompilering og upload. Det er muligt at gøre det i Windows, men jeg har ikke selv prøvet det.

Download RISC-V GNU Compiler Toolchain, installer alle de nødvendige afhængigheder.

git-klon-rekursiv

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

Kopier den downloadede værktøjskæde til /opt bibliotek. Efter det skal du køre følgende kommandoer

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

lave

Tilføj/opt/kendryte-toolchain/bin til din STI nu.

Du er nu klar til at kompilere koden!

Trin 3: Kompilér koden

Kompiler koden
Kompiler koden

Download koden fra mit github -lager.

Hent Kendryte K210 standalone SDK

Kopiér /kpu -mappen fra mit github -lager til /src -mappen i SDK.

Kør følgende kommandoer i SDK -mappen (ikke /src -mappen!)

mkdir build && cd build

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

hvor projektnavn er navnet på dit projekt (op til dig) og -DTOOLCHAIN = skal pege på placeringen af din risc -v værktøjskæde (du downloadede det i det første trin, kan du huske?)

Store! Nu forhåbentlig vil du se kompilering færdig uden fejl, og du har en.bin -fil, du kan uploade.

Trin 4: Upload af.bin -filen

Upload af.bin -filen
Upload af.bin -filen

Tilslut nu din Sipeed M1 til computeren, og kør følgende kommando fra mappen /build

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

Hvor kpu.bin er navnet på din.bin -fil

Upload tager normalt 2-3 minutter, efter at det er gjort, ser du tavlen kører 20 klasseregistrering. Det sidste trin for os er at forbinde det med Arduino mega eller Raspberry Pi.

!!! Hvis du lige kom fra trin 2 !

Kør følgende kommando fra den mappe, hvor du klonede mit github -lager

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

Upload tager normalt 2-3 minutter, efter at det er gjort, ser du tavlen kører 20 klasseregistrering. Det sidste trin for os er at forbinde det med Arduino mega eller Raspberry Pi.

Trin 5: Tilslutning til Arduino

Opretter forbindelse til Arduino
Opretter forbindelse til Arduino
Opretter forbindelse til Arduino
Opretter forbindelse til Arduino
Opretter forbindelse til Arduino
Opretter forbindelse til Arduino

Jeg brugte Arduino Mega med Seeed Studio Mega Shield, derfor lod jeg et Grove -stik til Sipeed M1 -kortet. Men du kan bare bruge jumperwires og forbinde Sipeed M1 direkte til Arduino Mega, ved at følge dette ledningsdiagram.

Herefter skal du uploade camera.ino -skitsen og åbne den serielle skærm. Når du peger kameraet på forskellige objekter (listen over 20 klasser er i skitsen) skal det sende navnet på klassen i den serielle skærm!

Tillykke! Du har nu et fungerende billeddetekteringsmodul til din Arduino!

Trin 6: Tilslutning til Raspberry Pi

Opretter forbindelse til Raspberry Pi
Opretter forbindelse til Raspberry Pi
Opretter forbindelse til Raspberry Pi
Opretter forbindelse til Raspberry Pi

Jeg brugte Grove Pi+ hat til Raspberry Pi 2B, men igen, som med Arduino kan du bare direkte tilslutte Sipeed M1 til Raspberry Pi's UART -interface efter dette ledningsdiagram.

Efter at starte camera_speak.py og pege kameraet på forskellige objekter, vil terminalen udsende følgende tekst "Jeg tror det er", og også hvis du har tilsluttet højttalere, vil den tale denne sætning højt. Ret cool, ikke sandt?

Trin 7: Konklusion

Dette er en meget spændende tid, vi lever i, hvor AI og maskinindlæring trænger ind på alle områder af vores liv. Jeg ser frem til udviklingen på dette område. Jeg holder kontakten med Sipeed -teamet, og jeg ved, at de aktivt udvikler micropython -indpakning til alle de nødvendige funktioner, herunder CNN -acceleration.

Når den er klar, vil jeg sandsynligvis offentliggøre flere instruktioner om, hvordan du bruger dine egne CNN -modeller med mikropython. Tænk på alle de spændende applikationer, du kan have til et bræt, der kan køre dit eget billedbehandlings neurale netværk til denne pris og med dette fodaftryk!

Anbefalede: