Innehållsförteckning:

Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 steg
Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 steg

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 steg

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 steg
Video: AmazingChina: Modular & Flexible LED TV Wall 2024, November
Anonim
Image
Image

Detta är den andra artikeln i serien om Sipeed AI på Edge -mikrokontrollerplattformen. Den här gången kommer jag att skriva om MaiX Bit (länk till Seeed Studio Shop), en mindre utvecklingsbräda som är redo för brödbräda. Det är specifikationer som liknar MaiX Dock, brädet jag använde för den senaste handledningen, eftersom de använder samma chip, Kendryte K210.

Vi kommer att använda micropython -firmware för att prova några OpenMV -demos. Här är beskrivningen från OpenMV -hemsidan:

OpenMV-projektet handlar om att skapa billiga, utbyggbara, Python-drivna, maskinsynmoduler och syftar till att bli "Arduino of Machine Vision". … Python gör arbetet med maskinvisionsalgoritmer mycket enklare. Till exempel hittar metoden find_blobs () i koden färgblock och returnerar en lista med 8-värderade objekt som representerar varje färgblogg som hittas. I Python går det enkelt igenom listan över objekt som returneras av find_blobs () och ritar en rektangel runt varje färgblogg med bara två kodrader.

Så, trots att MaiX Bit har en dedikerad neural nätverksaccelerator, kan det ibland vara lättare att bara använda OpenMV hårdkodade algoritmer för att utföra jobbet eller använda dem vid sidan av varandra.

Några användningsfall som jag tänker på är:

1) Linjedetektering för linjeföljare -bot

2) Upptäcka trafikljus med cirkel- och färgdetektering

3) Använd ansiktsigenkänning för att hitta ansikten för ansiktsigenkänning (med DNN)

Github -förvar för den här artikeln

Steg 1: Flash Micropython Firmware

Anslut till MaiX Bit
Anslut till MaiX Bit

Först och främst kommer vi att behöva blinka mikropython -firmware till vårt kort. En förkompilerad binär ingår i github -förvaret för den här artikeln, tillsammans med kflash.py (ett flash -verktyg). Om du vill kompilera firmware från källkoden, ladda bara ner källkoden från https://github.com/sipeed/MaixPy, installera verktygskedjan och kompilera källkoden till maixpy.bin -filen. Detaljerade bygginstruktioner hittar du här.

Flasha den binära filen med

sudo python3 kflash.py kpu.bin

Efter framgångsrik blinkning följer du till nästa steg.

Steg 2: Anslut till MaiX Bit

Nu ska vår MaiX Bit vara tillgänglig via en USB -seriell anslutning med baudrate 115200. Du kan använda din favoritprogramvara för seriell kommunikation eller bara cat and echo -kommandon, vad som passar dina behov. Jag använde skärmen för seriell kommunikation och tycker att det var mycket bekvämt.

Kommandot för att upprätta en seriell kommunikationssession med skärm är

sudo skärm /dev /ttyUSB0 115200

där /dev /ttyUSB0 är adressen till din enhet.

Du kan behöva trycka på återställningsknappen på din mikrokontroller för att se hälsningsmeddelandet och pythontolk.

Steg 3: Kör demonstrationerna

Nu kan du komma åt kopieringsläge genom att trycka på Ctrl+E och kopiera och klistra in demokoderna. För att köra dem, tryck på Ctrl+D i kopieringsläge.

Om du inte vill spela in videoklippen måste du kommentera videoinspelningslinjerna. Annars kommer koden att göra ett undantag om det inte finns något SD -kort isatt

Här är korta beskrivningar av varje demo:

Hitta cirklar - använder funktionen hitta_cirklar från OpenMV. Behöver mer tweaking för din specifika applikation, särskilt tröskel (styr vilka cirklar som detekteras från transformationen. Endast cirklar med en storlek större än eller lika med tröskeln returneras) och r_min, r_max -värden.

Hitta rektanglar - använder funktionen find_rects från OpenMV. Du kan leka med tröskelvärde, men värdet jag har i demo fungerar ganska bra för att hitta rektanglar.

Hitta ansikten, hitta ögon - använder funktionen hitta_funktioner med Haar Cascades för att upptäcka ögon och framsida i bilden. Du kan leka med tröskel- och skalvärden för rätt avvägning av hastighetsnoggrannhet.

Hitta oändliga linjer - använder funktionen hitta_linjer för att hitta alla oändliga linjer i bilden med hjälp av transformationen.

Upptäck färg - använder funktionen get_statistics för att erhålla percentilobjekt och konverterar sedan medelvärden för LAB -tupel till RGB -värden tupel. Jag skrev själv detta exempel och det fungerar ganska bra, men kom ihåg att resultaten av färgdetektering påverkas av omgivande ljusförhållanden.

Du kan hitta många fler intressanta demos i OpenMV github -arkiv! De är mestadels kompatibla med MaiX Bit micropython, det enda du behöver komma ihåg är att lägga till sensor.run (1) efter att ha ställt in pixformat och ramstorlek.

Glad experiment med OpenMV -kod. Om du har några frågor eller vill dela några av dina intressanta resultat, tveka inte att nå mig på Youtube eller LinkedIn. Ursäkta mig, jag ska göra några robotar!

Rekommenderad: