0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DeepStream如何實現(xiàn)“組合信息”

GLeX_murata_eet ? 來源:NVIDIA英偉達中國 ? 作者:NVIDIA英偉達中國 ? 2021-08-04 09:41 ? 次閱讀

前面已經(jīng)介紹過關(guān)于 DeepStream 各種輸入源的使用方式,而且 Jetson Nano 2GB 上開啟 4 路輸入(兩個攝像頭+兩個視頻文件),都能得到 25FPS 以上的實時性能,但畢竟“單一檢測器(detector)”檢測出來的物件是離散型的內(nèi)容,例如車、人、腳踏車這些各自獨立的信息。有沒有什么方法能夠?qū)崿F(xiàn)“組合信息”呢?例如“黑色/大眾/SUV 車”!

DeepStream 有一個非常強大的功能,就是多模型組合檢測的功能,以一個主(Primary)推理引擎(GIE:GPU Inference Engine)去帶著多個次(Secondary)推理引擎,就能實現(xiàn)前面所說的功能。

本實驗在 Jetson Nano 2GB 上,執(zhí)行 4 種模型的組合檢測功能,能將檢測到的車輛再往下區(qū)分顏色、廠牌、車種等進一步信息,在 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

簡單說明一下每個目錄所代表的的意義:

Primary_Detector:作為項目的主檢測器,這是用 Caffe 框架以 ResNet10 網(wǎng)絡(luò)所訓(xùn)練的 4 類檢測器,能檢測“Car”、“Bicycle”、“Person”、“Roadsign”四種物件,這個數(shù)據(jù)可以在目錄下的 labels.txt 中找到。

Primary_Detector_Nano:將Primary_Detector里的模型,針對 Jetson Nano(含 2GB)的計算資源進行優(yōu)化的版本。

Secondary_CarColor:車子顏色的次級檢測器

Secondary_CarMake:生產(chǎn)廠商的次級檢測器

Secondary_VehicleTypes:車子種類的次級檢測器

組成結(jié)構(gòu)也十分簡單,其中主(Primary)檢測器只有一個,而且必須有一個,否則 DeepStream 無法進行推理識別。次(Secondary)檢測器可以有好幾個,這里的范例就是針對“Car”這個類別,再添加“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)把這個組合檢測器的配置調(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)在看到啟動四個視頻窗,但是每個視窗的執(zhí)行性能只有 8FPS,總性能大約 32FPS,并不是太理想。

接下來看看怎么優(yōu)化這個配置文件

首先要執(zhí)行模型組合功能功能,必須把“tracker”功能打開,不過可以關(guān)閉追蹤號的顯示,因此保留“enable=1”,將下面的“display-tracking-id=”設(shè)為“0”

由于我們在 Jetson Nano 2GB 版本上進行實驗,需要進行以下的調(diào)整。如果您要在 AGX Xavier 或 Xavier NX 上上執(zhí)行的活,請忽略這個步驟。

修改主檢測器[primary-gie]的模型:配置文件中預(yù)設(shè)的是“Primary_Detector”檢測器,這里得修改成專為 Nano 所訓(xùn)練的版本,這里修改以下幾個地方:

(1) model-engine-file路徑的“Primary_Detector”部分改成“Primary_Detector_Nano”

(2) config-file 的文件改成 config_infer_primary_nano.txt

因為 Jetson Nano(含2GB)并不支持 int8 計算精度,因此還需要做以下修改:

(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í)行,可以看到每個窗口的檢測性能提升到 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 攝像頭實時性能”所提到的,將[primary-gie]下面的“interval=”設(shè)定為“1”,然后再執(zhí)行應(yīng)用時,發(fā)現(xiàn)每個輸入源的識別性能立即提升到 20FPS 左右,總性能已經(jīng)能到 80FPS 左右,比最初的 32FPS 提升大約 2.5倍,這已經(jīng)很接近實時識別的性能。

好了,在Jetson Nano 2GB 上已經(jīng)能達到接近實時推理的性能,是相當好的狀態(tài)。

