Home  /  Products  /  CEVA’s Development Environment  /  CEVA Application Developer Kit

Application Developer Kit for CEVA‑MM3000 Imaging & Vision PlatformsPrint this page

Streamlines software development and integration effort required for advanced imaging and vision applications

Imagine software developers could run their entire imaging / vision project on the (more familiar) CPU environment, while the code automatically gets translated and optimized on the (more power-efficient) DSP - With the CEVA Application Developer Kit (ADK) it is now possible!

Even for the DSP-savvy engineers with the deep know-how of algorithm optimizations, the CEVA ADK is a powerful set of tools that would eliminate several concerns and challenges, including memory management and power savings techniques.

In today’s world embedded SW developers for Computer Vision applications have various challenges to tackle –

SW development in a multi-core environment

  • Programmers are used to develop in the CPU environment, however...
  • Access to accelerators such as DSP is not trivial

SW development for low power

  • SW developers are usually unaware of power efficiency and wasteful in memory accesses

Complexity of imaging and vision algorithms

  • Most CV code originates or is similar to OpenCV standard library
  • CPUs overloaded, not adequate for complex CV algos

Android OS task offloading

  • Non-trivial and utilizes lots of effort and expertise

Complexity of system handling: memory, frames, tiles, etc.

 

CEVA ADK block diagramThe CEVA Application Developer Kit is focused on easing these challenges by abstracting the use of computer vision on MM3000 platform directly from an Android application or from the CPU via CEVA’s Android Multimedia Platform (AMF) a simple CV API combined with multiple efficient automated tools that handle the details behind executing the CV functions. Programmers benefit in their application development by utilizing the ADK to substantially simplify the overall software development experience, shorten the design cycle and provide significant performance, memory bandwidth and power consumption savings.

Tools Description SW Developer’s point-of-view
CEVA-CV
  • >750 computer-vision functions
  • OpenCV-based
  • Pre-optimized for MM3101
  • Abstracts DSP ISA
  • Enables development using standard widely-used OpenCV
  • Provides optimized performance
SmartFrame
  • SW handling all data transfer, frames and tiles
  • Manages kernels execution and tunneling
  • Abstracts all system and memory aspects
  • Saves memory bandwidth by linking multiple kernels and avoiding external memory accesses
RTOS
  • Task scheduling on DSP
  • Handles prioritization and task switching
CEVA-Link Driver
  • CPU-DSP communication channels and relevant drivers
  • Abstracts the CPU-DSP interface
  • Automates task offloading from CPU to DSP
CEVA-CV API
  • Brings the CEVA-CV libraries into the developers CPU domain
  • Abstracting CV modules usage
  • Easy access to utilize CV libraries

Android Multimedia Framework (AMF)

  • Reference design of Android integrated to CEVA-CV
  • Eases the integration of CEVA-CV functions with any Android-based application processor
  • Ideal for  offloading CV modules  to DSP directly from Android Applications to accelerate performance and lower power consumption
CEVA ADK Feature List

The CEVA ADK includes the following tools:

CEVA-CV

A standard library of more than 750 programming functions for computer vision processing, based on OpenCV and fully optimized for the CEVA-MM3000 platforms. CEVA-CV enables developers to use pre-optimized standard OpenCV kernels for their target application, resulting in quick time-to-market and optimal performance metrics. For example, CEVA’s Super-Resolution algorithm was ported and fully optimized to CEVA-MM3101 by utilizing the CEVA-CV functions such as FIR, Bicubic, Bilinear, Harris Corner, Correlation and Sobel detection. CEVA’s DVS application leverages a number of these modules as well, including Harris Corner and others.

SmartFrame

A software tool designed to handle all of the system resource requirements, including data transfers, DMA transactions and the execution of kernels, thereby abstracting the system architecture and automating frame handling for the application developer. The SmartFrame tool also supports kernel tunneling, whereby multiple functions can be linked together, minimizing memory bandwidth and overall system power consumption.

Real-Time OS (RTOS), Scheduler

A DSP task management and scheduling software module, handling task prioritization and task switching.

CEVA-Link Driver

