1 前言
1.1 EAIDK-310简介
嵌入式人工智能开发套件EAIDK-310,EAIDK(Embedded Artificial Intelligence Development Kit)- 嵌入式人工智能开发套件 ,专为AI开发者精心打造,面向边缘计算的人工智能开发套件。硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM等应用的基础平台和主流开源算法,满足端侧AI教育、算法应用开发、产品原型开发验证等需求。
EAIDK-310开发平台使用高性能Arm SoC(瑞芯微rk3228H),搭载OPEN AI LAB嵌入式AI开发平台(包含嵌入式深度学习框架Tengine以及轻量级嵌入式计算机视觉加速库BladeCV)。为AI应用提供简洁、高效、统一的API接口,加速终端AI产品的场景化应用落地实现。
1.2 嵌入式AI开发平台简介
- Tengine:高性能边缘推理引擎,为CPU,GPU,DLA,DSP等单核/多核/异构SoC提升综合算力。同时支持各种主流深度学习框架Caffe、TensorFlow、MxNet、ONNX。
- BladeCV:BladeCV是OPEN AI LAB开发的,在嵌入式平台上替代OpenCV的计算机视觉开发包,包含计算机视觉算法、图像获取和图形界面三部分。
1.3 硬件规格
EAIDK-310硬件接口图1
EAIDK-310硬件接口图2
1.4 软件规格
如需了解更多EAIDK-310介绍相关内容,请参考EAIDK官网的《EAIDK-310公开教程》。
2 Tengine介绍
Tengine 是OPEN AI LAB 针对前端智能设备开发的软件开发包,核心部分是一个轻量级,模块化,高性能的AI 推断引擎,并支持用DLA、GPU、xPU作为硬件加速计算资源异构加速。
Tengine API介绍详情请参考《Tengine用户使用手册》
更多参考:https://github.com/OAID/Tengine
下载Tengine示例:
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/Source/TengineExample.zip
- 下载成功后,输入
unzip TengineExample.zip
解压压缩文件 - 输入
cd TengineExample
进入TengineExample文件夹 - 输入
cmake .
生成makefile - 用
make
来编译程序 - 输入
./tm_classify -t sqz.tmfile -l synset_words.txt -i cat.jpg
执行demo程序
执行成功结果如下:
3 BladeCV介绍
BladeCV 的主要目的是,提供一套简单高效的算法加速库。提供与OpenCV 一样便捷的函数调用,来替代OpenCV 庞大系统库的调用。BladeCV 作为AID 的一部分主要提供满足图形操作相关的图像处理的调用接口。
下载BladeCV示例:
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/Source/BladeCVExample.zip
- 下载成功后,输入
unzip BladeCVExample.zip
解压压缩文件 - 输入
cd BladeCVExample
进入BladeCVExample文件夹 - 输入
make
编译程序 - 输入
./test
执行demo程序
执行结果如下:
4 视频采集Demo
4.1 使用usb摄像机
本演示程序使用USB摄像头采集图像,Demo安装和执行方法如下:
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/EAIDK310_Source/encoder-demo.zip
- 下载成功后,输入
unzip encoder-demo.zip
解压压缩文件 - 输入
cd encoder-demo
进入encoer-demo文件夹 - 输入
make
编译程序 - 输入
sudo ./enc-demo -i 0 -l
执行程序,其中-i 代表相机索引,-l:编码的同时进行 预览。结果如下:
注:如果执行后出现“:connot open display:0,0”提示,建议把网络断开后再尝试执行程序。
4.2 使用网络摄像机
本演示程序使用IPC(网络摄像机)采集图像,Demo安装和执行方法如下:
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/EAIDK310_Source/rtsp-demo.zip
- 下载成功后,输入
unzip rtsp-demo.zip
解压压缩文件 - 输入
cd rtsp-demo
进入rtsp-demo文件夹 - 针对自己的网络摄像机需要修改
rtsp-demo.cpp
开始的定义,修改为自己摄像机的IP地址和用户名密码,代码如下:
const string ipcUrl="rtsp://192.168.88.174/video1";
const string ipcUser="admin";
const string ipcPassword="12345678";
- 输入
make
编译程序 - 输入
./rtsp-demo
执行程序
注:此demo需要网络内有支持rtsp协议拉流的网络摄像机(IPC),执行程序后,如果有弹视频窗口但无视频显示,请检查rtsp流地址是否可以正常拉到IPC的视频流。(比如,可以下载vlc软件,打开“媒体——打开网络串流——网络”,在“请输入网络URL”处输入rtsp流地址,看能否正常拉到视频流)
5 人脸检测Demo
本演示基于USB摄像头采集图像,Demo安装和执行方法如下:
(注:本Demo适用于v1.1.4版本固件,可通过cat /usr/local/AID/VERSION查看固件版本,如果固件版本较低,请烧录最新固件)
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/Source/usb-face_v2.zip
- 下载成功后,输入
unzip usb-face_v2.zip
解压压缩文件 - 输入
cd usb-face
进入usb-face文件夹 - 输入make命令编译程序。
- 输入
./usb-face
执行demo程序
执行结果如下:
6 人脸识别Demo
6.1 人脸识别Demo1
本演示程序使用usb摄像头采集图像,Demo安装和执行方法参考https://aijishu.com/a/1060000000067387
描述:此Demo包含人脸检测 、人脸属性、人脸识别功能。(此Demo兼容EAIDK-610)
6.2 人脸识别Demo2
本演示程序使用usb摄像头采集图像,Demo安装和执行方法如下:
- 点击左下角LXTernimal(左下角第三个,黑色)打开Terminal窗口。
- 输入命令
wget ftp://ftp.eaidk.net/liveopenfile/005/liveopenfile005.zip
- 下载成功后,输入
unzip liveopenfile005.zip
解压压缩文件 - 输入
cd liveopenfile005
进入liveopenfile005文件夹 - 输入
unzip access_control_cut.zip
解压压缩文件 - 输入
cd access_control_cut
进入access_control_cut文件夹 - 输入下面命令执行脚本inst_depend.sh
cd access_control
./inst_depend.sh
- 输入下面命令执行程序access_control
cd ../build-access_control-Desktop-Debug/
./access_control
注:本demo依赖3.4.1版本OpenCV,如果将OpenCV升级到4.2版本,程序会报错,如:
./access_control: error while loading shared libraries: libopencv_aruco.so.3.4: cannot open shared object file: No such file or directory
解决方法:
开发板联网状态下,卸载4.2版本OpenCV,并安装3.4.1版本OpenCVsudo dnf remove opencv sudo dnf install opencv-3.4.1
7 其他Demo或工具
7.1 在线语音交互Demo
https://aijishu.com/a/1060000000087543
描述:此Demo需使用声智4线麦克风阵列、和一个USB音箱或耳机,使用声智在线语音SDK,实现“智能音箱”的语音交互效果。(此Demo兼容EAIDK-610)
7.2 在线ASR、NLP、TTS
https://aijishu.com/a/1060000000105273
描述:此Demo需使用声智4线麦克风阵列、和一个USB音箱或耳机,使用声智在线语音SDK,分别实现语音识别(ASR)、自然语言处理(NLP)、语音合成(TTS)示例演示。
7.3 基于EAIDK-310的传感器调试案例一&二
https://aijishu.com/a/1060000000082565
https://aijishu.com/a/1060000000083903
描述:此Demo展示使用EAIDK-310的GPIO口,来调试多种传感器的案例。
7.4 使用ssh或vnc远程连接EAIDK-310开发板
https://aijishu.com/a/1060000000006199
描述:介绍如何设置系统自动登录桌面、连接WiFi、使用ssh/vnc连接开发板等过程。
7.5 EAIDK-310: 双系统启动,从源码搭建 Tengine AI
https://aijishu.com/a/1060000000009642
描述:社群大佬自己做的Debian固件,烧写在EAIDK的TF卡上,做双系统。
7.6 EAIDK-310 Debian10 系统镜像
https://aijishu.com/a/1060000000006255
描述:EAIDK-310烧录Debian10镜像。
7.7 EAIDK-310开发套件被开发者玩坏了,有你想不到的AI项目
https://aijishu.com/a/1060000000008289
描述:之前的一个开发者案例合集
7.8 EAIDK-310外部接口使用与音视频采集与播放
见EAIDK官网《EAIDK-310公开教程》
7.9 基于EAIDK的图片分类和物体检测Demo
见EAIDK官网《基于EAIDK的 Tengine应用入门教程》
7.10 没有键盘显示器,也能使用EAIDK-310?
https://aijishu.com/a/1060000000115213
描述:没有显示器,使用SecureCRT和VNC Viewer来连接开发板的基础教程
8 常见FAQ
8.1 常用功能
8.1.1 EAIDK-310每次启动都会进入登录界面,需要输入openailab用户名密码才能进入系统,能不能设置系统启动自动登录桌面?
设置系统自动登录桌面方法:
打开终端,打开lxdm桌面的配置文件
sudo vim /etc/lxdm/lxdm.conf
将autologin选项取消注释,并改为autologin=openailab
,保存。
这样,开发板在每次开机时,将会自动登录桌面
8.1.2 EAIDK的Fedora系统如何设置系统时间?
Fedora系统设置系统时间方式:
打开终端,输入当前时间sudo date -s "2019-12-10 14:50:05"
即可
sudo date -s "2019-12-10 14:50:05"
8.1.3 EAIDK-310默认系统如何切换为拼音输入法?
1)选择左下角菜单选项“Preference”,再选择其展开项“Input Mwthod Selector”,弹出对话框,选择“Preference”,弹出如下对话框:
选择“Input Mwthod”,点击“Add”后弹出语言选择项对话框,选择“Chinese”后,选择“Intelligent Pinyin”,点击“Add”即可添加拼音输入法
2)添加完成后,在主界面右下角选择拼音的输入方式即可,如下图:
8.1.4 EAIDK-610如何启用蓝牙功能?需要用蓝牙链接蓝牙音箱播放视频音乐
1)启动610对蓝牙串口的支持可以运行如下命令:
a、sudo ln -s /system/etc/firmware /etc/firmware
b、sudo rfkill unblock 0
c、sudo hciattach -n /dev/ttyS0 bcm43xx &
d、sudo hciconfig hci0 up
e、sudo dnf install blueman
执行完结果如下:
注:若开发板重启,需要重新执行c、d条命令以启动蓝牙;上述命令跑完后可以将c、d条写入开机自启中(开机自启文件在/etc/rc.d/rc.local下)
2)修改/etc/bluetooth/main.conf
:add line "Enable=Source,Sink,Media,Socket
" under [general]
3)重新烧固件中的“source”和“kernel”,文件下载地址:ftp://ftp.eaidk.net/EAIDK610_Source/Bluetooth_file/
8.1.5 EAIDK在使用某些功能时(如蓝牙)会提示输入 root密码,初始root密码是多少?
Fedora系统默认没有root密码,所以首次使用,如果需要root权限的话就需要重置root的密码。
1、通过sudo命令获得权限
sudo su
2、输入我们当前用户的密码
3、通过passwd更改root的密码
passwd root
4、输入两次root的密码
5、通过exit退出su界面
Exit
8.1.6 Linux 命令行连接WiFi
查看网络设备
sudo nmcli device
开启WiFi
sudo nmcli radio wifi on
扫描WiFi
sudo nmcli device wifi
连接wifi
sudo nmcli device wifi connect wifi名 password 密码
8.1.7 EAIDK-610使用板载mic录音
录音:
arecord -D"MainMicCapture" -d 10 -f S16_LE -r 48000 -c 2 -t wav test.wav
或
arecord -Dhw:0,0,0 -d 10 -f S16_LE -r 48000 -c 2 -t wav test.wav
播放:
aplay -D"MainMicCapture" test.wav
或
aplay -Dhw:0,0,0 test.wav
8.1.8 命令行设置EAIDK平台静态IP地址
修改IP地址,网关,DNS
sudo nmcli connection modify Wired\ connection\ 1 ipv4.addresses 192.168.3.100/24 ipv4.gateway 192.168.3.1 ipv4.dns 8.8.8.8
将ipv4的获取方式改为手动manual
sudo nmcli connection modify Wired\ connection\ 1 ipv4.method manual
重启服务
systemctl restart network
激活网卡
sudo nmcli connection up Wired\ connection\ 1
查看网卡信息
nmcli connection show Wired\ connection\ 1
8.2 实用工具
8.2.1 EAIDK开发平台的Fedora系统默认没有视频播放器,有没有简单好用的视频播放器?
Ffmpeg播放器体积小,可用于简单视频的播放,并且支持录屏
安装Ffmpeg:
sudo dnf install ffmpeg
录屏:
ffmpeg -video_size 360*360 -framerate 25 -f x11grab -i :0.0+100,200 output.mp4
360×360即为录屏视频的分辨率;:0.0+100,200为录屏开始区域;output.mp4为输出视频的名称;
播放视频:
ffplay output.mp4
注: FFmpeg使用软解方式,会消耗较多的CPU性能,播放视频分辨率越大、录屏视频分辨率越高,CPU的占用率就会越高。播放高质量1080p视频会比较卡顿、录屏分辨率超过D1视频效果也会较差
8.2.2 EAIDK-310 Fedora系统使用Ffmpeg播放视频会消耗大量CPU资源,应该不是硬解,有相应的支持硬解的播放器吗?
使用ffmpeg视频播放软件,软解会消耗大量CPU资源,EAIDK-310用ffmpeg播放1080P的MP4的视频可能会比较勉强。如果需要,可以安装使用smplayer播放器,支持硬解,可大大降低CPU占用率。
Fedora用户可以从RPM Fusion软件库安装SMPlayer。首先使用下面的命令添加RPM Fusion软件库。
su -c 'dnf install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'
然后使用dnf包管理器或yum包管理器安装SMPlayer
sudo dnf install mplayer smplayer
8.2.3 EAIDK默认系统没有截图工具,如何实现截图?
Flameshot、shutter等都是比较好用的截图工具,安装、使用方式如下:
flameshot
在Fedora中安装flameshot
sudo dnf install flameshot
使用flameshot GUI模式 截图:
flameshot gui
延时2s后打开GUI模式 截图
flameshot gui -d 2000
shutter
在Fedora中安装shutter
sudo dnf install shutter
安装完成后,可以通过屏幕左下角,Accessories --> Shutter 打开,这个工具可以选择截取屏幕的部分区域(Selection),也可以选择截图整个屏幕(Desktop)
命令行:截取拖拉区域(s是select之意),拖拉出矩形区域后按Enter
shutter -s
8.2.4 能不能使用Windows远程桌面来连接EAIDK-310开发套件呢?怎么操作?
一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需要登陆到远程Linux系统的桌面环境,我们可以使用xrdp 。
安装xrdp
sudo yum install xrdp
配置重启xrdp
sudo systemctl restart xrdp
完成之后,就可以使用Windows的远程桌面连接来连开发板
若板子系统重启后,需要重新开启xrdp才能再次使用Windows远程桌面连接
sudo systemctl start xrdp
查看xrdp状态,查看是否开启成功
systemctl status xrdp.service
为了方便,将xrdp设置为开机启动
sudo systemctl enable xrdp
8.3 固件烧写
8.3.1 EAIDK固件烧录方法?
见EAIDK官网“EAIDK固件烧录工具--FlashTool_Release_v2.64”,内附《EAIDK固件烧录手册》,请按照手册进行固件烧录。
8.3.2 Eaidk-610的固件发布ftp地址是多少
Eaidk-610开发板Fedora系统ftp下载地址:
ftp://ftp.eaidk.net/Images/Fedora28/
也可以在EAIDK官网下载固件和相关工具、文档
http://www.eaidk.com/info.php?class_id=102101104
8.3.3 进入LOADER模式烧写固件失败,该怎么办
当在loader模式烧写固件失败时,可进入Maskrom模式进行刷机
进入maskrom 模式方法:
reset 和 maskroom(红圈)的按钮一起按下,先释放reset,2秒后再释放maskroom,进入maskroom模式
8.4 Demo相关
8.4.1 EAIDK-610开发板,运行FacesDect例程系统会卡死,显示如下,这是什么原因?
原因:mipi摄像头和开发板的接线连接不良
解决方法:用力按下mipi摄像头和板卡的接线,然后重启下
8.4.2 EAIDK-610开发板Fedora V0.6.5版本固件,编译mipi-demo提示:mipi_cam.hpp:54:10: fatal error: openai_io.hpp: No such file or directory #include "openai_io.hpp"
原因:从Package fastcv was not found in the pkg-config search path.
可知需要fastcv,EAIDK-610 V0.6.5版本固件去掉了fastcv,需要从EAIDK官网下载最新demo使用
8.4.3 EAIDK-310上运行人脸检测demo mtcnn_usb,会提示:the input tengine model file is in old format
Demo里面默认带的tengine模型是老版本模型,不过也可以正常使用;
如果需要更新模型,在这里下载相应的最新的det.tmfile,替换下模型文件就可以了
http://www.tengine.org.cn/info.php?class_id=105104
8.4.4 执行第五期视频直播程序access_control_cut,出现如下错误
本demo依赖3.4.1版本OpenCV,如果将OpenCV升级到4.2版本,程序会报如上错误。解决方法:
开发板联网状态下,卸载4.2版本OpenCV,并安装3.4.1版本OpenCV
sudo dnf remove opencv
sudo dnf install opencv-3.4.1
8.4.5 社区基于EAIDK的人脸识别案例,使用sudo解压该文件压缩包后运行程序,无法检测到人脸。
sudo解压后的文件(夹)的属性和属组,全都是root;在里面操作一些文件或脚本时,也必须要用root权限,比如加上sudo。通常普通用户就能执行的程序,此时会发生错误 ,无法正常运行。所以,在解压或创建文件(夹)时,慎用sudo!慎用sudo!慎用sudo!普通用户能够执行的命令,就不要用sudo。
8.5 其他
8.5.1 EAIDK-310快速操作手册上有个使用usb摄像机的demo,EAIDK-310不带摄像机,需要配个什么摄像头?
EAIDK-310开发板上可使用USB摄像头,建议选择罗技C270,720p的usb摄像头
8.5.2 EAIDK-310串口调试,需要购买怎样的串口线,有推荐链接吗?
EAIDK-310需要使用 USB转4针串口线,推荐购买链接:
https://detail.tmall.com/item.htm?id=41281767348&spm=a1z09.2.0.0.23b22e8dmtweyU&_u=u1tfhf03c79&skuId=3942587526810
8.5.3 EAIDK-610能不能插存储卡?
支持MicroSD内存卡,最大支持128G内存,支持热插拔
8.5.4 dnf install 报错“error:failed to synchronize cache for repo ‘openailab-updates’”
这个是网络相关配置文件错误导致,建议排查网络是否正常,重新连接正常网络。
8.5.5 想通过串口调试EIADK-310,串口波特率是多少?
EAIDK串口波特率1500000,具体连接步骤可参考EAIDK-310公开教程。
8.5.6 EAIDK-310通电后,HDMI接口接上显示器,显示器界面没有任何显示
1) 检查显示器电源、信号源是否正常;
2) 检查EAIDK-310电源,应使用5V 2A电源,电流过低可能导致显示器无显示;
8.5.7 运行人脸检测demo后,显示器黑屏
开机时可正常登陆桌面环境,运行人脸检测demo后,显示器变黑屏。多次重启后,显示器恢复图像。
1) 检查显示器电源、信号源是否正常;
2) 检查EAIDK-310电源,应使用5V 2A电源,电流过低、不稳定,可能导致无显示;
8.5.8 安装OpenCV时,提示Error:failed to synchronize cache for repo ‘Fedora-modular’
出现Error:failed to synchronize cache for repo ‘fedora-modular’
等类似问题,一般是网络问题导致,排查板子是否可以正常联网
sudo ping www.baidu.com
若出现“name or service not known”,则网络异常
网络正常时显示如下:
网络恢复正常后才能联网下载程序。
8.5.9 如何将笔记本电脑的WiFi网络通过网线共享给EAIDK开发板?
- 笔记本电脑通过WiFi联网,并把WiFi网络共享给本地以太网;
- 修改笔记本电脑本地以太网地址,修改为静态地址192.168.3.xxx(这里设置为192.168.3.1);
- 把EAIDK-310的以太网地址,设置为manual,也设置为3网段的地址(这里示例,设置为192.168.3.100),另外设置子网掩码、网关(这里的网关要和上面笔记本电脑以太网静态IP地址一致)。
- 把一根网线的两端分别连在EAIDK-310和笔记本电脑的以太网口上。
此时,在EIAKD-310上ping笔记本电脑的以太网口地址,应该就能ping通了,并且在笔记本电脑上可以用vnc viewer连接开发板,开发板也可以上网。
(ps:怎么说呢,感觉这个功能是有点鸡肋的,EAIDK板子直接连WiFi就好了呀,为什么还要共享笔记本电脑的网络。。。)
9 更多资源
(1)EAIDK官网:http://www.eaidk.com/
(2)EAIDK官网公开课:http://www.eaidk.com/course.php?class_id=103
(3)扫码关注EAIDK公众号并回复:公开课,获取7场直播公开课回放链接、所有课件和demo。
(4)如有疑问或想要了解更多关于EAIDK开发平台方面的内容,欢迎加入EAIDK开发者大本营参与互动讨论,QQ群:625546458。