前一篇文章為大家講述了 DeepStream 的應(yīng)用定位、單機(jī)工作流、實際部署圖,以及完整的軟件棧的內(nèi)容,可以對其有一個框架性的了解。接下來大家可以思考一下,DeepStream 可以開發(fā)什么應(yīng)用?
可能有人會猜想,這么強大且復(fù)雜的視頻分析工具,一定需要具備很多的專業(yè)知識與編程語言基礎(chǔ),才有可能操作這樣一套系統(tǒng)。
的確,如果要實現(xiàn)完整的視頻分析中心的整體部署,確實需要更多的技術(shù)去完成;但如果只想做些輕便的單機(jī)應(yīng)用,例如自己家中或辦公環(huán)境的視頻分析應(yīng)用,那就非常地簡單,甚至不需要撰寫或修改代碼就能實現(xiàn)。
本文的內(nèi)容,就是用 NVIDIA Jetson Nano 2GB 快速帶大家來執(zhí)行 NVIDIA 為 DeepStream 已經(jīng)提供好的應(yīng)用,整個執(zhí)行流程也適用于 Jetson 系列的所有設(shè)備,當(dāng)然,也能在帶有 CUDA GPU 計算卡的 x86 設(shè)備上運作。
這里的運作環(huán)境是用 NVIDIA Jetpack 4.5.0 安裝,關(guān)于操作系統(tǒng)、CUDA、CUDNN、TensorRT、OpenCV 等版本,請自行參考 NVIDIA 官方所提供的說明內(nèi)容。
Jetpack 會為 Jetson 設(shè)備直接安裝好 DeepStream 套件,因此 Jetson 用戶可以省略 DeepStream 的安裝步驟,進(jìn)入 Jetson 設(shè)備之后,執(zhí)行以下指令就可以檢查其版本:
# 在 Jetson 設(shè)備
$ dpkg -l deepstream-5.0
會看到如下截圖的信息,表示目前安裝的版本為“5.0.1-1”!
接下來看看 Deepstream 為系統(tǒng)提供哪些可執(zhí)行的軟件?請執(zhí)行以下指令:
$ deepstream-(連續(xù)敲擊兩次“Tab”鍵)
會看到如下截圖,總共有20個可執(zhí)行工具,我們只需要 deepstream-app 這個工具,其余可以不用理會。
在/opt/nvidia/deepstream/deepstream 路徑下安裝 DeepStream,后面的實驗操作以這下面的 samples 目錄里的內(nèi)容為主,為了方便操作起見,請執(zhí)行以下指令,在主目錄執(zhí)行建立一個鏈接:
$ cd ~
$ ln -s /opt/nvidia/deepstream/deepstream/samples ds5_samples
現(xiàn)在執(zhí)行以下指令,看看 samples 里的目錄結(jié)構(gòu),對 DeepStream 范例能多一份總體觀:
$ tree -L 2 -d ds5_samples
下圖框處是本次實驗有關(guān)的部分:
本次實驗使用 deepstream-app 這個編譯好的工具,執(zhí)行時只要在后面添加”-c 《配置文件》“即可,要做的任務(wù)就是修改配置文件的內(nèi)容,便可以輕松地改變實現(xiàn)的功能。配置文件的范例存放在 config/deepstream-app 目錄下,有 9 個“source”帶頭的范例文件可以使用,根據(jù)文件名可以看出該文件的適用設(shè)備。
source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt 這個配置文件比較適合 Jetson Nano 2GB 使用,先簡單分解一下文件名所代表的意義:
source8:有 8 個輸入源
1080p:輸入源的最高分辨率
dec:檢測器 detector 的縮寫,表示這個設(shè)定文件是做物件檢測功能
infer-resnet:使用 ResNet 這個神經(jīng)網(wǎng)絡(luò)執(zhí)行推理功能
tracker:啟用“物件追蹤”功能
tiled_display:啟用“并列顯示”功能
fp16:推理時的數(shù)據(jù)精度
nano:針對 Nano 設(shè)備
這些文件名只是比較有針對性地提供預(yù)設(shè)參數(shù)而已,里面的每一個參數(shù)都是可以任意修改的。為了方便后面的執(zhí)行,因此建議將配置文件復(fù)制成一個比較短的文件名:
$ sudo chmod 777 -R ds5_samples
$ cd ds5_samples/configs/deepstream-app
$ cp source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt myNano.txt
后面所有的修改在 myNano.txt 里面執(zhí)行就可以?,F(xiàn)在執(zhí)行以下指令,看看會得到什么結(jié)果:
$ deepstream-app -c myNano.txt
第一次執(zhí)行時要為神經(jīng)網(wǎng)絡(luò)模型生成 TensorRT 加速引擎,所以需要幾分鐘時間去建立,出現(xiàn) 2x4 個并列顯示框。
下面是指令框顯示的個別推理性能,8 個框的總性能合計大約在 120FPS,這對 JetsonNano 2GB 來說是非常驚人的。
如果使用 NoMachine 遠(yuǎn)程控制 Jetson Nano 2GB,可能會看不到顯示的畫面,這時請先按 Ctrl-C 退出執(zhí)行,然后修改 myNano.txt 里面的[sink0]兩個參數(shù),如下:
。。。。。
[sink0]
#type=5
type=2
#sync=1
sync=0
。。。。。
然后重新執(zhí)行“deepstream-app -c myNano.txt”應(yīng)該就能看到顯示的結(jié)果了。
這個標(biāo)準(zhǔn)演示一個較明顯的問題就是 8 個框的數(shù)據(jù)源是相同的,這是否存在不真實的部分?因此修改一下輸入來源的部分,調(diào)用從 DeepStream 與 VisionWorks 所提供的測試視頻來執(zhí)行“多視頻”分析功能。
接下來在 myNano.txt 中做些小幅度的修改:
1. 為了讓顯示的尺寸更加合理化,修改[tiled-display]下面的 rows=2, columns=2
2. 以[source0]為范本,刪除不需要的參數(shù),復(fù)制為[source1]、[source2]、[source3]
這里特別使用不同格式的視頻,包括.mp4、.h264、.avi等。存好修改內(nèi)容后重新執(zhí)行“deepstream-app -c myNano.txt”,就會看到四個不同視頻的推理結(jié)果,其中紅色的代表“Car”、藍(lán)色代表“Person”。
請自行查看一下命令框里,四組推理性能總和與前面八組推理性能的總合是否符合
玩轉(zhuǎn) DeepStream 就是這么簡單,到目前為止完全沒有牽涉任何的代碼,只是修改一些參數(shù)就能實現(xiàn)多數(shù)據(jù)源的高性能識別,現(xiàn)在可以去向朋友炫耀了!
“目標(biāo)追蹤(track)”功能是推理識別的后處理任務(wù),為識別出的物件標(biāo)上編號之后,就能進(jìn)行更多樣化的后續(xù)操作,包括統(tǒng)計人流、動向分析、目標(biāo)鎖定等等,這個功能需要相對復(fù)雜的算法來支撐。
DeepStream 已經(jīng)將“目標(biāo)追蹤”功能都封裝好,只需在配置文件中做些簡單處理,這就是下一篇文章要帶大家執(zhí)行的任務(wù)。
編輯:jq
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4989瀏覽量
103076
原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(28): DeepStream 初體驗
文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論