一. 概述
机器学习、深度学习、人工智能,近年来可说是快速扩展并散布于我们生活之中。因此恩智浦 NXP 也开始着手部属 AI 领域的相关应用。于 2020 年,恩智浦与加拿大的 Au-Zone Technologies 建立独家策略合作关系,用以推广 Au-Zone 的 神经网路框架 DeepViewRT 。帮助恩智浦的机器学习开发环境 eIQ (edge intelligence) 更加完善,更加能够匹配 神经处理引擎(Neural Processing Unit , NPU) 来实现最佳的推理效益 !!
如下图所示,为系列博文之示意架构图。此架构图隶属于 i.MX8M Plus 的方案博文中,并属于 eIQ 机器学习开发环境 内的 推理引擎层(Inference Engines Layer) - DeepViewRT 的子系列 !! 时不宜迟,赶快一起来看看 “DeepViewRT 快速使用介绍 - C” 是如何透过 C 语言来应用新颖的 神经网路框架 DeepViewRT 吧 。
若新读者欲理解人工智能、机器学习以及深度学习的差异,可点选查阅下方博文
大大通精彩博文 探讨机器学习与深度学习之差异
DeepViewRT 系列博文-文章架构示意图
二. DeepViewRT 介绍
DeepViewRT 是一套实现嵌入式处理器的神经网路推理引擎框架。
由 Au-Zone Technologies 团队开发,该引擎是以超文本传输协定 HTTP 来连接远端开发版进行模组推理与分析,故可以任意运行于 Windows / macOS / Linux 系统中。如下图所示,整个 DeepViewRT 的应用动作可拆分为 Desktop Tools、ModelRunner Server、ModelRunner Library、Inference Engines 等等四大流程。换句话说 ; 在应用 DeepViewRT 前,必须透过 ModelRunner Server 建置 HTTP 位置来向平台端要求动作,并依相应的 ModelRunner Library 来执行。同时 DeepViewRT 支援各式各样的模组架构 ( TensorFlow Lite / ONNX / DeepViewRT / ArmNN )。
如下图所示, DeepViewRT API 亦可透过 Python 或 C API 进行使用,且针对不同的硬体需求能够任意调用 ModelRunner Library 中的 libdeepview-rt.so 与 libdeepview-rt-openvx.so 这两个资料库。换句话说,也就是可以自由选用 CPU 、 GPU 或 NPU 来进行机器学习的推理。
DeepViewRT 架构示意图
DeepViewRT 资料库运用方式示意图
资料库 :
libdeepview-rt.so : 以原生 C/ASM 资料库实现 MCU (Cortex-M) / MPU (Cortex-A) 的运算。
libdeepview-rt-openvx.so : 以 OpenVX 资料库实现 GPU / NPU 的运算。
安装方式 :
请于该网站下载最新的 BSP Image, 并烧录至 SD 系统中。即可使用 DeepViewRT !!
为了确认是否有安装 DeepViewRT。进入开发板系统后,请输入以下指令 :
$ pip3 list
三. DeepViewRT C/C++ 实作范例
使用范例 ( C / C++ ) :
这里以原厂提供的 DEMO 作说明。如同 Python 操作方式,需透过通讯服务来启用的神经网路引擎,才能启用 ModelClient API 来载入与推理模组。
(1) 下载模组与代码 :
进入 DEMO 网站后并登入 NXP 帐号,往下滚动至 附件资源(Additional Resources) 页面。
下载 ssdcam-gst 1.1.zip 压缩档。下载完成后,请传送至 Linux 系统。
(2) 建置编译环境 :
此步骤须于建立编译环境。请将 \deepviewrt\deepview-rt_2.4.25-aarch64-r0_arm64_5.10.35_2.0.0.deb 档案传送至 Linux 系统中。
Tips : 若开发版的 Linux Kernal 版本为 L5.4.70.2.3.2 则选择对应的 .deb 档案。
下一步,开启终端机建立环境,请依照下列指令操作 :
$ sudo dpkg-deb -x deepview-rt_2.4.25-aarch64-r0_arm64_5.4.70_2.3.2.deb /opt/fsl-imx-xwayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux
$ source /opt/fsl-imx-xwayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux
Tips : dpkg-deb 该动作为安装 .deb 档案,若已安装完成即可直接下达 source 来设定环境。
安装完成后,亦可至相对路应下确认 include 资料夹内是否有对应的标头档(.h)。
(3) 编译代码 :
接着,将编译原厂提供的范例 ssdcam-gst-1.1.zip 压缩档中 demo.c 档案。
开启终端机编译代码,请依照下列指令操作 :
Tips : 若欲详细理解代码,请参照 DeepViewRT User Manual 中的 C API Reference 章节。
$ cd
$ mkdir deepview-rt_detection_demo
$ unzip ssdcam-gst-1.1.zip -d deepview-rt_detection_demo/
$ cd deepview-rt_detection_demo/
$ mkdir build
$ cd build/
$ cmake ..
$ make
如下图,编译完成后,将看到编译所生成的执行档,请将执行档与模组放至开发版的系统中。
$ scp ssdcam-gst root@x.x.x.x:~
$ scp ../../ssdcam-gst-1.1/model/mobilenet_ssd_v1_1.00_trimmed_quant_anchors.rtm root@x.x.x.x:~
(4) 执行程式 :
完成上述步骤后,即可执行 DeepViewRT C 版本的 DEMO。
请于开发板中操作下列指令 :
使用 CPU 运行方式 :
$ modelrunner -m -H 10818
$ ./ssdcam-gst -m -c /dev/video<CAMERA#>
使用 NPU 运行方式 ( 配合 OpenVX 资料库) :
$ modelrunner -m -e ovx -H 10818
$ ./ssdcam-gst -m -r 127.0.0.1 -u 1 -c /dev/video<CAMERA#>
(5) 结果展示 :
四. 结语
经由上述的介绍,相信各位已经对 DeepViewRT 介绍、用法有一定的认知了,并依照步骤顺利实作 C / C++ 版本的范例,并透过此框架进行模组推理与应用!! 故可以在后续的开发中,不仿试试借由 ModelRunner 来运行比较各模组 (ONNX / TensorFlow Lite/ DeepVeiwRT) 的推理速度。经目前测试结果 DeepViewRT 的推理效能是优于 TensorFlow Lite !!
五. 参考文件
[1] 官方网站 - i.MX Machine Learning User's Guide.pdf
[2] 官方网站 - eIQ Toolkit User's Guide.pdf
[3] 官方网站 - DeepViewRT_User_Manual.pdf
[4] 官方网站 - eIQ DeepViewRT GStreamer Detection Demo
如有任何相关 DeepViewRT 技术问题,欢迎至博文底下留言提问 !!
接下来还会分享更多 DeepViewRT 的技术文章 !!敬请期待 【ATU Book-i.MX8 系列 - DeepViewRT】 !!
评论