OpenVX is an open, royalty-free API standard for cross-platform acceleration of computer vision applications developed by The Khronos Group that also manages the popular OpenGL ES, Vulkan, and OpenCL standards.
After OpenGL ES 3.1 conformance for Raspberry Pi 4, and good progress on the Vulkan implementation, the Raspberry Pi Foundation has now announced that both Raspberry Pi 3 and 4 Model B SBC’s had achieved OpenVX 1.3 conformance (somehow dated 2020-07-23).
Raspberry Pi OpenVX open-source sample implementation passes the Vision, Enhanced Vision, & Neural Net conformance profiles specified in OpenVX 1.3 standard. However, it is NOT intended to be a reference implementation, as it is not optimized, production-ready, nor actively maintained by Khronos publically.
The sample can be built on multiple operating systems (Windows, Linux, Android) using either CMake or Concerto. Detailed instructions are provided for Ubuntu 18.04 64-bit x86 and Raspberry Pi SBC.
Here’s the list of commands to retrieve the code, build it, and run it on Raspberry Pi board:
1 2 3 4 5 6 7 8 9 10 |
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 |
But looking at the code and option, it looks OpenVX 1.3 sample implementation relies on NEON instructions instead of the VideoCore IV GPU, so performance may turn out to be underwhelming.
You can try some of the OpenVX samples such as VX Bubble Pop,
VX Canny Edge Detector, or VX Skin Tone Detector to tried it out.
In theory, you should be able to use the OpenVX 1.3 sample implementation for computer vision applications such as face, body, and gesture tracking, smart video surveillance, advanced driver assistance systems (ADAS), object and scene reconstruction, augmented reality, visual inspection, robotics, etc…
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
The Raspberry Pi Foundation and other replied to my question about OpenVX GPU support on Raspberry Pi board. OpenCL is supported but this apparently requires a complete Vulkan driver, so it will take more time.
I have a project that builds the whole stack with optimized hardware tuning. It also pulls in the OpenvVX book tutorials/examples. An easy start for a complicated stack.
https://github.com/jwinarske/rpi-vision
The project appears to be optimizing build times. Not a bad thing, but as I understand it, it does nothing to make OpenVX samples faster, i.e. does not rely on the GPU for acceleration.