Monitorare le masse con un Fpga

cover

La sorveglianza e il monitoraggio delle folle sono diventati un’area applicativa di grande importanza negli ultimi tempi. I governi e i dipartimenti di sicurezza hanno iniziato a considerare approcci più evoluti per monitorare in modo intelligente le folle nei luoghi pubblici e per rilevare attività insolite prima che sia troppo tardi per agire. Occorre ancora tuttavia superare alcune barriere prima di raggiungere tale obiettivo in modo efficace. Ad esempio, se si desidera monitorare tutte le possibili attività delle folle contemporaneamente in un’intera città, 24 ore su 24, non è di sicuro possibile farlo attraverso il semplice monitoraggio manuale, specialmente quando vi sono migliaia di videocamere Cctv installate. Una possibile soluzione consiste nello sviluppare nuove videocamere intelligenti o dei sistemi di visione che possano monitorare in modo automatico le attività delle folle attraverso tecniche avanzate di analisi del video, riportando immediatamente qualsiasi evento insolito ad una stazione di controllo centrale. Ciò richiederebbe non solo la presenza dei tradizionali sensori di immagine e componenti ottici, ma anche di un processore video ad alte prestazioni che effettui l’analisi del video e soddisfi i requisiti stringenti di elaborazione avanzata dei segnali video. Gli Fpga si prestano idealmente per applicazioni di questo tipo, che richiedono prestazioni computazionali molto spinte. Grazie alla metodologia di progetto UltraFast, resa possibile dalla sintesi ad alto livello all’interno della suite di progettazione Vivado di Xilinx, è ora possibile creare con grande semplicità un progetto su Fpga con prestazioni ottimali. Inoltre, la fusione di un processore embedded come MicroBlaze di Xilinx all’interno della logica riconfigurabile di un Fpga, fa sì che le applicazioni, caratterizzate da un flusso di controllo molto complesso, possano ora essere trasportate facilmente su Fpga. Partendo da queste considerazioni, abbiamo progettato un prototipo di un sistema di classificazione del movimento e di monitoraggio delle folle usando gli ambienti Vivado Hls, l’Embedded Development Kit di Xilinx e i tool software di tipo Eda della suite di progettazione Ise. La nostra metodologia di progetto è basata su un’architettura controllata dal software e accelerata dall’hardware. Il nostro progetto è stato realizzato su un Fpga Spartan-6 LX45 di Xilinx a basso costo. Il sistema complessivo, che abbiamo completato in tempi molto brevi, ha riportato risultati molto promettenti in termini di prestazioni in tempo reale, di ottimizzazione dei costi e di flessibilità.


