一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

使用NVIDIA DeepStream構(gòu)建可管理的IVA管道

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:  雖然直觀地看 ? 2022-04-10 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

無論是希望平衡產(chǎn)品分布和優(yōu)化交通的倉庫,工廠裝配線檢查,還是醫(yī)院管理,確保員工和護(hù)理人員在護(hù)理患者時(shí)使用個(gè)人防護(hù)設(shè)備( PPE ),高級(jí)智能視頻分析( IVA )都非常有用。

在基礎(chǔ)層,全球各地的城市、體育場館、工廠和醫(yī)院部署了數(shù)十億臺(tái)攝像頭和物聯(lián)網(wǎng)傳感器,每天產(chǎn)生數(shù) PB 的數(shù)據(jù)。隨著數(shù)據(jù)爆炸,使用人工智能來簡化和執(zhí)行有效的 IVA 是非常必要的。

許多公司和開發(fā)人員都在努力構(gòu)建可管理的 IVA 管道,因?yàn)檫@些工作需要人工智能專業(yè)知識(shí)、高效的硬件、可靠的軟件和廣泛的資源來大規(guī)模部署。 NVIDIA 構(gòu)建了 DeepStream 軟件開發(fā)工具包 來消除這些障礙,并使每個(gè)人都能夠輕松高效地創(chuàng)建基于人工智能的 GPU 加速應(yīng)用程序,用于視頻分析。

DeepStream SDK 是一個(gè)可擴(kuò)展的框架,用于為 edge 構(gòu)建高性能、可管理的 IVA 應(yīng)用程序。 DeepStream 使您能夠在從智能城市和建筑到零售、制造和醫(yī)療保健等各個(gè)行業(yè)構(gòu)建人工智能應(yīng)用程序。

DeepStream 運(yùn)行時(shí)系統(tǒng)通過流水線實(shí)現(xiàn)深度學(xué)習(xí)推理、圖像和傳感器處理,并在流式應(yīng)用程序中將見解發(fā)送到云端。對(duì)于大規(guī)模部署,您可以使用容器構(gòu)建云原生的、深流應(yīng)用程序,并使用 Kubernetes 平臺(tái)來協(xié)調(diào)這些應(yīng)用程序。在邊緣部署時(shí),應(yīng)用程序可以在物聯(lián)網(wǎng)設(shè)備和云標(biāo)準(zhǔn)消息代理(如 Kafka 和 MQTT )之間進(jìn)行通信,以進(jìn)行大規(guī)模、廣域部署。

poYBAGJSOLKATJZoAACjK666QGs330.png

圖 1 。 DeepStream –邊緣到云 .

DeepStream 應(yīng)用程序可以運(yùn)行在由 NVIDIA Jetson 支持的邊緣設(shè)備上,也可以運(yùn)行在由 NVIDIA T4s 支持的本地服務(wù)器上。來自邊緣的數(shù)據(jù)可以被發(fā)送到云端進(jìn)行更高層次的分析和可視化。

本文的其余部分將深入探討 deepstream5 . 0 發(fā)布的關(guān)鍵特性。

DeepStream 5 . 0 功能

隨著 Deepstream5 . 0 , NVIDIA 使得在邊緣構(gòu)建和部署基于人工智能的 IVA 應(yīng)用變得比以往任何時(shí)候都容易。以下是新功能:

支持 NVIDIA Triton ?聲波風(fēng)廓線儀推理服務(wù)器

Python

應(yīng)用程序的遠(yuǎn)程管理和控制

安全通信

基于 Mask R-CNN 的實(shí)例分割

Triton 推斷服務(wù)器支持

創(chuàng)建人工智能是一個(gè)迭代的實(shí)驗(yàn)過程,在這個(gè)過程中,數(shù)據(jù)科學(xué)家花費(fèi)大量時(shí)間對(duì)不同的架構(gòu)進(jìn)行實(shí)驗(yàn)和原型設(shè)計(jì)。在這個(gè)階段,他們更關(guān)注如何最好地解決問題,而不是人工智能模型的效率。他們希望花費(fèi)更多的時(shí)間來獲得用例的高精度,而不是花在優(yōu)化推理的周期上。他們希望在真實(shí)場景中快速建立原型,并查看模型的性能。

過去,使用 DeepStream 執(zhí)行視頻分析需要將模型轉(zhuǎn)換為 NVIDIA TensorRT ,一個(gè)推理運(yùn)行時(shí)。從 DeepStream 5 . 0 開始,您可以選擇在培訓(xùn)框架中以本機(jī)方式運(yùn)行模型。這使您能夠快速原型化端到端系統(tǒng)。。

DeepStream 5 . 0 直接從應(yīng)用程序集成 Triton ?聲波風(fēng)廓線儀服務(wù)器。 Triton Server 為您提供了在 DeepStream 中使用任何深度學(xué)習(xí)框架的靈活性。推理服務(wù)通過可用的 API 從 DeepStream 插件( Gst-nvinferserver )本機(jī)集成。插件接收 NV12 / RGBA 緩沖區(qū)并將其發(fā)送到較低級(jí)別的庫。該庫對(duì)圖像進(jìn)行預(yù)處理并轉(zhuǎn)換為模型可接受的所需張量大小。張量通過 CUDA 共享內(nèi)存發(fā)送到 Triton ?聲波風(fēng)廓線儀服務(wù)器庫。

推斷后, Triton Server 將輸出張量返回到共享庫,在那里進(jìn)行后期處理以生成元數(shù)據(jù)。此元數(shù)據(jù)將附加回現(xiàn)有元數(shù)據(jù)并發(fā)送到下游。通過集成推理服務(wù)器,您可以使用 DeepStream 中的所有構(gòu)建塊來構(gòu)建一個(gè)高效的 IVA 管道,并在您的培訓(xùn)框架上執(zhí)行本機(jī)推理。

