La visione artificiale in applicazioni mission-critical

Siamo alle soglie di una nuova rivoluzione industriale in cui la visione artificiale rivestirà un ruolo di primissimo piano, grazie anche alla possibilità di integrare algoritmi di tipo deep-learning. Ciò consente di creare ambienti di lavoro in cui persone e apparati operano in sinergia e questi ultimi, visione artificiale compresa, rappresentano un elemento importante degli anelli di retroazione per controlli critici. Algoritmi di questo tipo possono essere eseguiti nella maniera più efficiente possibile su sistemi che adottano un’architettura di tipo eterogeneo. Nelle applicazioni iniziali, i sistemi di visione artificiale prevedevano l’uso di schede frame grabber e processori di segnali digitali. Oggi, grazie alla disponibilità a prezzi ragionevoli di sensori ad alte prestazioni sono ormai numerose le applicazioni il cui il riconoscimento non si riduce a un semplice mezzo per identificare schemi ben noti nell’ambito di un processo di tipo “rileva-confronta-decidi”. I moderni robot sono in grado di comportarsi in maniera molto più evoluta, seguendo uno schema del tipo: “rileva-pianifica-agisci” o Spa (Sense-plan-act). Sotto questo profilo, un sistema di visione è l’occhio ideale per un robot che gli fornisce informazioni circa la sua posizione e l’ambiente circostante. La potenza di elaborazione di processori embedded basati sulla Hsa (Heterogeneous System Architecture) come i SoC serie G di Amd rappresentano il cervello in grado di comprendere e interpretare l’ambiente circostante. Il secondo elemento abilitante è il processore che garantisce le elevate prestazioni richieste a fronte di consumi di potenza moderati. Il componente finale di un robot intelligente e quello che gli consente di agire. Per il funzionamento di un robot sono richieste batterie ad alta densità di potenza e motori a elevata efficienza. Il terzo elemento chiave di un robot sono batterie allo stato dell’arte e motori Brushless Dc. La combinazione di questi tre elementi, o meglio i miglioramenti tecnologici che li hanno caratterizzati, rappresentano la base dell’attuale evoluzione dei robot e e dei sistemi di visione.

Nuovi sistemi di visione intelligenti

Gli occhi umani sono collegati attraverso i nervi alla corteccia visiva nel cervello. Dei cinque sensi, la corteccia visiva occupa la sezione più estesa del cervello. I sistemi di visione artificiale come IVS-70 di Unibap basati su SoC eterogenei che permettono di effettuare un’elaborazione parallela, sono gli elementi chiave della corteccia visiva artificiale dei sistemi di visione. I loro occhi sono formati da lenti e sensori ottici. I loro nervi ottici di collegamento con la corteccia visiva artificiale sono connessioni ad alta velocità tra i sensori e le unità di elaborazione. Tali sistemi non solo garantiscono velocità e risoluzioni in grado di competere con quelle tipiche della visione umana, ma forniscono anche informazioni spaziali accurate circa il posizionamento di punti di riferimento o di oggetti. Per conseguire tale obiettivo la visione stereoscopica rappresenta la scelta più ovvia. Tra le applicazione tipiche di questo tipo di sistemi di visione stereoscopica in ambito industriale si può annoverare ad esempio il prelievo di articoli da contenitori indifferenziati. Montato sul braccio di un robot, un sistema di visione può effettuare un asservimento visivo a una velocità di 50 fps e identificare l’articolo da prelevare nel momento in cui la pinza del robot si avvicina al contenitore. In questo modo risulta superfluo effettuare la scansione - operazione che può richiedere un paio di secondi - e la riprogrammazione del braccio del robot. Le automobili a guida autonoma sono un’altra applicazione, peraltro ovvia, delle tecnologia di visione, così come la vasta gamma di robot utilizzati in ambiente domestico.

La corteccia visiva artificiale

Le prime fasi di manipolazione dell’informazione sono localizzate su ciascun pixel e sono di conseguenza eseguite in un Fpga. Un comune denominatore della visione artificiale è il fatto che le telecamere a colori utilizzano lo spazio Rgb, come accade per l’occhio umano, che percepisce ogni colore come combinazione di questi tre colori primari. Questo metodo, tuttavia, non è adatto per l’elaborazione accurata di un’immagine. Quindi in primo luogo lo spazio Rgb deve essere trasferito nello spazio Hsi (Hue, saturation, intensity) che permette di descrivere un colore attraverso i concetti più familiari di tinta, saturazione e intensità. La fase successiva prevede la rettifica dell’immagine per compensare la distorsione che si verifica nelle lenti. A questo punto si può effettuare l’adattamento stereo tra le due telecamere. Questi fasi sono eseguite all’interno di una Fpga che supporta il processore centrale in architettura x86. Tutte le elaborazione seguenti sono specifiche dell’applicazione e per la loro esecuzione è meglio ricorrere alla piattaforma processore in architettura x86 programmabile flessibile e integrata che è chiamata a svolgere compiti impegnativi per comprendere e interpretare il contenuto di un’immagine. Per comprendere la complessità di questi compiti è utile ricordare che l’interpretazione del contenuto di un’immagine è un’operazione molto complessa per i programmatori software e che fino a non molto tempo fa la corteccia visiva umana si è rivelata superiore rispetto alle tecnologie informatiche allora disponibili. Solamente in tempi recenti i progressi tecnologici hanno contribuito a mutare radicalmente questo scenario. Un esempio molto calzante di miglioramento avvenuto nel campo delle tecnologie informatiche è il computer AlphaGo di Google che è riuscito a battere il migliore giocatore di Go (un gioco strategico da tavolo) al mondo. Questo risultato è stato ottenuto facendo girare algoritmi basati su reti neurali. Le reti neurali non sono un nuovo concetto, ma una delle svariate metodologie utilizzate nell’ambito più vasto dell’intelligenza artificiale. Le reti neurali, considerate molto promettenti negli anni ‘90, lo sono ancora di più oggigiorno in quanto tutte le tecnologie di base possono avere a disposizione potenze di elaborazione decisamente più elevate. I progressi hanno subito una battuta d’arresto a causa della limitate prestazioni. Per essere più precisi, gli ostacoli erano imputabili in parte alla scarsa potenza di elaborazione disponibile e in parte ai problemi che si incontravano con le reti che avevano troppi strati nascosti (le reti neurali sono infatti di solito organizzate a strati). Le metodologie più recenti utilizzano un numero ancora maggiore di strati per la realizzazione delle reti neurali e oggigiorno il termine “deep-learning” sta ad indicare una rete neurale composta da un numero di strati decisamente superiore rispetto a quelli impiegati per implementare le reti neurali delle precedenti generazioni. L’architettura di sistema di tipo eterogenea dei moderno SoC, inoltre, consente un uso efficiente degli algoritmi di “deep learning”. Anche la tecnologia x86 risulta interessante per sistemi di visione artificiale stereoscopici intelligenti grazie alla presenza di istruzioni vettoriali e di streaming ottimizzate sviluppate nell’arco di un lungo periodo di tempo e alla disponibilità di un ecosistema software ampio e maturo, di algoritmi per sistemi di visione e di driver base. Oltre a ciò, nuove iniziative come Svm (Shared virtual memory) e Hsa (Heterogeneous system architecture) rappresentano un importante supporto tecnologico per i sistemi basati sull’architettura x86 in quanto finalizzate a incrementare la velocità di trasferimento dei dati grezzi richiesto dai sistemi di visione artificiale intelligenti.

L’architettura Hsa

