上云无忧 > 文档中心 > 百度智能云飞桨EasyDL零门槛AI开发平台 - 图像专项适配EdgeBoard(FZ)-SDK集成快速开始
飞桨EasyDL零门槛AI开发平台
百度智能云飞桨EasyDL零门槛AI开发平台 - 图像专项适配EdgeBoard(FZ)-SDK集成快速开始

文档简介:
本文将为新手提供一个快速测试和集成EasyDL & EasyEdge的 Linux EdgeBoard-FZ SDK的图文教程。 测试前的准备: EdgeBoard(FZ)硬件及开发环境 详情参考下方文档: EasyDL平台的EdgeBoard(FZ)专用SDK 以图像分类为例,前往操作台训练「专项硬件适配SDK-EdgeBoard(FZ)」下的模型并发布SDK后,即可从平台下载
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

简介

本文将为新手提供一个快速测试和集成EasyDL & EasyEdge的 Linux EdgeBoard-FZ SDK的图文教程。

测试前的准备

  • EdgeBoard(FZ)硬件及开发环境

    • 详情参考下方文档
  • EasyDL平台的EdgeBoard(FZ)专用SDK

    • 以图像分类为例,前往操作台训练「专项硬件适配SDK-EdgeBoard(FZ)」下的模型并发布SDK后,即可从平台下载
  • 用于激活专用SDK的序列号

    • 前往控制台申请用于激活EdgeBoard(FZ)专用SDK的序列号
    • 首次使用SDK或者更换序列号、更换设备时,需要联网激活。激活成功之后,有效期内可离线使用

效果展示

 

环境准备

硬件环境

EdgeBoard-FZ系列计算盒,包括ZU3/ZU5/ZU9。

EdgeBoard-FZ系列硬件购买和详细硬件参数请前往AI市场。

使用SDK时,请保持EdgeBoard-FZ内核为最新,否则运行可能出现错误。

EdgeBoard-FZ计算盒使用手册:https://ai.baidu.com/ai-doc/HWCE/Yk3b86gvp

EdgeBoard-FZ内核更新地址:https://ai.baidu.com/ai-doc/HWCE/Yk3b95s8o

网络环境

用户安装软件和测试SDK都需要联网,用户使用的EdgeBoard-FZ需确保有效的网络连接。

软件环境

需要在EdgeBoard-FZ计算盒上安装以下软件和第三方库以保证SDK正常编译和运行:

  • cmake 3 +
  • gcc 5.4 +
  • opencv3.4 (可选)

可以使用以下方法确认cmake是否满足要求:

$ cmake --version
cmake version 3.13.3

若系统提示找不到cmake命令或者cmake version 低于3.x.x,则需要安装/升级cmake。

// apt安装cmake sudo apt update sudo apt install cmake

ubuntu官方的apt源update较慢,且可能访问不了,可以替换为国内的源:https://www.cnblogs.com/yongy1030/p/10315569.html

也可以使用源码编译的方式安装,参考安装方法。

// 升级cmake sudo apt-get install software-properties-common sudo add-apt-repository 
ppa:george-edison55/cmake-3.x sudo apt-get update sudo apt-get upgrade

安装/升级cmake后可再次执行cmake --version确认版本。


可以使用以下方法确认gcc是否满足要求:

$ gcc --version
gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

若系统提示找不到gcc命令或者gcc version 低于5.4.0,则需要安装/升级gcc。

// 安装gcc sudo apt update sudo apt install build-essential
// 升级gcc sudo add-apt-repository ppa:ubuntu-toolchain-r/test # 如果找不到add-apt-repository命令,
执行:apt-get install software-properties-common sudo apt-get update sudo apt-get install 
-y gcc-5 g++-5 cd /usr/bin # 升级gcc 5之后,还需要替换原来的软链接 sudo rm -r gcc 
# 移除之前的软连接  sudo ln -sf gcc-5 gcc # 建立gcc5的软连接  sudo rm -r g++ # 同gcc  sudo ln -sf g++-5 g++

