瑞芯微Rockchip开发者社区
直播中

张明

7年用户 1018经验值
私信 关注
[问答]

如何在RK3399这一 Arm64平台上搭建Tengine AI推理框架呢

Tengine是什么呢?
如何在RK3399这一 Arm64平台上搭建Tengine AI推理框架呢?

回帖(1)

汪潇潇

2022-3-4 14:15:51
Tengine on rk3399

Tengine

Tengine 是 OPEN AI LAB 一款轻量级神经网络推理引擎,它针对 Arm 嵌入式平台进行了专门优化,对 Android、Linux 系统都提供了很好的支持。

而且更加难能可贵的是 Tengine 并不依赖于专用 AI 芯片(即 Tengine 可以利用 GPU、NPU 这些具有专门 AI 加速功能的模块进行 AI 运算,也可以利用通用的 CPU 进行 AI 运算),很多 Arm 平台都可以通过 Tengine 框架对算力进行深度挖掘,从而高效的运行一些 AI 应用。

本文就是想描述如何在 RK3399 这一 Arm64 平台上搭建 Tengine AI 推理框架,并运行图像识别相关应用。

这里用的 RK3399 平台是一块基于 RK3399 的 Leez P710 开发板,我在上面移植了基于 Armbian 的 Debian 10 系统,运行的 u-boot 和 linux kernel 都是mainline的。具体过程可以参考这篇文章:在 RK3399 上部署最新的 Linux 5.4 和 U-Boot v2020 .01 。

编译 Tengine


OPEN AI LAB 在 Github 上提供了开源的 Tengine 版本,并提供了比较详细的参考文档,所以可以直接下载源码,根据文档进行编译。

得益于 RK3399 强大的性能,我们可以直接在 RK3399 上下载代码,进行编译,免去交叉编译的诸多不便。、



  • 下载源码
    git clone --recurse-submodules

  • 注意 clone 的时候一定要带 --recurse-submodules 这个参数,否则会下载不完整。
  • 安装依赖
    apt install libprotobuf-dev protobuf-compiler libopencv-dev pkg-config
  • 修改配置文件
    在源码的 default_config 目录下提供了基于 arm32、arm64、x86 这三个平台的配置文件。
    RK3399 是 Arm64, 所以对应的配置文件为:arm64_linux_native.config。
    这里要做的修改是,在配置文件中打开 BUILD_SERIALIZER=y 这个选项,否则后面运行的时候可能会遇到Shared library not found: libcaffe-serializer.so: cannot open shared object file: No such file or directory 这个错误。





  • 编译
    在源码根目录执行如下命令进行编译:./linux_build.sh default_config/arm64_linux_native.config





  • 下载 model 文件
    运行这些 AI 应用的时候,需要加载对应的 model 文件,
    下载完后需要把这些 model 文件放在 Tengine 源码根目录下的 models 文件夹,所有的 model 文件加在一起比较大,我只上传了后面测试需要用到的部分:
  



  • 运行 benchmark
    编译完成后默认会在 build/benchmark/bin/ 目录下生成两个供测试用的 benchmark 文件,可以直接执行这两个文件,用来简单的测试,确实是否真正编译成功。
    ./build/benchmark/bin/bench_sqz
    ./build/benchmark/bin/bench_mobilenet



编译并运行测试 Demo

Tengine 开放的源码里面还带了几个不错的 图像识别相关的测试 Demo,用来测试和进行 AI 相关的基础学习都很不错。

这些 Demo 的源码在 examples 目录下,在编译之前我们需要修改一个编译脚本 linux_build.sh, 即根据实际情况,正确设置 Tengine 的所在路径,比如我下载编译的 Tengine 代码在 /root/rockdev/tengine 目录下:



然后在 examples 目录下执行如下命令:

mkdir build
cd build/
../linux_build.sh
make



编译完成,主要有 faster_rcnn 、lighten_cnn、 mobilenet_ssd、 mtcnn 、ssd、 yolov2、 YuFaceDetectNet 这几个测试 Demo。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分