OpenVX is an open, royalty-free standard API for cross-platform acceleration of computer vision applications. By being ahead of the game, we at Imagination are demonstrating our commitment to ensuring that our hardware is an ideal platform for developers to create and run fully optimised vision algorithms.
Computer vision is the science of bringing ‘visual intelligence’ to computing devices, so that they can appear to see and think like a human would. It is an increasingly important area and has many real-world 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 and robotics.
Vision systems have reached an inflection point in terms of capability. Just as embedded wireless technology was once an exotic and expensive luxury, vision processing used to be found only in expensive customised devices such as surgical robots and manufacturing systems. Nowadays vision systems are becoming commonplace. Most cameras have face detection algorithms so that focus and exposure can be optimised, while the Microsoft Kinect system that enjoyed some success in the gaming market with the Xbox 360 brought image recognition right into people’s lounges.
Since then computer visions systems have continued to make huge leaps and are now enabling ADAS and emerging autonomous driving capabilities in cars on the road today, such as the Mobileye EyeQ vision SoCs found at the heart of 90 per cent of ADAS systems today.
OpenVX emerged from a need to create a standard framework for developing vision applications. Low-level APIs such as OpenCL are challenging to program and maintain but OpenVX provides a standard set of building blocks, which makes it much more efficient for developers to put together their vision applications.
Comparisons are also frequently made with OpenCV, though there are important differences. Unlike OpenCV, which is not standardised and has many differing implementations, OpenVX is standardised and set up to enable production-ready systems. OpenCV allows for algorithm prototyping but is not usually suitable for real-world deployment. OpenCV, is typically inefficient as each function will read and write from memory without optimised data transfers. Additionally, when programming with OpenVX a graph detailing the data and process flow of individual operations (‘nodes’) is built up and is then processed by the OpenVX implementation.
This enables the whole graph to be optimised, permitting individual operations to be coalesced, intermediate data eliminated and any opportunities for parallelism to be exploited in a way that simply is not possible with the discrete, serial expression of the individual function calls required in OpenCV. Thus, with OpenVX, an entire algorithm is adapted to the accelerating hardware, whereas with OpenCV this can only be done at the level of the separate functional units.
The table below from the Khronos website, shows the clear differences and benefits of OpenCV and OpenVX, reinforcing the need for a production quality API for vision applications.
This standardisation provides benefits to everyone across the eco-system. Imagination is able to optimise the design of its GPUs to meet the standard while OEMs are able to develop to the standard. All of this is protected via a conformance test, which gives confidence that content will run on any compatible architecture. With OpenVX developers don’t have to run nodes one-by-one but instead they can run them in parallel, which naturally makes them suited for running efficiently on PowerVR GPUs.
Khronos first announced the OpenVX 1.1 standard back in May and it adds several useful functions to the standard. Highlights include the ability work on median, erode and dilate image filters, which are morphological filters that can be applied to clean up, sharpen and balance out the pixels in captured images making it easier to recognise features inside them and extract the required information for analysis.
Alongside OpenVX 1.1, Khronos has also added a Neural Network Extension to the standard, making OpenVX ideal for executing convolutional neural networks (CNNs) efficiently. CNNs will be critical to autonomous cars as they are a highly efficient way to recognise cars and other objects such as pedestrians, obstructions and road boundaries in real-time. CNNs rely on complex multiply and accumulate functions and these are well suited to the highly-parallel computational capabilities of PowerVR GPUs. The applications of CNNs extend into many other areas – robotics, medical, even retail, and in the real-time processing of non-visual data.
By keeping at the forefront of the latest technologies including OpenVX 1.1, Imagination is ensuring that developers working with its architecture can make the most of the latest developments and produce better products for their customers.
To learn more about using OpenVX 1.1 with PowerVR GPUs, developers can join the popular PowerVR Insider community at http://www.powervrinsider.com/.
This blog features contributions from Chris Longstaff, Senior Director of Product & Technology Marketing, PowerVR, Imagination and Steve Ramm, Senior Director of Platform Services, PowerVR, Imagination.