如果對于顯示輸出的狀態(tài)有些不滿意的話,我們按照下面的步驟去執(zhí)行,將“英文”類別名改成“中文”,并且將邊框變粗、字體放大,就能更輕松看到推理的效果:

1. 所有的顯示名稱,都在 models 目錄下個別模型目錄里的labels.txt,可以將里面的內(nèi)容全部改成中文。

例如

deepstream/samples/models/Secondary_CarMake的“l(fā)abels.txt”內(nèi)容改為“廣汽;奧迪;寶馬;雪佛蘭;克萊斯勒;道奇;福特;通用;本田;現(xiàn)代;英菲尼迪;吉普;起亞;雷克薩斯;馬自達;奔馳;日產(chǎn);速霸路;豐田;大眾”,其他的就比照辦理。

注意:這個順序不能改變!

2. 邊框?qū)挾龋盒薷模踥sd]下面的“board-width”值,推薦 2~4 比較合適;

3. 字體大?。盒薷模踥sd]下面的“texe-size”值,推薦 15~18 比較合適;

4. 其他:請自行設(shè)定

如何?這樣的效果與性能就是在 Jetson Nano 2GB 實現(xiàn)的!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128152

原文標題:NVIDIA Jetson Nano 2GB 系列文章(31):DeepStream 多模型組合檢測-1