pYYBAGJSOLiAI1MwAACvsRzZwi4365.png

圖 2 。 DeepStream 5 . 0 中的 Triton 服務(wù)器推斷插件。

TensorRT 仍然由 DeepStream 提供本地支持。如果您正在尋找最高的推理吞吐量,或者資源受限,無法部署完整的框架和大型模型,那么這是首選的路徑。如果您正在尋找靈活性,并可以犧牲一些性能換取努力, Triton ?聲波風(fēng)廓線儀服務(wù)器是最佳途徑。

下表總結(jié)了這兩種方法的優(yōu)缺點(diǎn)。

表 1 。 TensorRT 和 Triton ?聲波風(fēng)廓線儀服務(wù)器的權(quán)衡。

以下是使用 DeepStream 的 Triton ?聲波風(fēng)廓線儀服務(wù)器的主要功能:

支持以下模型格式:

Jetson 、 TensorFlow GraphDef 和 SavedModel ,以及 TensorFlow 和 T4 上的 TensorFlow – TensorRT 模型

ONNX , PyTorch 和 Caffe2 NetDef 僅在 T4 上

多個(gè)模型(或同一模型的多個(gè)實(shí)例)可以在同一個(gè) GPU 上同時(shí)運(yùn)行。

為了開始使用帶有 DeepStream 的 Triton 服務(wù)器,我們提供了幾個(gè)示例配置文件和一個(gè)用于檢索開放源代碼模型的腳本。有運(yùn)行 TensorRT 和 TensorFlow 模型的例子。對(duì)于本文,我們將 DeepStream 安裝目錄稱為 $DEEPSTREAM_DIR 。實(shí)際的安裝目錄取決于您使用的是裸機(jī)版本還是容器。

如果您正在 x86 平臺(tái)上的 NVIDIA GPU 上運(yùn)行,請(qǐng)從 NVIDIA NGC 中拉出 nvcr.io/nvidia/deepstream:5.0-20.04-triton 容器。 Triton Server with DeepStream on x86 僅適用于 -triton 容器。如果您在 Jetson 上運(yùn)行, Triton Server –共享庫作為 DeepStream 的一部分預(yù)裝。這可用于任何 Jetson 容器。

轉(zhuǎn)到/ samples 目錄:

cd $DEEPSTREAM_DIR/deepstream-5.0/samples

在這個(gè)目錄中執(zhí)行 bash 腳本。這個(gè)腳本下載所有必需的開源模型,并將提供的 Caffe 和 UFF 模型轉(zhuǎn)換為一個(gè) TensorRT 引擎文件。此步驟將所有模型轉(zhuǎn)換為引擎文件,因此可能需要幾分鐘或更長時(shí)間。

生成的引擎文件的最大批處理大小在 bash 腳本中指定。要修改默認(rèn)批處理大小,必須修改此腳本。這也下載了 TensorFlowssd-inception_v2模型。

./prepare_ds_trtis_model_repo.sh

模型在/trtis_model_repo目錄中生成或復(fù)制。下面是如何運(yùn)行ssd-inception_v2模型。首先進(jìn)入/trtis_model_repo/ssd_inception_v2_coco_2018_01_28目錄并找到config.pbtxt文件。如果 bash 腳本成功運(yùn)行,您還應(yīng)該看到1/model.graphdef。這是 TensorFlow 冰凍石墨。

下面是模型回購中提供的示例config.pbtxt文件。首先,使用platform關(guān)鍵字指定深度學(xué)習(xí)框架??捎眠x項(xiàng)如下:

  • tensorrt_plan
  • tensorflow_graphdef
  • tensorflow_savedmodel
  • caffe2_netdef
  • onnxruntime_onnx
  • pytorch_libtorch
  • custom

接下來,指定輸入維度、數(shù)據(jù)類型和數(shù)據(jù)格式。然后,指定所有輸出張量的所有輸出維度和數(shù)據(jù)類型。有關(guān)配置文件中所有選項(xiàng)的詳細(xì)信息,請(qǐng)參閱模型配置。

name: "ssd_inception_v2_coco_2018_01_28"
platform: "tensorflow_graphdef"
max_batch_size: 128
input [
  {
    name: "image_tensor"
    data_type: TYPE_UINT8
    format: FORMAT_NHWC
    dims: [ 300, 300, 3 ]
  }
]
output [
  {
    name: "detection_boxes"
    data_type: TYPE_FP32
    dims: [ 100, 4]
    reshape { shape: [100,4] }
  },
  {
    name: "detection_classes"
    data_type: TYPE_FP32
    dims: [ 100 ]
  },
  {
    name: "detection_scores"
    data_type: TYPE_FP32
    dims: [ 100 ]
  },
  {
    name: "num_detections"
    data_type: TYPE_FP32
    dims: [ 1 ]
    reshape { shape: [] }
  }
]

接下來,使用ssd_inception_v2模型運(yùn)行 deepstream 應(yīng)用程序。 Triton ?聲波風(fēng)廓線儀服務(wù)器的示例配置文件在/configs/deepstream-app-trtis中。運(yùn)行deepstream-app通常需要兩個(gè)或多個(gè)配置文件。一個(gè)是頂層配置文件,它為整個(gè)管道設(shè)置參數(shù),其他文件是用于推理的配置文件。

為了便于使用和簡化,每個(gè)推理引擎都需要一個(gè)唯一的配置文件。如果級(jí)聯(lián)多個(gè)推斷,則需要多個(gè)配置文件。對(duì)于本例,請(qǐng)使用以下文件:

  • source1_primary_detector.txt
  • config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt
[primary-gie]
enable=1
(0): nvinfer; (1): nvinferserver
plugin-type=1
infer-raw-output-dir=trtis-output
batch-size=1
interval=0
gie-unique-id=1
config-file=config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt

source1_primary_detector.txt文件是頂級(jí)配置文件。如果您使用本機(jī) TensorRT 或 Triton ?聲波風(fēng)廓線儀服務(wù)器進(jìn)行推斷,這是很常見的。在這個(gè)配置文件中,將[primary-gie]下的插件類型更改為1,以使用推理服務(wù)器。

config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt文件用于指定推理選項(xiàng),如預(yù)處理、后處理和模型恢復(fù)。有關(guān)不同選項(xiàng)的更多信息,請(qǐng)參閱NVIDIA DeepStream SDK 快速入門指南NVIDIA DeepStream 插件手冊(cè)。

對(duì)于將張量數(shù)據(jù)后處理到邊界框中,此示例使用名為NvDsInferParseCustomTfSSD的自定義邊界框解析器,如配置文件中的custom_parse_bbox_func鍵指定的那樣。此自定義函數(shù)在以下配置文件的custom_lib部分下指定的庫中編譯。$DEEPSTREAM_DIR/sources/libs/nvdsinfer_customparser/中提供了NvDsInferParseCustomTfSSD的源代碼。

infer_config {
  unique_id: 5
  gpu_ids: [0]
  max_batch_size: 4
  backend {
    trt_is {
      model_name: "ssd_inception_v2_coco_2018_01_28"
      version: -1
      model_repo {
        root: "../../trtis_model_repo"
        log_level: 2
        tf_gpu_memory_fraction: 0.6
        tf_disable_soft_placement: 0
      }
    }
  }
 
  preprocess {
    network_format: IMAGE_FORMAT_RGB
    tensor_order: TENSOR_ORDER_NONE
    maintain_aspect_ratio: 0
    normalize {
      scale_factor: 1.0
      channel_offsets: [0, 0, 0]
    }
  }
 
  postprocess {
    labelfile_path: "../../trtis_model_repo/ssd_inception_v2_coco_2018_01_28/labels.txt"
    detection {
      num_detected_classes: 91
      custom_parse_bbox_func: "NvDsInferParseCustomTfSSD"
      nms {
        confidence_threshold: 0.3
        iou_threshold: 0.4
        topk : 20
      }
    }
  }
 
  extra {
    copy_input_to_host_buffers: false
  }
 
  custom_lib {
    path: "/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_infercustomparser.so"
  }
}
input_control {
  process_mode: PROCESS_MODE_FULL_FRAME
  interval: 0
}

現(xiàn)在,使用以下命令運(yùn)行應(yīng)用程序:

deepstream-app -c source1_primary_detector.txt

一個(gè)彈出窗口應(yīng)該打開,播放視頻樣本,顯示行人、汽車和自行車周圍的邊界框。

應(yīng)用程序需要幾分鐘時(shí)間來構(gòu)建 TensorFlow 圖。如果應(yīng)用程序無法運(yùn)行并返回“ Killed ”,則很可能是系統(tǒng)內(nèi)存不足。檢查系統(tǒng)內(nèi)存使用情況以確認(rèn)問題。如果是內(nèi)存問題,則根據(jù)模型修改config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txtinfer_config下的tf_gpu_memory_fraction參數(shù),或根據(jù)模型修改任何其他nvinferserver配置文件。此參數(shù)為 TF 模型分配每個(gè)進(jìn)程的 GPU 內(nèi)存部分。將其更改為 0 . 4 MIG ht 幫助。

該模型可檢測多達(dá) 91 個(gè)類別,包括各種動(dòng)物、食物和體育器材。有關(guān)可以檢測到的類的更多信息,請(qǐng)參閱trtis-model-repo/ssd_inception_v2_coco_2018_01_28/labels.txt文件。

嘗試用其他視頻運(yùn)行這個(gè)應(yīng)用程序,看看模型是否可以檢測到其他類。要將 Triton Server 與您的自定義 DeepStream 管道一起使用,請(qǐng)查看$DEEPSTREAM_DIR/sources/apps/sample-apps/deepstream-appdeepstream-app的源代碼。

Python 包

Python 易于使用,在創(chuàng)建 AI 模型時(shí)被數(shù)據(jù)科學(xué)家和深度學(xué)習(xí)專家廣泛采用。 NVIDIA 引入了 Python 綁定來幫助您使用 Python 構(gòu)建高性能的 AI 應(yīng)用程序。 DeepStream 管道可以使用 Gst Python 構(gòu)建, GStreamer 框架的 Python 綁定。

圖 3 。 Python 綁定堆棧。

DeepStream Python 應(yīng)用程序使用 Gst Python API 操作構(gòu)造管道,并使用探測函數(shù)訪問管道中各個(gè)點(diǎn)的數(shù)據(jù)。這些數(shù)據(jù)類型都是用本機(jī) C 編寫的,需要通過 PyBindings 或 NumPy 使用一個(gè)填充層才能從 Python 應(yīng)用程序訪問它們。張量數(shù)據(jù)是經(jīng)過推斷得出的原始張量輸出。如果您試圖檢測一個(gè)對(duì)象,這個(gè)張量數(shù)據(jù)需要通過解析和聚類算法進(jìn)行后處理,以在檢測到的對(duì)象周圍創(chuàng)建邊界框。

利用張量數(shù)據(jù)的可用性,您可以在 Python 應(yīng)用程序中創(chuàng)建解析算法。這一點(diǎn)很重要,因?yàn)閺埩繑?shù)據(jù)的大小和維度以及解析數(shù)據(jù)所需的解析和聚類算法都取決于人工智能模型的類型。如果你想為 DeepStream 帶來新的模型或新的后處理技術(shù),你會(huì)發(fā)現(xiàn)這非常有用。

