【ATU Book-i.MX8系列 - eIQ NNStreamer】eIQ NNShark介绍

一.   概述

此篇文章为 eIQ 系列的延伸应用,相信各位已经对于  NXP 所开发的 eIQ 机器学习开发环境 有一定程度上的认识了!! 并于本系列的上两篇文章介绍了 GStreamerNNStreamer 的用法,若尚未理解的伙伴,请点选上述连结温习一下 !! 本文章将要介绍的  NNShark ,与先前的 NNStreamer 或 GStreamer 大有不同, NNShark 是一套专门分析 i.MX8 硬体资源的工具 !! 这里分享给读者们作参考与应用 !!

如下图所示,本系列是隶属于 机器学习开发环境 eIQ 应用层(Application Layer) 中。而本篇将介绍 “eIQ NNShark介绍”。

若新读者欲理解更多人工智能、机器学习以及深度学习的资讯,可点选查阅下方博文
 大大通精彩博文   【ATU Book-i.MX8系列】博文索引

 

eIQ NNStreamer 系列博文-文章架构示意图

二.  NNShark 介绍

NNShark 是一套分析工具(profiling tool),由 NNStreamer 改良 GstShark 工具而成。此工具能够使用在 NXP i.MX8M Plus 平台中,并分析 CPU(A53) / 2D GPU(GC520L) / 3D GPU(GC7000UL) / NPU(VIP8000) 等各个硬体资源所耗费多寡。

◎ 如何安装 NNShark ?

NNShark 提供作业系统 Ubuntu / Debian 的安装说明,仅须要依照该网站指令即可安装完成。至于 i.MX8 平台则是内建置入 NNShark 分析工具,故使用者直接使用即可

 

◎ 如何使用 NNShark ?

在安装完成 NNShark 后,直接开启 终端机(Terminal) 并输入指令即可完成 !!

(1) 修改 Uboot

在启动系统时,于 log 显示 “Hit any key to stop autoboot” 后,按下任意键,即可进入 uboot !


输入 editenv mmcargs 指令后,即可添加下列 uboot变数。

$ galcore.gpuProfiler=1 galcore.powerManagement


输入 saveenv 指令后,并输入 boot 重启系统

 

(2) 设定环境变数

进入系统后,即可设置环境变数(environment variables)

$ export GST_DEBUG="GST_TRACER:7"

$ export GST_TRACERS="live"



(3) 运行范例

成功运行范例后,即会显示分析画面,如同下图所示 ; 依序可以看到 CPU 与 GPU 的使用量,以及各硬体所配置 DDR 的用量,以及所耗费的功耗。

$ export MODEL=$(pwd)/ssd_mobilenet_v2_coco_quant_postprocess.tflite
$ export LABELS=$(pwd)/coco_labels.txt
$ gst-launch-1.0 --no-position v4l2src device=/dev/video3 ! \
video/x-raw,width=640,height=480,framerate=30/1 ! \
tee name=t t. ! queue max-size-buffers=2 leaky=2 ! imxvideoconvert_g2d ! \
video/x-raw,width=300,height=300,format=RGBA ! videoconvert ! \
video/x-raw,format=RGB ! tensor_converter ! \
tensor_filter framework=tensorflow-lite model=${MODEL} custom=Delegate:External,ExtDelegateLib:libvx_delegate.so ! \
tensor_decoder mode=bounding_boxes option1=tf-ssd option2=${LABELS} \
option3=0:1:2:3,50 option4=640:480 option5=300:300 ! \
mix. t. ! queue max-size-buffers=2 ! \
imxcompositor_g2d name=mix sink_0::zorder=2 sink_1::zorder=1 ! waylandsink



三.  结语

由上述介绍的概念与实作方式,就可以透过 NNShark 来解析所花费的硬体资源,像是 CPU 与 GPU 占多少使用资源,以及各硬体的记忆体传输速度等等。虽然本篇文章是搭配 NNStreamer 作应用,而读者亦可搭配任何程式来查看资源,像是 C 或 Python 的应用程序。而系列已经讲述完 NNStreamer 与 NNShark 的基本用法。若有不理解的地方,欢迎留言讨论,谢谢 !! 若欲查询 i.MX8M Plus 的功耗、电压的状态,可参考官方文件 i.MX Power Measurement Tool !! 而此工具需要配合 i.MX 8M Plus Evaluation Kit enabling Power Measurement 的开发板,未来有机会再向各位介绍 !! 

 

四.  参考文件

[1] 官方文件 - i.MX8 GStreamer User Guide pdf
[2] 第三方资源 - GStreamer 维基百科
[3] 第三方资源 -什么是Gstreamer?
[4] 官方文件 - i.MX Machine Learning User's Guide pdf
[5] 官方文件 - NNStreamer Github
[6] 官方文件 - NNStreamer

如有任何相关 eIQ NNStreamer 技术问题,欢迎至博文底下留言提问 !!
接下来还会分享更多 eIQ NNStreamer 的技术文章 !!敬请期待 【ATU Book-i.MX8 系列 - eIQ NNStreamer
 !!

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

★博文作者未开放评论功能