ÖppnaMV
Sköldar
Lins
Robotik
Boka
Video
Ladda ner
Dokument
Forum
ÖppnaMV.io
GithubInom visuellt inriktad artificiell intelligens finns det två mycket vanliga uppgifter: klassificering och måldetektering.
Kategori:Avgör till vilken kategori bilden hör, till exempel katt eller hund.
Måldetektering:Används för att hitta positionen, antalet och storleken på flera olika objekt i en bild.
I tidigare videokurser har vi förklarat hur man använder OpenMV4 Plus för att träna neurala nätverk online för klassificering av olika objekt. Det kan i realtid avgöra om bilden i OpenMVs synfält är ett visst objekt, till exempel om en ansiktsmask är påplaceras på ett ansikte, men det kan inte ange positionskoordinaterna för ansiktet eller masken, eller antalet ansikten.
Eftersom objektdetektering är betydligt mer komplex och kräver betydligt mer beräkningskraft än klassificering är den mycket ovanlig inom mikrokontrollernas område. OpenMVs huvud-MCU är STM32H7. Idag har vi lagt till en ny funktion i OpenMV som möjliggör körning av uppgifter liknande objektdetektering på mikrokontroller, med imponerande prestanda.

Idag kommer vi att förklaraTränar demonstrationen för identifiering av trafikskyltar i verkliga gatuumgivningar, vilket innebär identifiering av trafikskyltar på våra verkliga vägartill exempel förbud mot horn, förbud mot parkering och hastighetsbegränsning till 80 km/h, snarare än ett laboratoriemiljö utan störningar.
Du kan visa hela projektinnehållet på följande adress, inklusive all kod och alla modeller: https://book.openmv.cc/project/traffic-sign.html
Det är allmänt känt att den verkliga miljön är mycket komplex, särskilt vägmiljön, där det finns många störande faktorer. Vi använde mobiltelefoner och andra enheter för att samla in bilder på trafikskyltar i den verkliga miljön och tränade modellen med hjälp av vår OpenMV-partners onlineplattform EdgeImpulse. Cirka 270 bilder märktes och träningen tog endast 10 minuter. Den tränade modellens F1-score uppgick till 92 %, och bildfrekvensen på OpenMV uppnådde 10 bilder per sekund, vilket ger ett mycket smidigt och högpresterande resultat.
Användare kan, med hjälp av våra videokurser, träna modellen för att upptäcka vilka mål som helst – till exempel olika siffror, olika frukter, olika markörer, olika komponenter eller till och med alla specifika oregelbundna objekt – och identifiera antalet, koordinaterna samt namnet på objektklassen för dessa mål.
Obs!Den här videokursens funktion för objektpunktdetektering med neurala nätverk är inte bara lämplig för OpenMV4 H7 Plus, utan stöds också av OpenMV4 H7, eftersom den tränade FOMO-modellen för objektpunktdetektering är relativt liten, ger utmärkta resultat och endast upptar några tiotals kB. Även om OpenMV4 H7 har mindre arbetsminne än OpenMV4 H7 Plus kan vi därför träna en något mindre modell som fungerar på OpenMV4.
Nedan följer en kort förklaring av principen:
De viktigaste designbesluten för FOMO-målpunktsdetekteringen på OpenMV grundar sig på idén att många objektdetekteringsproblem egentligen inte kräver objektens storlek, utan endast deras position i bilden. När vi känner till objektens position kan vi utföra efterföljande åtgärder, till exempel att styra en liten bil med OpenMV mot det identifierade målet, att styra en drönare till landning på en specifik plats eller att styra en robotarm för att gripa ett specifikt målobjekt.
FOMO-modellen är en modell som EdgeImpulse har utformat särskilt för mikrokontrollermiljöer; till skillnad från vanliga objektdetekteringsmodeller kan den endast identifiera positionen och antalet av flera objekt, men inte deras exakta storlek.
FOMO-modellens underliggande principer är mycket enkla och flexibla. Först delas bilden upp i block, där varje block är 8×8 pixlar. För en bild med upplösningen 96×96 blir detta ett rutnät på 12×12 celler. För en bild med upplösningen 360×360 blir detta ett rutnät på 40×40 celler. Därefter utförs bildklassificering oberoende för varje cell.
Jämfört med YOLO V5 eller MobileNet SSD presterar FOMO betydligt bättre vid identifiering av ett stort antal små objekt. FOMO:s målpunktsdetektering är 30 gånger snabbare än MobileNet SSD.
FOMO fungerar bättre om objekten som ska identifieras är av ungefär samma storlek, till exempel om de märken du vill identifiera har ungefär lika stora dimensioner, snarare än att det finns både mycket stora och mycket små objekt.
OpenMV använder EdgeImpulse för att träna neurala nätverk för målpunktsdetektering online, vilket främst omfattar följande steg: insamling och uppladdning av bilduppsättningar, märkning av mål, träning, testning av modellen samt distribution.
* Samla in bilddatauppsättning: Ta bilder av specifika objekt i den miljö där vi faktiskt ska utföra identifieringen. Vi samlar in verkliga bilder i samma miljö som där identifiering sker, så att den faktiska träningsmiljön och den faktiska detekteringsmiljön är i stort sett identiska, vilket ger bättre resultat.
*Märkning av mål: Rita en ram runt varje mål som ska upptäckas i vår datamängd och koppla samman ramen med målets namn för att underlätta efterföljande träning samt identifiering av målets position och namn.
* Träning av modell: När märkningen är slutförd utförs modellträningen enligt de konvolutionsnätverksparametrar som vi har utformat.
*Testmodell: Vi testar modellen baserat på den tränade modellen. Om resultatet är otillfredsställande ökar vi antingen träningsdatamängden eller justerar träningsparametrarna och fortsätter träningen tills vi får en tillfredsställande modell.
*Distribution: Vi kör den tränade modellfilen direkt från USB-minnet som är inbyggt i OpenMV.
Nedan visas den specifika processen:
01. Samla in och ladda upp bilddatasets
Ett. Logga in på webbplatsen edgeimpulse.com, välj ”Logga in”, ange namnet på det nyss skapade projektet och välj ”Bilder” – ”Klassificera flera objekt”

