一.? ?概述
此篇文章為 eIQ 系列的延伸應用,相信各位已經(jīng)對於??NXP 所開發(fā)的?eIQ 機器學習開發(fā)環(huán)境?有一定程度上的認識了!! 並於本系列的上兩篇文章介紹了 GStreamer 與 NNStreamer 的用法,若尚未理解的夥伴,請點選上述連結溫習一下 !! 本文章將要介紹的? NNShark ,與先前的 NNStreamer 或 GStreamer 大有不同, NNShark 是一套專門分析 i.MX8 硬體資源的工具 !! 這裡分享給讀者們作參考與應用 !!
如下圖所示,本系列是隸屬於 機器學習開發(fā)環(huán)境 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 提供作業(yè)系統(tǒng) Ubuntu / Debian 的安裝說明,僅須要依照該網(wǎng)站指令即可安裝完成。至於 i.MX8 平臺則是內(nèi)建置入 NNShark 分析工具,故使用者直接使用即可。
?
◎ 如何使用 NNShark ?
在安裝完成 NNShark 後,直接開啟 終端機(Terminal) 並輸入指令即可完成 !!
(1) 修改 Uboot
在啟動系統(tǒng)時,於 log 顯示 “Hit any key to stop autoboot” 後,按下任意鍵,即可進入 uboot !
輸入 editenv mmcargs 指令後,即可添加下列 uboot變數(shù)。
$ galcore.gpuProfiler=1 galcore.powerManagement
輸入 saveenv 指令後,並輸入 boot 重啟系統(tǒng)
?
(2) 設定環(huán)境變數(shù)
進入系統(tǒng)後,即可設置環(huán)境變數(shù)(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 的應用程序。而系列已經(jīng)講述完 NNStreamer 與 NNShark 的基本用法。若有不理解的地方,歡迎留言討論,謝謝 !! 若欲查詢 i.MX8M Plus 的功耗、電壓的狀態(tài),可參考官方文件?i.MX Power Measurement Tool?!! 而此工具需要配合?i.MX 8M Plus Evaluation Kit enabling Power Measurement 的開發(fā)板,未來有機會再向各位介紹 !!?
?
四.??參考文件
[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】?!!
參考來源