另一個(gè)可以訪問的有用數(shù)據(jù)源是圖像數(shù)據(jù)。這可以用來捕捉異常,在那里人工智能模型拿起一個(gè)對(duì)象,你想保存圖像以備將來參考?,F(xiàn)在應(yīng)用程序支持訪問此幀。

DeepStream 元數(shù)據(jù)的 Python 綁定以及示例應(yīng)用程序一起可用,以演示它們的使用情況。 Python 示例應(yīng)用程序可以從 GitHub repo NVIDIA-AI-IOT/deepstream_python_apps 下載。 Python 綁定模塊現(xiàn)在作為 DeepStreamSDK 包的一部分提供。

遠(yuǎn)程管理和控制應(yīng)用程序

將元數(shù)據(jù)從邊緣發(fā)送到云是有用的,但是能夠接收和控制從云到邊緣的消息也很重要。

DeepStream 5 。 0 現(xiàn)在支持雙向通信來發(fā)送和接收云到設(shè)備的消息。這對(duì)于各種用例尤其重要,例如觸發(fā)應(yīng)用程序以記錄重要事件、更改操作參數(shù)和應(yīng)用程序配置、空中傳送( OTA )更新或請(qǐng)求系統(tǒng)日志和其他重要信息。

圖 4 。雙向消息傳遞體系結(jié)構(gòu)。

DeepStream 應(yīng)用程序可以訂閱 ApacheKafka 主題來接收來自云端的消息。設(shè)備到云消息傳遞目前通過 Gstnvmsgbroker ( MSGBROKER )插件進(jìn)行。默認(rèn)情況下, Gstnvmsgbroker 插件使用適當(dāng)?shù)膮f(xié)議調(diào)用較低級(jí)別的適配器庫。您可以在 Kafka 、 AMQP 、 MQTT 或 Azure IoT 之間進(jìn)行選擇,甚至可以創(chuàng)建自定義適配器。 DeepStream 5 。 0 引入了一個(gè)新的低級(jí) msgbroker 庫,為跨各種協(xié)議的雙向消息傳遞提供了一個(gè)統(tǒng)一的接口。 Gstnvmsgbroker 插件可以選擇與這個(gè)新庫接口,而不是直接調(diào)用協(xié)議適配器庫,這是通過配置選項(xiàng)控制的。

對(duì)于云到邊緣消息傳遞, DeepStream 5 。 0 中支持的協(xié)議是 Kafka ,它使用新的低層 msgbroker 庫,直接與 DeepStream 應(yīng)用程序交互。

DeepStream 5 。 0 支持多個(gè)其他物聯(lián)網(wǎng)功能,可與雙向消息傳遞結(jié)合使用。 DeepStream 現(xiàn)在提供了一個(gè) API ,用于根據(jù)異常情況或“可能到設(shè)備”消息進(jìn)行智能記錄。此外, DeepStream 還支持在應(yīng)用程序運(yùn)行時(shí)對(duì) AI 模型進(jìn)行 OTA 更新。

智能視頻錄制

通常需要基于事件的視頻錄制。智能錄制可以節(jié)省寶貴的磁盤空間,并提供更快的搜索速度,而不是連續(xù)記錄內(nèi)容。

智能記錄僅在滿足特定規(guī)則或條件時(shí)記錄事件。發(fā)出記錄信號(hào)的觸發(fā)器可以來自本地應(yīng)用程序、運(yùn)行在邊緣的某些服務(wù)或來自云端。

圖 5 。智能記錄架構(gòu)。

提供了豐富的 api 來構(gòu)建智能記錄事件管理器。這些操作可用于隨時(shí)啟動(dòng)和停止錄制。當(dāng)必須記錄事件時(shí),在觸發(fā)器之前開始保存剪輯是很有用的。使用智能記錄 API 操作,可以將其配置為在事件發(fā)生之前記錄時(shí)間。這是非常有用的,因?yàn)楫?dāng)異常被檢測和觸發(fā)時(shí),在異常發(fā)生時(shí)和記錄事件管理器啟動(dòng)記錄之間有一些延遲。在記錄開始提供事件的整個(gè)序列之前,記錄一段有限的時(shí)間。

為了演示這個(gè)特性, deepstream-test5 應(yīng)用程序內(nèi)置了一個(gè)智能記錄事件管理器。智能錄制模塊保持視頻緩存,以便錄制的視頻不僅在事件生成后具有幀,還可以在事件發(fā)生之前具有幀。這個(gè)大小的視頻緩存可以配置為每個(gè)用例。事件管理器啟動(dòng)智能記錄模塊的啟動(dòng)和停止選項(xiàng)。

從云端接收到的 JSON 消息可以觸發(fā)錄制。報(bào)文格式如下:

{
      command: string   // 
      start: string     // "2020-05-18T20:02:00.051Z"
      end: string       // "2020-05-18T20:02:02.851Z",
      sensor: {
        id: string
      }
    }

deepstream-test5 示例應(yīng)用程序演示了從云端接收和處理此類消息的過程。這是目前支持卡夫卡。要激活此功能,請(qǐng)?jiān)趹?yīng)用程序配置文件中填充并啟用以下塊:

Configure this group to enable cloud message consumer.
[message-consumer0]
enable=1
proto-lib=/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_kafka_proto.so
conn-str=;
config-file=
subscribe-topic-list=;;
Use this option if message has sensor name as id instead of index (0,1,2 etc.).
sensor-list-file=dstest5_msgconv_sample_config.txt

當(dāng)應(yīng)用程序運(yùn)行時(shí),使用 Kafka 代理在subscribe-topic-list中發(fā)布關(guān)于主題的上述 JSON 消息,以啟動(dòng)和停止錄制。