Två: Välj bild att ladda upp. Det finns flera sätt att skaffa dataset med bilder:
1. Samla in bilder i realtid med OpenMV IDE. Använd verktyget ”Datasetredigerare” i OpenMV IDE för att skapa ett nytt dataset och samla in bilder i realtid. Mer information finns i vår tidigare videokurs om objektklassificering och maskeringsigenkänning.

2. Använd bilder som hämtats från nätet eller som tagits med mobiltelefonen. Det är bäst om de motsvarar den miljö där du utför det faktiska testet. Vi har förberett ett dataset med fyrahundra till femhundratalet bilder av trafikskyltar, bland annat förbjuden parkering, förbud mot hornsignal och hastighetsbegränsning 80 km/h; alla bilder är insamlade i verkliga trafikmiljöer. Detta dataset kan laddas ner från vår GitHub-sida och vår handledningssajt.
02. Målobjekt för märkning
Ladda upp cirka 100 bilder per kategori. När bilderna har laddats upp måste de annoteras genom att ange positionen och kategorin för de objekt som ska identifieras.


03. Träna modellen
Ange parametrar för träningen, ändra upplösningen till 128 × 128 och välj alla standardinställningar; klicka sedan på Spara.

Generera funktioner, där tre olika färger representerar tre olika märken.

Angevänd inställningar för träningsparametrar för måldetektering. Standardantalet träningsomgångar är 60, inlärningshastigheten är 0,001 och andelen valideringsuppsättning är 20 %. Markera alternativet för dataförstärkning. För överföringsinlärning kan vi välja standardmodellen MobileNetV2 0,35 eller MobileNetV2 0,1. (Observera: SSD får inte användas, eftersom SSD inte kan köras på OpenMV.)
Välj att påbörja träningen. När träningen är avslutad uppnår den resulterande neurala nätverksmodellen en F1-poäng på 91,2 %, och vi kan spara den aktuella versionen.

Välj lagring, fyll i din beskrivning och välj Spara.

04. Distribuera modellen
Exportera den tränade modellfilen. Det räcker att exportera biblioteket; välj OpenMV och klicka på Build för att påbörja distributionen och exporten av modellen.

Den laddar automatiskt ner den modell som vi har exporterat – i detta fall är det modellen som tränats på våra 300 bilder – och därmed är hela träningsprocessen slutförd.

05. Kör modellen
Köra modellen på OpenMV:
Anslut OpenMV Plus, kopiera de tre träningsfilerna till OpenMVs inbyggda USB-minne och öppna filen ei_object_detection.py i OpenMV IDE. Klicka på Kör och resultatet visas i den seriella terminalen.


Den här funktionen kan också köras på OpenMV4. Eftersom OpenMV4 inte har extern SDRAM är minnet mindre, och vi kan därför minska modellens storlek så att den kan köras på OpenMV4.
Det finns två metoder för att minska modellens storlek:
1. Minska upplösningen för träning genom att ändra den från 128 × 128 till 96 × 96.
Två: Ändra det använda överföringsinlärningsmodellen från MobileNetV2 0.35 till MobileNetV2 0.1.
Slutligen placeras den tränade nya filen i OpenMV4 för att köras.
Ovanstående är vår handledning för målpunktsdetektering. Vi ser fram emot dina resultat!

AI-vakt baserad på OpenMV: Automatisk påminnelse om att dörrar inte är stängda på viktiga platser
Automatiskt identifierar om dörrar till viktiga platser inte har stängts under en längre tid och påminner omedelbart.

Personöverträdelse utlöser omedelbart larm – OpenMV förklarar begreppet ”säkerhetsgräns”
Identifierar personers eller utrustnings intrång över en virtuell varningslinje.

”AI-stadsförvaltning” är här – ett automatiskt identifieringssystem för olaglig verksamhet på offentlig mark, byggt på OpenMV
Automatisk identifiering av olaglig verksamhet på offentlig mark för att stödja stadens dagliga förvaltning.

Placeras gasflaskor felaktigt? Använd OpenMV för att automatiskt utlösa en farovarning
Automatisk identifiering av olagliga placeringar av gasflaskor för att upptäcka säkerhetsrisker i samband med gasanvändning i förväg.

Utförde du arbete under spänning utan att bära isolerade handskar? OpenMV ger omedelbart larm!
Automatisk identifiering av om arbetspersonal bär isolerade handskar, för att stödja säker arbetsutförande.

Använda OpenMV:s intelligenta kamera för att identifiera defekter på aluminiumplattans yta i realtid
Identifierar online skador på aluminiumplåtens yta, såsom repor och fördjupningar, och stödjer kvalitetskontrollen.