OpenVX is an open, royalty-free standard for cross platform acceleration of computer vision applications. OpenVX 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.
OpenVX 1.2 was released on 1st May 2017
Royalty-free open standard API
Targeted at low-power, real-time applications
Portability across diverse heterogeneous processors
Doesn’t require high-power CPU/GPU Complex
OpenVX developers express a graph of image operations (‘Nodes’)
Graph enables implementations to optimize for power and performance
Minimizes host interaction during frame-rate graph execution
OpenVX 1.1 Specification released 2nd May 2016 at Embedded Vision Summit
OpenVX 1.0 open source sample implementation and conformance tests
Roadmap discussions
| OpenCV | OpenVX | |
|---|---|---|
| Implementation | Community driven open source library | Open standard API designed to be implemented by hardware vendors |
| Conformance | Extensive OpenCV Test Suite but no formal Adopters program |
Implementations must pass defined conformance test suite to use trademark |
| Consistency | Available functions can vary depending on implementation / platform | All core functions must be available in all conformant implementations |
| Scope | Very wide 1000s of imaging and vision functions Multiple camera APIs/interfaces | Tight focus on core hardware accelerated functions for mobile vision – but extensible Uses external/native camera API |
| Efficiency | Memory-based architecture Each operation reads and writes to memory | Graph-based execution Optimizable computation and data transfer |
| Typical Use Case | Rapid experimentation and prototyping - especially on desktop |
Production development & deployment on mobile and embedded devices |
| Embedded Deployment |
Re-usable code | Callable library |
The OpenVX™ working group has release an extension to enable Convolutional Neural Network topologies to be represented as OpenVX graphs and mixed with traditional vision functions.
Neural Network technology has seen recent explosive progress in solving pattern matching tasks in computer vision such as object recognition, face identification, image search, image to text, and is also playing a key part in enabling driver assistance and autonomous driving systems. Convolutional Neural Networks (CNN) are computationally expensive, and so many companies are actively developing mobile and embedded processor architectures to accelerate neural network-based inferencing at high speed and low power. As a result of such rapid progress, the market for embedded neural network processing is in danger of fragmenting, creating barriers for developers seeking to configure and accelerate inferencing engines across multiple platforms.
The OpenVX Neural Network extension specifies an architecture for executing CNN-based inference in OpenVX graphs. The extension defines a multi-dimensional tensor object data structure which can be used to connect neural network layers, represented as OpenVX nodes, to create flexible CNN topologies. OpenVX neural network layers types include convolution, pooling, fully-connected, normalization, soft-max and activation – with nine different activation functions. The extension enables neural network inferencing to be mixed with traditional vision processing operations in the same OpenVX graph.
Today, OpenVX has also released an Import/Export extension that complements the Neural Network extension by defining an API to import and export OpenVX objects, such as: traditional computer vision nodes, data objects of a graph or partial graph, and CNN objects including network weights and biases or complete networks.
The high-level abstraction of OpenVX enables implementers to accelerate a dataflow graph of vision functions across a diverse array of hardware and software acceleration platforms. The inclusion of neural net inferencing functionality in OpenVX enables the same portable, processor independent, expression of functionality with significant freedom and flexibility in how that inferencing is actually accelerated. The OpenVX Neural Net extension is released in provisional form to enable developers and implementers to provide feedback before finalization and industry feedback is welcomed at the OpenVX Forums.
Khronos is coordinating its neural network activities, and expects that NNEF files will be able to represent all aspects of an OpenVX neural network graph, and that OpenVX will enable import of network topologies via NNEF files through the Import/Export extension, once the NEFF format definition is complete.
Convolutional Neural Network topologies can be represented as OpenVX graphs
Import/Export Extension
The specification is provisional
View a complete list of companies and their conformant products.