Innholdsfortegnelse:

Sipeed MaiX Bit OpenMV -demonstrasjoner - Computer Vision: 3 trinn
Sipeed MaiX Bit OpenMV -demonstrasjoner - Computer Vision: 3 trinn

Video: Sipeed MaiX Bit OpenMV -demonstrasjoner - Computer Vision: 3 trinn

Video: Sipeed MaiX Bit OpenMV -demonstrasjoner - Computer Vision: 3 trinn
Video: Unpacking and OpenMV Demos Sipeed MaiX Bit 2024, November
Anonim
Image
Image

Dette er den andre artikkelen i serien om Sipeed AI på Edge -mikrokontrollerplattformen. Denne gangen skal jeg skrive om MaiX Bit (lenke til Seeed Studio Shop), et mindre utviklingsbrett som er klart for brødbrett. Spesifikasjonene ligner veldig på MaiX Dock, brettet jeg brukte for siste opplæring, siden de bruker samme brikke, Kendryte K210.

Vi kommer til å bruke micropython -fastvare for å prøve noen OpenMV -demoer. Her er beskrivelsen fra OpenMV -hjemmesiden:

OpenMV-prosjektet handler om å lage rimelige, utvidbare, Python-drevne, maskinsynmoduler og har som mål å bli "Arduino of Machine Vision".… Python gjør arbeidet med maskinvisjoner algoritmer mye enklere. For eksempel finner metoden find_blobs () i koden fargeblokker og returnerer en liste over objekter med 8 verdier som representerer hver fargeblatt som blir funnet. I Python går det lett gjennom listen over objekter som returneres av find_blobs () og tegner et rektangel rundt hver fargeklatt i bare to linjer med kode.

Så, til tross for MaiX Bit har dedikert nevral nettverksakselerator, kan det noen ganger være lettere å bare bruke OpenMV hardkodede algoritmer for å gjøre jobben eller bruke dem sammen med hverandre.

Noen brukstilfeller jeg tenker på er:

1) Linjedeteksjon for linjefølge bot

2) Oppdager trafikklys med sirkel- og fargedeteksjon

3) Bruk ansiktsgjenkjenning til å finne ansikter for ansiktsgjenkjenning (med DNN)

Github -depot for denne artikkelen

Trinn 1: Flash Micropython -fastvare

Koble til MaiX Bit
Koble til MaiX Bit

Først av alt må vi blinke micropython -fastvare til brettet vårt. En forhåndskompilert binær er inkludert i github -depotet for denne artikkelen, sammen med kflash.py (et flash -verktøy). Hvis du ønsker å kompilere fastvaren fra kildekoden, kan du bare laste ned kildekoden fra https://github.com/sipeed/MaixPy, installere verktøykjeden og kompilere kildekoden til maixpy.bin -filen. Detaljerte byggeinstruksjoner finner du her.

Flash den binære filen med

sudo python3 kflash.py kpu.bin

Etter vellykket blinking, følg til neste trinn.

Trinn 2: Koble til MaiX Bit

Nå bør MaiX Bit være tilgjengelig via en seriell USB -tilkobling med baudrate 115200. Du kan bruke favorittprogramvaren din til seriell kommunikasjon eller bare katte- og ekkokommandoer, alt som passer dine behov. Jeg brukte skjermen til seriell kommunikasjon og synes det var veldig praktisk.

Kommandoen for å etablere en seriell kommunikasjonsøkt med skjerm er

sudo skjerm /dev /ttyUSB0 115200

hvor /dev /ttyUSB0 er adressen til enheten din.

Du må kanskje trykke på tilbakestillingsknappen på mikrokontrolleren din for å se hilsenmeldingen og python -tolkemeldingen.

Trinn 3: Kjør demoene

Nå kan du få tilgang til kopimodus ved å trykke Ctrl+E og kopiere og lime inn demokodene. For å kjøre dem, trykk Ctrl+D i kopimodus.

Hvis du ikke vil ta opp videoene, må du kommentere videoopptakslinjene. Ellers vil koden kaste et unntak hvis det ikke er satt inn et SD -kort

Her er korte beskrivelser av hver demo:

Finn sirkler - bruker funksjonen find_circles fra OpenMV. Trenger mer justeringer for din spesifikke applikasjon, spesielt terskel (styrer hvilke sirkler som oppdages fra transformasjonen. Bare sirkler med en størrelse større enn eller lik terskelen returneres) og r_min, r_max verdier.

Finn rektangler - bruker funksjonen find_rects fra OpenMV. Du kan leke med terskelverdi, men verdien jeg har i demo fungerer ganske bra for å finne rektangler.

Finn ansikter, finn øyne - bruker funksjonen find_features med Haar Cascades for å oppdage øyne og ansikt foran i bildet. Du kan leke med terskel- og skalaverdier for riktig bytte av hastighetsnøyaktighet.

Finn uendelige linjer - bruker funksjonen find_lines til å finne alle uendelige linjer i bildet ved hjelp av transformasjonen.

Oppdag farge - bruker funksjonen get_statistics for å skaffe objekt i objektet og konverterer deretter gjennomsnittsverdier for LAB -tupel til RGB -verdier tupel. Jeg skrev dette eksemplet selv, og det fungerer ganske bra, men husk at resultatene av fargedeteksjon påvirkes av lysforhold i omgivelsene.

Du kan finne mange flere interessante demoer i OpenMV github -depot! De er stort sett kompatible med MaiX Bit micropython, det eneste du trenger å huske er å legge til sensor.run (1) etter at du har angitt pixformat og rammestørrelse.

Glad eksperimentering med OpenMV -kode. Hvis du har spørsmål eller vil dele noen av dine interessante resultater, ikke nøl med å nå meg på Youtube eller LinkedIn. Unnskyld, jeg skal lage noen roboter!

Anbefalt: