OpenMV
Schilden
Lens
Robotica
Boek
Video
Downloaden
Documenten
Forum
OpenMV.io
GithubIn het visuele domein zijn er twee zeer veelvoorkomende taken voor kunstmatige intelligentie: classificatie en objectdetectie.
Categorie:Bepaal tot welke categorie de afbeelding behoort, bijvoorbeeld kat of hond.
Doelherkenning:Gebruikt om de locatie, het aantal en de afmetingen van meerdere verschillende objecten in een afbeelding te bepalen.
In eerdere videolessen hebben we uitgelegd hoe u met de OpenMV4 Plus een neuraal netwerk kunt trainen om verschillende objecten te classificeren. Dit systeem kan in realtime bepalen of een afbeelding in het zichtveld van uw OpenMV een bepaald object is, bijvoorbeeld of een gezicht een mondmasker draagt. Het kan echter niet de coördinaten van het gezicht of het mondmasker opgeven, noch het aantal gezichten.
Aangezien objectdetectie veel complexer en rekenintensiever is dan classificatie, komt deze techniek op microcontrollergebied zeldzaam voor. De hoofd-MCU van OpenMV is de STM32H7. Wij hebben nu een nieuwe functie toegevoegd aan OpenMV waarmee soortgelijke objectdetectietaken op een microcontroller kunnen worden uitgevoerd, met zeer indrukwekkende prestaties.

