Caratteristiche e come implementare la Computer vision con il deep learning

Caratteristiche e come implementare la Computer vision con il deep learning

Introduzione

I sistemi di Deep Learning di questi tempi usano una architettura basata sul cloud con server che parallelamente processano le richieste di predizioni dalle applicazioni utente. Questo rende la collezione dei dati centralizzata, sotto il controllo dei service provider. Questo tipo di approccio porta a numerosi problemi riguardanti la privacy e la sicurezza dei dati o cattivi utilizzi. D’altra parte la ricerca e lo sviluppo della computer vision ha sfruttato i vantaggi dell’integrazione del deep learning per acquisire risultati significativi. In accordo con questo, i sistemi di rilevamento di oggetti stanno riscuotendo un grande successo realizzando applicazioni con discrete performance. Nonostante ciò queste applicazioni hanno bisogno di potenza computazionale e un consumo energetico non indifferente. Fortunatamente diverse soluzioni stanno diventando accessibili in termini sia di hardware che di software per rafforzare le applicazioni basate su deep learning in dispositivi poco performanti e a basso consumo.

Intelligenza artificiale, machine learning e deep learning

Con l’intelligenza artificiale intendiamo quelle operazioni caratteristiche dell’intelletto umano eseguite dal computer, dei costrutti matematici creati dall’intelligenza umana per eseguire un particolare task con le performance di un computer. È un conglomerato di molti campi della scienza che includono la filosofia, psicologia, le neuroscienze, l’ingegneria informatica, statistica e altri. Un approccio moderno all’IA è il Machine Learning (ML), dove gli algoritmi sono designati per leggere i dati e di apprenderne i pattern, le relazioni e trasformazioni da soli, modificandosi man mano che ricevono più informazioni su quello che stanno elaborando senza nessuna conoscenza pregressa. Il computer apprende la nuova conoscenza in vari modi: osservando l’ambiente esterno, imparando dai feedback delle sue azioni e suoi errori e da un database detto knowledge base. Per migliorare l’IA c’è bisogno di sistemi complessi, algoritmi avanzati, ottimizzati in modo tale da essere capaci di catturare informazioni nascoste del dato che normalmente non si potrebbero elaborare. Il ML esiste da diversi anni ma solo ultimamente sta diventando di importanza rilevante, questo grazie alle evoluzioni delle nuove tecnologie e dei computer che son sempre più capaci di elaborare più velocemente e sempre più grandi quantità di dati. Perciò, il ML è sempre più studiato, sempre più stanno aumentando le pubblicazioni e studi che immediatamente vengono applicate e adottate in ogni aspetto della vita, in diversi campi, come la finanza, la sanità, la computer vision, riconoscimento vocale. Queste sono due definizioni popolari del ML date da due famose persone di questo campo. La prima è proposta da Arthur Samuel, un ricercatore pioniere dell’intelligenza artificiale che ha descritto il machine learning come “il settore di studi che fornisce al computer l’abilità al computer di apprendere senza essere esplicitamente programmato.“. Tom Mitchell, un informatico, ha fornito una definizione più moderna che è “a computer programme is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance in tasks T, as measured by P, improves with experience E.”.

In generale, ogni problema di ML può essere diviso in due classificazioni: Apprendimento supervisionato e apprendimento non supervisionato. Nel primo il progettista fornisce una serie di esempi alla macchina. Ogni esempio è composto una serie di valori di input ed è accompagnato da un’etichetta in cui il progettista indica il risultato o un giudizio di valore. La macchina elabora i dati e apprende dagli esempi per individuare una funzione predittiva o una regola generale. Nel secondo l’agente non ha esempi di input-output da testare. Non c’è nessuno che decide se un’azione è corretta oppure no, né una misura di riferimento per i feedback dell’ambiente. Può comunque apprendere l’esistenza di un legame tra alcuni fattori di input e output. In poche parole: la macchina impara dai proprio errori e dell’ esperienza. La maggior parte delle applicazioni tecnologiche beneficia dal primo approccio soprattutto i metodi di deep learning.

Esiste una terza classificazione, chiamata apprendimento per rinforzo, nel quale un opportuno algoritmo si prefigge lo scopo di individuare un certo modus operandi, a partire da un processo d’osservazione dell’ambiente esterno. L’agente non ha esempi di input e output né una guida che gli dica il comportamento giusto da eseguire, ma ha una funzione di rinforzo associata a un obiettivo da raggiungere che gli permette di valutare i feedback delle azioni.

Dobbiamo stare attenti a non intendere come stessa cosa deep learning e machine learning, hanno un significato diverso anche se fanno entrambi parte dello studio dell’intelligenza artificiale. Il deep learning è un caso particolare del machine learning che si basa sull’utilizzo delle reti neurali artificiali con due o più strati (hidden layers), per elaborare le informazioni in modo non lineare. In questo modo è possibile evidenziare delle caratteristiche discriminanti anche da dati grezzi, come i pixel, immagini mediche o sequenze biologiche.

In generale gli algoritmi di deep learning sono ottimizzati in modo tale che le loro reti possano imparare (trovare il set migliore di regole) e predire da un insieme strutturato di dati. La rete migliora la sua precisione venendo continuamente allenata con una enorme quantità e diversità di dati. Per questo i sistemi di deep learning hanno bisogno solo di tanti dati ma anche di tantissimo tempo di training e si affidano pesantemente alle risorse computazionali. Per questa ragione, tendono a essere sviluppati in macchine molto potenti o in sistemi basati su cloud per il loro utilizzo. Tuttavia, questi tipi di setup stanno introducendo degli inconvenienti, come la richiesta di una potente connessione a bassa latenza per questo si sta desiderando sempre di più distribuire i sistemi di deep learning nei singoli dispositivi.

Computer vision con il deep learning

Il deep learning ha avuto grandi successi in varie aree della computer vision, come la classificazione delle immagini, rilevamento oggetti, la segmentazione semantica, generazione dell’immagine e stima della posa. In generale, i task di queste aree utilizzano le reti neurali convoluzionali (CNN) oppure le reti neurali ricorrenti (RNN) nel deep learning e vengono addestrate su un grande dataset di immagini a livello di pixel, perciò più è grande la dimensione dell’immagine e migliore sarà l’accuratezza ma sarà più costosa in termini di prestazioni computazionali. Sebbene raggiungano notevoli risultati, molti dei sistemi sono lenti e hanno bisogno della potenza di calcolo di molti hardware in parallelo come le GPU per processare i dati. Come risultato, molti sistemi di computer vision allo stato dell’arte fanno leva sull’hardware e della loro capacità di avere performance in real-time. Allo stesso tempo, molti aziende di hardware conoscono le tendenze del momento e hanno fatto grandi progressi in termini di supporto alla potenza di calcolo per gli hardware specializzati nel deep learning. Un esempio è la Intel, la compagnia ha introdotto la serie Neural Compute Stick (NCS), con la seconda versione uscita a fine 2018, un acceleratore hardware molto efficiente per il deep learning con a bordo la sua Vision Process Unit (VPU), che permette lo sviluppo di applicazioni su svariati hardware, affiancata dal suo potente framework capace di far lavorare insieme anche gli altri dispositivi Intel. Nvidia, oltre che rilasciare GPU sempre più potenti e che incrementano la capacità di elaborazione in parallelo, fornisce il Jetson system-on-module (SOM), computer che racchiudono tante GPU predisposte interamente per le applicazioni grafiche e di computer vision per i sistemi embedded con minori requisiti di alimentazione. Anche Google contribuisce fornendo dei servizi a pagamento per usare la sua infrastruttura cloud, la Tensor Processing Unit (TPU).

Caratteristiche e come implementare la Computer vision con il deep learning

Decentralizzazione del Machine Learning

Convenzionalmente, i sistemi di ML sono posti in sistemi centralizzati basati su cloud dove l’utente finale fa richiesta per delle predizioni al server e aspettano poi di ricevere il risultato. Da una parte questa architettura aiuta a spostare tutte le risorse computazionali verso il server e permette scalabilità per il software a un grande range di dispositivi, dal PC ai sistemi embedded. Tuttavia questo setup è molto dipendente dalla connessione a internet e i vari protocolli di comunicazione penalizzano la latenza. Per esempio, in applicazioni che operano con uno stream video in input, può facilmente sovraccaricare la banda e il canale di comunicazione per il trasferimento dei dati con conseguente perdita di prestazioni. Per risolvere questo problema, si sta cercando di decentralizzare i processi di ML. Di questo cambiamento di paradigma ne beneficiano per esempio i sistemi di guida autonoma, sistemi molto sensibili ai ritardi di risposta, basti pensare che l’azione di frenata deve essere fatta quasi istantaneamente, le decisioni devono essere prese immediatamente. Proprio per questo la decentralizzazione dei sistemi di ML sta guadagnando molte attenzioni e ci sono diverse soluzioni fornite dai leader tecnologici del settore che venendo uniti ai sistemi in tempo reale di computer vision allo stato dell’arte e alla robotica, possono avere come risultato un potente strumento che può dare il via a tante innovazioni tecnologiche.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *