Table of Contents Table of Contents
Previous Page  22 / 102 Next Page
Information
Show Menu
Previous Page 22 / 102 Next Page
Page Background

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