OpenMV
Schilden
Lens
Robotica
Boek
Video
Downloaden
Documenten
Forum
OpenMV.io
GithubEr zijn twee zeer veelvoorkomende taken op het gebied van visie waarbij kunstmatige intelligentie wordt toegepast: 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 videocursussen hebben we uitgelegd hoe u met de OpenMV4 Plus een neurale 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 weergeven, noch het aantal gezichten.
Aangezien objectdetectie aanzienlijk complexer en rekenintensiever is dan classificatie, komt deze techniek op microcontrollergebied zelden voor. De hoofd-MCU van OpenMV is de STM32H7. Wij hebben onlangs een nieuwe functie toegevoegd aan onze OpenMV-producten, waarmee vergelijkbare objectdetectietaken op microcontrollers kunnen worden uitgevoerd; de prestaties zijn zeer indrukwekkend.

Vandaag zullen wij u het volgende uitleggenTrainingdemo voor het detecteren van verkeersborden in een realistische straatomgeving: detectie van verkeersborden op onze werkelijke wegenbijvoorbeeld verbod op het gebruiken van de claxon, verbod op parkeren en een snelheidsbeperking van 80 km/u, in plaats van een laboratoriumomgeving zonder storingen.
U kunt de volledige projectinhoud, inclusief alle code en modellen, raadplegen op het volgende adres: https://book.openmv.cc/project/traffic-sign.html
Zoals algemeen bekend is, is de werkelijke omgeving zeer complex, met name de weg-omgeving, waarbij veel storende factoren optreden. We hebben met behulp van mobiele telefoons en andere apparaten afbeeldingen van verkeersborden in de werkelijke omgeving verzameld, en met behulp van de online website EdgeImpulse van onze OpenMV-partner hebben we een model getraind. Hiervoor zijn ongeveer 270 afbeeldingen gelabeld, en de training duurde slechts tien minuten. Het resulterende model heeft een F1-score van 92 %, terwijl de uitvoeringssnelheid op OpenMV 10 frames per seconde bedraagt, wat een zeer vloeiende en tegelijkertijd nauwkeurige prestatie oplevert.
U kunt volgens onze videocursussen elk gewenst doel trainen voor detectie, bijvoorbeeld verschillende cijfers, verschillende fruitsoorten, verschillende markeringen, verschillende onderdelen of zelfs elke specifieke onregelmatige doelen. Zo kunt u het aantal, de coördinaten en de naam van de objectcategorie van het specifieke doel laten detecteren.
Let op:De functie voor doelpuntdetectie met neurale netwerken die in deze videoles wordt uitgelegd, 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 slechts een grootte van enkele tientallen kB. Ook al is het werkgeheugen van de OpenMV4 H7 kleiner dan dat van de Plus-versie, toch kunnen we een iets kleiner model trainen dat wel op de OpenMV4 H7 kan worden uitgevoerd.
Hieronder vindt u een beknopte uitleg van het principe:
De belangrijkste ontwerpbeslissingen voor de FOMO-objectdetectie op OpenMV zijn gebaseerd op het idee dat veel objectdetectietaken eigenlijk geen informatie over de grootte van objecten vereisen, maar enkel hun positie in de afbeelding. Zodra we de positie van een object kennen, kunnen we vervolgens verdere acties ondernemen, zoals het besturen van een voertuig met OpenMV zodat het naar het gedetecteerde doel beweegt, het uitvoeren van een gepreciseerde landing met een drone of het besturen van een robotarm om een specifiek doelobject te grijpen.
Het FOMO-model is een model dat specifiek door EdgeImpulse is ontworpen voor microcontrolleromgevingen; in tegenstelling tot conventionele objectdetectiemodellen kan het alleen de locaties en het aantal objecten detecteren, maar niet hun exacte afmetingen.
De onderliggende werking van het FOMO-model is zeer eenvoudig en flexibel. Het verdeelt de afbeelding eerst in blokken van 8×8 pixels. Bij een afbeelding met een resolutie van 96×96 pixels zijn dit dus 12×12 cellen. Bij een afbeelding van 360×360 pixels zijn dit 40×40 cellen. Vervolgens wordt op elke cel afzonderlijk een afbeeldingsclassificatie uitgevoerd.
Vergeleken met YOLO V5 of MobileNet SSD presteert FOMO aanzienlijk beter bij het detecteren van een groot aantal kleine objecten. FOMO-objectpuntdetectie is 30 keer sneller dan MobileNet SSD.
Indien de objecten die moeten worden gedetecteerd een vergelijkbare grootte hebben—bijvoorbeeld wanneer de te herkennen markeringen vrijwel dezelfde afmetingen hebben, en niet wanneer er zowel zeer grote als zeer kleine objecten zijn—werkt FOMO beter.
OpenMV maakt gebruik van EdgeImpulse om online een neuraal netwerk te trainen voor doelpuntdetectie. Dit gebeurt in de volgende stappen: verzamelen en uploaden van een beeldgegevensverzameling, annoteren van doelen, trainen, testen van het model en implementeren.
* Verzamelen van een beeldgegevensset: het maken van foto’s van specifieke objecten in de werkelijke omgeving waarin deze moeten worden herkend. We verzamelen daadwerkelijke beelden in dezelfde omgeving waarin we de herkenning uitvoeren, zodat de werkelijke trainingsomgeving en de werkelijke detectieomgeving grotendeels overeenkomen, wat betere resultaten oplevert.
* Markering van doelen: elk doel dat in onze gegevensverzameling moet worden gedetecteerd, wordt omlijnd en gekoppeld aan de naam van het doel, zodat de volgende stappen — namelijk het trainen, het detecteren van de positie van het doel en de naam van het doel — eenvoudiger zijn.
* Trainingsmodel: Nadat de annotatie is voltooid, wordt het model getraind op basis van de door ons ontworpen parameters van het convolutieneuraal netwerk.
*Testmodel: We test the model based on 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 om het uit te voeren.
Hieronder wordt de concrete procedure gedemonstreerd:
01. Verzamelen en uploaden van een afbeeldingsdataset
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 gegevensset met afbeeldingen te verkrijgen:
1. Afbeeldingen in realtime verzamelen via 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 eerdere videotutorial over objectclassificatie en mondkapjesherkenning.