Vandaag bespreken wijTraining demonstratie voor detectie van verkeersborden in een werkelijke weg-omgeving, detectie van verkeersborden op onze werkelijke wegenbijvoorbeeld verbod op het gebruiken van de claxon, verbod op parkeren en een snelheidslimiet van 80 km/u, in plaats van een laboratoriumomgeving zonder storingen.
U kunt de volledige projectinhoud, inclusief alle code en modellen, bekijken op het volgende adres: https://book.openmv.cc/project/traffic-sign.html
Zoals bekend is, is de werkelijke omgeving zeer complex, met name de wegomgeving, waar veel storingen optreden. Wij hebben met behulp van mobiele telefoons en andere apparaten afbeeldingen van verkeersborden in de werkelijke omgeving verzameld, en hebben het model getraind op de online website van onze OpenMV-partner EdgeImpulse. Ongeveer 270 afbeeldingen zijn gelabeld en de training duurde slechts tien minuten. De resulterende modeln behaalden een F1-score van 92 %, terwijl de uitvoeringssnelheid op OpenMV 10 frames per seconde bedroeg, wat resulteerde in een zeer vloeiende en nauwkeurige werking.
Gebruikers kunnen volgens onze videocursussen elk gewenst object trainen voor detectie, zoals verschillende cijfers, verschillende fruitsoorten, verschillende markeringen, verschillende onderdelen of zelfs elke specifieke onregelmatige doelobjecten. Hierdoor kan het aantal, de coördinaten en de soortnaam van de betreffende objecten worden herkend.
Let op:De functie voor het detecteren van doelpunten met behulp van neurale netwerken, die in deze videoles wordt behandeld, is niet alleen geschikt voor de OpenMV4 H7 Plus, maar ook voor de OpenMV4 H7. Het getrainde FOMO-model voor doelpuntdetectie is namelijk zeer compact, levert uitstekende resultaten op en heeft een omvang van slechts enkele tientallen KB. Ook al is het werkgeheugen van de OpenMV4 H7 kleiner dan dat van de Plus-versie, toch kunnen we een iets kleinere versie van het model trainen die op de OpenMV4 H7 kan worden uitgevoerd.
Hieronder vindt u een beknopte uitleg van het principe:
De belangrijkste ontwerpbeslissingen voor de FOMO-objectpuntdetectie op OpenMV zijn gebaseerd op het idee dat bij veel objectdetectieproblemen de grootte van het object niet nodig is, maar alleen de positie ervan in de afbeelding. Zodra we de positie van het object kennen, kunnen we vervolgens verdere acties uitvoeren, zoals het besturen van een robotwagentje met OpenMV naar het gedetecteerde doel, het uitvoeren van een gestuurde landing met een drone of het besturen van een robotarm om een specifiek doelobject te grijpen.
Het FOMO-model is een speciaal voor microcontrolleromgevingen ontworpen model van EdgeImpulse dat, in tegenstelling tot conventionele objectdetectie, uitsluitend de locaties en het aantal objecten kan detecteren, maar niet de exacte afmetingen.
De onderliggende werking van het FOMO-model is zeer eenvoudig en flexibel. Het verdeelt een afbeelding eerst in blokken van 8 × 8 pixels. Bij een afbeelding met een resolutie van 96 × 96 pixels levert dit een raster van 12 × 12 cellen op. Bij een afbeelding van 360 × 360 pixels levert dit een raster van 40 × 40 cellen op. Vervolgens wordt op elke cel afzonderlijk een afbeeldingsclassificatie uitgevoerd.
In vergelijking met YOLO V5 of MobileNet SSD presteert FOMO aanzienlijk beter bij het detecteren van grote aantallen kleine objecten. FOMO-objectpuntdetectie is 30 keer sneller dan MobileNet SSD.
Als de objecten die moeten worden gedetecteerd, vergelijkbare afmetingen hebben — bijvoorbeeld wanneer de te herkennen markeringen vrijwel identieke afmetingen hebben in plaats van dat er zowel zeer grote als zeer kleine objecten zijn — werkt FOMO beter.
OpenMV gebruikt EdgeImpulse voor het online trainen van een neurale netwerk voor doelherkenning, wat voornamelijk bestaat uit de volgende stappen: verzamelen en uploaden van een beeldgegevensverzameling, annoteren van doelen, trainen, testen van het model en implementeren.
* Verzamelen van een beeldgegevensverzameling: het maken van foto’s van specifieke objecten in de omgeving waarin deze daadwerkelijk moeten worden herkend. We verzamelen daadwerkelijke beelden in dezelfde omgeving waarin we de herkenning uitvoeren, zodat de werkelijke trainingsomgeving en de werkelijke detectieomgeving zo veel mogelijk overeenkomen, wat tot betere resultaten leidt.
* Doelmarkering: markeer elk doel dat in onze gegevensverzameling moet worden gedetecteerd met een rechthoek en koppel deze aan de juiste naam van het doel, zodat de volgende trainingsstap, detectie van de positie van het doel en de naam van het doel, eenvoudiger wordt.
* Trainingsmodel: Nadat de annotatie is voltooid, wordt het model getraind met behulp van de door ons ontworpen parameters van het convolutieneuraalnetwerk.
*Testmodel: We test the trained model; if the results are unsatisfactory, we correspondingly expand the training dataset or adjust the training parameters and continue training until we obtain a satisfactory model.
*Implementatie: We plaatsen het getrainde modelbestand in de ingebouwde USB-stick van OpenMV en voeren het uit.
Hieronder wordt het concrete proces gedemonstreerd:
01. Verzamelen en uploaden van een beeldgegevensverzameling
Eén. Log eerst in op de website edgeimpulse.com, selecteer ‘Inloggen’, voer de naam van het nieuw aangemaakte project in en kies ‘Afbeeldingen’ – ‘Meerdere objecten classificeren’

Twee. Selecteer de afbeelding die u wilt uploaden. Er zijn verschillende manieren om een dataset met afbeeldingen te verkrijgen:
1. Afbeeldingen in realtime verzamelen met de OpenMV-IDE. Gebruik de tool ‘Dataseteditor’ in de OpenMV-IDE om een nieuwe dataset aan te maken en afbeeldingen in realtime te verzamelen. Zie hiervoor onze eerder gepubliceerde videocursus over objectclassificatie en mondkapjesherkenning.

2. Gebruik afbeeldingen die via het internet zijn gedownload of die daadwerkelijk met een mobiele telefoon zijn genomen. Het is het beste als deze overeenkomen met de werkelijke omgeving waarin u de detectie uitvoert. Wij hebben een verzameling van vier- tot vijfhonderd afbeeldingen voorbereid van verkeersborden zoals ‘Parkeerverbod’, ‘Toeterverbod’ en ‘Snelheidslimiet 80 km/u’. Elke afbeelding is opgenomen op een daadwerkelijke weg. Deze dataset is beschikbaar voor download op onze GitHub-pagina en op onze handleidingenwebsite.
02. Doel van de annotatie
Voor elke categorie worden ongeveer 100 afbeeldingen geüpload; nadat de afbeeldingen zijn geüpload, moet annotatie van de afbeeldingen plaatsvinden, waarbij de positie en categorie van de objecten die we willen herkennen, worden aangegeven.


