La visione artificiale è un campo dell'intelligenza artificiale (IA) che permette ai computer e ai sistemi di ricavare informazioni significative da immagini digitali, video e altri input visivi - e intraprendere azioni o formulare delle segnalazioni sulla base di tali informazioni. Se l'IA permette ai computer di pensare, la computer vision permette loro di vedere, osservare e capire.
La computer vision funziona più o meno come la vista umana, eccetto che gli umani hanno un vantaggio. La vista umana ha il vantaggio di disporre di anni e anni di esperienza in cui si è allenata a distinguere gli oggetti, quanto sono lontani, se si stanno muovendo e se c'è qualcosa di sbagliato in un'immagine.
La computer vision permette alle macchine di svolgere queste funzioni, ma deve farlo in molto meno tempo con telecamere, dati e algoritmi piuttosto che con retine, nervi ottici e una corteccia visiva. Dato che un sistema che è stato sviluppato per ispezionare i prodotti o guardare un asset di produzione può analizzare migliaia di prodotti o processi al minuto, notando difetti o problemi impercettibili, esso può superare rapidamente le capacità umane.
La computer vision è usata in settori che vanno dall'energia e dai servizi pubblici all'industria manifatturiera e automobilistica e il mercato continua a crescere. Si prevede di raggiungere 48,6 miliardi di dollari entro il 2022.1
La computer vision ha bisogno di molti dati. Esegue analisi di dati più e più volte fino a quando non distingue e riconosce le immagini. Per esempio, per addestrare un computer a riconoscere gli pneumatici di un'automobile, è necessario alimentarlo con una grande quantità di immagini di pneumatici e di elementi relativi agli pneumatici per imparare le differenze e riconoscere uno pneumatico, specialmente uno senza difetti.
Per realizzare ciò vengono utilizzate essenzialmente due tecnologie: un tipo di machine learning chiamato deep learning e una rete neurale convoluzionale (CNN - convolutional neural network).
Il machine learning utilizza modelli di algoritmi che permettono a un computer di imparare da sé il contesto dei dati visivi. Se vengono immessi abbastanza dati in questo modello, il computer "guarderà" i dati e imparerà da solo a distinguere un'immagine da un'altra. Gli algoritmi permettono alla macchina di imparare da sola, senza che qualcuno la programmi per riconoscere un'immagine.
Un CNN aiuta un modello di machine learning o di deep learning a "guardare" scomponendo le immagini in pixel a cui vengono dati dei tag o delle etichette. Usa le etichette per eseguire delle convoluzioni (un'operazione matematica su due funzioni per produrre una terza funzione) e fa delle previsioni sulla base di ciò che "vede". La rete neurale esegue delle convoluzioni e controlla l'accuratezza delle sue previsioni in una serie di iterazioni fino a quando le previsioni iniziano ad avverarsi. È quindi in grado di riconoscere o vedere le immagini in modo simile a quello degli esseri umani.
Alla stregua di un essere umano che distingue un'immagine a distanza, una CNN distingue prima i contorni nitidi e le forme semplici, poi aggiunge delle informazioni mentre esegue le iterazioni delle sue previsioni. Una CNN è utilizzata per analizzare immagini singole. Una rete neurale ricorrente (RNN - recurrent neural network) è usata in modo simile per le applicazioni video per aiutare i computer a capire come le immagini in una serie di fotogrammi sono collegate tra loro.
Scienziati e ingegneri hanno cercato di sviluppare dei metodi che consentissero alle macchine di vedere e comprendere i dati visivi per circa 60 anni. La sperimentazione è iniziata nel 1959 quando dei neurofisiologi mostrarono a un gatto una serie di immagini, cercando di correlarla con una reazione nel suo cervello. Essi scoprirono che reagiva prima ai bordi netti o alle linee e, scientificamente, questo implicava che l'elaborazione delle immagini iniziava con forme semplici come i bordi dritti.(2)
Più o meno nello stesso periodo fu sviluppata la prima tecnologia di scansione delle immagini al computer, permettendo ai computer di digitalizzare e acquisire immagini. Un'altra pietra miliare fu raggiunta nel 1963 quando i computer furono in grado di trasformare immagini bidimensionali in forme tridimensionali. Negli anni '60 l'IA divenne oggetto di ricerca accademica e vi furono i primi tentativi di utilizzarla per risolvere il problema della visione umana.
Il 1974 vide l'introduzione della tecnologia di riconoscimento ottico dei caratteri (OCR - optical character recognition), che consentiva di riconoscere il testo stampato in qualsiasi font o carattere.(3)Allo stesso modo, il riconoscimento intelligente dei caratteri (ICR - intelligent character recognition) potrebbe decifrare il testo scritto a mano utilizzando delle reti neurali.(4)Da allora, OCR e ICR hanno consentito di sviluppare applicazioni per l'elaborazione di documenti e fatture, il riconoscimento delle targhe dei veicoli, i pagamenti mobili, la traduzione automatica e altre applicazioni comuni.
Nel 1982 il neuroscienziato David Marr ha dimostrato che la vista funziona in modo gerarchico e ha introdotto degli algoritmi per le macchine in grado di rilevare bordi, angoli, curve e forme elementari simili. Contemporaneamente l'informatico Kunihiko Fukushima sviluppava una rete di celle in grado di riconoscere i modelli. La rete, chiamata Neocognitron, integrava degli strati convoluzionali in una rete neurale.
Entro il 2000, l'attenzione degli studi si è concentrata sul riconoscimento degli oggetti e nel 2001 sono apparse le prime applicazioni di riconoscimento facciale in tempo reale. La standardizzazione di come i set di dati visivi sono etichettati e annotati è emersa nel corso degli anni 2000. Nel 2010 è diventato disponibile il set di dati ImageNet. Esso conteneva milioni di immagini etichettate attraverso un migliaio di classi di oggetti e fornisce una base per le CNN e i modelli di apprendimento profondo utilizzati oggi. Nel 2012 un team dell'Università di Toronto inseriva una CNN in un programma di riconoscimento delle immagini. Il modello, chiamato AlexNet, riduceva significativamente il tasso di errore nel riconoscimento delle immagini. Dopo questa svolta, i tassi di errore sono scesi a pochi punti percentuali.(5)
Accedi a video, documenti, workshop e altro ancora.
C'è molta ricerca nel campo della visione artificiale, ma non è solo ricerca. Applicazioni concrete dimostrano quanto sia importante la computer vision nelle attività commerciali, nell'intrattenimento, nei trasporti, nella sanità e nella vita di tutti i giorni. Un elemento determinante per la crescita di queste applicazioni è rappresentato dalla enorme massa di informazioni visive che fluiscono da smartphone, sistemi di sicurezza, telecamere del traffico e altri dispositivi dotati di strumenti visivi. Questi dati potrebbero giocare un ruolo importante in tutti i settori, ma oggi rimangono inutilizzati. Le informazioni creano un banco di prova per addestrare le applicazioni di computer vision e un launchpad per farle diventare parte di una serie di attività umane:
Molte organizzazioni non hanno le risorse per finanziare dei laboratori di computer vision e creare modelli di deep learning e reti neurali. Essi possono anche non disporre della potenza di calcolo necessaria per elaborare enormi insiemi di dati visivi. Aziende come IBM stanno aiutando queste organizzazioni offrendo dei servizi di sviluppo di software di visione artificiale. Questi servizi forniscono dei modelli di apprendimento precostituiti disponibili dal cloud - e inoltre diminuiscono la quantità di risorse di calcolo. Gli utenti si connettono ai servizi attraverso una API (application programming interface) e li usano per sviluppare applicazioni di computer vision.
IBM ha anche introdotto una piattaforma di computer vision che risolve sia i problemi di sviluppo che di risorse di calcolo. IBM Maximo Visual Inspection include degli strumenti che permettono agli esperti in materia di etichettare, addestrare e distribuire modelli di visione di deep learning - senza codifica o competenze di deep learning. I modelli di visione possono essere distribuiti nei data center locali, nel cloud e in dispositivi edge.
Mentre sta diventando sempre più facile ottenere risorse per sviluppare applicazioni di computer vision, una domanda importante a cui rispondere fin dall'inizio è: cosa faranno esattamente queste applicazioni? Comprendere e definire dei compiti specifici di computer vision può orientare e avvalorare progetti e applicazioni e rendere più facile il loro inizio.
Ecco alcuni esempi di attività di computer vision definite:
Libera velocemente tutto il potenziale di una visione computerizzata per l'automazione dell'ispezione, senza competenze di deep learning.
IBM Research è uno dei più grandi laboratori di ricerca del mondo. Scopri di più sulla ricerca che viene fatta in tutti i settori.
Scopri di più su come iniziare con il riconoscimento visivo e su IBM Maximo Visual Inspection. Esplora le risorse e i corsi per gli sviluppatori.
1. https://www.forbes.com/sites/bernardmarr/2019/04/08/7-amazing-examples-of-computer-and-machine-vision-in-practice/#3dbb3f751018 (Link esterno a ibm.com)
2. https://hackernoon.com/a-brief-history-of-computer-vision-and-convolutional-neural-networks-8fe8aacc79f3 (Link esterno a ibm.com)
3. Optical character recognition, Wikipedia (Link esterno a ibm.com)
4. Intelligent character recognition, Wikipedia (Link esterno a ibm.com)
5. A Brief History of Computer Vision (and Convolutional Neural Networks), Rostyslav Demush, Hacker Noon, 27 febbraio, 2019 (Link esterno a ibm.com)
6. 7 Amazing Examples of Computer And Machine Vision In Practice, Bernard Marr, Forbes, 8 aprile, 2019 (Link esterno a ibm.com)
7. The 5 Computer Vision Techniques That Will Change How You See The World, James Le, Heartbeat, 12 aprile 2018 (Link esterno a ibm.com)