2. Afbeeldingen die via het internet zijn gedownload of die met een mobiele telefoon zijn genomen. Het is het beste als deze overeenkomen met de omgeving waarin u daadwerkelijk test. Wij hebben een verzameling van vier- tot vijfhonderd afbeeldingen voorbereid van verkeersborden zoals ‘Parkeren verboden’, ‘Toeteren verboden’ en ‘Snelheidslimiet 80 km/u’. Elke afbeelding is op een werkelijke weg opgenomen. Deze gegevensverzameling is beschikbaar voor download op onze GitHub- en tutorialwebsite.
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 locatie en de categorie van de objecten die we willen herkennen, worden aangegeven.


03. Model trainen
Stel de parameters voor het trainen van het model in, wijzig de resolutie in 128 × 128 en laat alle overige parameters op de standaardwaarden staan. Klik op Opslaan.

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

Stel de parameters voor de training van objectdetectie in. Het aantal trainingsepoches is standaard 60, de leersnelheid bedraagt 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, aangezien SSD niet op OpenMV kan worden uitgevoerd.)
Selecteer ‘Starten met trainen’. Na voltooiing van de training bedraagt de F1-score van het resulterende neurale netwerkmodel 91,2 %; we kunnen deze versie opslaan.

Selecteer de opslag, vul uw beschrijving in en selecteer Opslaan.

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

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

05. Het model uitvoeren
Model uitvoeren op OpenMV:
Verbind OpenMV Plus, sla de drie getrainde bestanden op in de ingebouwde USB-stick 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 worden uitgevoerd op de OpenMV4. 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. Verminder de resolutie voor de training door de resolutie van 128 × 128 te wijzigen in 96 × 96.
Twee: wijzig het gebruikte model voor transfer learning door MobileNetV2 0,35 te vervangen door MobileNetV2 0,1.
Ten slotte kunt u het getrainde nieuwe bestand in de OpenMV4 laden en uitvoeren.
Dit is de handleiding voor het detecteren van doelpunten. We kijken uit naar uw resultaten!

AI-waakpost op basis van OpenMV: automatische melding bij onbeveiligde toegang tot belangrijke locaties
Automatisch detecteren of de deur van een belangrijke locatie langdurig openstaat en tijdig waarschuwen.

Alarm bij het overschrijden van personeel; OpenMV interpreteert het “gevoel van veilige grenzen”
Herkenning van personen of apparatuur die een virtuele waaklijn overschrijden.

De ‘AI-stadswacht’ is gearriveerd: een automatisch herkenningssysteem voor ongeoorloofde handelsactiviteiten op openbare plaatsen, 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 bij gevaar te activeren
Automatisch detecteren van onjuiste plaatsing van gasflessen en tijdig signaleren van veiligheidsrisico’s met betrekking tot aardgas.

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

Gebruik de OpenMV-intelligente camera om oppervlaktegebreken op aluminiumplaten in real time te detecteren
Online detectie van gebreken op oppervlakken van aluminiumplaten, zoals krassen en deuken, ter ondersteuning van kwaliteitscontrole.