Raspberry Pi supporta lo standard OpenVX 1.3

OpenVX è uno standard aperto e libero creato dal gruppo Khronos, un consorzio di cui fanno parte svariati giganti dell’industria informatica e responsabile tra altre cose di OpenCL e Vulkan. Lo scopo di OpenVX è creare uno standard comune per l’accelerazione multipiattaforma del vision processing.

Il vision processing è l’elaborazione di immagini o video catturati da telecamere di sorveglianza, sensori di movimento e altro. Questa tecnica è di cruciale importanza per lo sviluppo di impianti di sicurezza intelligenti, riconoscimento facciale, motion tracking, realtà virtuale e molto altro.

Lo scopo principale di OpeVX è di creare un layer intermedio e cross-platform che sia indipendente dall’hardware di destinazione e che quindi permetta una maggior elasticità (e semplicità) nella scrittura di applicativi che si interfaccino con questi sistemi: in tal senso è complementare al linguaggio OpenCV.

OpenVX potrà ad esempio aiutare a gestire le operazioni di stereo rectification, ovvero il processo di capire quali siano le parti di uno stesso oggetto che corrispondono in un’immagine rilevata da una doppia camera, oppure ancora quelle di computing optical flow, per il riconoscimento del movimento, o le operazioni di rilevamento di bordi e angoli per il riconoscimento di oggetti. Tramite OpenVX gli sviluppatori potranno sfruttare tutte queste operazioni grazie ad un’apposita libreria preconfezionata e testata, impiegando un’interfaccia standard. OpenVX sarà in particolare indirizzato verso i dispositivi mobile, dove il consumo energetico è un aspetto di fondamentale importanza.

Attualmente OpenVX è supportato da alcune tra le maggiori case produttrici di hardware e software, come IntelAMD, Nvidia, Texas Instruments, Vivante e molte altre. Dalla versione 1.3, OpenVX è supportato anche in ambiente Raspberry.

Dopo la compatibilità con OpenGL ES 3.1 e l’implementazioni dei driver Vulkan (leggi qui per approfondire il contenuto) l’azienda produttrice della board Raspberry Pi ha annuncia di aver ottenuto la compatibilità con lo standard OpenVX 1.3.

OpenVX

L’implementazione di tale standard sulla SBC Raspberry ha permesso di superare i profili di conformità Vision, Enhanced Vision e Neural Net. Tuttavia vi è molta strada da fare per raggiungere la completa stabilizzazione delle performance in quanto l’implementazione di OpenVX  è stata eseguita di recente.

Ecco l’elenco dei comandi per recuperare il codice, crearlo ed eseguirlo sulla scheda Raspberry Pi:

git clone --recursive https://github.com/KhronosGroup/OpenVX-sample-impl.git
cd OpenVX-sample-impl/
python Build.py --os=Linux --venum --conf=Debug --conf_vision --enh_vision --conf_nn
export OPENVX_DIR=$(pwd)/install/Linux/x32/Debug
export VX_TEST_DATA_PATH=$(pwd)/cts/test_data/
mkdir build-cts
cd build-cts
cmake -DOPENVX_INCLUDES=$OPENVX_DIR/include -DOPENVX_LIBRARIES=$OPENVX_DIR/bin/libopenvx.so\;$OPENVX_DIR/bin/libvxu.so\;pthread\;dl\;m\;rt -DOPENVX_CONFORMANCE_VISION=ON -DOPENVX_USE_ENHANCED_VISION=ON -DOPENVX_CONFORMANCE_NEURAL_NETWORKS=ON ../cts/
cmake --build .
LD_LIBRARY_PATH=./lib ./bin/vx_test_conformance

Ma guardando il codice sembra che l’implementazione di OpenVX 1.3 si basi sulle istruzioni NEON anziché sulla GPU VideoCore IV, quindi le prestazioni potrebbero rivelarsi deludenti.

Puoi provare alcuni dei campioni OpenVX come VX Bubble Pop, VX Canny Edge Detector o VX Skin Tone Detector per provarlo .

Link utili

Seguici per non perdere le prossime novità!

 

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.