文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MSP430的模擬組合實現(xiàn)了真正的單芯片脈搏血氧儀設(shè)計

    電子發(fā)燒友網(wǎng)站提供《MSP430的模擬組合實現(xiàn)了真正的單芯片脈搏血氧儀設(shè)計.pdf》資料免費下載
    發(fā)表于 09-14 10:48 ?0次下載
    MSP430的模擬<b class='flag-5'>組合</b><b class='flag-5'>實現(xiàn)</b>了真正的單芯片脈搏血氧儀設(shè)計

    組合邏輯電路設(shè)計時應(yīng)遵循什么原則

    一、引言 組合邏輯電路是數(shù)字電路中的一種基本類型,它由邏輯門、觸發(fā)器等基本元件組成,通過邏輯門的組合實現(xiàn)特定的邏輯功能。組合邏輯電路廣泛應(yīng)用于計算機、通信、控制等領(lǐng)域。在設(shè)計
    的頭像 發(fā)表于 08-11 11:26 ?380次閱讀

    組合邏輯電路的結(jié)構(gòu)特點是什么?

    組合邏輯電路是一種基本的數(shù)字電路,它由邏輯門組成,用于實現(xiàn)各種邏輯功能。組合邏輯電路的結(jié)構(gòu)特點主要包括以下幾個方面: 無記憶功能 :組合邏輯電路的輸出僅取決于當前的輸入狀態(tài),與過去的狀
    的頭像 發(fā)表于 08-11 11:14 ?411次閱讀

    組合邏輯控制器是什么設(shè)備

    組合邏輯控制器(Combinatorial Logic Controller,簡稱CLC)是一種用于控制和管理復(fù)雜系統(tǒng)或設(shè)備的電子設(shè)備。它通常由多個邏輯門、觸發(fā)器和其他邏輯元件組成,能夠實現(xiàn)各種復(fù)雜
    的頭像 發(fā)表于 06-30 10:29 ?325次閱讀

    組合邏輯控制器的基本概念、實現(xiàn)原理及設(shè)計方法

    組合邏輯控制器(Combinatorial Logic Controller)是一種在數(shù)字電路中實現(xiàn)邏輯功能的設(shè)備,它根據(jù)輸入信號的當前狀態(tài)來產(chǎn)生輸出信號,而不考慮輸入信號的歷史狀態(tài)。組合邏輯控制器
    的頭像 發(fā)表于 06-30 10:26 ?612次閱讀

    組合邏輯控制器的工作原理是什么

    基本概念、設(shè)計方法、實現(xiàn)技術(shù)以及應(yīng)用領(lǐng)域。 組合邏輯控制器的基本概念 1.1 組合邏輯的定義 組合邏輯是一種數(shù)字電路,其輸出僅取決于當前的輸入值,而與輸入信號的歷史無關(guān)。這種邏輯電路的
    的頭像 發(fā)表于 06-30 10:15 ?360次閱讀

    組合邏輯控制器是用什么實現(xiàn)

    組合邏輯控制器是一種用于控制和管理復(fù)雜系統(tǒng)中各個組件之間交互的邏輯設(shè)備。它可以應(yīng)用于各種領(lǐng)域,如計算機科學(xué)、通信、自動化控制等。在這篇文章中,我們將詳細探討組合邏輯控制器的實現(xiàn)方法、原理和應(yīng)用。 一
    的頭像 發(fā)表于 06-30 10:11 ?347次閱讀

    NVIDIA發(fā)布DeepStream 7.0,助力下一代視覺AI開發(fā)

    NVIDIA DeepStream 是一款功能強大的 SDK,能夠提供用于構(gòu)建端到端視覺 AI 管線的 GPU 加速構(gòu)建模塊。
    的頭像 發(fā)表于 05-23 10:09 ?439次閱讀
    NVIDIA發(fā)布<b class='flag-5'>DeepStream</b> 7.0,助力下一代視覺AI開發(fā)

    是否有命令組合可以實現(xiàn)SD卡不擦除寫入?

    常規(guī)的串行FLASH有帶擦除的寫命令和不擦除的寫命令,SD相對來說也是FLASH,但看命令沒有不擦除的寫命令; 疑問,是否有命令組合可以實現(xiàn)SD卡不擦除寫入?
    發(fā)表于 05-09 06:48

    光纖傳輸信息時的工作過程

    光電轉(zhuǎn)換工作過程如下: 變頻器主控芯片將驅(qū)動IGBT開關(guān)的信息由電信號信號轉(zhuǎn)換成光信號,請問這個轉(zhuǎn)換過程是通過什么電路完成的,而且傳輸驅(qū)動信息時是同一相的上下橋臂同時發(fā)送的,在發(fā)送端是怎么組合驅(qū)動
    發(fā)表于 02-03 11:33

    python數(shù)字排列組合需要縮進嗎

    在Python中,數(shù)字排列組合實現(xiàn)通常需要使用循環(huán)和遞歸來生成所有可能的組合。對于代碼塊中的循環(huán)和遞歸部分,縮進是必需的,它用于標識這些語句屬于循環(huán)或遞歸塊的一部分。 下面是一個示例,演示了如
    的頭像 發(fā)表于 11-29 16:40 ?315次閱讀

    python打印出abcd的所有排列組合

    如何使用Python生成"abcd"的所有排列組合,我們首先需要了解排列和組合的概念。排列是一組元素的有序排列,而組合是一組元素的無序選擇。 為了打印出"abcd"的所有排列組合,我們
    的頭像 發(fā)表于 11-29 16:29 ?1020次閱讀

    SDCardUtils封裝類應(yīng)用:設(shè)備信息獲取實現(xiàn)方法

    一、 獲取手機基本信息(廠商、型號等參數(shù)) 二、設(shè)備信息獲取實現(xiàn)圖 三、 獲取手機設(shè)備 寬、高、IMEI 信息 四、 獲取手機廠商名、產(chǎn)品名、手機品牌、手機型號、主板名、設(shè)備名
    的頭像 發(fā)表于 11-13 09:40 ?585次閱讀
    SDCardUtils封裝類應(yīng)用:設(shè)備<b class='flag-5'>信息</b>獲取<b class='flag-5'>實現(xiàn)</b>方法

    請問如何使ardunio實現(xiàn)圖像信息的即時采集與轉(zhuǎn)換?

    應(yīng)該采用哪種攝像頭與顯示屏與ardunio搭配,是指實現(xiàn)圖像信息的即時傳輸?
    發(fā)表于 10-24 06:11

    組合模式應(yīng)該怎么用

    相信樹形結(jié)構(gòu)大家都知道,但是是否知道用到了什么設(shè)計模式嗎? 1、什么是組合模式? Compose objects into tree structures to represent
    的頭像 發(fā)表于 10-09 10:37 ?342次閱讀
    <b class='flag-5'>組合</b>模式應(yīng)該怎么用