Machine learning-ready SoCs from the edge to the cloud

March 13, 2017 // By Julien Happich
With its reVISION stack, Xilinx wants to make it easy for engineers to embrace machine learning into a wide range of vision and sensor fusion applications, doing about 80% of the work for them within a new SoC configuration environment.

Xilinx aims to break all barriers to adoption for its low to mid-range SoCs and MPSoCs. The company illustrated its strategy about two years ago with the launch of the SDSoC development environment based on C, C++ and OpenCL, a huge improvement but maybe not enough to address the needs of software and systems engineers with little or no hardware design expertise.

Now, the software defined development flow allows software engineers to combine efficient implementations of machine learning and computer vision algorithms into highly responsive systems, starting with a familiar, eclipse-based development environment using C, C++ and/or OpenCL languages and associated compiler technology (the SDSoC development environment) within which they can target reVISION hardware platforms, and draw from a pool of acceleration-ready computer vision libraries, and/or soon the OpenVX framework, to quickly build an application.

The reVISION stack includes a broad range of development resources for platform, algorithm and application development, including support for the most popular neural networks such as AlexNet, GoogLeNet, SqueezeNet, SSD, and FCN. Additionally, the stack provides library elements including pre-defined and optimized implementations for CNN network layers, required to build custom neural networks (DNN/CNN). This is complemented by a broad set of acceleration-ready OpenCV functions for computer vision processing. For application level development, Xilinx supports popular frameworks including Caffe for machine learning and OpenVX for computer vision (to be released later in 2017). The reVISION stack also includes development platforms from Xilinx and 3rd parties based on Zynq SoCs and MPSoCs.

For computer vision and other proprietary algorithms, users can profile their software code to identify bottlenecks and label specific functions in the code they want to speed-up and ‘hardware optimize’. A ‘system optimizing compiler’ is then used to create an accelerated implementation, including the processor/accelerator interface (data movers) and software drivers. When combining computer vision and machine learning, this compiler will create an optimized fused implementation.