安装/升级gcc后可再次执行gcc --version确认版本。


目前没有合适的方法确认系统中是否有SDK需要的OpenCV,若用户不确定是否安装OpenCV 3.4 +,并且可以被cmake find_package到,可以手动编译安装OpenCV 3.4,也可以在之后编译SDK时自动编译OpenCV。

若选择在下一步编译EasyEdge SDK时自动编译OpenCV,则以下编译安装OpenCV的步骤可跳过。

下载OpenCV 3.4源代码包并解压:下载地址,然后编译安装:

// 编译安装OpenCV cd opencv-3.4.6 mkdir build cd build

cmake .. -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_opencv_python2=OFF
 -DBUILD_opencv_python3=OFF -DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_PACKAGE=OFF -DBUILD_opencv_core=ON 
-DBUILD_opencv_imgproc=ON -DBUILD_opencv_imgcodecs=ON -DBUILD_opencv_highgui=ON -DBUILD_
opencv_video=OFF -DBUILD_opencv_videoio=OFF -DBUILD_opencv_dnn=OFF -DBUILD_opencv_apps=OFF
 -DBUILD_opencv_flann=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ml=OFF -DBUILD_opencv_
legacy=OFF -DBUILD_opencv_calib3d=OFF -DBUILD_opencv_features2d=OFF -DBUILD_opencv_java=OFF
 -DBUILD_opencv_objdetect=OFF -DBUILD_opencv_photo=OFF -DBUILD_opencv_nonfree=OFF -DBUILD
_opencv_ocl=OFF -DBUILD_opencv_stitching=OFF -DBUILD_opencv_superres=OFF -DBUILD_opencv_
ts=OFF -DBUILD_opencv_videostab=OFF -DBUILD_opencv_contrib=OFF -DBUILD_SHARED_LIBS=ON 
-DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_WITH_CAROTENE=OFF -DCMAKE_BUILD_TYPE:STRING=Release
 -DWITH_FFMPEG=OFF -DWITH_IPP=OFF -DBUILD_PNG=ON -DBUILD_JPEG=ON -DBUILD_ZLIB=ON -DBUILD
_FAT_JAVA_LIB=OFF -DOPENCV_CXX11=OFF -DCMAKE_INSTALL_PREFIX:PATH=/usr/lib/aarch64-linux-gnu/
 make # 如果有多个cpu可以用-j加快编译速度,如4个CPU用 make -j4 make install

启动EdgeBoard-FZ计算盒

一、将计算盒连接电源

指示灯亮起,等待约1分钟。

二、连接计算盒

参考EdgeBoard-FZ使用手册配置网口或串口连接,登录EdgeBoard-FZ计算盒。

三、加载驱动

开机加载一次即可。

insmod /home/root/workspace/driver/{zu9|zu5|zu3}/fpgadrv.ko

根据计算盒的版本(zu9/zu5/zu3)选择驱动。若未加载驱动,SDK可能报错:

Failed to to fpga device: -1

四、设置系统时间

系统时间必须正确。

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

测试demo

SDK介绍

用户下载的Linux EdgeBoard-FZ SDK zip包中包含SDK动态库、模型等资源文件和测试demo.cpp。

需要将SDK zip包完整的放入EdgeBoard-FZ 硬件上再进行解压,否则可能会报错:

libeasyedge.so: file format not recognized; treating as linker script

Linux下解压命令:tar -xvf xxx.tar、unzip xxx.zip

SDK zip包的目录结构如下:

EasyEdge-Linux-mxxx-bxxx-edgeboard
├── cpp
│   ├── baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_gcc5.4_vx.x.x_xxxxxxx.tar
├── RES # 模型、标签和配置文件

解压baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_gcc5.4_vx.x.x_xxxxxxx.tar之后的目录结构如下:

baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_gcc5.4_vx.x.x_xxxxxxx
├── demo # 测试demo
│   ├── CMakeLists.txt
│   ├── demo.cpp
│   ├── opencv.cmake
│   └── easyedge_serving
├── include # SDK需要的头文件
│   ├── easyedge
│   │   └── easyedge.h
├── lib # SDK需要的库文件
│   ├── libeasyedge.so -> libeasyedge.so.x.x.x
│   ├── libeasyedge.so.x.x.x
│   ├── libeasyedge_static.a
│   ├── libpaddle-mobile.so -> libpaddle-mobile.so.x.x.x
│   ├── libpaddle-mobile.so.x.x.x
│   └── libverify.so
└── ReadMe.txt # 文档等其他说明

编译demo

前面安装了cmake、gcc等工具之后,可以编译SDK demo,生成测试的可执行文件。步骤如下。

一、将获取的序列号填入demo.cpp

cd demo # 进入demo文件夹 vi demo.cpp # 若vi未找到命令,执行  sudo apt install vim

在打开的代码编辑页面,找到

global_controller()->set_licence_key("set your license here");

将序列号填入引号内。如果想打印demo运行过程中的日志,找到

log_config.enable_debug = false;

将false改为true即可。

二、编译 在demo目录下执行

mkdir build # 创建build目录 cd build 
cmake .. # 如果系统中安装了opencv3.4以上 # 或者 cmake .. -DEDGE_BUILD_OPENCV=ON # 自动编译安装opencv

若用户需要自定义opencv library path、gcc路径等,修改CMakeList.txt即可。

当出现:

-- Configuring done -- Generating done -- Build files have been written to: /xxx/demo/build

表示cmake成功。然后执行编译

make # 如果有多个cpu可以用-j加快编译速度,如4个CPU用 make -j4

当出现:

[100%] Built target easyedge_serving [100%] Built target easyedge_demo

表示编译成功,在build目录下出现编译的产物:

  • easyedge_demo :测试的可执行文件
  • easyedge_serving:包含http server的测试的可执行文件
  • thirdparty :编译安装的opencv

测试easyedge_demo

在build目录下执行:

./easyedge_demo {模型RES文件夹}  {测试图片路径}

第一个参数为包含模型的文件夹路径,第二个参数为测试的图片的路径。SDK中已经包含模型文件夹,如果用户有其他模型文件,可以指定为其路径。如:

./easyedge_demo ../../../RES  /xxx/test.jpg

然后可以看到输出的结果:  如果是物体检测或者图像分割模型,可以打开生成的/xxx/test.result.cpp.jpg图片,查看检测框的效果。

如果用户使用的是ZU5,且执行过程中出现内存不足:Killed。这是因为FZ5A带vcu,给它预留的内存过大导致,如果用不到VCU可以把这部分改小。修改/run/media/mmcblk1p1/uEnv.txt:

ethaddr=00:0a:35:00:00:09
uenvcmd=fatload mmc 1 0x3000000 image.ub && bootm 0x3000000

bootargs=earlycon console=ttyPS0,115200 clk_ignore_unused cpuidle.off=1 root=/dev/mmcblk1p2 rw rootwait cma=128M

注意中间空行要保留。

如果预测结果明显错误或者执行过程报错,请检查内核是否为最新版本。

测试easyedge_serving

easyedge_serving会开启一个http server服务,并实现了一个简单的网页,用户可以在网页上上传图片并查看预测结果。

在build目录下执行:

./easyedge_serving {模型RES文件夹} {序列号} {主机ip, 默认 0.0.0.0} {端口, 默认 24401}

如:

./easyedge_serving ../../../RES "1111-1111-1111-1111" 0.0.0.0  24401

若日志显示:

HTTP is now serving at 0.0.0.0:24401

表示http server启动成功。此时可以打开浏览器,输入网址http://{设备ip}:24401,上传图片来进行测试。

