TECH INSIGHT
VISIONE ARTIFICIALE
22
- ELETTRONICA OGGI 466 - NOVEMBRE/DICEMBRE 2017
Sviluppo dell’Applicazione
Qui è dove gli ambienti ad alto livello come Caffe ed OpenVX sono usati per completare l’applicazione,
eseguendo funzioni come la presa di decisioni. Le applicazioni a questo livello sono sviluppate usando un
ambiente basato su Eclipse, che gestisce le unità processore all’interno dei dispositivi interamente program-
mabili Zynq-7000 e degli MPSoC interamente programmabili Zynq UltraScale+.
Accelerazione delle funzioni in OpenCV
Il supporto all’accelerazione delle funzioni in ambiente OpanCV a livello di sviluppo dell’algoritmo è uno de-
gli aspetti più potenti dello Stack reVISION. Le funzioni OpenCV accelerate possono essere raggruppate in
una delle seguenti quattro categorie:
• Calcolo: include funzioni come la differenza assoluta fra due fotogrammi, le operazioni a livello di pixel
(addizione, sottrazione e moltiplicazione), le operazioni di gradiente e di integrale.
• Elaborazione degli Ingressi: fornisce supporto per la conversione della profondità dei bit, le operazioni sui
canali, l’equalizzazione dell’istogramma, la rimappatura e il ridimensionamento.
• Filtraggio: assicura il supporto per un’ampia gamma di filtri inclusi quelli di tipo Sobel, di convoluzione
personalizzata e i filtri Gaussiani.
• Altro: fornisce un ampio insieme di funzioni fra cui la rilevazione dei bordi con algoritmo Canny/Fast/Har-
ris, la definizione delle soglie e i classificatori SVM e HoG.
Gli sviluppatori possono usare queste funzioni per creare una sequenza di algoritmi all’interno della logica
programmabile del dispositivo selezionato, e di conseguenza possono aumentare in modo significativo le
prestazioni di esecuzione dell’algoritmo.
Dato che queste librerie OpenCV con funzioni di accelerazione sono definite via software e supportano la
sintesi ad alto livello, esse possono essere usate all’interno del tool Vivado HLS. Ciò consente di creare mo-
duli IP per l’uso all’interno del livello di piattaforma una volta definito l’hardware. Un algoritmo usato comu-
nemente in OpenCV è un algoritmo di sfocatura gaussiana, usato spesso come primo stadio in una catena di
elaborazione delle immagini che riduce il rumore sull’immagine.
Lo stack reVISION contiene una funzione predefinita per la Sfocatura Gaussiana (Fig. 2), e al contempo con-
sente di ottenere una soluzione più reattiva ed energeticamente efficiente quando è accelerato all’interno
della logica programmabile.
All’interno dello Stack reVISION, se gli sviluppatori scelgono di accelerare le funzioni OpenCV, possono otti-
mizzare il progetto in base all’utilizzo di risorse e alle prestazioni all’interno della logica programmabile. Ciò
è ottenuto in genere limitando
il numero di pixel elaborati ad
ogni ciclo di clock. Per gran
parte delle funzioni accelerate,
gli sviluppatori possono sce-
gliere di elaborare un singolo
pixel o otto pixel.
L’elaborazione di un numero
maggiore di pixel per ciclo ri-
duce il tempo di elaborazione
ma aggiungere un ulteriore
onere in termini di risorse. D’al-
tra parte, l’elaborazione di un
singolo pixel per ciclo riduce il
carico, al costo di una latenza
superiore.
Il numero di pixel da elaborare
in un ciclo di clock può essere
configurato attraverso una chiamata a funzione, che fornisce un metodo semplice per ottimizzare il proget-
to. Ottimizzando le prestazioni del progetto attraverso le librerie OpenCV con funzioni di accelerazione, lo
sviluppatore di soluzioni di visione embedded può quindi mettere a punto i livelli superiori dell’applicazione
usando le funzionalità a livello di algoritmo e di applicazione dello stack. I dispositivi System on Chip intera-
mente programmabili possono contribuire ad aumentare la flessibilità, le prestazioni, la sicurezza e l’efficien-
za energetica dei sistemi di visione embedded.
Uno stack ottimizzato come reVISION aiuta gli sviluppatori ad usare gli algoritmi di apprendimento appro-
fondito per creare algoritmi a livello di applicazione come il riconoscimento delle sagome e la classificazione
delle immagini, e accelera le prestazioni a livello di sistema e il time to market.
Fig. 2 – Prestazioni di sfocatura gaussiana ottenute usando OpenCV e con accelerazione attraverso lo
stack ReVISION