前面已經(jīng)介紹過關(guān)于 DeepStream 各種輸入源的使用方式,而且 Jetson Nano 2GB 上開啟 4 路輸入(兩個(gè)攝像頭+兩個(gè)視頻文件),都能得到 25FPS 以上的實(shí)時(shí)性能,但畢竟“單一檢測器(detector)”檢測出來的物件是離散型的內(nèi)容,例如車、人、腳踏車這些各自獨(dú)立的信息。有沒有什么方法能夠?qū)崿F(xiàn)“組合信息”呢?例如“黑色/大眾/SUV 車”!
DeepStream 有一個(gè)非常強(qiáng)大的功能,就是多模型組合檢測的功能,以一個(gè)主(Primary)推理引擎(GIE:GPU Inference Engine)去帶著多個(gè)次(Secondary)推理引擎,就能實(shí)現(xiàn)前面所說的功能。
本實(shí)驗(yàn)在 Jetson Nano 2GB 上,執(zhí)行 4 種模型的組合檢測功能,能將檢測到的車輛再往下區(qū)分顏色、廠牌、車種等進(jìn)一步信息,在 4 路輸入視頻狀態(tài)下能得到 20+FPS 性能,并且我們將顯示的信息做中文化處理。
nvidia@nano2g-jp450:/opt/nvidia/deepstream/deepstream/samples/models$ ls -l
總用量 24
drwxrwxrwx 2 root root 4096 7月 13 23:49 Primary_Detector
drwxrwxrwx 2 root root 4096 7月 13 22:45 Primary_Detector_Nano
drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_CarColor
drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_CarMake
drwxrwxrwx 2 root root 4096 2月 8 21:50 Secondary_VehicleTypes
drwxrwxrwx 4 root root 4096 2月 8 21:49 Segmentation
簡單說明一下每個(gè)目錄所代表的的意義:
Primary_Detector:作為項(xiàng)目的主檢測器,這是用 Caffe 框架以 ResNet10 網(wǎng)絡(luò)所訓(xùn)練的 4 類檢測器,能檢測“Car”、“Bicycle”、“Person”、“Roadsign”四種物件,這個(gè)數(shù)據(jù)可以在目錄下的 labels.txt 中找到。
Primary_Detector_Nano:將Primary_Detector里的模型,針對 Jetson Nano(含 2GB)的計(jì)算資源進(jìn)行優(yōu)化的版本。
Secondary_CarColor:車子顏色的次級檢測器
Secondary_CarMake:生產(chǎn)廠商的次級檢測器
Secondary_VehicleTypes:車子種類的次級檢測器
組成結(jié)構(gòu)也十分簡單,其中主(Primary)檢測器只有一個(gè),而且必須有一個(gè),否則 DeepStream 無法進(jìn)行推理識別。次(Secondary)檢測器可以有好幾個(gè),這里的范例就是針對“Car”這個(gè)類別,再添加“Color”、“Maker”、“Type”這三類元素,就能獲取視頻圖像中物件的更完整信息。
在 Jetson Nano 的/opt/nvidia/deepstream/deepstream/samples/config/deepstream-app 下面的 source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt,就已經(jīng)把這個(gè)組合檢測器的配置調(diào)試好,現(xiàn)在直接執(zhí)行以下指令:
cd/opt/nvidia/deepstream/deepstream/samples/config/deepstream-app
deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
現(xiàn)在看到啟動(dòng)四個(gè)視頻窗,但是每個(gè)視窗的執(zhí)行性能只有 8FPS,總性能大約 32FPS,并不是太理想。
接下來看看怎么優(yōu)化這個(gè)配置文件
首先要執(zhí)行模型組合功能功能,必須把“tracker”功能打開,不過可以關(guān)閉追蹤號的顯示,因此保留“enable=1”,將下面的“display-tracking-id=”設(shè)為“0”
由于我們在 Jetson Nano 2GB 版本上進(jìn)行實(shí)驗(yàn),需要進(jìn)行以下的調(diào)整。如果您要在 AGX Xavier 或 Xavier NX 上上執(zhí)行的活,請忽略這個(gè)步驟。
修改主檢測器[primary-gie]的模型:配置文件中預(yù)設(shè)的是“Primary_Detector”檢測器,這里得修改成專為 Nano 所訓(xùn)練的版本,這里修改以下幾個(gè)地方:
(1) model-engine-file路徑的“Primary_Detector”部分改成“Primary_Detector_Nano”
(2) config-file 的文件改成 config_infer_primary_nano.txt
因?yàn)?Jetson Nano(含2GB)并不支持 int8 計(jì)算精度,因此還需要做以下修改:
(3) 將“_b4_gpu0_int8.engine”改成“_b8_gpu0_fp16.engine”
(4) 將所有“xx_gpu0_int8.engine”改成“xx_gpu0_fp16.engine”
3. 將追蹤器從原本的 ibnvds_mot_klt.so 改成 libnvds_mot_iou.so,用“#”變更注釋的位置就可以。
修改完后重新執(zhí)行,可以看到每個(gè)窗口的檢測性能提升到 10~12FPS,總性能提升到 40~48FPS,比原本提升12~50%,不過距離理想中的 25FPS 還有很大的差距。
執(zhí)行過程中如果遇到“Theremay be a timestamping problem, or this computer is too slow.”這樣的信息,就把[sink0]下面的“sync=”設(shè)定值改為“0”就可以。
現(xiàn)在看看是否還有什么可調(diào)整的空間?參考前一篇文章“DeepStream-04:Jetson Nano 攝像頭實(shí)時(shí)性能”所提到的,將[primary-gie]下面的“interval=”設(shè)定為“1”,然后再執(zhí)行應(yīng)用時(shí),發(fā)現(xiàn)每個(gè)輸入源的識別性能立即提升到 20FPS 左右,總性能已經(jīng)能到 80FPS 左右,比最初的 32FPS 提升大約 2.5倍,這已經(jīng)很接近實(shí)時(shí)識別的性能。
好了,在Jetson Nano 2GB 上已經(jīng)能達(dá)到接近實(shí)時(shí)推理的性能,是相當(dāng)好的狀態(tài)。
如果對于顯示輸出的狀態(tài)有些不滿意的話,我們按照下面的步驟去執(zhí)行,將“英文”類別名改成“中文”,并且將邊框變粗、字體放大,就能更輕松看到推理的效果:
1. 所有的顯示名稱,都在 models 目錄下個(gè)別模型目錄里的labels.txt,可以將里面的內(nèi)容全部改成中文。
例如
deepstream/samples/models/Secondary_CarMake的“l(fā)abels.txt”內(nèi)容改為“廣汽;奧迪;寶馬;雪佛蘭;克萊斯勒;道奇;福特;通用;本田;現(xiàn)代;英菲尼迪;吉普;起亞;雷克薩斯;馬自達(dá);奔馳;日產(chǎn);速霸路;豐田;大眾”,其他的就比照辦理。
注意:這個(gè)順序不能改變!
2. 邊框?qū)挾龋盒薷模踥sd]下面的“board-width”值,推薦 2~4 比較合適;
3. 字體大小:修改[osd]下面的“texe-size”值,推薦 15~18 比較合適;
4. 其他:請自行設(shè)定
如何?這樣的效果與性能就是在 Jetson Nano 2GB 實(shí)現(xiàn)的!
編輯:jq
-
gpu
+關(guān)注
關(guān)注
28文章
4898瀏覽量
130552
原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(31):DeepStream 多模型組合檢測-1
文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
電機(jī)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
海積信息推出高精度組合導(dǎo)航終端
光電組合滑環(huán)的特點(diǎn)與應(yīng)用分析
高精度GNSS+INS組合導(dǎo)航:速度、位置、姿態(tài)全掌握

HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)組合場景
繼電器組合及組合架的作用
有組合繼電器的起動(dòng)系如何實(shí)現(xiàn)驅(qū)動(dòng)保護(hù)的?
MSP430的模擬組合實(shí)現(xiàn)了真正的單芯片脈搏血氧儀設(shè)計(jì)

組合邏輯電路設(shè)計(jì)時(shí)應(yīng)遵循什么原則
組合邏輯電路的結(jié)構(gòu)特點(diǎn)是什么?
組合邏輯控制器是什么設(shè)備
組合邏輯控制器的基本概念、實(shí)現(xiàn)原理及設(shè)計(jì)方法
組合邏輯控制器的工作原理是什么
組合邏輯控制器是用什么實(shí)現(xiàn)的
NVIDIA發(fā)布DeepStream 7.0,助力下一代視覺AI開發(fā)

評論