Inhoudsopgave:
- Stap 1: Sipeed MAix: AI aan de rand
- Stap 2: Bereid uw omgeving voor
- Stap 3: compileer de code
- Stap 4: Het.bin-bestand uploaden
- Stap 5: Verbinding maken met Arduino
- Stap 6: Verbinding maken met Raspberry Pi
- Stap 7: Conclusie
Video: AI-camera voor Raspberry Pi/Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Als je de laatste tijd het nieuws hebt gevolgd, was er een explosie van start-ups die chips ontwikkelden voor het versnellen van ML-algoritmen (machine learning) inferentie en training. De meeste van die chips zijn echter nog in ontwikkeling en niet echt iets dat de gemiddelde maker in handen kan krijgen. De enige belangrijke uitzondering tot nu toe was Intel Movidius Neural Compute Stick, die te koop is en wordt geleverd met een goede SDK. Het heeft een paar belangrijke nadelen - namelijk de prijs (ongeveer 100 USD) en het feit dat het in USB-stickformaat wordt geleverd. Het is geweldig als je het met een laptop of Raspberry PI wilt gebruiken, maar wat als je wat beeldherkenningsprojecten met Arduino wilt doen? Of Raspberry Pi Zero?
Stap 1: Sipeed MAix: AI aan de rand
Nog niet zo lang geleden kreeg ik het Sipeed M1w K210-ontwikkelbord in handen, dat een dual-core RISC-V 64-bit CPU heeft en beschikt over een ingebouwde KPU (Neural Network Processor), speciaal ontworpen voor het versnellen van CNN voor beeldverwerking. U kunt hier meer details lezen.
De prijs van dit bord schokte me eerlijk gezegd, het is slechts 19 USD voor een volwaardig AI-on-the-edge ontwikkelbord met Wi-Fi-ondersteuning! Er is echter een waarschuwing (natuurlijk is die er): de micropython-firmware voor het bord is nog in ontwikkeling en over het algemeen is het vanaf nu niet al te gebruiksvriendelijk. De enige manier om op dit moment toegang te krijgen tot al zijn functies, is door uw eigen ingesloten C-code te schrijven of een aantal bestaande demo's aan te passen.
Deze tutorial legt uit hoe je het Mobilenet 20 klasse detectiemodel gebruikt om de objecten te detecteren en de gedetecteerde objectcode via UART te verzenden, vanwaar het kan worden ontvangen door Arduino/Raspberry Pi.
Nu gaat deze tutorial ervan uit dat je bekend bent met Linux en de basisprincipes van het compileren van C-code. Als je een beetje duizelig werd van het horen van deze zin:) ga dan gewoon naar stap 4, waar je mijn vooraf gebouwde binaire bestand uploadt naar Sipeed M1 en het compileren overslaat.
Stap 2: Bereid uw omgeving voor
Ik heb Ubuntu 16.04 gebruikt voor het compileren en uploaden van C-code. Het is mogelijk om dat in Windows te doen, maar ik heb het zelf niet geprobeerd.
Download de RISC-V GNU Compiler Toolchain, installeer alle benodigde afhankelijkheden.
git clone --recursive
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essentiële bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
Kopieer de gedownloade toolchain naar /opt directory. Voer daarna de volgende opdrachten uit:
./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany
maken
Voeg nu /opt/kendryte-toolchain/bin toe aan je PATH.
U bent nu klaar om de code te compileren!
Stap 3: compileer de code
Download de code van mijn github-repository.
Kendryte K210 standalone SDK downloaden
Kopieer de /kpu-map van mijn github-repository naar de /src-map in SDK.
Voer de volgende opdrachten uit in de SDK-map (niet in de map /src!)
mkdir build && cd build
cmake.. -DPROJ=projectnaam -DTOOLCHAIN=/opt/kendryte-toolchain/bin && make
waarbij project_name de naam is van je project (aan jou) en -DTOOLCHAIN= moet verwijzen naar de locatie van je risc-v toolchain (je hebt het gedownload in de eerste stap, weet je nog?)
Super goed! Hopelijk zie je de compilatie zonder fouten en heb je een.bin-bestand dat je kunt uploaden.
Stap 4: Het.bin-bestand uploaden
Sluit nu uw Sipeed M1 aan op de computer en voer de volgende opdracht uit vanuit de map /build:
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu.bin
Waar kpu.bin de naam is van uw.bin-bestand
Het uploaden duurt meestal 2-3 minuten, nadat het is voltooid, ziet u dat het bord 20 klassendetectie uitvoert. De laatste stap voor ons is om hem aan te sluiten op Arduino mega of Raspberry Pi.
!!! Als je net uit stap 2 komt !
Voer de volgende opdracht uit vanuit de map waarin je mijn github-repository hebt gekloond:
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu_bin.bin
Het uploaden duurt meestal 2-3 minuten, nadat het is voltooid, ziet u dat het bord 20 klassendetectie uitvoert. De laatste stap voor ons is om hem aan te sluiten op Arduino mega of Raspberry Pi.
Stap 5: Verbinding maken met Arduino
Ik gebruikte de Arduino Mega met Seeed Studio Mega Shield, daarom heb ik een Grove-connector op het Sipeed M1-bord gesoldeerd. U kunt echter gewoon jumperdraden gebruiken en Sipeed M1 rechtstreeks op Arduino Mega aansluiten, volgens dit bedradingsschema.
Upload daarna de camera.ino-schets en open de seriële monitor. Wanneer u de camera op verschillende objecten richt (de lijst met 20 klassen staat in de schets), moet de naam van de klasse in de seriële monitor worden weergegeven!
Gefeliciteerd! Je hebt nu een werkende beelddetectiemodule voor je Arduino!
Stap 6: Verbinding maken met Raspberry Pi
Ik gebruikte de Grove Pi+-hoed voor Raspberry Pi 2B, maar nogmaals, net als bij Arduino kun je Sipeed M1 gewoon rechtstreeks aansluiten op de UART-interface van Raspberry Pi volgens dit bedradingsschema.
Start daarna camera_speak.py en richt de camera op verschillende objecten, de terminal zal de volgende tekst "I think it is" weergeven en ook als je luidsprekers hebt aangesloten, zal hij deze zin hardop uitspreken. Best cool, niet?
Stap 7: Conclusie
Dit zijn zeer spannende tijden waarin we leven, met AI en machine learning die alle gebieden van ons leven doordringen. Ik ben benieuwd naar de ontwikkeling op dit gebied. Ik houd contact met het Sipeed-team en ik weet dat ze actief bezig zijn met het ontwikkelen van micropython-wrappers voor alle noodzakelijke functies, inclusief CNN-versnelling.
Als het klaar is, zal ik zeer waarschijnlijk meer instructables publiceren over het gebruik van je eigen CNN-modellen met micropython. Denk aan alle opwindende toepassingen die je kunt hebben voor een bord dat je eigen neurale netwerken voor beeldverwerking kan draaien voor deze prijs en met deze voetafdruk!
Aanbevolen:
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: 8 stappen
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: deze instructable legt uit hoe u uw eigen externe Bluetooth-compatibele GPS voor uw telefoon kunt maken, wat dan ook voor ongeveer $ 10. Materiaallijst: NEO 6M U-blox GPSHC-05 bluetooth-module Kennis van interface Blutooth Low energy-modulesArdui
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Systeem voor het bewaken van de luchtkwaliteit voor fijnstofverontreiniging: 4 stappen
Systeem voor monitoring van luchtkwaliteit voor fijnstofverontreiniging: INTRO: 1 In dit project laat ik zien hoe ik een deeltjesdetector bouw met dataweergave, databack-up op SD-kaart en IOT. Visueel geeft een neopixels ringdisplay de luchtkwaliteit aan. 2 Luchtkwaliteit is een steeds belangrijker zorg t
Relaisbord voor Arduino voor minder dan $8: 5 stappen
Relaisbord voor Arduino voor minder dan $8.: Hallo vrienden, vandaag ga ik je vertellen hoe je een relaisbord voor Arduino maakt voor minder dan $8. In dit circuit gaan we geen IC of transistor gebruiken. Dus laten we het doen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): 4 stappen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): TL;DR: Knip op de sensor het spoor naar de Echo-pin en sluit het opnieuw aan met een spanningsdeler (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND). Bewerken: Er is enige discussie geweest over de vraag of de ESP8266 daadwerkelijk 5V-tolerant is op GPIO in