Innehållsförteckning:
- Steg 1: Sipeed MAix: AI at the Edge
- Steg 2: Förbered din miljö
- Steg 3: Kompilera koden
- Steg 4: Ladda upp.bin -filen
- Steg 5: Ansluter till Arduino
- Steg 6: Ansluter till Raspberry Pi
- Steg 7: Slutsats
Video: AI -kamera för Raspberry Pi/Arduino: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Om du har följt nyheterna nyligen, det var en explosion av nystartade företag som utvecklar chips för att påskynda ML (maskininlärning) algoritmer inferens och utbildning. Men de flesta av dessa marker är fortfarande under utveckling och inte riktigt något din genomsnittliga tillverkare kan få tag på. Det enda betydande undantaget hittills var Intel Movidius Neural Compute Stick, som finns att köpa och levereras med ett bra SDK. Det har några betydande nackdelar - nämligen priset (cirka 100 USD) och det faktum att det kommer i USB -stickformat. Det är bra om du vill använda den med bärbar dator eller Raspberry PI, men vad händer om du vill göra några bildigenkänningsprojekt med Arduino? Eller Raspberry Pi Zero?
Steg 1: Sipeed MAix: AI at the Edge
För inte så länge sedan fick jag tag på Sipeed M1w K210 utvecklingskort, som har en dubbelkärnig RISC-V 64bit CPU och har en inbyggd KPU (Neural Network Processor), speciellt utformad för att accelerera CNN för bildbehandling. Du kan läsa mer information här.
Priset på detta bräde chockade mig uppriktigt sagt, det är bara 19 USD för fullfjädrad AI-on-the-edge utvecklingskort med Wi-Fi-stöd! Det finns dock en förbehåll (naturligtvis finns det): micropython -firmware för styrelsen är fortfarande under utveckling, och överlag är den inte alltför användarvänlig från och med nu. Det enda sättet att komma åt alla dess funktioner just nu är att skriva din egen inbäddade C -kod eller ändra några befintliga demos.
Denna handledning förklarar hur man använder Mobilenet 20 -klassdetektionsmodell för att upptäcka objekten och skicka den detekterade objektkoden via UART, varifrån den kan tas emot av Arduino/Raspberry Pi.
Nu antar den här självstudien att du är bekant med Linux och grunderna för att sammanställa C -kod. Om du hörde den här frasen gjorde dig lite yr:) hoppa bara över till steg 4, där du laddar upp min förbyggda binär till Sipeed M1 och hoppar över kompileringen.
Steg 2: Förbered din miljö
Jag använde Ubuntu 16.04 för C -kodsamling och uppladdning. Det är möjligt att göra det i Windows, men jag själv försökte inte det.
Ladda ner RISC-V GNU Compiler Toolchain, installera alla nödvändiga beroenden.
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
Kopiera den nedladdade verktygskedjan till /opt -katalogen. Efter det kör du följande kommandon
./configure --prefix =/opt/kendryte-toolchain --med-cmodel = medany
göra
Lägg till/opt/kendryte-toolchain/bin till din PATH nu.
Du är nu redo att kompilera koden!
Steg 3: Kompilera koden
Ladda ner koden från mitt github -arkiv.
Ladda ner Kendryte K210 fristående SDK
Kopiera /kpu -mappen från mitt github -arkiv till /src -mappen i SDK.
Kör följande kommandon i SDK -mappen (inte /src -mappen!)
mkdir build && cd build
cmake.. -DPROJ = projektnamn -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make
där projektnamn är namnet på ditt projekt (upp till dig) och -DTOOLCHAIN = ska peka på platsen för din risc -v verktygskedja (du laddade ner det i första steget, kommer du ihåg?)
Bra! Nu förhoppningsvis ser du sammanställningen klar utan några fel och du har en.bin -fil som du kan ladda upp.
Steg 4: Ladda upp.bin -filen
Anslut nu din Sipeed M1 till datorn och från /build -mappen kör följande kommando
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu.bin
Där kpu.bin är namnet på din.bin -fil
Uppladdningen tar vanligtvis 2-3 minuter, när det är klart ser du tavlan som kör 20 klasser. Det sista steget för oss är att ansluta den till Arduino mega eller Raspberry Pi.
!!! Om du bara kom från steg 2 !!
Kör följande kommando från mappen där du klonade mitt github -arkiv
sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin
Uppladdningen tar vanligtvis 2-3 minuter, när det är klart ser du tavlan som kör 20 klasser. Det sista steget för oss är att ansluta den till Arduino mega eller Raspberry Pi.
Steg 5: Ansluter till Arduino
Jag använde Arduino Mega med Seeed Studio Mega Shield, det är därför jag lödde en Grove -kontakt till Sipeed M1 -kortet. Men du kan bara använda bygelkablar och ansluta Sipeed M1 direkt till Arduino Mega, enligt detta kopplingsschema.
Efter det ladda upp camera.ino -skissen och öppna seriemonitorn. När du riktar kameran mot olika objekt (listan över 20 klasser finns i skissen) bör den mata ut namnet på klassen i seriemonitorn!
Grattis! Du har nu fungerande bilddetekteringsmodul för din Arduino!
Steg 6: Ansluter till Raspberry Pi
Jag använde Grove Pi+ hatt för Raspberry Pi 2B, men igen, som med Arduino kan du bara ansluta Sipeed M1 direkt till Raspberry Pi: s UART -gränssnitt enligt detta kopplingsschema.
Efter att starta camera_speak.py och rikta kameran mot olika objekt, kommer terminalen att mata ut följande text "Jag tror att det är" och även om du har högtalare anslutna kommer den att tala den här frasen högt. Ganska coolt, eller hur?
Steg 7: Slutsats
Det här är en mycket spännande tid vi lever i, med AI och maskininlärning som tränger igenom alla områden i våra liv. Jag ser fram emot utvecklingen inom detta område. Jag håller kontakten med Sipeed -teamet och jag vet att de aktivt utvecklar mikropytonomslag för alla nödvändiga funktioner, inklusive CNN -acceleration.
När det är klart kommer jag troligtvis att publicera fler instruktioner om hur du använder dina egna CNN -modeller med mikropyton. Tänk på alla spännande applikationer du kan ha för en tavla som kan driva dina egna bildbehandlingsneurala nätverk för detta pris och med detta fotavtryck!
Rekommenderad:
Temperatursensor för Arduino Tillämpad för COVID 19: 12 steg (med bilder)
Temperatursensor för Arduino Tillämpad för COVID 19: Temperatursensorn för Arduino är ett grundläggande element när vi vill mäta temperaturen på en processor i människokroppen. Temperaturgivaren med Arduino måste vara i kontakt eller nära för att ta emot och mäta värmenivån. Så här
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva