OpenMV
Scudi
Lente
Robotica
Libro
Video
Scaricamento
Documenti
Foro
OpenMV.io
GithubNel campo della visione artificiale, l’intelligenza artificiale svolge due tipi di compiti molto comuni: la classificazione e il rilevamento degli oggetti.
Categoria:Determinare a quale categoria appartiene l’immagine, ad esempio se si tratta di un gatto o di un cane.
Rilevamento degli oggetti:Utilizzato per individuare la posizione, il numero e le dimensioni di più obiettivi diversi presenti nell’immagine.
Nei precedenti tutorial video abbiamo illustrato come utilizzare OpenMV4 Plus per addestrare in tempo reale una rete neurale finalizzata alla classificazione di diversi oggetti; tale rete è in grado di determinare in tempo reale se un’immagine presente nel campo visivo di OpenMV corrisponde a un determinato oggetto, ad esempio se un volto umano indossa una mascherina, ma non è in grado di fornire le coordinate della posizione del volto o della mascherina, né il numero complessivo di volti rilevati.
Poiché il rilevamento degli oggetti è molto più complesso e richiede una potenza di calcolo molto maggiore rispetto alla classificazione, tale funzionalità è estremamente rara nel campo dei microcontrollori. La MCU principale di OpenMV è lo STM32H7; attualmente abbiamo integrato su OpenMV una nuova funzionalità che consente l’esecuzione di compiti analoghi al rilevamento degli oggetti direttamente su microcontrollori, con prestazioni eccezionali.

Oggi illustreremoAddestramento della rilevazione dei segnali stradali in un ambiente stradale reale, per rilevare i segnali stradali presenti sulle nostre strade realiad esempio divieto di suonare il clacson, divieto di sosta e limite di velocità di 80 km/h, anziché un ambiente di laboratorio privo di interferenze.
È possibile visualizzare l’intero contenuto del progetto all’indirizzo seguente, che include tutto il codice e i modelli: https://book.openmv.cc/project/traffic-sign.html
È noto che l’ambiente reale è estremamente complesso, in particolare quello stradale, con numerosi fattori di disturbo. Abbiamo acquisito immagini di segnaletica stradale nell’ambiente reale utilizzando dispositivi come smartphone e abbiamo addestrato il modello sul sito web online EdgeImpulse del nostro partner OpenMV, etichettando circa 270 immagini; il tempo di addestramento richiesto è stato di soli 10 minuti. L’accuratezza del modello addestrato, espressa come F1 score, raggiunge il 92 %, mentre il frame rate di esecuzione su OpenMV è pari a 10 fotogrammi al secondo, garantendo un funzionamento estremamente fluido e un’elevata accuratezza.
Gli utenti possono addestrare il sistema per rilevare qualsiasi oggetto desiderato, seguendo i nostri tutorial video: ad esempio numeri diversi, frutti diversi, segnali diversi, componenti diversi o anche qualsiasi altro oggetto irregolare specifico. È possibile ottenere il conteggio, le coordinate e il nome della categoria dell’oggetto rilevato.
Attenzione:Questo tutorial video illustra la funzione di rilevamento dei punti obiettivo basata su reti neurali, che è compatibile non solo con OpenMV4 H7 Plus, ma anche con OpenMV4 H7; infatti, i modelli addestrati di rilevamento dei punti obiettivo FOMO sono di dimensioni contenute, offrono ottime prestazioni e occupano soltanto alcune decine di kilobyte: pertanto, anche se la memoria operativa di OpenMV4 H7 è inferiore a quella di OpenMV4 H7 Plus, è comunque possibile addestrare un modello leggermente più piccolo da eseguire su OpenMV4.
Di seguito viene illustrato brevemente il principio:
La principale decisione progettuale relativa al rilevamento dei punti obiettivo FOMO su OpenMV si basa sull’idea che molti problemi di rilevamento oggetti non richiedono effettivamente le dimensioni degli oggetti, ma soltanto la loro posizione nell’immagine. Una volta nota la posizione degli oggetti, è possibile eseguire operazioni successive, ad esempio far muovere un veicolo controllato da OpenMV verso l’obiettivo rilevato, far atterrare un drone in un punto specifico o controllare un braccio robotico per afferrare un determinato oggetto.
Il modello FOMO è un modello appositamente progettato da EdgeImpulse per ambienti a microcontrollore; a differenza della rilevazione tradizionale di oggetti, esso è in grado di individuare soltanto la posizione e il numero di più oggetti, senza fornire le loro dimensioni specifiche.
Il principio fondamentale del modello FOMO è estremamente semplice e flessibile. Innanzitutto, l’immagine viene suddivisa in blocchi di 8×8 pixel ciascuno. Per un’immagine con risoluzione 96×96, si ottiene quindi una griglia di 12×12 celle; per un’immagine con risoluzione 360×360, si ottiene invece una griglia di 40×40 celle. Successivamente, la classificazione dell’immagine viene eseguita in modo indipendente su ciascuna cella.
Rispetto a YOLO V5 o MobileNet SSD, FOMO offre prestazioni significativamente migliori su un gran numero di piccoli oggetti. Il rilevamento dei punti obiettivo FOMO è 30 volte più veloce rispetto a MobileNet SSD.
Se gli oggetti da rilevare hanno dimensioni simili — ad esempio, se le dimensioni dei marker da identificare sono pressoché uniformi e non presentano differenze estreme tra un oggetto molto grande e uno molto piccolo — l’efficacia di FOMO risulta migliore.
OpenMV utilizza EdgeImpulse per addestrare online una rete neurale per il rilevamento di oggetti, suddiviso principalmente nei seguenti passaggi: acquisizione e caricamento del dataset di immagini, annotazione degli oggetti, addestramento, test del modello, distribuzione.
* Acquisizione di un dataset di immagini: acquisizione di immagini specifiche di oggetti presenti nell’ambiente reale in cui verrà effettuata l’identificazione. Le immagini vengono acquisite nello stesso ambiente in cui avverrà l’identificazione; pertanto, l’ambiente reale utilizzato per l’addestramento e quello reale utilizzato per il rilevamento sono sostanzialmente identici, ottenendo così risultati migliori.
* Obiettivo dell’annotazione: delimitare ciascun oggetto da rilevare nel nostro insieme di dati e associarlo correttamente al relativo nome, al fine di facilitare il successivo addestramento nonché il rilevamento della posizione e del nome degli oggetti.
* Modello di addestramento: una volta completata l’annotazione, il modello viene addestrato utilizzando i parametri della rete neurale convoluzionale progettati da noi.
* Modello di test: eseguiamo test sul modello addestrato; qualora i risultati non siano soddisfacenti, incrementiamo opportunamente il set di dati di addestramento o modificiamo i parametri di addestramento, quindi procediamo con un ulteriore addestramento fino a ottenere un modello soddisfacente.
* Distribuzione: è sufficiente copiare i file del modello addestrato sull’unità USB integrata di OpenMV per eseguirli.
Di seguito viene illustrato il processo specifico:
01. Raccolta e caricamento del dataset di immagini
I. Innanzitutto accediamo al sito web edgeimpulse.com, selezioniamo “Accedi”, inseriamo il nome del nuovo progetto e scegliamo “Immagini” → “Classifica più oggetti”

Due. Selezionare l’immagine da caricare. Esistono diversi modi per ottenere il dataset relativo all’immagine:
1. Acquisizione in tempo reale di immagini tramite l’IDE OpenMV. Utilizzare lo strumento «Editor di dataset» integrato nell’IDE OpenMV per creare un nuovo dataset e acquisire immagini in tempo reale; per maggiori dettagli, consultare il nostro precedente tutorial video sulla classificazione degli oggetti e sul riconoscimento delle mascherine.

2. Immagini scaricate da Internet o scattate direttamente con uno smartphone. È preferibile che corrispondano all’ambiente reale in cui verrà effettuata l’ispezione. Abbiamo preparato un insieme di quattro-cinquecento immagini di segnali stradali, tra cui divieto di sosta, divieto di fare rumore e limite di velocità a 80 km/h; ogni immagine è stata acquisita direttamente su strada reale. Questo dataset è disponibile per il download sul nostro repository GitHub e sul sito web della guida.
02. Obiettivi dell’annotazione
Per ogni categoria vengono caricati circa 100 immagini; una volta completato il caricamento, è necessario procedere all’annotazione delle immagini, indicando la posizione e la categoria degli oggetti da riconoscere.


03. Addestramento del modello
Impostare i parametri dell’addestramento progettuale, modificare la risoluzione in 128×128 e selezionare tutti i parametri predefiniti; quindi fare clic su Salva.

Generazione delle funzionalità: i tre colori rappresentano rispettivamente tre indicatori.

Impostare i parametri per l’addestramento del rilevamento degli oggetti. Il numero predefinito di epoche di addestramento è 60, il tasso di apprendimento è 0,001 e la percentuale del set di validazione è il 20%. Selezionare l’opzione per l’aumento dei dati. Per il modello di apprendimento trasferito, è possibile scegliere come predefinito MobileNetV2 0,35 o MobileNetV2 0,1. (Nota: non è possibile utilizzare SSD, poiché SSD non è eseguibile su OpenMV.)
Selezionare Avvia addestramento. Al termine dell’addestramento, il modello di rete neurale ottenuto presenta un punteggio F1 pari al 91,2%; è possibile salvare la versione corrente.

Selezionare l’archiviazione, inserire la descrizione e scegliere Salva.

04. Distribuzione del modello
Esportare il file del modello addestrato. È sufficiente esportare la libreria; selezionare OpenMV e fare clic su Build per avviare la distribuzione ed esportazione del modello.

Scaricherà automaticamente il modello che abbiamo esportato; qui è visualizzato il modello addestrato con le nostre 300 immagini, completando così l’intero processo di addestramento.

05. Esecuzione del modello
Eseguire il modello su OpenMV:
Connettere OpenMV Plus, salvare i tre file addestrati nella memoria USB integrata di OpenMV e aprire il file ei_object_detection.py nell’IDE di OpenMV. Fare clic su Esegui; i risultati dell’esecuzione verranno visualizzati nel terminale seriale.


Questa funzione è eseguibile anche su OpenMV4. Poiché OpenMV4 non dispone di SDRAM esterna, la memoria disponibile è inferiore; pertanto, riducendo le dimensioni del modello, è possibile farlo funzionare su OpenMV4.
Esistono due metodi per ridurre le dimensioni del modello:
I. Ridurre la risoluzione di addestramento, passando da una risoluzione di 128×128 a una risoluzione di 96×96.
Due. Modificare il modello di apprendimento trasferito utilizzato, sostituendo MobileNetV2 0.35 con MobileNetV2 0.1.
Infine, è sufficiente caricare il nuovo file addestrato su OpenMV4 ed eseguirlo.
Questo conclude la nostra guida al rilevamento dei punti di interesse. Non vediamo l’ora di vedere i vostri risultati!

Sentinella AI basata su OpenMV: avviso automatico in caso di mancata chiusura di luoghi critici
Rileva automaticamente se la porta di un luogo critico rimane aperta per un periodo prolungato e ne fornisce tempestivamente un avviso.

Allarme in caso di superamento dei confini da parte delle persone; OpenMV interpreta il «senso di sicurezza dei confini»
Rilevamento del superamento di persone o attrezzature oltre una linea di allerta virtuale.

Arriva il «Sistema di gestione urbana basato sull’intelligenza artificiale»: sistema automatico di riconoscimento degli operatori commerciali che occupano abusivamente la strada, realizzato sulla piattaforma OpenMV
Riconoscimento automatico delle attività commerciali che occupano il suolo pubblico, per supportare la gestione quotidiana della città.

Cilindri del gas posizionati in modo non sicuro? Utilizzare OpenMV per attivare automaticamente un avviso di pericolo
Rilevazione automatica delle posizioni non conformi di collocazione delle bombole del gas, al fine di identificare in anticipo i potenziali rischi per la sicurezza del gas.

Lavoro sotto tensione senza guanti isolanti? OpenMV emette immediatamente un allarme!
Riconoscimento automatico dell’indossamento dei guanti isolanti da parte degli operatori, per supportare operazioni sicure.

Utilizzo della telecamera intelligente OpenMV per l’identificazione in tempo reale dei difetti sulla superficie delle lastre di alluminio
Riconoscimento in tempo reale di difetti quali graffi e ammaccature sulla superficie delle lamiere di alluminio, per supportare il controllo della qualità.