Con l’introduzione dei SoC di ultima generazione di Amd è ora disponibile un ecosistema hardware completo che consente di accelerare l’esecuzione di algoritmi di intelligenza artificiale in sensori distribuiti ad alto grado di integrazione. Gli sviluppatori software possono ora sfruttare tutte le potenzialità di un processore grafico. Il processore grafico è in grado di svolgere compiti di elaborazione parallela che richiedono una grande mole di calcoli (compute intensive) in maniera molto più efficiente rispetto a una Cpu, un fattore critico considerando l’aumento dei carichi di elaborazione di natura parallela. La chiave di tutto ciò è la disponibilità dell’architettura Hsa, che è stata promossa principalmente da Amd per le architetture x86 ma ha beneficiato anche del supporto di numerose altre aziende di primo piano. Le microarchitetture che supportano Hsa abbinano le funzionalità specifiche di Cpu, Gpu e di altri elementi di elaborazione in un unico chip denominato Apu (Accelerated Processing Unit). Utilizzando le potenzialità non sfruttate della Gpu, l’architettura Hsa permette non solo di incrementare in maniera sensibile le prestazioni, ma anche fornisce nuovi livelli di prestazioni (e di rapporto tra prestazioni e consumi) che permettono di trasformare profondamente le modalità di interazione con i dispositivi. Grazie all’architettura Hsa anche la programmazione risulta semplificata grazie all’utilizzo di tool basati su standard aperti come Matlab o le librerie OpenCL/OpenCV. Non sono solamente i sistemi di visione gli unici dispositivi in grado di sfruttare le prestazioni di elaborazione garantite dall’architettura Hsa. Tutte le applicazioni di “perceptive computing” ovvero di elaborazione percettiva, ne possono sfruttare i benefici. Ciò consente ai robot di comprendere i comandi che vengono loro impartiti. I SoC della serie G di Amd sono in grado di soddisfare tutte le esigenze fin qui descritte. Essi sfruttano il concetto di Hsa abbinando l’architettura x86 con una Gpu ad alte prestazioni, interfacce PCIe e un gran numero di I/O. Oltre a ciò non va dimenticato che l’adozione dei SoC della serie G di Amd comporta un ulteriore beneficio che molte volte non viene tenuto nella debita considerazione ma che risulta estremamente importante a causa della crescente richiesta di sicurezza in un gran numero di applicazioni: un’elevatissima resistenza alle radiazioni che assicurata la più elevata integrità dei dati possibile. La garanzia dell’integrità dei dati è una delle condizioni preliminari più importanti per soddisfare i requisiti di sicurezza e affidabilità più severi. Ogni singolo calcolo e ciascuna decisione autonoma dipende da ciò. Quindi è cruciale che, per esempio, i dati memorizzati nella Ram siano protetti contro eventuali danneggiamenti e che i calcoli nella Cpu e nella Gpu siano eseguiti come previsto dal codice. Tuttavia è possibile il verificarsi di errori a causa dei cosiddetti eventi singoli. Essi sono provocati dalla radiazione neutronica di fondo che è sempre presente e ha origine nel momento in cui particelle ad alta energia provenienti dal sole e dallo spazio profondo colpiscono l’alta atmosfera della terra e generano un flusso di neutroni secondari isotropo che arriva sulla terra o a livello del mare. La probabilità che si verifichi un evento singolo a livello del mare è compresa tra 10-8 e 10-2 upset per dispositivo x ora (di funzionamento) per i componenti elettronici di uso comune. Ciò significa che entro ogni 100 ore un singolo evento potrebbe causare un comportamento indesiderato e a rischio. In un contesto di questo tipo i SoC della serie G di Amd garantiscono il più elevato livello di resistenza alle radiazioni e quindi di sicurezza. I test eseguiti presso il Goddard Space Flight Center della Nasa hanno messo in luce che i SoC della serie G di Amd possono tollerare una dose totale di radiazioni ionizzanti pari a 17 Mrad(Si). Si tratta di un valore che supera di gran lunga i requisiti previsti in un gran numero di applicazioni: per gli esseri umani una dose pari a 400 rad in una settimana risulta letale, mentre nei normali programmi spaziali i componenti devono essere in grado di resistere a una dose di 300 krad. Anche nella missione spaziale per l’esplorazione di Giove è richiesta una resistenza inferiore, pari a 1 Mrad. Oltre a ciò i dispositivi di Amd prevedono memorie con controllo degli errori avanzato, un’altra caratteristica di fondamentale importanza per correggere gli errori dei dati in memoria provocati da eventi singoli.

Pubblica i tuoi commenti