有關(guān)如何在應(yīng)用程序中使用此功能的更多信息,請(qǐng)參閱NVIDIA DeepStream 插件手冊(cè)智能視頻錄制部分。 deepstream-test5 的源代碼可以在以下目錄中找到:

$DEEPSTREAM_DIR/sources/apps/sample_apps/deepstream-test5/

智能記錄事件管理器的實(shí)現(xiàn)可在以下文件中找到:

$DEEPSTREAM_DIR/sources/apps/apps-common/src/deepstream_source_bin.c

OTA 模型更新

edge IVA 應(yīng)用程序的一個(gè)理想需求是在 AI 模型得到增強(qiáng)以獲得更高的精度時(shí)動(dòng)態(tài)地修改或更新它們。使用 DeepStream 5 。 0 ,您現(xiàn)在可以在應(yīng)用程序運(yùn)行時(shí)更新模型。這意味著模型可以在零停機(jī)時(shí)間內(nèi)更新。這對(duì)于不能接受任何延遲的任務(wù)關(guān)鍵型應(yīng)用程序非常重要。

當(dāng)需要連續(xù)交換模型時(shí),此功能也很有用。一個(gè)例子是基于一天中的時(shí)間交換模型。一般來說,一種型號(hào)的 MIG ht 在白天光線充足的情況下工作得很好,但另一種型號(hào)在光線較暗的環(huán)境下工作得更好。在這種情況下,需要根據(jù)一天中的時(shí)間輕松地交換模型,而無需重新啟動(dòng)應(yīng)用程序。假設(shè)正在更新的模型應(yīng)該具有相同的網(wǎng)絡(luò)參數(shù)。

在示例應(yīng)用程序中,模型更新由修改配置文件的用戶啟動(dòng)。 DeepStream 應(yīng)用程序監(jiān)視配置文件中所做的更改并對(duì)其進(jìn)行驗(yàn)證。在更改被驗(yàn)證后, DeepStream OTA 處理程序交換到新模型,完成了這個(gè)過程。

圖 6 。 OTA 模型更新工作流。

這個(gè)特性在 deepstream-test5 應(yīng)用程序中進(jìn)行了演示,并提供了源代碼。要運(yùn)行 OTA 模型更新,請(qǐng)運(yùn)行帶有 -o 選項(xiàng)的應(yīng)用程序。這是 OTA 覆蓋文件。如果要交換模型,請(qǐng)使用新的模型引擎文件更新此文件。

deepstream-test5 -c  -o 

更新后的模型需要是一個(gè) TensorRT 引擎文件,這是在更改 OTA 覆蓋文件之前離線完成的。要?jiǎng)?chuàng)建 TensorRT 引擎文件,請(qǐng)運(yùn)行trtexec

trtexec --model= --maxBatch= --saveEngine= --deploy= --buildOnly

模型生成后,更新 OTA 覆蓋文件。當(dāng)應(yīng)用程序檢測到此更改時(shí),它會(huì)自動(dòng)啟動(dòng)模型更新過程。在實(shí)際環(huán)境中,您需要在邊緣上有一個(gè)守護(hù)進(jìn)程或服務(wù)來更新邊緣上的文件或從云端更新文件。

安全通信

為了在規(guī)模上成功部署物聯(lián)網(wǎng)設(shè)備,最重要和被忽視的一個(gè)方面是安全性:能夠在邊緣設(shè)備和云之間安全地通信。對(duì)于公司來說,確保物聯(lián)網(wǎng)設(shè)備的安全以及在可信位置收發(fā)敏感數(shù)據(jù)至關(guān)重要。

在 DeepStream 5 。 0 中, Kafka 適配器支持使用基于 TLS 的加密的安全通信,從而確保數(shù)據(jù)的機(jī)密性。 TLS (傳輸層安全性)是 SSL 的繼承者,但這兩個(gè)術(shù)語在文獻(xiàn)中仍然可以互換使用。 TLS / SSL 通常用于在連接到 web 上的服務(wù)器(例如 HTTPS )時(shí)進(jìn)行安全通信。 TLS 使用公鑰加密技術(shù)來建立會(huì)話密鑰, DeepStream 應(yīng)用程序和代理程序?qū)ΨQ使用這些密鑰來加密會(huì)話期間傳輸?shù)臄?shù)據(jù),因此即使在公共網(wǎng)絡(luò)上發(fā)送數(shù)據(jù),也要對(duì)其保密。

DeepStream 5 。 0 支持兩種形式的客戶端身份驗(yàn)證:基于 SSL 證書的雙向 TLS 身份驗(yàn)證和基于用戶名/密碼機(jī)制的 SASL / Plain 身份驗(yàn)證??蛻舳松矸蒡?yàn)證使代理能夠驗(yàn)證連接到它們的客戶端,并根據(jù)其身份選擇性地提供訪問控制。雖然 SASL / Plain 使用了熟悉的密碼身份驗(yàn)證隱喻,并且更容易設(shè)置,但是雙向 TLS 使用客戶端證書進(jìn)行身份驗(yàn)證,并且提供了一些優(yōu)勢,可以實(shí)現(xiàn)健壯的安全機(jī)制。

圖 7 。使用 SSL 證書進(jìn)行安全身份驗(yàn)證。

基于 Mask R-CNN 的實(shí)例分割

為了感知像素,從而產(chǎn)生可操作的洞察力,計(jì)算機(jī)視覺依賴于深度學(xué)習(xí)來提供對(duì)環(huán)境的理解。目標(biāo)檢測是一種常用的技術(shù)來識(shí)別幀中的單個(gè)對(duì)象,如人或汽車。雖然對(duì)象檢測對(duì)于某些應(yīng)用程序是有益的,但是當(dāng)您希望在像素級(jí)理解對(duì)象時(shí),它就不夠了。。

