Nato come progetto Kickstarter, OpenMV riguarda la creazione di moduli per la visione artificiale a basso costo, estensibili e programmati in MicroPython, e mira a diventare l'Arduino della visione artificiale. L'obiettivo di OpenMV è avvicinare gli algoritmi di visione artificiale ai produttori e agli hobbisti. Per raggiungere il loro scopo, i fondatori del progetto hanno realizzato la scheda OpenMV Cam. In questo articolo, andremo a scoprire OpenMV Cam H7 R2, l'ultima implementazione di queste schede per la visione artificiale.
Introduzione
La scheda OpenMV Cam (Figura 1) è come una scheda Arduino, ma più potente e con una fotocamera integrata. La scheda semplifica l'esecuzione di algoritmi di visione artificiale su ciò che la fotocamere integrata vede, in modo da poter tracciare colori, rilevare volti e molto altro in pochi secondi.
Le seguenti, sono solo alcune delle cose che OpenMV Cam può fare:
- Il supporto di TensorFlow Lite consente di eseguire modelli di segmentazione e classificazione delle immagini personalizzati. Con il supporto di TensorFlow Lite si possono classificare facilmente regioni complesse di interesse all'interno del campo visivo e controllare i pin I/O in base a ciò che la scheda vede.
- OpenMV Cam offre l'integrazione con Edge Impulse per un facile addestramento dei modelli TensorFlow Lite nel cloud. Usando OpenMV IDE ed Edge Impulse si può facilmente addestrare un modello in 15 minuti.
- OpenMV Cam può rilevare il movimento in una scena osservando cosa è cambiato, attraverso la differenza dei fotogrammi. La differenziazione dei fotogrammi consente di utilizzare OpenMV Cam per applicazioni di sicurezza.
- OpenMV Cam può essere utilizzata per rilevare fino a 16 colori alla volta in un'immagine e ogni colore può avere un numero qualsiasi di blob distinti. OpenMV Cam valuterà quindi la posizione, le dimensioni, il baricentro e l'orientamento di ciascun blob. Utilizzando il tracciamento del colore, OpenMV Cam può essere programmata per eseguire operazioni come tracciare il sole, seguire una linea, tracciare un bersaglio e molto altro ancora.
- OpenMV Cam può essere utilizzata per rilevare gruppi di colori invece di colori indipendenti. Ciò consente di creare dei marcatori di colore che possono essere inseriti sugli oggetti consentendo alla OpenMV Cam di capire quali sono gli oggetti "taggati".
- OpenMV Cam permette di rilevare i volti (o qualsiasi oggetto generico). Può elaborare Haar Cascades per eseguire il rilevamento di oggetti generici ed è dotata di Frontal Face Cascade e Eye Haar Cascade per rilevare volti e occhi.
- OpenMV Cam permette di tracciare lo sguardo delle persone, rilevando dove sta guardando la pupilla rispetto all'occhio nell'immagine.
- OpenMV Cam permette di rilevare la presenza di una persona nel campo visivo utilizzando il modello TensorFlow Lite integrato per il rilevamento delle persone.
- OpenMV Cam consente di leggere i codici QR nel suo campo visivo. Con il rilevamento/decodifica del codice QR è possibile creare robot intelligenti in grado di leggere le etichette nell'ambiente.
- OpenMV Cam può anche rilevare e decodificare codici a barre 2D a matrice di dati.
- OpenMV Cam può anche decodificare codici a barre lineari 1D. In particolare, può decodificare codici a barre EAN2, EAN5, EAN8, UPCE, ISBN10, UPCA, EAN13, ISBN13, I25, DATABAR, DARABAR_EXP, CODABAR, CODE39, CODE93 e CODE128.
- Il rilevamento della linea può essere eseguito rapidamente su OpenMV Cam con valori di FPS vicini al massimo. È possibile anche trovare segmenti di linea di lunghezza non infinita.
- OpenMV Cam può anche essere usata per rilevare cerchi e rettangoli.
- OpenMV Cam può utilizzare la tecnica del template matching per rilevare quando un'immagine template viene visualizzata. Ad esempio, può essere utilizzata per trovare i fiducial su un PCB o leggere cifre note su un display.
- È possibile utilizzare OpenMV Cam per acquisire immagini fino a 640x480 in scala di grigi/RGB565 BMP/JPG/PPM/PGM. Si può controllare direttamente come le immagini vengono catturate intervenendo nello script Python. È possibile anche eseguire funzioni di visione artificiale e/o disegnare su fotogrammi prima di salvarli.
- È possibile utilizzare OpenMV Cam per registrare video MJPEG fino a 640x480 in scala di grigi/RGB565 o immagini GIF (o video RAW). È possibile controllare direttamente come ogni fotogramma del video viene registrato intervenendo nello script Python. E, come per l'acquisizione di immagini, è possibile eseguire funzioni di visione artificiale e/o disegnare su fotogrammi video prima di salvarli.
Infine, tutte le funzionalità di cui sopra possono essere combinate e abbinate nella propria applicazione personalizzata insieme al controllo dei pin di I/O. OpenMV Cam ha un layout pin standard in modo da poter impilare gli shield su di essa come su Arduino. Esistono vari shield forniti da OpenMV, come uno shield LCD in modo da poter vedere ciò che la OpenMV Cam vede in movimento, uno shield di prototipazione per creare il proprio circuito personalizzato, uno shield Wi-Fi per connettersi a Internet e uno shield per visione termica per vedere al buio.
OpenMV Cam esegue il sistema operativo MicroPython che consente di programmare OpenMV Cam utilizzando Python (Python 3 per la precisione). Python semplifica notevolmente il lavoro con gli algoritmi di visione artificiale. MicroPython fornisce moduli integrati che rispecchiano la libreria standard Python, nonché moduli specifici di MicroPython. La maggior parte dei moduli della libreria standard implementa un sottoinsieme delle funzionalità del modulo Python equivalente e, in alcuni casi, fornisce alcune estensioni specifiche per MicroPython. OpenMV Cam si può programmare utilizzando l'IDE OpenMV che presenta un potente editor di testo, un visualizzatore di frame buffer in modo da poter vedere ciò che vede la telecamera, un terminale seriale per il debug e una visualizzazione dell'istogramma per semplificare il tracciamento del colore. Utilizzando l'IDE OpenMV si può creare un set di dati, caricare quel set di dati su Edge Impulse nel cloud e utilizzare il Transfer Learning con MobileNet per generare una rete neurale convoluzionale TensorFlow Lite che verrà eseguita a bordo della OpenMV Cam.
OpenMV Cam H7 R2
OpenMV Cam H7 R2 è l'ultima arrivata nella famiglia delle schede OpenMV Cam. Si tratta di una piccola scheda microcontrollore a bassa potenza che consente di implementare facilmente applicazioni utilizzando la visione artificiale. La scheda è programmabile ad alto livello con Python anziché in C/C++. Ciò semplifica la gestione dei complessi output degli algoritmi di visione artificiale e permette di lavorare con strutture dati di alto livello. Comunque, anche in Python, si ha ancora il controllo totale sulla scheda e sui suoi pin di I/O (Figura 2).
OpenMV Cam H7 R2 presenta:
- Il processore STM32H743VI ARM Cortex M7 operante a 480 MHz con 1 MB di SRAM e 2 MB di flash. Tutti i pin I/O operano a 3,3 V e sono tolleranti a 5 V. Il processore dispone delle seguenti interfacce I/O: [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2054 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.