A set of communication channels and system drivers for both the CPU and DSP platforms, which completely abstract the CPU-DSP interface for the programmer. Automatic task offloading from the CPU to the DSP occurs through this Link.

CEVA-CV API

Software APIs on the CPU for a wide range of computer vision functions, including the CEVA-CV library, enabling the CPU programmer to easily utilize any module running on the DSP, while completely abstracting it.

Android Multimedia Framework (AMF)

A full reference design integrating CEVA-CV library into Android OS is supplied including a reference development board and example applications and demos running on the board. This enables application processor developers to easily integrate CEVA-CV into their Android framework. The AMF development platform enables application developers to easily offload portions of their algorithms from the CPU to the DSP in order to accelerate performance or lower power consumption, directly from their Android applications. So this is an ideal platform for accelerating existing Android based computer vision and computational photography applications. For more details on AMF see here.

To address specific customer requirements, these tools are delivered in source code format to CEVA licensees, allowing further customization and modifications.

A real-time demo of SmartFrame and CEVA-CV running on the CEVA-MM3101 platform enabling tunneling of kernels is available here

{tabs}

CEVA-CV Computer Vision Library

CEVA-CV is a comprehensive computer vision library optimized for CEVA-MM3101 imaging and vision platform

Based on OpenCV – a dedicated open source computer vision library, The CEVA-CV contains key computer vision kernels and algorithms which are an essential part for developing computational photography, augmented reality, NUI, ADAS and other computer vision application.

The CEVA-CV library includes more than 750 kernels and is fully optimized to run in real-time on the CEVA-MM3101 platform. For each kernel the library includes a C reference as well as a C-optimized version of the kernel in source code format with an example of usage and documentation. Users can also easily add their own kernels using similar methodology and interfaces and then utilize them in the higher level algorithm.

The goal of the CEVA-CV is to enable users with a vast library of algorithms to shorten development time and enable them to easily enjoy the performance boost and low power capabilities of the platform.

CEVA Computer Vision Libraries

Algorithmic Examples

Matrix operation – Matrix Inversion

Face detection & recognition

Feature detection -  Fast9, HOG, SURF

Gesture recognition & palm tracking

Filters – Bilinear, Bicubic

Finger Tracking

 

Object detection -  LBP, HAAR, SVM, ORB

Object detection & tracking

 

Image processing – Histogram, Gamma

Emotion detection

 

Optical flow – KLT, Block Matching

Augmented Reality

 

CEVA-CV

CEVA-CV API – This is a software module within the CEVA ADK which runs on the CPU and connects between Computer Vision algorithms developed on the CPU and the CEVA-CV libraries (running on the CEVA-MM3101). The CEVA-CV API module is basically an API of the CEVA-CV which the CPU software developer can instantiate directly from the CPU. The main idea is abstraction the CV libraries. The developer calls the API function and the rest is done behind the scenes, enabling the developer to easily utilize any module running on the DSP, while completely abstracting it.

CEVA SmartFrame

CEVA SmartFrame tool simplifies software development and system integration

CEVA SmartFrame is a comprehensive run-time automated software module provided by CEVA for CEVA-MM3000 platforms which handles a full video frame in a single system call. SmartFrame takes care of breaking up the frame into tiles, manages memory transfers between various memory hierarchies, and handles DMA operations, memory constraints, frame limitations and execution of the kernels on the processor. The SmartFrame supplies a unified interface for applying computer vision kernels on large images. This abstracts all the system aspects from the developer and hence saves significant development effort.

CEVA SmartFrame also considers:

  • Surrounding pixels required for each kernel
  • External/internal memory allocation
  • Best mode of each kernel
  • Number of in/out buffers

CEVA SmartFrame is also able to tunnel multiple kernels, meaning link them together in order to save significant memory bandwidth and system power.

Developers can utilize the SmartFrame directly from the Host CPU for activating the CEVA-CV libraries or for executing user developed kernels.

Sequence example

Utilizing the SmartFrame tool for tunneling of multiple kernels as shown in the diagram below, will result in 50% memory bandwidth savings (and significant power consumption savings accordingly).

{/tabs}