【ATU Book-i.MX8系列 - DeepViewRT】 DeepViewRT 快速使用介绍 - C

一.   概述

机器学习、深度学习、人工智能,近年来可说是快速扩展并散布于我们生活之中。因此恩智浦 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
 !!

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论