Visione artificiale

Che cos’è la visione artificiale?

3 cose da sapere

La visione artificiale è un insieme di tecniche per estrarre informazioni da immagini, video o nuvole di punti. La visione artificiale include il riconoscimento di immagini, il rilevamento di oggetti, il riconoscimento di attività, la stima della posa 3D, il video tracking e la stima del movimento. Le applicazioni del mondo reale includono il riconoscimento facciale per eseguire l'accesso agli smartphone, l'evitamento dei pedoni e dei veicoli nei veicoli a guida autonoma e il rilevamento dei tumori in procedure MRI mediche. Strumenti software come MATLAB® e Simulink® vengono utilizzati per sviluppare tecniche di visione artificiale.

Come funziona

La maggior parte delle tecniche di visione artificiale viene sviluppata utilizzando un ampio set di dati reali e un workflow di esplorazione dati, addestramento di modelli e sviluppo di algoritmi. Gli ingegneri specializzati nella visione artificiale spesso modificano un set di tecniche esistenti per adattarle al problema specifico da affrontare. Segue una descrizione dei principali tipi di approcci utilizzati nei sistemi di visione artificiale.

Tecniche basate sul Deep Learning

Gli approcci di Deep Learning per la visione artificiale sono utili per il rilevamento di oggetti, il riconoscimento di oggetti, il deblurring di immagini e la segmentazione di scene. Gli approcci di Deep Learning includono l'addestramento di reti neurali convoluzionali (CNN), che apprendono direttamente dai dati utilizzando modelli in scale diverse. L'addestramento di CNN richiede un ampio set di immagini o nuvole di punti di addestramento etichettati. Il Transfer Learning utilizza reti pre-addestrate per accelerare questo processo con meno dati di addestramento.

Segmentazione semantica di una strada utilizzando Computer Vision Toolbox in MATLAB.

Segmentazione semantica di una strada utilizzando Computer Vision Toolbox in MATLAB.

Tecniche basate sulle feature

Le tecniche di rilevamento ed estrazione di feature sono algoritmi di visione artificiale che identificano modelli o strutture in immagini e nuvole di punti per l'allineamento di immagini, la stabilizzazione video, il rilevamento di oggetti e altro ancora. Nelle immagini, i tipi di feature utili includono bordi, angoli o regioni con densità uniforme ed è possibile identificare queste feature con rilevatori quali BRISK, SURF oppure ORB. Nelle nuvole di punti è possibile utilizzare estrattori di feature basati sugli autovalori o estrattori FPFH (Fast Point Feature Histogram).

Utilizzo del confronto di feature per confrontare un'immagine di un veicolo spaziale in movimento con un'immagine di riferimento.

Utilizzo del confronto di feature per confrontare un'immagine di un veicolo spaziale in movimento (a destra) con un'immagine di riferimento (a sinistra). (Immagine disponibile per gentile concessione di NASA)

Elaborazione di immagini

Le tecniche di elaborazione di immagini sono spesso applicate come fase di pre-elaborazione nel workflow della visione artificiale. Il tipo di pre-elaborazione dipende dall'attività. Le tecniche di elaborazione di immagini rilevanti includono:

Rilevamento dei coni rossi utilizzando la conversione di colore rgb2hsv in MATLAB.

Rilevamento dei coni rossi utilizzando la conversione di colore rgb2hsv in MATLAB.

Elaborazione di nuvole di punti

Le nuvole di punti sono un insieme di punti di dati in uno spazio 3D che insieme rappresentano una forma o un oggetto 3D. Solitamente l'elaborazione di nuvole di punti viene eseguita per pre-elaborare i dati in preparazione per gli algoritmi di visione artificiale che li analizzano. L'elaborazione di nuvole di punti include solitamente:

Registrazione di nuvole di punti in 3D e stitching utilizzando Iterative Closest Point (ICP) in MATLAB.

Registrazione di nuvole di punti in 3D e stitching utilizzando Iterative Closest Point (ICP) in MATLAB.

Elaborazione della visione 3D

Le tecniche di elaborazione della visione 3D stimano la struttura 3D di una scena utilizzando più immagini scattate con una fotocamera calibrata. Solitamente queste immagini vengono generate da una fotocamera monoculare o da una coppia di fotocamere stereo. Le tecniche di elaborazione della visione 3D includono:

Ricostruzione di oggetti 3D utilizzando una struttura dal movimento (SfM) in MATLAB.