實(shí)例分割在識(shí)別對(duì)象時(shí)提供像素級(jí)的精度。分割對(duì)于需要在對(duì)象及其背景之間進(jìn)行描繪的應(yīng)用程序非常有用,例如在 AI 驅(qū)動(dòng)的綠色屏幕中,您希望模糊或更改幀的背景,或者分割幀中的道路或天空。它還可以用于使用輸出的實(shí)例掩碼來提高跟蹤器的精度。

DeepStream 通過一個(gè)新的自定義解析器(用于后處理)、屏幕顯示( OSD )中用于呈現(xiàn)分段掩碼的掩碼覆蓋函數(shù)、用于掩碼的新元數(shù)據(jù)類型以及用于標(biāo)識(shí)消息轉(zhuǎn)換器中多邊形的新消息模式,實(shí)現(xiàn)了管道中的實(shí)例分段。您可以使用跟蹤器中的掩碼元數(shù)據(jù)來改進(jìn)跟蹤,在屏幕上呈現(xiàn)掩碼,或者通過 MessageBroker 發(fā)送掩碼元數(shù)據(jù)以進(jìn)行脫機(jī)分析。

圖 8 。面具 R-CNN 深水管道。

要開始使用 Mask R-CNN ,請(qǐng)從 NVIDIA-AI-IOT/deepstream_tlt_apps#tlt-models GitHub repo 下載一個(gè)經(jīng)過預(yù)訓(xùn)練的模型。該模型在 NVIDIA 內(nèi)部汽車儀表盤圖像數(shù)據(jù)集上訓(xùn)練,以識(shí)別汽車。有關(guān)詳細(xì)信息,請(qǐng)參見 使用 NVIDIA 遷移學(xué)習(xí)工具箱的 MaskRCNN 實(shí)例分割訓(xùn)練模型 。

DeepStream SDK 包含兩個(gè)示例應(yīng)用程序,演示如何使用預(yù)訓(xùn)練掩碼 R-CNN 模型。 Mask R-CNN 模型可以從 deepstream-app 調(diào)用。以下目錄中提供了配置管道和模型的配置:

$DEEPSTREAM_DIR/samples/configs/tlt_pretrained_models/

以下是要為 Mask R-CNN 模型運(yùn)行的關(guān)鍵配置文件:

$DEEPSTREAM_DIR/samples/configs/tlt_pretrained_models/deepstream_app_source1_mrcnn.txt 

$DEEPSTREAM_DIR/samples/configs/tlt_pretrained_models/config_infer_primary_mrcnn.txt

/deepstream_app_source1_mrcnn.txtdeepstream-app使用的主配置文件,它為整個(gè)視頻分析管道配置參數(shù)。以下是必須根據(jù)模型修改的關(guān)鍵參數(shù)。在[OSD]下,將display-mask選項(xiàng)更改為 1 ,這將在對(duì)象上覆蓋遮罩。

[osd]
enable=1
gpu-id=0
border-width=3
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
display-mask=1
display-bbox=0
display-text=0

/config_infer_primary_mrcnn.txt文件是一個(gè)推理配置文件,用于設(shè)置掩碼 R-CNN 推理的參數(shù)。此文件由[primary-gie]節(jié)下的主deepstream_app_source1_mrcnn.txt配置引用。以下是運(yùn)行 Mask R-CNN 所需的關(guān)鍵參數(shù):

[property]
gpu-id=0
net-scale-factor=0.017507
offsets=123.675;116.280;103.53
model-color-format=0
tlt-model-key=
tlt-encoded-model=
output-blob-names=generate_detections;mask_head/mask_fcn_logits/BiasAdd
parse-bbox-instance-mask-func-name=NvDsInferParseCustomMrcnnTLT
custom-lib-path=/opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_infercustomparser.so
network-type=3 ## 3 is for instance segmentation network
labelfile-path=
int8-calib-file=
infer-dims=
num-detected-classes=<# of classes if different than default>
uff-input-blob-name=Input
batch-size=1
0=FP32, 1=INT8, 2=FP16 mode
network-mode=2
interval=0
gie-unique-id=1
no cluster
0=Group Rectangles, 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering)
MRCNN supports only cluster-mode=4; Clustering is done by the model itself
cluster-mode=4
output-instance-mask=1

parse-bbox-instance-mask-func-name選項(xiàng)設(shè)置自定義后處理函數(shù)來解析推理的輸出。此函數(shù)內(nèi)置于custom-lib-path指定的. so 文件中。此庫的源在以下目錄中提供:

$DEEPSTREAM_DIR/sources/libs/nvdsinfer_customparser/nvdsinfer_custombboxparser.cpp.

要運(yùn)行應(yīng)用程序,請(qǐng)運(yùn)行以下命令:

deepstream-app -c deepstream_app_source1_mrcnn.txt

它在 SDK 中提供的剪輯上運(yùn)行。要嘗試自己的源代碼,請(qǐng)?jiān)?code style="font-size:inherit;color:inherit;margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;line-height:inherit;vertical-align:baseline;background-color:rgb(244,244,244);">/deepstream_app_source1_mrcnn.txt中修改[source0]。圖 9 顯示了在不同平臺(tái)上使用deepstream-app可以預(yù)期的端到端性能。性能以deepstream-app處理的每秒幀數(shù)( FPS )度量:

  • 在 Jetson Nano 和 DLAs 上,它的批處理大小為 1 。
  • 在 Jetson AGX Xavier 和 Xavier NX 上,運(yùn)行的批處理大小為 2 。
  • 在 T4 上,它以批大小 4 運(yùn)行。
圖 9 。履行t他偽裝了 R-CNN 模式。

