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