03. Model trainen
Stel de parameters voor het trainen in, wijzig de resolutie in 128 × 128 en selecteer alle parameters als standaard; klik vervolgens op Opslaan.

Genereer functies; de drie kleuren staan respectievelijk voor drie verschillende markeringen.

Stel de parameters voor het trainen van objectdetectie in. Het aantal trainingsepochs is standaard 60, de leersnelheid is 0,001 en het aandeel van de validatieverzameling is 20%. Schakel gegevensversterking in. Voor transfer learning kunt u kiezen uit het standaardmodel MobileNetV2 0,35 of MobileNetV2 0,1. (Let op: SSD kan niet worden gebruikt, omdat SSD niet op OpenMV kan worden uitgevoerd.)
Selecteer ‘Start training’. Na voltooiing van de training heeft het resulterende neurale netwerkmodel een F1-score van 91,2 %; we kunnen de huidige versie opslaan.

Selecteer een opslaglocatie, vul uw beschrijving in en selecteer Opslaan.

04. Model implementeren
Exporteer het getrainde modelbestand. Exporteer alleen de bibliotheek; selecteer OpenMV en klik op Build om het model te implementeren en te exporteren.

Het downloadt automatisch het model dat wij hebben geëxporteerd; hier is het model dat is getraind op onze 300 afbeeldingen, waarmee de volledige training is voltooid.

05. Model uitvoeren
Model uitvoeren op OpenMV:
Verbind OpenMV Plus, sla de drie getrainde bestanden op in de ingebouwde USB-station van OpenMV en open het bestand ei_object_detection.py in de OpenMV IDE. Klik op uitvoeren; de uitvoerresultaten worden weergegeven in de seriële terminal.


Deze functie kan ook op de OpenMV4 worden uitgevoerd. Aangezien de OpenMV4 geen externe SDRAM heeft, is het geheugen kleiner; we kunnen het model verkleinen zodat het op de OpenMV4 kan worden uitgevoerd.
Er zijn twee methoden om de grootte van het model te verkleinen:
Eén. Verlaag de resolutie voor het trainen van 128 × 128 naar 96 × 96.
Twee: wijzig het gebruikte transferleermodel van MobileNetV2 0.35 naar MobileNetV2 0.1.
De uiteindelijke getrainde nieuwe bestanden kunnen worden geplaatst in de OpenMV4 om ze uit te voeren.
Dit is de handleiding voor het detecteren van doelpunten. We kijken uit naar uw resultaten!

AI-waakpost op basis van OpenMV: automatische melding bij niet-gesloten toegang tot belangrijke locaties
Automatisch bepalen of deuren van belangrijke locaties langdurig openstaan en tijdig waarschuwen.

Persoonlijke grensoverschrijding wordt onmiddellijk gemeld; OpenMV definieert het gevoel van ‘veilige grenzen’.
Detectie van personen of apparatuur die een virtuele waaklijn overschrijden.

De ‘AI-stadsbeheerder’ is er: een automatisch herkenningssysteem voor illegale straatbedrijvigheid, gebaseerd op OpenMV.
Automatisch herkenning van handelsactiviteiten op openbare weg, ter ondersteuning van het dagelijks stedelijk bestuur.

Willekeurige opslag van gasflessen? Gebruik OpenMV om automatisch een waarschuwing voor gevaar te activeren
Automatisch herkennen van onjuiste plaatsing van gasflessen en tijdig signaleren van veiligheidsrisico’s met betrekking tot aardgas.

Geen isolerende handschoenen gedragen tijdens werk onder spanning? OpenMV geeft onmiddellijk een waarschuwing!
Automatisch detecteren of werknemers geïsoleerde handschoenen dragen, ter ondersteuning van veilig werk.

Gebruik de OpenMV-intelligente camera om oppervlaktegebreken op aluminiumplaten in realtime te detecteren
Online detectie van gebreken op de oppervlakte van aluminiumplaten, zoals krassen en inzinkingen, ter ondersteuning van kwaliteitscontrole.