雖然直觀地看到輸出是很好的,但真正的用例可能是將元數(shù)據(jù)發(fā)送到不同的進(jìn)程或云。這些信息可以由邊緣或云端的不同應(yīng)用程序使用,以進(jìn)行進(jìn)一步的分析。

使用 DeepStream ,您可以使用支持的 messagebroker 協(xié)議之一(如 Kafka 或 MQTT )使用為 mask polygon 定義的模式來發(fā)送 mask 元數(shù)據(jù)。 DeepStream 船舶具有 MaskRCNN 模型的邊緣到云示例。有關(guān)如何使用 message broker 準(zhǔn)備事件元數(shù)據(jù)和發(fā)送掩碼信息的更多信息,請(qǐng)參閱以下應(yīng)用程序:

$DEEPSTREAM_DIR/sources/apps/sample_apps/deepstream-mrcnn-app

要部署的生成

DeepStream 5 。 0 提供了許多很好的特性,使開發(fā)用于邊緣部署的 AI 應(yīng)用程序變得容易。您可以使用 Python API actions 和 Triton 服務(wù)器,以最小的工作量快速原型化和創(chuàng)建 IVA 管道。

AI 模型可以通過 Triton Server 在培訓(xùn)框架中進(jìn)行本地部署,以增加靈活性。您可以使用大量的物聯(lián)網(wǎng)特性來創(chuàng)建可管理的 IVA 應(yīng)用程序??梢允褂秒p向 TLS 身份驗(yàn)證將消息從邊緣安全地發(fā)送到云。邊緣和云之間的雙向通信提供了更好的應(yīng)用程序可管理性。這可以用來更新邊緣的人工智能模型,記錄感興趣的事件,或者使用它從設(shè)備中檢索信息。

關(guān)于作者

Zheng Liu 是 NVIDIA IVA 平臺(tái)軟件組的工程經(jīng)理,專注于 DeepStream SDK 開發(fā)。鄭擁有紐約康奈爾大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位。

Bhushan Rupde 管理著位于浦那 NVIDIA 的智能視頻分析小組,目前負(fù)責(zé) DeepStream SDK 。 Bhushan 擁有印度孟買 IIT 電氣工程碩士學(xué)位。

Chintan Shah 是 NVIDIA 的產(chǎn)品經(jīng)理,專注于智能視頻分析解決方案的 AI 產(chǎn)品。他管理工具箱,用于有效的深度學(xué)習(xí)培訓(xùn)和實(shí)時(shí)推理。在他之前的工作中,他正在為 NVIDIA GPU 開發(fā)硬件 IP 。他擁有北卡羅來納州立大學(xué)電氣工程碩士學(xué)位。

Prashant Gaikwad 是 NVIDIA 的高級(jí)軟件工程師。他在圣塔 Clara 工作,與 NVDLA 團(tuán)隊(duì)一起加速 NVDLA 上的 DNNs 。他對(duì)人工智能加速器和這一領(lǐng)域的發(fā)展充滿熱情。

