Running Single Shot MultiBox Detector* (SSD) with OpenVX*

NOTE: This tutorial targets Linux* systems only (refer to the Intel® Computer Vision SDK Developer Guide for the list of supported platforms)

OpenVX* Neural Network Extension

OpenVX* is a new standard from Khronos*, offering a set of optimized primitives for low-level image processing and computer vision primitives. The OpenVX specification is applicable across multiple vendors and platforms.

The Khronos OpenVX Neural Network extension specifies an architecture for executing of Convolutional Neural Networks (CNN)-based inference in OpenVX graphs. The extension defines a multi-dimensional tensor object data structure, which can be used to connect network layers represented as OpenVX nodes to create flexible CNN topologies. At the same time, the extension enables neural network inferencing to be mixed with traditional vision processing operations in the same OpenVX graph.

For the details on the extension API, refer to the Khronos* OpenVX™ Neural Network Extension.

Basic Training to Deployment Workflow

Networks training is typically done on high-end data centers, using popular training frameworks like Caffe*, while scoring (or inference) can take place on limited-power, embedded devices. The limitations of these target platforms make the final solution deployment very challenging, both with respect to the data types and API support. Intel® CV SDK includes the Model Optimizer tool, which enables automatic and seamless transition from the training environment (BVLC Caffe* for this release) to the deployment environment.

Further in the document, a Layer is defined as the CNN building block implemented in the training framework (for example, "convolution" in Caffe), while a Kernel is a corresponding implementation in the OpenVX*. If the CNN topology contains only layers that map to the Intel-supported OpenVX kernels, the process of converting from the Caffe to the OpenVX is fully automatic.

Specifically, Model Optimizer converts topologies from the original Caffe proprietary formats to one of Intel OpenVX*. Model Optimizer also generates C++ code, which creates the OpenVX graph for the topology, loads the data and so on. You may find additional details in the CNN AlexNet SDK sample.

NOTE: To work with Caffe, the Model Optimizer tool requires Caffe recompilation with the special interface wrappers. Refer to the Model Optimizer Developer Guide for details.

Object Detection with SSD*

Single Shot MultiBox Detector (SSD*) is fast and accurate object detection with a single network. This tutorial explains how to accelerate the SSD using OpenVX* step by step.

For more complete information about compiler optimizations, see our Optimization Notice.