DRP-AI on your Renesas development board
Your trained ML model in the Edge Impulse Studio can be downloaded as a DRP-AI library. This library is provided to you as a C++ header-only that does not require any dependencies and can be integrated into your project and compiled into your application.
The library contains the model parameters, model weights that run on the
drp-aiand the Edge Impulse SDK that contains the necessary function calls to the inferencing engine.
In order to benefit from the hardware acceleration provided by the RZ/V2L board we need to download the DRP-AI library from the deployment page. This will allow you to run your model efficiently on the RZ/V2L.
In the studio, we define the Impulse as a combination of any preprocessing code necessary to extract features from your raw data along with inference using your trained machine learning model. Similarly, in the
drp-ai, we provide the library with raw data from your sensor, and it will return the output of your model. It performs feature extraction and inference, just as you configured in the Edge Impulse Studio!
Currently, in the following tutorial, we are focusing on vision applications and will try to build an object detection app. We recommend working through the steps in this guide to see how to run the application on a Linux operating system. However, you can build the application using any operating system, but eventually you need to cross-compile the application with the Renesas SDK to make it work on the RZ/V2L.
This guide assumes you have some familiarity with C and the GNU Make build system. We will demonstrate how to run an impulse (e.g. inference) on Linux, macOS, or Windows using a C program and Make. We want to give you a starting point for porting the C++ library to your own build system.
You will need to have the Renesas SDK that is built when creating the Yocto image. This SDK contains the necessary toolchain that can be used to compile the app and make it work on the RZ/V2L.
It would be ideal first to build the Linux Yocto image as described in this tutorial. Supposing that you have built the image inside a docker container. After building the image you can build the SDK using the following command.
bitbake core-image-weston -c populate_sdk
Then you will need to install the SDK, the full instruction can be found in section 6 of the same manual used for building the Yocto image. So the SDK will provide you with the necessary tooling.
You need to download a DRP-AI library from your own project. If you use the public project, you will need to click Clone this project in the upper-right corner to clone the project to your own account.
Head to the Deployment page for your project. Select DRP-AI library. Scroll down, and click Build. Note that you must have a fully trained model in order to download any of the deployment options.
DRP-Ai library option
Your impulse will download as a C++ library in a .zip file.
The easiest way to test the
drp-ailibrary is to use raw features from one of your test set samples. When you run your program, it should print out the class probabilities that match those of the test sample in the Studio.
Create a directory to hold your project (e.g.,
my-project). Unzip the
drp-ailibrary file into the project directory. Your directory structure should look like the following:
Note: You can write in C or C++ for your main application. Because portions of the Impulse library are written in C++, you must use the Renesas SDK C++ compiler for your main application (see this FAQ for more information). A more advanced option would be to use bindings for your language of choice (e.g. calling C++ functions from Python). We will stick to C for this demonstration. We highly recommend keeping your main file as a .cpp or .cc file so that it will compile as C++ code.
At this stage, you can have a look inside the
tflite-model/directory. You will see the
drp-aimodel that is going to be used by the Edge Impulse SDK to run this model on the hardware accelerator. If you do not find the file called
drpai_model.hthen you have probably downloaded the C++ library or your build was not successful and it fell back to the normal library.