Bhanu Pisupati 在過去的 15 年里一直在物聯(lián)網(wǎng)、嵌入式系統(tǒng)和計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域開發(fā)產(chǎn)品、系統(tǒng)和工具。他目前參與設(shè)計(jì)和開發(fā)基于深度學(xué)習(xí)的智能城市解決方案,作為 NVIDIA 大都市“邊緣到云”平臺(tái)的一部分。他擁有印第安納大學(xué)布盧明頓分校計(jì)算機(jī)科學(xué)博士學(xué)位和馬德拉斯印度理工學(xué)院土木工程本科學(xué)位。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    5309

    瀏覽量

    106348
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4943

    瀏覽量

    131210
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9793

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用外部文件導(dǎo)入NVIDIA Air構(gòu)建網(wǎng)絡(luò)拓?fù)涞膬?yōu)勢

    NVIDIA Air 具有仿真從小型網(wǎng)絡(luò)到整個(gè)數(shù)據(jù)中心的任何網(wǎng)絡(luò)的獨(dú)特能力。在開始配置、路由或管理之前,請(qǐng)先考慮拓?fù)洹?/div>
    的頭像 發(fā)表于 07-09 16:32 ?312次閱讀

    NVIDIA推出NVLink Fusion技術(shù)

    NVIDIA 發(fā)布 NVIDIA NVLink Fusion,這款全新芯片將助力行業(yè)用戶通過全球領(lǐng)先且廣泛采用的計(jì)算互連架構(gòu) —— NVIDIA NVLink 打造的強(qiáng)健合作伙伴生態(tài)系統(tǒng),構(gòu)建
    的頭像 發(fā)表于 05-22 09:59 ?331次閱讀

    利用NVIDIA技術(shù)構(gòu)建從數(shù)據(jù)中心到邊緣的智慧醫(yī)院解決方案

    全球領(lǐng)先的電子制造商正在利用 NVIDIA 技術(shù),構(gòu)建從數(shù)據(jù)中心到邊緣的智慧醫(yī)院解決方案。
    的頭像 發(fā)表于 05-22 09:50 ?335次閱讀

    ServiceNow攜手NVIDIA構(gòu)建150億參數(shù)超級(jí)助手

    Apriel Nemotron 15B 開源大語言模型 (LLM) 使用 NVIDIA NeMo、NVIDIA Llama Nemotron 開放數(shù)據(jù)集以及 ServiceNow 專業(yè)領(lǐng)域數(shù)據(jù)創(chuàng)建而成,并在 NVIDIA DGX
    的頭像 發(fā)表于 05-12 15:37 ?363次閱讀

    小插件讓管道布線變得簡單:PLUGIN 3Dfindit for Revit

    的更改,確保管線文件始終保持最新。除管道系統(tǒng)外,eCATALOG還支持通風(fēng)管道和CAD MEP組件,使數(shù)據(jù)靈活用于各種應(yīng)用。 提高制造商和規(guī)劃人員的效率 對(duì)于管道制造商而言,與CAD
    發(fā)表于 05-09 15:20

    企業(yè)使用NVIDIA NeMo微服務(wù)構(gòu)建AI智能體平臺(tái)

    已發(fā)布的 NeMo 微服務(wù)與合作伙伴平臺(tái)集成,作為創(chuàng)建 AI 智能體的構(gòu)建模塊,使用商業(yè)智能與強(qiáng)大的邏輯推理模型 (包括 NVIDIA Llama Nemotron) 處理更多任務(wù)。
    的頭像 發(fā)表于 04-27 15:05 ?519次閱讀

    NVIDIA Omniverse Kit 107的安裝部署步驟

    NVIDIA Omniverse 是一個(gè)模塊化平臺(tái),使用高級(jí) API 和微服務(wù)來構(gòu)建由 OpenUSD 和 NVIDIA RTX 提供支持的 3D 應(yīng)用。OpenUSD 功能強(qiáng)大的 3D 框架與
    的頭像 發(fā)表于 03-28 10:37 ?496次閱讀
    <b class='flag-5'>NVIDIA</b> Omniverse Kit 107的安裝部署步驟

    【Android開發(fā)者必看】使用JetBrains TeamCity為Android項(xiàng)目構(gòu)建CI/CD管道詳細(xì)指南

    【CI/CD】定義明確的構(gòu)建、測試和部署工作流對(duì)Android應(yīng)用的開發(fā)至關(guān)重要。JetBrains TeamCity是一個(gè)用于構(gòu)建可靠管道的CI/CD平臺(tái),與流行的Android開
    的頭像 發(fā)表于 03-21 15:42 ?575次閱讀
    【Android開發(fā)者必看】使用JetBrains TeamCity為Android項(xiàng)目<b class='flag-5'>構(gòu)建</b>CI/CD<b class='flag-5'>管道</b>詳細(xì)指南

    NVIDIA 與行業(yè)領(lǐng)先的存儲(chǔ)企業(yè)共同推出面向 AI 時(shí)代的新型企業(yè)基礎(chǔ)設(shè)施

    3 月 18 日 —— NVIDIA 今日推出了 NVIDIA AI 數(shù)據(jù)平臺(tái) —— 一項(xiàng)自定義的參考設(shè)計(jì),領(lǐng)先的存儲(chǔ)提供商可用來構(gòu)建全新的 AI 基礎(chǔ)設(shè)施,以滿足 AI 推理工作
    發(fā)表于 03-19 10:11 ?243次閱讀
    <b class='flag-5'>NVIDIA</b> 與行業(yè)領(lǐng)先的存儲(chǔ)企業(yè)共同推出面向 AI 時(shí)代的新型企業(yè)基礎(chǔ)設(shè)施

    NVIDIA 發(fā)布保障代理式 AI 應(yīng)用安全的 NIM 微服務(wù)

    NVIDIA NeMo Guardrails 包含全新 NVIDIA NIM 微服務(wù),能夠?yàn)楦餍袠I(yè)構(gòu)建 AI 的企業(yè)提高 AI 的準(zhǔn)確性、安全性和可控性。 ? AI 智能體有望成為能夠完成各種任務(wù)
    發(fā)表于 01-17 16:29 ?160次閱讀

    全新NVIDIA AI工作流檢測信用卡欺詐交易

    該工作流由 AWS 上 的 NVIDIA AI 平臺(tái)驅(qū)動(dòng),幫助金融服務(wù)機(jī)構(gòu)節(jié)省資金并降低風(fēng)險(xiǎn)。
    的頭像 發(fā)表于 10-30 11:41 ?827次閱讀

    聲波定位技術(shù)在地下管道中如何應(yīng)用

    隨著城市化進(jìn)程的加速,地下管道作為城市基礎(chǔ)設(shè)施的重要組成部分,其安全、高效的維護(hù)與管理顯得尤為重要。聲波定位技術(shù)作為一種非破壞性探測手段,在地下管道中的應(yīng)用日益廣泛,成為提升管道維護(hù)和
    的頭像 發(fā)表于 09-27 13:54 ?455次閱讀

    Jacinto6 SoC上VISION SDK和PSDKLA之間的IVA-HD共享

    電子發(fā)燒友網(wǎng)站提供《Jacinto6 SoC上VISION SDK和PSDKLA之間的IVA-HD共享.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:20 ?0次下載
    Jacinto6 SoC上VISION SDK和PSDKLA之間的<b class='flag-5'>IVA</b>-HD共享

    NVIDIA JetPack 6.0版本的關(guān)鍵功能

    NVIDIA JetPack SDK 支持 NVIDIA Jetson 模塊,為構(gòu)建端到端加速 AI 應(yīng)用提供全面的解決方案。JetPack 6 通過微服務(wù)和一系列新功能,擴(kuò)展了 Jetson 平臺(tái)的靈活性和
    的頭像 發(fā)表于 09-09 10:18 ?1076次閱讀
    <b class='flag-5'>NVIDIA</b> JetPack 6.0版本的關(guān)鍵功能

    使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用

    本文將介紹如何使用 NVIDIA JetPack 6.0 中的全新 Jetson 平臺(tái)服務(wù),來構(gòu)建一個(gè)適用于邊緣的端到端交通分析解決方案。該系統(tǒng)集成了多個(gè)功能:使用視頻存儲(chǔ)工具包 (VST) 服務(wù)
    的頭像 發(fā)表于 08-23 16:49 ?1011次閱讀
    使用<b class='flag-5'>NVIDIA</b> JetPack 6.0和YOLOv8<b class='flag-5'>構(gòu)建</b>智能交通應(yīng)用