L’ideazione dell’algoritmo
Abbiamo strutturato il progetto del sistema complessivo in due fasi. Durante la prima fase abbiamo sviluppato un algoritmo di classificazione del movimento delle folle. Il passo successivo è stato la sua realizzazione su un Fpga. In questa fase, abbiamo posto particolare attenzione agli aspetti di progetto architetturale relativi all’elaborazione dei segnali video in tempo reale. Ciò ha richiesto anche la messa a punto di un acceleratore hardware e la sua integrazione all’interno del sistema. Sono stati proposti in letteratura diversi algoritmi relativi alla sorveglianza e al monitoraggio delle folle. Gran parte di essi partono dall’individuazione (o dalla collocazione) di punti di interesse all’interno delle scene che raffigurano folle umane, e con la loro tracciatura nel tempo per raccogliere i dati statistici sui movimenti. I dati statistici così generati sono quindi proiettati su opportuni modelli di movimento precalcolati per poter prevedere attività insolite. Una variante a questo approccio include il raggruppamento di più punti di interesse, anziché trattare i singoli punti separatamente. Il nostro algoritmo di classificazione dei movimenti delle masse è basato sullo stesso concetto, ad eccezione del fatto che noi abbiamo preferito usare uno schema di corrispondenza, anziché un modello predefinito come previsto ad esempio dallo schema Kanade-Lucas-Tomasi, per effettuare la stima dei movimenti. Il nostro schema ha fornito risultati nettamente migliori per quanto riguarda la stima dei movimenti in presenza di contrasto ridotto o variabile, al prezzo di un numero limitato di operazioni aggiuntive. A tale scopo, abbiamo suddiviso le trame video in una matrice di piccoli frammenti rettangolari di video, e abbiamo effettuato l’analisi dei movimenti sulle immagini attuali e su quelle precedenti usando un metodo basato sulla somma delle differenze assolute pesate (SWAD). Ciascun frammento è stato a sua volta associato a un vettore di movimento che rappresenta l’intensità e la direzione del movimento fra due trame in relazione ad una determinata posizione. Tutto ciò ha comportato l’elaborazione di oltre 900 vettori di movimento. Abbiamo utilizzato anche un kernel Gaussiano pesato per massimizzare la robustezza dell’algoritmo anche in caso di occlusioni o di aree prive di contrasto all’interno dell’immagine. L’elaborazione di un frammento video per il calcolo di un vettore di movimento è indipendente dall’elaborazione degli altri frammenti di immagine, il che rende questo approccio ideale per il calcolo parallelo su Fpga. Dopo aver calcolato i vettori di movimento all’interno dell’intera immagine, l’algoritmo ne determina le proprietà statistiche. Queste ultime includono la lunghezza media dei vettori di movimento, il numero dei vettori, la loro deviazione standard e il loro coefficiente di variazione. Il modello di movimento così precalcolato è stato realizzato sotto forma di albero decisionale pesato, ed è stato sviluppato usando Microsoft Visual C++ all’interno della libreria OpenCV.
L’algoritmo è stato successivamente realizzato su Fpga. Dapprima abbiamo elaborato una sequenza video generica in tempo reale all’interno dell’Fpga, per valutare le risorse necessarie in termini di I/O video e di memoria di trama. In seguito abbiamo sviluppato l’acceleratore hardware ottimizzato per l’algoritmo prescelto. Infine, abbiamo integrato i vari blocchi funzionali del progetto e abbiamo messo a punto su Fpga gli algoritmi di controllo e di analisi del flusso dei dati.

I risultati
L’utilizzo del processore MicroBlaze con funzione di processore host per interconnettere i vari blocchi funzionali del sistema ci ha garantito una serie di importanti vantaggi. Ad esempio, possiamo interfacciare facilmente MicroBlaze con un’ampia gamma di memorie esterne (Sram, Sdram, ecc.), allo scopo di caricare o di archiviare i dati relativi alle trame video. Analogamente, possiamo usare dei controllori Dma per trasportare i dati video fra le porte video e la memoria principale del sistema. MicroBlaze ci ha anche permesso di interfacciare in modo ottimale l’acceleratore hardware, che abbiamo progettato, verificato e successivamente sintetizzato in Rtl, usando Vivado Hls di Xilinx in linguaggio C/C++. Per parallelizzare il calcolo dei vettori di movimento e per massimizzare le prestazioni di lettura dei dati nella memoria principale, abbiamo fatto uso di otto blocchi di memoria Ram. L’acceleratore hardware opera a 200 MHz e tutte le operazioni di elaborazione necessarie richiedono appena 10 millisecondi, incluso il trasferimento completo dei dati da e verso la memoria. Il progetto complessivo, integrato attraverso la piattaforma Sdk di Xilinx, ci ha assicurato livelli di flessibilità senza precedenti, usando solo il 30% delle Lut, il 60% delle risorse Dram e il 12% delle risorse DSP48E disponibili sull’Fpga Spartan-6-LX45. Il sistema così realizzato consiste in una scheda Atlys di Digilent, basata su Fpga Spartan 6, e in una scheda dedicata di interfacciamento video che fornisce i segnali video in ingresso e in uscita attraverso un Adc e un Dac video.

Un potenziale enorme per il futuro
Gli Fpga costituiscono la piattaforma ideale per applicazioni con requisiti particolarmente severi in termini di prestazioni, come l’elaborazione del video in tempo reale. L’impiego di una piattaforma Fpga come Spartan 6 di Xilinx e di tool avanzati come Edk e Vivado Hls ha permesso di raggiungere tutti gli obiettivi di progetto prefissati in modo molto più efficiente e rapido che in passato. Tutto ciò offre un grande potenziale per numerosi sviluppi futuri, fra cui il monitoraggio automatico del traffico o l’osservazione dei pazienti negli ospedali.

Pubblica i tuoi commenti