Computer Vision for Raspberry Pi with the New Khronos OpenVX API
Khronos is a consortium of over 150 leading software and hardware companies who’ve come together to create royalty-free, open industry standards of acceleration for 3D graphics, AR and VR, computer vision, and machine learning. Raspberry Pi already uses other Khronos standards, including the Vulkan graphics acceleration API.
The Khronos Group describes OpenVX as:
“an open, royalty-free standard for cross-platform acceleration of computer vision applications [that] enables performance and power-optimized computer vision processing, especially important in embedded and real-time use cases such as face, body and gesture tracking, smart video surveillance, advanced driver assistance systems (ADAS), object and scene reconstruction, augmented reality, visual inspection, robotics and more.”
What this means for Raspberry Pi developers and makers is enhanced performance for computer vision applications, such as those mentioned above.
Raspberry Pi and OpenVX 1.3
Since the release of OpenVX 1.3 in October, Raspberry Pi has worked with the Khronos Group on an open-source implementation which passes Raspberry Pi’s conformance profiles for Vision, Enhanced Vision, and Neural Nets.
Khronos standards are always freely available for developers to use on their platform when they meet conformance standards on the target system. To facilitate adoption, Khronos has created a set of Adopters Programs, one for each standard (e.g., Vulkan, OpenVX, etc.), established in order to enable companies to test their systems and products for conformance.
With the new API, OpenVX 1.3 now passes those conformance standards for Vision, Enhanced Vision, and Neural Nets on Raspberry Pi. This means Raspberry Pi developers and makers can now use OpenVX 1.3 to optimize their computer vision apps for performance and processing power, which is particularly important for real-time and embedded applications including core computer vision use cases such as body, gesture, and face tracking, smart surveillance, object and scene reconstruction, and advanced driver assistance systems (ADAS), as well as for visual inspection, robotics, augmented reality, and more.
Significantly, this also means developers can make use of this powerful API while knowing that their work will be portable across all conformant hardware.
(Note, however, that thus for only Raspberry Pi versions 3 and 4 have been tested against these conformance standards...if you have an earlier model Pi, while each successive generation of Pi is designed to be backward compatible as much as possible, there is no guarantee that OpenVX 1.3 will work as intended on them. But open-source collaborators are in the process of running tests on RPi 2 to see if it can be added to the list of verified hardware.)
Implementing OpenVX 1.3 on Your Raspberry Pi
To get started, get the OpenVX 1.3 implementation on GitHub and follow the sample build instructions for “Sample 2 - Build OpenVX 1.3 on Raspberry Pi.” Once you’ve followed the instructions and used the sample code there to build and run the conformance, you can also test the installation using open-source sample applications, such as the VX Bubble Pop, VX Canny Edge Detector, and VX Skin Tone Detector.
Hopefully, this new API will help you kick your computer vision projects for Raspberry Pi into overdrive!
And make sure to check back here regularly on the Vilros blog for more news and updates about your Raspberry Pi and Arduino devices!