查看设备ip的方法:

ifconfig # 如果没有ifconfig命令,执行 sudo apt install net-tools

找到eth0一栏。

注意:只有本机电脑和硬件设备的网络ip在同一网段之下,才可以通过网址访问。

效果如下: 

集成SDK

SDK提供了一系列模型加载、预测等接口,用户可以方便的集成进自己的程序之中。

接口说明、数据格式说明以及常见错误请参考SDK技术文档。

建议先测试Demo,以及参考demo.cpp和demo的CMakeLists.txt调用流程。如果遇到错误,优先参考文件中的注释以及日志说明。

一、导入SDK头文件和库文件

在baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_gcc5.4_vx.x.x_xxxxxxx/include下有SDK的头文件。 在baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_gcc5.4_vx.x.x_xxxxxxx/lib下有SDK的库文件,包含动态库libeasyedge.so和静态库libeasyedge_static.a。用户可选择合适的导入方式。

用户将头文件和库文件拷贝至自己的项目中,并在自己的CMakeLists.txt中引用:

find_package(OpenCV REQUIRED) // 导入头文件 include_directories( ${OpenCV_INCLUDE_DIRS}
 ${CMAKE_SOURCE_DIR}/../include/ ) // 导入库文件 link_directories( ${CMAKE_SOURCE_DIR}/../lib/ ) 
// 链接库文件 target_link_libraries({your_executable_file} ${OpenCV_LIBS} easyedge paddle-mobile)

二、在程序中调用SDK接口

// 引入SDK头文件 #include "easyedge/easyedge.h"  // step 0: 设置序列号 global_controller(
)->set_licence_key("set your license here"); // step 1: 配置模型资源目录 PaddleFluidConfig
 config; config.model_dir = {模型文件目录}; // step 2: 创建并初始化Predictor auto predictor
 = global_controller()->CreateEdgePredictor(config); auto img = cv::imread({测试图片路径});
 // step 3: 预测图像 std::vector<EdgeResultData> result; predictor->infer(img, result);

目前EdgeBoard暂不支持并行多模型计算。

相似文档
  • Jetson SDK是适用于EasyDL图像模型快速部署的工具包。SDK中包含了EasyDL训练的模型资源文件、SDK和demo文件。 测试前的准备: Jetson(Nano/TX2/Xavier)硬件及开发环境 详情参考下方文档: EasyDL平台的Jetson专用SDK 以图像分类为例,前往操作台训练「专项硬件适配SDK-Jetson」下的模型并发布SDK后,即可从平台下载
  • 本文档介绍EasyDL图像各项服务的价格. EasyDL图像提供付费算力,付费算力可用于模型训练以及批量预测功能,可根据实际需求购买算力使用时长. EasyDL图像在模型部署方面支持公有云API部署、私有服务器部署、设备端离线SDK部署、软硬一体方案四种方式,可根据业务场景需求选择具体部署方式,不同部署方式的计费说明如下:
  • EasyDL图像支持本地服务器部署的任务类型包括:图像分类、物体检测、图像分割,只需在发布模型时提交本地服务器部署申请,通过审核后即可获得一个月免费试用。 如免费试用期结束后希望购买可在控制台在线按设备使用年限购买授权。
  • 算力资源价格说明 EasyDL提供了丰富的模型训练算法,同时在训练任务和批量预测任务上也提供多种机型自由选择,包括免费和按使用时长付费的两种训练方式。 说明:免费训练的同时训练任务上限为1,付费训练的同时训练任务上限为5,即您最多可同时训练6个模型。
  • 目前EasyDL图像提供基于图像分类、物体检测任务的多种软硬一体方案,请前往专题页面对比不同方案的性能与价格,选择与业务场景最匹配的方案。 方案获取流程: Step 1:在EasyDL训练专项适配硬件的图像分类/物体检测模型,迭代模型至效果满足业务需求。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部