Ricostruzione di oggetti 3D utilizzando una struttura dal movimento (SfM) in MATLAB.

Perché è importante

La visione artificiale è essenziale in una vasta gamma di applicazioni nel mondo reale. Alcune delle più comuni sono illustrate di seguito.

Sistemi autonomi

I sistemi autonomi aerei o terrestri utilizzano vari sensori che raccolgono dati visivi o di nuvole di punti dai loro ambienti. I sistemi utilizzano questi dati con funzionalità di visione artificiale, come la localizzazione e la mappatura simultanea (SLAM) e il tracking, per mappare l'ambiente. I sistemi autonomi possono utilizzare queste mappe per segmentare strade, sentieri o edifici e rilevare e tracciare esseri umani e veicoli. Ad esempio, BMW utilizza le funzionalità di visione artificiale nell'Assisted Driving View (ADV) per raffigurare i veicoli circostanti e identificarne il tipo.

MATLAB supporta i test end-to-end dell'Assisted Driving View di BMW utilizzando dati reali.

MATLAB supporta i test end-to-end dell'Assisted Driving View di BMW utilizzando dati reali.

Applicazioni industriali

La visione artificiale è utilizzata in applicazioni di produzione come il monitoraggio della qualità dei pezzi e la manutenzione delle infrastrutture. Ad esempio, Shell ha utilizzato le reti neurali convoluzionali regionali addestrate (R-CNN) per l'identificazione delle targhette dei macchinari. TimkenSteel ha utilizzato le stesse funzionalità per il controllo qualità, per l'identificazione di parti scadenti o difettose durante la produzione.

Riconoscimento di targhette tramite OCR e Deep Learning in MATLAB.

Riconoscimento di targhette tramite OCR e Deep Learning in MATLAB.

Edilizia e agricoltura

La visione artificiale è utilizzata nell'edilizia e nell'agricoltura per estrarre informazioni da dati di infrastrutture o terreni acquisiti per via aerea. Le funzionalità della visione artificiale come la mappatura della firma spettrale, il rilevamento di oggetti e la segmentazione sono applicate per analizzare immagini, nuvole di punti o dati iperspettrali da piattaforme aeree. Yachiyo Engineering in Giappone usa queste funzionalità per rilevare i danni a dighe e ponti mediante la segmentazione semantica. Gli agricoltori controllano anche la salute delle colture utilizzando droni che acquisiscono immagini iperspettrali delle loro aziende.

Rilevamento di danni superficiali nelle dighe usando SegNet in MATLAB.

Rilevamento di danni superficiali nelle dighe usando SegNet in MATLAB.

Fotografia

L'utilizzo della visione artificiale nelle fotocamere e negli smartphone è diventato sempre più diffuso nell'ultimo decennio. Questi dispositivi utilizzano il rilevamento facciale e il tracking per focalizzarsi sui volti e sugli algoritmi di stitching per creare immagini panoramiche. I dispositivi integrano anche il riconoscimento ottico dei caratteri (OCR) o gli scanner di codici a barre o codici QR per accedere alle informazioni memorizzate.

Creazione di un'immagine panoramica con tecniche di registrazione di immagini basate sulle feature in MATLAB.

Creazione di un'immagine panoramica con tecniche di registrazione di immagini basate sulle feature in MATLAB.

Visione artificiale in MATLAB

Image Processing Toolbox™, Computer Vision Toolbox™ e Lidar Toolbox™ in MATLAB forniscono app, algoritmi e reti addestrate utilizzabili per costruire le funzionalità di visione artificiale. È possibile importare dati di immagini o nuvole di punti, pre-elaborarli e utilizzare algoritmi integrati e reti di Deep Learning per analizzare i dati. I toolbox forniscono esempi su come iniziare.

Rilevamento di difetti utilizzando MATLAB

È possibile utilizzare Computer Vision Toolbox per rilevare anomalie e difetti in oggetti quali parti di macchine, circuiti elettronici e altro. Avrai maggiori possibilità di rilevare le feature giuste iniziando con algoritmi di pre-elaborazione di immagini in Image Processing Toolbox, utilizzando funzionalità come correzione dell'allineamento, segmentazione per colore e regolazione dell'intensità dell'immagine.

