在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

NVIDIA多網路模型合成功能

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 作者:NVIDIA英偉達 ? 2021-10-22 09:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多人驚艷于 deepstream-app 里面那個可以同時檢測到車子的顏色、品牌、種類的實驗,這的確是個非常亮眼的應用,在開發包范例中的 deepstream-test2 就是這項功能的范例代碼,同樣是以 test1 為基礎,維持相同的視頻文件輸入與顯示器輸出的部分,只修改“推理計算(nvinfer)”的部分。 本文的內容就是開始涉及到DeepStream 推理計算的組合應用,在 test1 系列中使用單一的 4 類檢測器是非常簡單的,當然這種使用的比例會是最高的,因為大部分的應用都是針對性,包括口罩識別、人/車/路標識別、水果識別等等。 但是有很多特殊的應用并非單一網絡模型所能應付的,例如前面提過的車牌識別,還有一些醫療成像的腫瘤識別、商業用途的表情識別、年齡識別等,都需要在特定標的物里面再去找進一步的特征。 就像車牌識別必須先找到“車”這個標的物,再從車里面去找出“車牌”的位置,再將車牌里的字符一一識別出來;腫瘤分析必須先找到特定“器官”,然后在器官范圍內去比對腫瘤塊;表情識別需要先找到“人臉”,再從人臉的特征去區分表情。以上描述的用途,是需要多種神經網絡共同協作,來完成一完整的識別任務。 常規的處理思路會使用多次解析的方式來處理,如果面對圖像的時候還算是單純的,但面對視頻數據的時候,這種多次解析的方法就很難滿足“實時性”的要求,這就是一個需要突破的難點。 面對這樣的困擾,DeepStream 提供這種多網絡合成的方式,能非常有效地在一次解析的過程中完成所有的推理計算,這樣就能確保執行的效率,下面就要告訴大家 DeepStream 是如何做到這些工作的。
  • deepstream-test2 項目重點解說

  • 文件路徑:

    /sources/deepstream_python_apps/apps的deepstream-test2/deepstream_test_2.py

  • 范例功能:在deepstream-test1的檢測器基層上,添加三個分類器

  • 插件流:filesrc-> h264parser -> nvh264decoder -> nvstreammux-> nvinfer(pgie->tracker->sgie1->sgei2->sgie3)->nvvideoconvert ->nvdsosd->nvegltransform -> nveglglessink

  • 上面“粗體”部分是改動的重點

