14

HackforFun · 2019年09月10日

EAIDK-310: 双系统启动,从源码搭建 Tengine AI

EAIDK-310: 双系统启动,从源码搭建Tengine AI

Armbian

1、引子

EAIDK-310 是 OPEN AI LAB 基于 RK3228H 构建的 嵌入式人工智能开发套件,关于该开发平台的基础介绍,可以参考我的前一篇文章:EAIDK-310: AI 从这里开始

该平台出厂预装了 Fedora28 操作系统,上面搭载了 OPEN AI LAB 设计的前端 AI 推理计算框架 Tengine。让极客朋友们拿到板子就能进行 AI 应用的开发。不过在交流中我们发现有部分开发者对 Fedora 这个操作系统不太习惯,他们更习惯使用 Ubuntu 或者 Debian。而且很多流行的 AI 框架对 Ubuntu 和 Debian 都提供了直接支持,比如 caffe 和 tensorfow,在 Ubuntu 和 Debian 上只需要一条命令就可以安装,在 Fedora 上要通过源码去编译,而且要解决复杂的依赖关系。

于是我以 Armbian 为基础给这块开发板构建了一个 Ubuntu 18.04,考虑到 Fedora28 毕竟是 OPEN AI LAB 官方预装的操作系统,里面集成的 Tengine 代表这 OPEN AI LAB 的权威技术参考,我也不忍心直接把这个操作系统覆盖掉,万一我的新系统有什么异常的功能,我还想切到官方的系统上,做下对比呢。所以我采用了双系统启动的方式:Ubuntu 18.04 通过烧写工具烧写到 tf 卡上,当烧写有该镜像的 TF 卡插到开发板上,开发板启动的时候会直接启动 TF 卡上的 Ubuntu 18.10,当你拔掉 TF 卡的时候,开发板会默认eMMC 中的 Fedora 启动启动。你看,你可以通过一张 TF 卡体验另外一个新系统,又保留了开发板上预置的管方系统,多好。

2、镜像烧写

镜像可以通过 百度网盘 下载,提取码 9i66,推荐用 Etcher 把镜像s烧写到 TF 卡上:把你的 TF 卡插入读卡器,然后接入电脑,启动 Etcher 软件,选择你刚刚下载的镜像,选中你的 TF 卡,点击 Flash 开始烧写。

write image to tf card

烧写完成后,把 TF 卡插入开发板的 TF 卡插槽,上电。如果一切顺利,这时你可以从 Debug 串口的启动日志中看到开发板已经从 TF 卡上的系统中启动(仔细观察启动 log,你会发现它们和开发板上默认搭载的系统启动 log 有差别),或者接上HDMI 也可以。

默认登录账号和密码分别是 root : 1234, 输入默认密码后,系统会提示你重新设置密码,仔细看提示操作即可。

3、系统设置

3.1、联网

WiFi 网络连接通过 nmtui-connect 命令,如果知道要连接的 AP 名称,直接 nmtui-connect xxx , 然后输入密码即可,这里的 xxx 是你 AP SSID 的名称。 如果不知道具体的 AP 名称,可以只输入 nmtui-connect 命令,然后系统会弹出一个菜单,根据菜单选择即可。

3.2、串口终端设置

大家如果使用一会儿就会发现,在串口下如果敲的命令过长,默认显示不会换行,而是会回绕到行首开始显示,这个看上去很别扭,可以通过输入 resize 命令来设置,系统默认没有这个命令,输入后,系统会提示你安装,按照提示安装即可。

3.3、安装图形库

系统默认不带图形桌面,如果想要图形桌面的朋友,可以通过 百度网盘 下载安装包,提取码为 42tx ,下载好后通过 scp 命令拷贝到 开发板上。然后解压,执行 media-rk3288.sh 脚本安装。

xz -d media-rk3328_1.0.txz
tar jxvf media-rk3328_1.0.tar
cd media-script
./media-rk3328.sh

执行该脚本后,会弹出一个对话框,把你想选择的选项都选上,然后安装。安装完成后,接上键盘、鼠标,在 HDMI 屏幕上执行 startx 命令,你就能看到桌面了。

Armbian Desktop

点击右上角的 Applications 选项,或者直接在桌面上单击鼠标右键,可以看到各种设置和应用。

4、安装 Tengine

官方预置的 Fedora28 系统上默认就带有 Tengine AI 框架,我做的这个 Ubuntu 系统默认并不带这些,好在 OPEN AI LAB 开源了 Tengine,我们可以从源码直接编译安装,而且直接在开发板上编译。

Tengine 的 ACL GPU 加速功能依赖 Arm 的 ComputeLibrary,所以先要下载 ComputeLibrary 并编译。

git clone https://github.com/ARM-software/ComputeLibrary
cd ComputeLibrary
git checkout v18.05
scons Werror=1 -j2 debug=0 neon=1 opencl=1 os=linux arch=arm64-v8a build=native

这个编译的比较慢,大概要两三个小时。另外,我用 master 分支编译的时候发现后面 Tengine 编译的时候会编译不过,切到 v18.05 就可以,还没去查具体是什么原因。

Tengine 源码下载和编译可以参考 Github,编译完 Tengine 后可以接着编译它提供的 examples, 然按照说明文档中的连接下载对应的 model,即可运行这些测试样例。

Tengine example build

运行 MTCNN:

MTCNN

运行 MSSD:

MSSD

MSSD on horse

本文首发于:电子芯吧客
更多原创文章请扫码关注微信公众号:HackforFun
image

推荐阅读
关注数
3510
内容数
57
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息