La fase di rilevamento dei difetti è spesso realizzata mediante Deep Learning. Per fornire dati di addestramento per il Deep Learning, è possibile utilizzare le app Image, Video o Lidar Labeler di MATLAB, che aiutano a etichettare i dati creando maschere di segmentazione semantica o delle istanze. È quindi possibile addestrare una rete di Deep Learning, sia da zero che mediante il Transfer Learning. È quindi possibile utilizzare la rete addestrata o una delle varie reti pre-addestrate per classificare gli oggetti in base alle anomalie o ai difetti.

Rilevamento di dadi in buono stato o difettosi utilizzando reti di Deep Learning addestrate in MATLAB.

Rilevamento di dadi in buono stato o difettosi utilizzando reti di Deep Learning addestrate in MATLAB.

Rilevamento e tracking di oggetti utilizzando MATLAB

Il rilevamento e il tracking di oggetti è uno degli usi più noti della visione artificiale per applicazioni come il rilevamento di veicoli o persone, la lettura di codici a barre e il rilevamento di oggetti nelle scene. È possibile utilizzare il Deep Network Designer per costruire reti di Deep Learning in MATLAB per applicazioni come il rilevamento di automobili utilizzando un YOLO v3. È possibile caricare dati di addestramento etichettati, pre-elaborare dati, definire e addestrare la rete YOLO v3 e valutare la sua precisione e il miss rate rispetto ai dati di verità di base (ground truth). È quindi possibile utilizzare la rete per rilevare automobili e visualizzare i riquadri di delimitazione intorno ad esse.

Rilevamento di automobili con YOLO v3 generato utilizzando il Deep Network Designer in MATLAB.

Rilevamento di automobili con YOLO v3 generato utilizzando il Deep Network Designer in MATLAB.

Utilizzo di visione artificiale e Simulink nella simulazione di sistemi autonomi

È possibile utilizzare i risultati del rilevamento e del tracking di oggetti dalla visione artificiale in un sistema robotico o autonomo a fini decisionali. L'esempio di frenata automatica di emergenza (AEB) con fusione di sensori dimostra la facilità di costruzione dei modelli Simulink che integrano funzionalità di visione artificiale. Il modello utilizza due parti: un modello di visione artificiale e fusione di sensori, per rilevare gli ostacoli davanti a un veicolo, e un sistema di avviso di collisione frontale per avvisare il conducente e attivare automaticamente il freno. Questo dimostra come usare Simulink per integrare gli algoritmi di visione artificiale in una simulazione di sistema più ampia.

Rilevamento di oggetti davanti a un veicolo utilizzando Simulink.

Rilevamento di oggetti davanti a un veicolo utilizzando Simulink.

Localizzazione e mappatura con Computer Vision Toolbox

È possibile utilizzare la visione artificiale in MATLAB per stimare le posizione della fotocamera e mappare l'ambiente utilizzando la localizzazione e mappatura simultanea visuale (vSLAM), per creare modelli 3D degli oggetti utilizzando la struttura dal movimento (SfM) e per stimare la profondità.

È possibile stimare la posizione di una coppia di fotocamere stereo durante la mappatura dell'ambiente utilizzando le funzionalità integrate in MATLAB come imageDatastore e bagOfFeatures. È possibile inizializzare la mappa identificando le feature corrispondenti tra la coppia di immagini e poi stimare la posizione della fotocamera e le posizioni delle feature sulla mappa, utilizzando la regolazione del fascio per perfezionare la posizione e l'orientamento della fotocamera mentre si muove nella scena.

Feature corrispondenti tra una coppia di fotocamere stereo utilizzando ORB-SLAM2 in Computer Vision Toolbox.

Feature corrispondenti tra una coppia di fotocamere stereo utilizzando ORB-SLAM2 in Computer Vision Toolbox.

Conteggio di oggetti

È anche possibile utilizzare la visione artificiale per contare oggetti in un'immagine o in un video. Nell'esempio di conteggio di cellule, è possibile applicare operatori morfologici per segmentare le cellule, trovare i centri delle cellule utilizzando l'analisi Blob e contare il numero di centri trovati. È possibile ripetete poi questo processo per ogni frame del video.

Conteggio di cellule in MATLAB utilizzando operatori morfologici e analisi Blob.

Conteggio di cellule in MATLAB utilizzando operatori morfologici e analisi Blob.

Le app in MATLAB, come Image Segmenter e Color Thresholder apps, forniscono un'interfaccia utente interattiva per segmentare gli oggetti in un'immagine. L'applicazione Image Region Analyzer aiuta a contare gli oggetti in un'immagine e calcolare le loro proprietà, come area, centro di massa e altro.