deepstream-test2 代碼還是以 deepstream-test1 為基礎,如果不熟悉的請先看看本系列前面的文章。這里維持 test1 的視頻文件輸入與顯示器輸出方式不變,在“Car/Person/Bicycle/RoadSign”四種物件分類的推理識別基礎上,為“Car”物件再添加“顏色/品牌/車型”這三種分類屬性(如下圖),因此總體來說就需要“一個檢測器(detector”與“三個分類器(classifier”來共同完成這項任務。

可能有人會問,那是否能在“Person”或“RoadSign”上面增加分類器?例如將前者再添加“男/女”、“老/少”分類,對后者再添加“限制類”、“指示類”、“警告類”的屬性呢?這當然是可以的,只要你能找到合適的模型文件來搭配,或者得自己重新收集數據集進行模型訓練,然后再提供對應的配置文件。 與 test1 范例中所不同的地方,在 test2 范例在“pgie”這個“nvinfer”元素之外,又添加“sgie1/sgie2/sgie3”這3個推理計算的元素,總共四個推理器的內容如下: 這個過程有個比較特殊的地方,就是在”主推理器(這里是個檢測器)”與“次推理器(這里是三個分類器)”之間,需要透過“追蹤器(tracker)”進行串聯,這里有個很重要的原因,因為次推理器是以主推理器的“范圍圖像”去進行分類推理,包括顏色、品牌、車型等等,而追蹤器可以協助記錄主推理器所找到的“圖像范圍”,將這個局部的數據傳送給次推理器去進行計算,這樣才能建立好“主次”之間的關聯。 因此我們會發現,只要需要進行這種“主次結合”的方式,必定需要調用“追蹤器”這個元件來扮演角色,這個在 deepstream-app 里面也是存在的,但是這里會延伸出另一個問題,就是調用追蹤器是會影響性能的,在 DeepStream 追蹤器里面,目前支持 NVDCF、KLT 與 IOU 三種算法,其中 NVDCF 算法的性能最差,KLT 在準確性與性能的綜合表現較好,因此大部分的范例中都選擇使用 KLT 追蹤器。 附帶說明的一點,就是追蹤器插件接受來自上游組件的 NV12-或 RGBA 格式的幀數據,并將輸入緩沖區轉換為低層庫所需格式的緩沖區,再將寬度和高度轉換為跟蹤器要求的寬度和高度,這需要將輸入幀緩沖區轉換為底層庫請求的格式,例如 KLT 使用 Luma 專用格式、NvDCF 使用 NV12 或 RGBA 格式,IOU 則不需要緩沖區。

上圖是 nvtracker 插件的工作示意圖,詳細的內容請自行參考開發手冊:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvtracker.html 好了,前面已經將整體原理說明的差不多,接下來就看看 test2 與 test1 的 Python 代碼中的差異部分,這樣就更能掌握這部分的實際運作內涵。
  • deepstream-test2 代碼修改部分

如同前面所提到的,這個代碼主要修改的部分,就是在 pgie 與 nvvideoconvert 之間,添加 tracker 與 sgie 1~3 這四個元件,其他修改的部分幾乎都在處理 tracker 的部分,包括一開始需要為追蹤器是否保存追蹤數據的。

# 42行:給定這個變量設定是否保存追蹤的數據past_tracking_meta=[0]
# 217至238行:在 pgie與 nvvidconv 之間,添加 tracker + sgie1~3 pgie = Gst.ElementFactory.make("nvinfer", "primary-inference")tracker = Gst.ElementFactory.make("nvtracker", "tracker")sgie1 = Gst.ElementFactory.make("nvinfer", "secondary1-nvinference-engine")sgie2 = Gst.ElementFactory.make("nvinfer", "secondary2-nvinference-engine")sgie3 = Gst.ElementFactory.make("nvinfer", "secondary3-nvinference-engine")nvvidconv = Gst.ElementFactory.make("nvvideoconvert", "convertor")
# 264~268行:設定推理器的配置文件pgie.set_property('config-file-path', "dstest2_pgie_config.txt")sgie1.set_property('config-file-path', "dstest2_sgie1_config.txt")sgie2.set_property('config-file-path', "dstest2_sgie2_config.txt")sgie3.set_property('config-file-path', "dstest2_sgie3_config.txt")
#270~296行:設置追蹤器的各項參數,從配置文件中獲取對應的參數config = configparser.ConfigParser()config.read('dstest2_tracker_config.txt')config.sections()
# 從dstest2_tracker_config.txt讀入,為追蹤器逐項設置變量for key in config['tracker']:      if key == 'tracker-width' :        tracker_width = config.getint('tracker', key)        tracker.set_property('tracker-width', tracker_width)    if key == 'tracker-height' :        tracker_height = config.getint('tracker', key)        tracker.set_property('tracker-height', tracker_height)    if key == 'gpu-id' :        tracker_gpu_id = config.getint('tracker', key)        tracker.set_property('gpu_id', tracker_gpu_id)    if key == 'll-lib-file' :        tracker_ll_lib_file = config.get('tracker', key)        tracker.set_property('ll-lib-file', tracker_ll_lib_file)    if key == 'll-config-file' :        tracker_ll_config_file = config.get('tracker', key)        tracker.set_property('ll-config-file', tracker_ll_config_file)    if key == 'enable-batch-process' :        tracker_enable_batch_process = config.getint('tracker', key)        tracker.set_property('enable_batch_process', tracker_enable_batch_process)    if key == 'enable-past-frame' :        tracker_enable_past_frame = config.getint('tracker', key)tracker.set_property('enable_past_frame',tracker_enable_past_frame)
以上就是 test2 與 test1 在創建元件與設置參數部分的一些代碼修改的部分,至于管道創建與連接的部分,自己就能看懂,這里就不浪費篇幅去說明。 最后還有一部分,就是在函數 osd_sink_pad_buffer_probe 里面,第 126~164 行有一代碼,不過下面注釋內容表明 l_user.data 與 user_meta.user_meta_data 在這里并不做處理,我們也試過將“if(past_tracking_meta[0]==1):”下面整段代碼全部刪除,并不影響 test2 范例的執行與輸出結果。
  • 修改設定文件與執行

最后在執行之前,看一下 5 個配置文件的內容,發現原本的設定以“INT8”精度模式進行推理,可以看到文件里的“network-mode”都設置為“1”,如果在 Jetson Nano(含 2GB)上執行時,建議將這些模式都改成“FP16”模式,除了將所有“network-mode”都改成“2”之外,再把每個加速引擎的“xxx_int8.engine”改成“xxx_fp16.engine”。

雖然不改變這個設定值也能正常工作,差別就在于如果要重復測試的時候,就得花費更多時間去重新生成“xxx_fp16.engine”加速引擎,如果改成“fp16”模式的話,就只需要生成一次就行,第二次再執行的時候就會非常快速啟動。

好了,一切就緒之后,就可以體驗一下這個多模型合成功能的效果,請執行以下指令:

python3 deepstream_test_2.py ../../../../samples/streams/sample_720p.h264

在屏幕上方會出現該幀的檢測結果,不過這里只顯示“Vehicle”與“Person”兩個類別。圖片中也能清楚看到每個物件都有個“追蹤編號”,在 Car 物件上也有“顏色”、“廠牌”、“車型”等信息。 當我們回頭再仔細看看這個范例的代碼,會發現其實大部分要做的事情,就是把插件元件做合理的安排,然后就是“定義”“創建”“連接”,就幾乎完成大部分的工作了。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴

原文標題:NVIDIA Jetson Nano 2GB 系列文章(37):多網路模型合成功能

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    歐洲借助NVIDIA Nemotron優化主權大語言模型

    NVIDIA 正攜手歐洲和中東的模型構建商與云提供商,共同優化主權大語言模型 (LLM),加速該地區各行業采用企業級 AI。
    的頭像 發表于 06-12 15:42 ?257次閱讀

    使用NVIDIA Triton和TensorRT-LLM部署TTS應用的最佳實踐

    針對基于 Diffusion 和 LLM 類別的 TTS 模型NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張 NVIDIA Ada Lovelace
    的頭像 發表于 06-12 15:37 ?443次閱讀
    使用<b class='flag-5'>NVIDIA</b> Triton和TensorRT-LLM部署TTS應用的最佳實踐

    NVIDIA GTC巴黎亮點:全新Cosmos Predict-2世界基礎模型與CARLA集成加速智能汽車訓練

    。這種向使用大模型的過渡大大增加了對用于訓練、測試和驗證的高質量、基于物理學傳感器數據的需求。 為加速下一代輔助駕駛架構的開發,NVIDIA 發布了?NVIDIA Cosmos Predict-2,這是一種全新的世界基礎
    的頭像 發表于 06-12 10:00 ?443次閱讀

    英偉達GTC2025亮點 NVIDIA推出Cosmos世界基礎模型和物理AI數據工具的重大更新

    模型可實現物理 AI 的預測、可控世界生成和推理。 兩款全新Blueprint為機器人和自動駕駛汽車后訓練提供海量物理 AI 合成數據生成技術。 1X、Agility Robotics
    的頭像 發表于 03-20 19:01 ?834次閱讀

    可以在OpenVINO?工具套件的視覺處理單元上推斷語音合成模型嗎?

    無法確定是否可以在 VPU 上推斷語音合成模型
    發表于 03-06 08:29

    NVIDIA推出Isaac GR00T Blueprint

    用于合成數據的 Isaac GR00T 工作流以及 NVIDIA Cosmos 世界基礎模型,為通用人形機器人的開發注入強大動力。
    的頭像 發表于 01-09 11:13 ?726次閱讀

    NVIDIA推出開放式Llama Nemotron系列模型

    作為 NVIDIA NIM 微服務,開放式 Llama Nemotron 大語言模型和 Cosmos Nemotron 視覺語言模型可在任何加速系統上為 AI 智能體提供強效助力。
    的頭像 發表于 01-09 11:11 ?679次閱讀

    NVIDIA推出面向RTX AI PC的AI基礎模型

    NVIDIA 今日發布能在 NVIDIA RTX AI PC 本地運行的基礎模型,為數字人、內容創作、生產力和開發提供強大助力。
    的頭像 發表于 01-08 11:01 ?504次閱讀

    NVIDIA Cosmos世界基礎模型平臺發布

    NVIDIA 宣布推出NVIDIA Cosmos,該平臺由先進的生成式世界基礎模型、高級 tokenizer、護欄和加速視頻處理管線組成,將推動自動駕駛汽車(AV)和機器人等物理 AI 系統的發展。
    的頭像 發表于 01-08 10:39 ?515次閱讀

    NVIDIA預測2025年AI行業發展

    NVIDIA 加速計算、數據科學和研究領域專家預測,模態模型將推動行業創新和效率提升。
    的頭像 發表于 12-18 13:49 ?1142次閱讀

    NVIDIA推出全新生成式AI模型Fugatto

    NVIDIA 開發了一個全新的生成式 AI 模型。利用輸入的文本和音頻,該模型可以創作出包含任意的音樂、人聲和聲音組合的作品。
    的頭像 發表于 11-27 11:29 ?787次閱讀

    NVIDIA助力Figure發布新一代對話式人形機器人

    該初創公司展示了新型機器人,其使用 NVIDIA Isaac Sim 處理合成數據,并使用基于 NVIDIA 加速計算進行實時推理訓練的生成式 AI 模型
    的頭像 發表于 11-04 10:10 ?656次閱讀

    NVIDIA助力提供多樣、靈活的模型選擇

    在本案例中,Dify 以模型中立以及開源生態的優勢,為廣大 AI 創新者提供豐富的模型選擇。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服務器產品,為
    的頭像 發表于 09-09 09:19 ?891次閱讀

    NVIDIA Nemotron-4 340B模型幫助開發者生成合成訓練數據

    Nemotron-4 340B 是針對 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優化的模型系列,該系列包含最先進的指導和獎勵模型,以及一個用于生成式 AI
    的頭像 發表于 09-06 14:59 ?684次閱讀
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B<b class='flag-5'>模型</b>幫助開發者生成<b class='flag-5'>合成</b>訓練數據

    NVIDIA AI Foundry 為全球企業打造自定義 Llama 3.1 生成式 AI 模型

    Foundry 提供從數據策管、合成數據生成、微調、檢索、防護到評估的全方位生成式 AI 模型服務,以便部署自定義 Llama 3.1 NVIDIA NIM 微服務和新的 NVIDIA
    發表于 07-24 09:39 ?899次閱讀
    <b class='flag-5'>NVIDIA</b> AI Foundry 為全球企業打造自定義 Llama 3.1 生成式 AI <b class='flag-5'>模型</b>
    主站蜘蛛池模板: 美女毛片免费看 | 免费看污视频软件 | 黄色小视频免费 | 免费一看一级毛片 | 91在线电影 | 精品国产成人三级在线观看 | 国产成人综合日韩精品婷婷九月 | 黄色大片视频 | 韩国三级hd | 久久看片网 | 理论片免费午夜 | 一级国产特黄aa大片 | 亚色综合| www在线观看 | 欧美videosex性欧美成人 | 亚洲成a人片在线观看导航 亚洲成a人片在线观看尤物 | 午夜精品视频在线观看美女 | 人人射人人草 | 中文字幕在线观看第一页 | 亚洲人成电影在线播放 | 嫩草网| 最色网在线观看 | 欧美五月婷婷 | 日本免费一区二区在线观看 | 免费啪| 高h上错人1v1 | 天天操天天摸天天碰 | 亚洲国产精品国产自在在线 | 日韩一级片在线观看 | 99久久免费精品高清特色大片 | 夜夜天天干 | 在线视频午夜 | aaaa日本| 色妇女影院 | 国产精品爱久久久久久久三级 | 1024 在线观看视频免费 | 天天色天天看 | a网站免费 | 色综合天天综合 | www.丁香.com | 国产三级日本三级美三级 |