这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 飞凌嵌入式基于NXPi.MX8MMini的OKMX8MM-C开发板试用体验之运行

共2条 1/1 1 跳转至

飞凌嵌入式基于NXPi.MX8MMini的OKMX8MM-C开发板试用体验之运行tengine

菜鸟
2020-11-05 16:24:23     打赏
Tengine 是 OPEN AI LAB 一款轻量级神经网络推理引擎,它针对 Arm 嵌入式平台进行了专门优化,对 Android、Linux 系统都提供了很好的支持。而且更加难能可贵的是 Tengine 并不依赖于专用 AI 芯片(即 Tengine 可以利用 GPU、NPU 这些具有专门 AI 加速功能的模块进行 AI 运算,也可以利用通用的 CPU 进行 AI 运算),很多 Arm 平台都可以通过 Tengine 框架对算力进行深度挖掘,从而高效的运行一些 AI 应用。本文就是想描述如何在OKMX8MM-C这一 Arm64 平台上搭建 Tengine AI 推理框架,并运行图像识别相关应用。首先在OKMX8MM-C上面移植了基于 Armbian 的 Debian 10 系统,运行的 u-boot 和 linux kernel 都是mainline的。编译 TengineOPEN AI LAB 在 Github 上提供了开源的 Tengine 版本,并提供了比较详细的参考文档,所以可以直接下载源码,根据文档进行编译。得益于 i.MX8MMini 强大的性能,我们可以直接在 i.MX8MMini 上下载代码,进行编译,免去交叉编译的诸多不便。1. 下载源码git clone --recurse-submodules https://github.com/OAID/tengine/注意 clone 的时候一定要带 --recurse-submodules 这个参数,否则会下载不完整。2. 安装依赖apt install libprotobuf-dev protobuf-compiler libopencv-dev  pkg-config3. 修改配置文件在源码的 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 这个错误。4. 编译在源码根目录执行如下命令进行编译:./linux_build.sh default_config/arm64_linux_native.config5. 下载 model 文件运行这些 AI 应用的时候,需要加载对应的 model 文件,这些文件可以从 OPEN AI LAB 提供的网盘里下载:https://pan.baidu.com/s/1Ar9334MPeIV1eq4pM1eI-Q , 提取码为 hhgc 。下载完后需要把这些 model 文件放在 Tengine 源码根目录下的 models 文件夹,所有的 model 文件加在一起比较大,我只上传了后面测试需要用到的部分:6. 运行 benchmark编译完成后默认会在 build/benchmark/bin/ 目录下生成两个供测试用的 benchmark 文件,可以直接执行这两个文件,用来简单的测试,确实是否真正编译成功。./build/benchmark/bin/bench_sqz ./build/benchmark/bin/bench_mobilenet编译并运行测试 DemoTengine 开放的源码里面还带了几个不错的 图像识别相关的测试 Demo,用来测试和进行 AI 相关的基础学习都很不错。这些 Demo 的源码在 examples 目录下,在编译之前我们需要修改一个编译脚本 linux_build.sh, 即根据实际情况,正确设置 Tengine 的所在路径,比如我下载编译的 Tengine 代码在 /root/rockdev/tengine 目录下:然后在 examples 目录下执行如下命令:mkdir buildcd build/../linux_build.sh make编译完成,主要有 faster_rcnn 、lighten_cnn、 mobilenet_ssd、 mtcnn 、ssd、 yolov2、 YuFaceDetectNet 这几个测试 Demo。faster_rcnnFaster rcnn 是大神 Ross B. Girshick 在 RCNN 和 Fast RCNN 的基础上于 2016 年提出的新模型,综合性能更高,检测速度更快。Tengine 版本的 Demo 对下面的图片进行识别:运行 faster_rcnn 可执行程序,会生成一张对检测到的物体进行标注后的图像:可以看到识别到了 Dog、bicycle、car 三个物体。YOLO v2YOLO 全称 You look only once,是 2016 年 CVPR 上发表的一篇目标检测论文。YOLOV v2 发表于 2017 年的 CVPR 上,论文名称为《YOLO9000: Better, Faster, Stronger》,获得了 CVPR 2017 Best ** Honorable Mention 大奖。这里用这个模型来检测和 RCNN 同样的图片:从这张图片看,准确性和 RCNN 相当,但是检测速度却快了 将近 6 倍。SSDSSD 全称 Single Shot MultiBox Detector, 是一种 one-stage 的通用物体检测算法,作者 Wei Liu,提出于 2016年。这里用如下图片做检测:运行结果如下:有点可惜的是把狗狗给识别错了。mobilenet_ssd这个是 mobilenet 和 ssd 的结合,对移动设备更友好。使用和 SSD 同样的图片进行检测:可以看到狗狗检测对了,但是远处有个人漏检了。但是检测速度比 SSD 快了很多。YuFaceDetectNet这个是深圳大学于仕琪老师开源的 libfacedetection 的 Tengine 实现版本,libfacedetection 号称最快的人脸检测库。测试原图如下:测试结果:MTCNNMTCNN 是另外一种人脸检测方案,提出于 2016 年。这里我们采用和 YuFaceDetectNet 同样的图片进行测试:五张脸全部检测到了,而且时间和 YuFaceDetectNet 差距并不大。




工程师
2020-11-05 22:27:42     打赏
2楼

教程还是非常详细的


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]