The Khronos family has a new baby: OpenVX.
Khronos drives the development of open API specifications, and the members of the organization are usually the first adopters of these new standards. The APIs typically center around acceleration of graphics or media processing, where the computationally intensive parts of the application are offloaded to hardware accelerators.
Khronos is probably best known for their work on OpenGL, the leading 3D graphics acceleration API for PCs and mobile (iOS and Android). When you’re playing a 3D game, under the hood it’s probably OpenGL that makes it run smoothly. Khronos’ OpenCL is a more recent standard, and provides a framework for writing programs that distributes the load across multicore CPUs, graphics processing units (GPUs), DSPs and FPGAs. For audio and video coding, there’s OpenMAX. Each time, it’s all about the acceleration of compute intensive tasks.
Enter OpenVX. OpenVX targets computer vision acceleration. Example applications that computer vision enables: the PlayStation 4 Camera that adds the motion sensing capabilities, automotive safety systems, gesture interfaces, or smile detection inside the camera. These applications all use image sensors to capture images, and then process these images using vision algorithms that analyze them. Running these computationally intensive algorithms on a standard CPU quickly results in an overloaded system with a short battery life.
OpenVX introduces a streaming framework that allows you to connect typical computer vision compute kernels together into a graph-based streaming framework that makes up the application. This graph is then accelerated on a multicore, SIMD-enabled host, a GPU, a video/vision processor such as ours, or in hardware. Khronos just now announced the public release of the OpenVX 1.0 provisional specification. Normally it costs $15K/year to become a Khronos member to see a spec that’s in progress, but now the draft spec is publicly available.
How does OpenVX relate to OpenCV, the other computer vision library that’s used a lot in the industry? OpenCV includes 1000s of imaging and vision functions, has seen over 6 million downloads, and is used a lot, both in academia as well as in industry. At the same time, OpenCV is hard to accelerate efficiently without proprietary extensions, mainly due to its frame-based means of operation, where each function typically reads and writes to external memory. OpenCV is also not controlled by a standardization body, which means many different versions of the library are in use, and platform support typically isn’t out-of-the-box, but needs to be handled by the application programmer. OpenVX has a different focus. It’s much smaller than OpenCV, with fewer functions, but is standardized, with conformance tests and a certification process. It also lends itself more easily to efficient implementations due to its graph-based architecture.
As with any new standard, only time will tell whether the standard will become widely adopted in the industry. For now, we’re API agnostic at videantis: our key goal is simply to provide the lowest power, highest performance vision accelerator that’s available for licensing on the market, no matter what the API is. We’re closely involved with the OpenVX effort at Khronos though, and are looking forward to see this new technology rapidly mature to enable broader support, resulting in even cooler vision-based applications for our mobiles, TVs, gaming consoles and cars.