Events
Trade Shows
Seminars
Product Updates
 
          Home > News Center > Product Updates
 

FUN AI with Baidu EasyDL on FZ3 Deep Learning Accelerator Card

 
2020-7-24   16:49:25     Click: 3308
 


EasyDL is a customized AI training and service platform launched by Baidu Brain, which supports enterprise users and developers who have customized artificial intelligence (AI) requirements for various industries. It supports one-stop AI development process from data management and data annotation, model training, and model deployment and provides a visual operation interface to help enterprises more quickly and easily build computer vision models with a drag-and-drop interface. Some original pictures, text, audio, and video data can be processed, learnt and deployed by EasyDL and then be published as public cloud API, device-side SDK, and local Integration of software and hardware products.


How to Use EasyDL?

MYIR’s FZ3 Card is a deep learning accelerator card based on Xilinx Zynq UltraScale+ MPSoC. It can provide a visual operation interface with EasyDL. Users can take advantage of the FZ3 Card to have some AI experience for fun. Detailed steps of using EasyDL for data training are as below.



FZ3 Card - Deep Learning Accelerator Card

1. Select training category

Users may choose "image classification" or "object detection" according to the general scene.



2. Create “Image classification” model

Select “Image classification”->” Train now”->” Create model”, fill in the content of the model according to personal needs, and the * sign is must. Select "next" after completion.


3. Training model

Enter “Training model”, select the model category, select “Special hardware adaptation SDK”, must select “EdgeBoard (FZ)”, click “Please choose” to choose training data, after completion, check "add recognition result as other default classification", and select "start training". According to the size of the training data set, the training time will be different. Generally, about 100 pictures can be completed in 10 minutes at most.


4. Generate SDK

1) After the training is completed, apply for the release model in” my model”, select the "EdgeBoard + dedicated SDK" in the

integrated software and hardware solution, submit the application, and wait for review.

2) After the model review is approved, click the "Service Details" button at "My Model" and select the download SDK in the dialog

window that pops up.

3) Get serial number

Click "Manage Serial Number" to skip to Baidu Cloud-->EasyDL customized training platform-->Offline SDK management interface to

view the serial number for activating the SDK.

5. Install the SDK in FZ3

1) The downloaded software deployment package contains SDK and demo which are easy to use. FZ3 can be quickly deployed and run

after a few simple steps. The deployment package file structure is as below.


2) Use serial number license to activate the SDK

Open the file demo.cpp

[Directory: EasyEdge-m1800-

edgeboard/cpp/baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_v0.3.2_gcc6.2_20190518
/demo/demo.cpp]

Write license serial number

3) Put the SDK in the directory /home/root/workspace/ directory (see "file copy" above) for decompression, then start and run according to the following methods.


Run SDK

1. The driver can be loaded once after the system starts-up (Or add the system startup script)

insmod /home/root/workspace/driver/fpgadrv.ko

If the driver is not loaded, the following error may be reported:

Failed to to fpga device: -1

Set system time (System time must be correct)

date --set "2019-5-18 20:48:00"

2. Compile

cd /home/root/workspace/EasyEdge-m1800- edgeboard/cpp/baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_v0.3.2_gcc6.2_20190518/d emo

mkdir build cd build

rm -rf *

cmake ..

make


3. Run sample

// Run the execution file in the build directory

./easyedge_demo {RES Resource folder path} {Test image path }

For example: Put the image which you want to predicte in the SDK. If you put the image into the folder RES, you can see the recognition result

./easyedge_demo /home/root/workspace/EasyEdge-m1800-edgeboard/RES/

/home/root/workspace/EasyEdge-m1800-edgeboard/RES/1.jpg


Call HTTP Service

1. Load the driver once after the system starts-up (Or add system startup script)

insmod /home/root/workspace/driver/fpgadrv.ko

If the driver is not loaded, an error may be reported:


Failed to to fpga device: -1

Set system time (System time must be correct)

date --set "2019-5-18 20:48:00"


2. HTTP service function is included in the deployment package, which can be run directly.

# ./easyedge_serving {RES directory} {serial number} {bounded hostdefault is 0.0.0.0} {bounded portdefault is 24401}

cd ${SDK_ROOT}

export LD_LIBRARY_PATH=./lib

./demo/easyedge_serving /home/root/workspace/EasyEdge-m1800-edgeboard/RES/ "1111-1111-

1111-1111"

The start-up is successful if the log shows as below:


2019-07-18 13:27:05,941 INFO [EasyEdge] [http_server.cpp:136] 547974369280 Serving at

0.0.0.0:24401

Now you can directly input http://{fz3 IP address}:24401 in the browser to test the model effect in H5.



HTTP private service request description

* http request parameters

Get parameter in URL:

parameter

Explanation

Defaults

threshold

Threshold filtering, 0~1

0.1

HTTP post body is the binary content of the image (No Base64, no JSON)

Request example for Python:


import requests

with open('./1.jpg', 'rb') as f: img = f.read()

result = requests.post( 'http://127.0.0.1:24401/',

params={'threshold': 0.1}, data=img).json()


Request example for JAVA


* http data return


Example of return data:

{

"cost_ms": 52,

"error_code": 0, "results": [

{

"confidence": 0.94482421875,

"index": 1, "label": "IronMan",

"x1": 0.059185408055782318,

"x2": 0.18795496225357056,

"y1": 0.14762254059314728,

"y2": 0.52510076761245728

},

{

"confidence": 0.94091796875,

"index": 1, "label": "IronMan",

"x1": 0.79151463508605957,

"x2": 0.92310667037963867,

"y1": 0.045728668570518494,

"y2": 0.42920106649398804

},

}


Errors description

All active errors reported by the SDK are covered in the Edgestatus enumeration. At the same time, the SDK will show a detailed error

log. Developers can open the debug log to check additional instructions:

global_controller()->log_config.enable_debug = true;



Please get more information about the FZ3 Card from MYIR’s website:

http://www.myirtech.com/list.asp?id=630



About MYIR

MYIR Tech Limited is a global provider of ARM hardware and software tools, design solutions for embedded applications. We support our customers in a wide range of services to accelerate your pace from project to market.

We sell products ranging from board level products such as development boards, single board computers and CPU modules to help with your evaluation, prototype, and system integration or creating your own applications. MYIR also provide our customers charging pile billing control units, charging control boards and relative solutions inside of China. Our products are used widely in industrial control, medical devices, consumer electronic, telecommunication systems, Human Machine Interface (HMI) and more other embedded applications. MYIR has an experienced team and provides custom services based on many processors (especially ARM processors) to help customers make your idea a reality.


More information about MYIR can be found at: www.myirtech.com





 
Prev:  Evaluation of MYIR's i.MX 8M Mini based SOM and EVM Next:  Zynq UltraScale+ MPSoC based FZ3 Card for Deep Learning