Inhoudsopgave:

Sipeed MaiX Bit OpenMV-demo's - Computer Vision - Ajarnpa
Sipeed MaiX Bit OpenMV-demo's - Computer Vision - Ajarnpa

Video: Sipeed MaiX Bit OpenMV-demo's - Computer Vision - Ajarnpa

Video: Sipeed MaiX Bit OpenMV-demo's - Computer Vision - Ajarnpa
Video: Unpacking and OpenMV Demos Sipeed MaiX Bit 2024, Juli-
Anonim
Image
Image

Dit is het tweede artikel in een serie over Sipeed AI op het Edge-microcontrollerplatform. Deze keer zal ik schrijven over MaiX Bit (link naar Seeed Studio Shop), een kleiner, breadboard-klaar ontwikkelbord. De specificaties zijn vergelijkbaar met MaiX Dock, het bord dat ik voor de laatste tutorial heb gebruikt, omdat ze dezelfde chip gebruiken, Kendryte K210.

We gaan micropython-firmware gebruiken om enkele OpenMV-demo's te proberen. Hier is een beschrijving van de OpenMV-homepage:

Het OpenMV-project gaat over het maken van goedkope, uitbreidbare, door Python aangedreven, machine vision-modules en heeft tot doel de "Arduino of Machine Vision" te worden. … Python maakt het werken met algoritmen voor machinevisies veel gemakkelijker. De methode find_blobs() in de code vindt bijvoorbeeld kleurblobs en retourneert een lijst met objecten met 8 waarden die elke gevonden kleurblobs vertegenwoordigen. In Python is itereren door de lijst met objecten die wordt geretourneerd door find_blobs() en het tekenen van een rechthoek rond elke kleurenblob eenvoudig in slechts twee regels code.

Dus, ondanks dat MaiX Bit een speciale neurale netwerkversneller heeft, kan het soms gemakkelijker zijn om gewoon hardgecodeerde OpenMV-algoritmen te gebruiken om het werk te doen of ze naast elkaar te gebruiken.

Enkele use-cases die bij mij opkomen zijn:

1) Lijndetectie voor lijnvolgerbot

2) Verkeerslichten detecteren met cirkel- en kleurdetectie

3) Gezichtsdetectie gebruiken om de gezichten voor gezichtsherkenning te vinden (met DNN)

Github-repository voor dit artikel

Stap 1: Flash Micropython-firmware

Maak verbinding met MaiX Bit
Maak verbinding met MaiX Bit

Allereerst moeten we micropython-firmware naar ons bord flashen. Een voorgecompileerd binair bestand is opgenomen in de github-repository voor dit artikel, samen met kflash.py (een flash-hulpprogramma). Als u de firmware van de broncode wilt compileren, downloadt u de broncode van https://github.com/sipeed/MaixPy, installeert u de toolchain en compileert u de broncode in het maixpy.bin-bestand. Gedetailleerde bouwinstructies zijn hier te vinden.

Flash het binaire bestand met

sudo python3 kflash.py kpu.bin

Ga na succesvol knipperen door naar de volgende stap.

Stap 2: Maak verbinding met MaiX Bit

Nu zou onze MaiX Bit toegankelijk moeten zijn via een seriële USB-verbinding met baudrate 115200. U kunt uw favoriete software gebruiken voor seriële communicatie of gewoon kat- en echo-commando's, wat u maar wilt. Ik gebruikte het scherm voor seriële communicatie en vond het erg handig.

De opdracht voor het tot stand brengen van een seriële communicatiesessie met scherm is:

sudo-scherm /dev/ttyUSB0 115200

waarbij /dev/ttyUSB0 het adres van uw apparaat is.

Mogelijk moet u op de resetknop op uw microcontroller drukken om het begroetingsbericht en de python-interpreterprompt te zien.

Stap 3: Voer de demo's uit

U hebt nu toegang tot de kopieermodus door op Ctrl+E te drukken en de democodes te kopiëren en plakken. Om ze uit te voeren, drukt u op Ctrl+D in de kopieermodus.

Als u de video's niet wilt opnemen, moet u de video-opnameregels becommentariëren. Anders genereert de code een uitzondering als er geen SD-kaart is geplaatst

Hier zijn korte beschrijvingen van elke demo:

Zoek cirkels - gebruikt de functie find_circles van OpenMV. Er zijn meer aanpassingen nodig voor uw specifieke toepassing, met name de drempelwaarde (bepaalt welke cirkels worden gedetecteerd bij de Hough-transformatie. Alleen cirkels met een grootte groter dan of gelijk aan de drempelwaarde worden geretourneerd) en r_min, r_max-waarden.

Zoek rechthoeken - gebruikt de functie find_rects van OpenMV. Je kunt met de drempelwaarde spelen, maar de waarde die ik in de demo heb, werkt redelijk goed voor het vinden van rechthoeken.

Vind gezichten, vind ogen - gebruikt de functie find_features met Haar Cascades voor het detecteren van ogen en frontale gezichten in de afbeelding. U kunt spelen met drempel- en schaalwaarden voor de juiste afweging tussen snelheid en nauwkeurigheid.

Vind oneindige lijnen - gebruikt de functie find_lines om alle oneindige lijnen in de afbeelding te vinden met behulp van de hough-transformatie.

Kleur detecteren - gebruikt de functie get_statistics om het percentielobject te verkrijgen en converteert vervolgens de gemiddelde waarden van LAB-tuple naar RGB-waarden-tuple. Ik heb dit voorbeeld zelf geschreven en het werkt best goed, maar houd er rekening mee dat de resultaten van kleurdetectie worden beïnvloed door omgevingslicht.

Je kunt nog veel meer interessante demo's vinden in de OpenMV github-repository! Ze zijn meestal compatibel met MaiX Bit micropython, het enige dat u hoeft te onthouden is om sensor.run(1) toe te voegen na het instellen van het pixformaat en de framegrootte.

Veel plezier met experimenteren met OpenMV-code. Als je vragen hebt of een aantal van je interessante resultaten wilt delen, aarzel dan niet om me te bereiken op Youtube of LinkedIn. Excuseer me, ik ga wat robots maken!

Aanbevolen: