無論是希望平衡產品分布和優化交通的倉庫,工廠裝配線檢查,還是醫院管理,確保員工和護理人員在護理患者時使用個人防護設備( PPE ),高級智能視頻分析( IVA )都非常有用。
在基礎層,全球各地的城市、體育場館、工廠和醫院部署了數十億臺攝像頭和物聯網傳感器,每天產生數 PB 的數據。隨著數據爆炸,使用人工智能來簡化和執行有效的 IVA 是非常必要的。
許多公司和開發人員都在努力構建可管理的 IVA 管道,因為這些工作需要人工智能專業知識、高效的硬件、可靠的軟件和廣泛的資源來大規模部署。 NVIDIA 構建了 DeepStream 軟件開發工具包 來消除這些障礙,并使每個人都能夠輕松高效地創建基于人工智能的 GPU 加速應用程序,用于視頻分析。
DeepStream SDK 是一個可擴展的框架,用于為 edge 構建高性能、可管理的 IVA 應用程序。 DeepStream 使您能夠在從智能城市和建筑到零售、制造和醫療保健等各個行業構建人工智能應用程序。
DeepStream 運行時系統通過流水線實現深度學習推理、圖像和傳感器處理,并在流式應用程序中將見解發送到云端。對于大規模部署,您可以使用容器構建云原生的、深流應用程序,并使用 Kubernetes 平臺來協調這些應用程序。在邊緣部署時,應用程序可以在物聯網設備和云標準消息代理(如 Kafka 和 MQTT )之間進行通信,以進行大規模、廣域部署。
圖 1 。 DeepStream –邊緣到云 .
DeepStream 應用程序可以運行在由 NVIDIA Jetson 支持的邊緣設備上,也可以運行在由 NVIDIA T4s 支持的本地服務器上。來自邊緣的數據可以被發送到云端進行更高層次的分析和可視化。
本文的其余部分將深入探討 deepstream5 . 0 發布的關鍵特性。
DeepStream 5 . 0 功能
隨著 Deepstream5 . 0 , NVIDIA 使得在邊緣構建和部署基于人工智能的 IVA 應用變得比以往任何時候都容易。以下是新功能:
支持 NVIDIA Triton ?聲波風廓線儀推理服務器
Python 包
應用程序的遠程管理和控制
安全通信
基于 Mask R-CNN 的實例分割
Triton 推斷服務器支持
創建人工智能是一個迭代的實驗過程,在這個過程中,數據科學家花費大量時間對不同的架構進行實驗和原型設計。在這個階段,他們更關注如何最好地解決問題,而不是人工智能模型的效率。他們希望花費更多的時間來獲得用例的高精度,而不是花在優化推理的周期上。他們希望在真實場景中快速建立原型,并查看模型的性能。
過去,使用 DeepStream 執行視頻分析需要將模型轉換為 NVIDIA TensorRT ,一個推理運行時。從 DeepStream 5 . 0 開始,您可以選擇在培訓框架中以本機方式運行模型。這使您能夠快速原型化端到端系統。。
DeepStream 5 . 0 直接從應用程序集成 Triton ?聲波風廓線儀服務器。 Triton Server 為您提供了在 DeepStream 中使用任何深度學習框架的靈活性。推理服務通過可用的 API 從 DeepStream 插件( Gst-nvinferserver )本機集成。插件接收 NV12 / RGBA 緩沖區并將其發送到較低級別的庫。該庫對圖像進行預處理并轉換為模型可接受的所需張量大小。張量通過 CUDA 共享內存發送到 Triton ?聲波風廓線儀服務器庫。
推斷后, Triton Server 將輸出張量返回到共享庫,在那里進行后期處理以生成元數據。此元數據將附加回現有元數據并發送到下游。通過集成推理服務器,您可以使用 DeepStream 中的所有構建塊來構建一個高效的 IVA 管道,并在您的培訓框架上執行本機推理。
圖 2 。 DeepStream 5 . 0 中的 Triton 服務器推斷插件。
TensorRT 仍然由 DeepStream 提供本地支持。如果您正在尋找最高的推理吞吐量,或者資源受限,無法部署完整的框架和大型模型,那么這是首選的路徑。如果您正在尋找靈活性,并可以犧牲一些性能換取努力, Triton ?聲波風廓線儀服務器是最佳途徑。
下表總結了這兩種方法的優缺點。
表 1 。 TensorRT 和 Triton ?聲波風廓線儀服務器的權衡。
以下是使用 DeepStream 的 Triton ?聲波風廓線儀服務器的主要功能:
支持以下模型格式:
Jetson 、 TensorFlow GraphDef 和 SavedModel ,以及 TensorFlow 和 T4 上的 TensorFlow – TensorRT 模型
ONNX , PyTorch 和 Caffe2 NetDef 僅在 T4 上
多個模型(或同一模型的多個實例)可以在同一個 GPU 上同時運行。
為了開始使用帶有 DeepStream 的 Triton 服務器,我們提供了幾個示例配置文件和一個用于檢索開放源代碼模型的腳本。有運行 TensorRT 和 TensorFlow 模型的例子。對于本文,我們將 DeepStream 安裝目錄稱為 $DEEPSTREAM_DIR 。實際的安裝目錄取決于您使用的是裸機版本還是容器。
如果您正在 x86 平臺上的 NVIDIA GPU 上運行,請從 NVIDIA NGC 中拉出 nvcr.io/nvidia/deepstream:5.0-20.04-triton 容器。 Triton Server with DeepStream on x86 僅適用于 -triton 容器。如果您在 Jetson 上運行, Triton Server –共享庫作為 DeepStream 的一部分預裝。這可用于任何 Jetson 容器。
轉到/ samples 目錄:
cd $DEEPSTREAM_DIR/deepstream-5.0/samples
在這個目錄中執行 bash 腳本。這個腳本下載所有必需的開源模型,并將提供的 Caffe 和 UFF 模型轉換為一個 TensorRT 引擎文件。此步驟將所有模型轉換為引擎文件,因此可能需要幾分鐘或更長時間。
生成的引擎文件的最大批處理大小在 bash 腳本中指定。要修改默認批處理大小,必須修改此腳本。這也下載了 TensorFlowssd-inception_v2
模型。
./prepare_ds_trtis_model_repo.sh
模型在/trtis_model_repo
目錄中生成或復制。下面是如何運行ssd-inception_v2
模型。首先進入/trtis_model_repo/ssd_inception_v2_coco_2018_01_28
目錄并找到config.pbtxt
文件。如果 bash 腳本成功運行,您還應該看到1/model.graphdef
。這是 TensorFlow 冰凍石墨。
下面是模型回購中提供的示例config.pbtxt
文件。首先,使用platform
關鍵字指定深度學習框架。可用選項如下:
-
tensorrt_plan
-
tensorflow_graphdef
-
tensorflow_savedmodel
-
caffe2_netdef
-
onnxruntime_onnx
-
pytorch_libtorch
-
custom
接下來,指定輸入維度、數據類型和數據格式。然后,指定所有輸出張量的所有輸出維度和數據類型。有關配置文件中所有選項的詳細信息,請參閱模型配置。
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
模型運行 deepstream 應用程序。 Triton ?聲波風廓線儀服務器的示例配置文件在/configs/deepstream-app-trtis
中。運行deepstream-app
通常需要兩個或多個配置文件。一個是頂層配置文件,它為整個管道設置參數,其他文件是用于推理的配置文件。
為了便于使用和簡化,每個推理引擎都需要一個唯一的配置文件。如果級聯多個推斷,則需要多個配置文件。對于本例,請使用以下文件:
-
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
文件是頂級配置文件。如果您使用本機 TensorRT 或 Triton ?聲波風廓線儀服務器進行推斷,這是很常見的。在這個配置文件中,將[primary-gie]
下的插件類型更改為1
,以使用推理服務器。
config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt
文件用于指定推理選項,如預處理、后處理和模型恢復。有關不同選項的更多信息,請參閱NVIDIA DeepStream SDK 快速入門指南和NVIDIA DeepStream 插件手冊。
對于將張量數據后處理到邊界框中,此示例使用名為NvDsInferParseCustomTfSSD
的自定義邊界框解析器,如配置文件中的custom_parse_bbox_func
鍵指定的那樣。此自定義函數在以下配置文件的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 }
現在,使用以下命令運行應用程序:
deepstream-app -c source1_primary_detector.txt
一個彈出窗口應該打開,播放視頻樣本,顯示行人、汽車和自行車周圍的邊界框。
應用程序需要幾分鐘時間來構建 TensorFlow 圖。如果應用程序無法運行并返回“ Killed ”,則很可能是系統內存不足。檢查系統內存使用情況以確認問題。如果是內存問題,則根據模型修改config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt
中infer_config
下的tf_gpu_memory_fraction
參數,或根據模型修改任何其他nvinferserver
配置文件。此參數為 TF 模型分配每個進程的 GPU 內存部分。將其更改為 0 . 4 MIG ht 幫助。
該模型可檢測多達 91 個類別,包括各種動物、食物和體育器材。有關可以檢測到的類的更多信息,請參閱trtis-model-repo/ssd_inception_v2_coco_2018_01_28/labels.txt
文件。
嘗試用其他視頻運行這個應用程序,看看模型是否可以檢測到其他類。要將 Triton Server 與您的自定義 DeepStream 管道一起使用,請查看$DEEPSTREAM_DIR/sources/apps/sample-apps/deepstream-app
下deepstream-app
的源代碼。
Python 包
Python 易于使用,在創建 AI 模型時被數據科學家和深度學習專家廣泛采用。 NVIDIA 引入了 Python 綁定來幫助您使用 Python 構建高性能的 AI 應用程序。 DeepStream 管道可以使用 Gst Python 構建, GStreamer 框架的 Python 綁定。
DeepStream Python 應用程序使用 Gst Python API 操作構造管道,并使用探測函數訪問管道中各個點的數據。這些數據類型都是用本機 C 編寫的,需要通過 PyBindings 或 NumPy 使用一個填充層才能從 Python 應用程序訪問它們。張量數據是經過推斷得出的原始張量輸出。如果您試圖檢測一個對象,這個張量數據需要通過解析和聚類算法進行后處理,以在檢測到的對象周圍創建邊界框。
利用張量數據的可用性,您可以在 Python 應用程序中創建解析算法。這一點很重要,因為張量數據的大小和維度以及解析數據所需的解析和聚類算法都取決于人工智能模型的類型。如果你想為 DeepStream 帶來新的模型或新的后處理技術,你會發現這非常有用。
另一個可以訪問的有用數據源是圖像數據。這可以用來捕捉異常,在那里人工智能模型拿起一個對象,你想保存圖像以備將來參考。現在應用程序支持訪問此幀。
DeepStream 元數據的 Python 綁定以及示例應用程序一起可用,以演示它們的使用情況。 Python 示例應用程序可以從 GitHub repo NVIDIA-AI-IOT/deepstream_python_apps 下載。 Python 綁定模塊現在作為 DeepStreamSDK 包的一部分提供。
遠程管理和控制應用程序
將元數據從邊緣發送到云是有用的,但是能夠接收和控制從云到邊緣的消息也很重要。
DeepStream 5 。 0 現在支持雙向通信來發送和接收云到設備的消息。這對于各種用例尤其重要,例如觸發應用程序以記錄重要事件、更改操作參數和應用程序配置、空中傳送( OTA )更新或請求系統日志和其他重要信息。
DeepStream 應用程序可以訂閱 ApacheKafka 主題來接收來自云端的消息。設備到云消息傳遞目前通過 Gstnvmsgbroker ( MSGBROKER )插件進行。默認情況下, Gstnvmsgbroker 插件使用適當的協議調用較低級別的適配器庫。您可以在 Kafka 、 AMQP 、 MQTT 或 Azure IoT 之間進行選擇,甚至可以創建自定義適配器。 DeepStream 5 。 0 引入了一個新的低級 msgbroker 庫,為跨各種協議的雙向消息傳遞提供了一個統一的接口。 Gstnvmsgbroker 插件可以選擇與這個新庫接口,而不是直接調用協議適配器庫,這是通過配置選項控制的。
對于云到邊緣消息傳遞, DeepStream 5 。 0 中支持的協議是 Kafka ,它使用新的低層 msgbroker 庫,直接與 DeepStream 應用程序交互。
DeepStream 5 。 0 支持多個其他物聯網功能,可與雙向消息傳遞結合使用。 DeepStream 現在提供了一個 API ,用于根據異常情況或“可能到設備”消息進行智能記錄。此外, DeepStream 還支持在應用程序運行時對 AI 模型進行 OTA 更新。
智能視頻錄制
通常需要基于事件的視頻錄制。智能錄制可以節省寶貴的磁盤空間,并提供更快的搜索速度,而不是連續記錄內容。
智能記錄僅在滿足特定規則或條件時記錄事件。發出記錄信號的觸發器可以來自本地應用程序、運行在邊緣的某些服務或來自云端。
提供了豐富的 api 來構建智能記錄事件管理器。這些操作可用于隨時啟動和停止錄制。當必須記錄事件時,在觸發器之前開始保存剪輯是很有用的。使用智能記錄 API 操作,可以將其配置為在事件發生之前記錄時間。這是非常有用的,因為當異常被檢測和觸發時,在異常發生時和記錄事件管理器啟動記錄之間有一些延遲。在記錄開始提供事件的整個序列之前,記錄一段有限的時間。
為了演示這個特性, deepstream-test5 應用程序內置了一個智能記錄事件管理器。智能錄制模塊保持視頻緩存,以便錄制的視頻不僅在事件生成后具有幀,還可以在事件發生之前具有幀。這個大小的視頻緩存可以配置為每個用例。事件管理器啟動智能記錄模塊的啟動和停止選項。
從云端接收到的 JSON 消息可以觸發錄制。報文格式如下:
{ command: string //start: string // "2020-05-18T20:02:00.051Z" end: string // "2020-05-18T20:02:02.851Z", sensor: { id: string } }
deepstream-test5 示例應用程序演示了從云端接收和處理此類消息的過程。這是目前支持卡夫卡。要激活此功能,請在應用程序配置文件中填充并啟用以下塊:
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
當應用程序運行時,使用 Kafka 代理在subscribe-topic-list
中發布關于主題的上述 JSON 消息,以啟動和停止錄制。
有關如何在應用程序中使用此功能的更多信息,請參閱NVIDIA DeepStream 插件手冊的智能視頻錄制部分。 deepstream-test5 的源代碼可以在以下目錄中找到:
$DEEPSTREAM_DIR/sources/apps/sample_apps/deepstream-test5/
智能記錄事件管理器的實現可在以下文件中找到:
$DEEPSTREAM_DIR/sources/apps/apps-common/src/deepstream_source_bin.c
OTA 模型更新
edge IVA 應用程序的一個理想需求是在 AI 模型得到增強以獲得更高的精度時動態地修改或更新它們。使用 DeepStream 5 。 0 ,您現在可以在應用程序運行時更新模型。這意味著模型可以在零停機時間內更新。這對于不能接受任何延遲的任務關鍵型應用程序非常重要。
當需要連續交換模型時,此功能也很有用。一個例子是基于一天中的時間交換模型。一般來說,一種型號的 MIG ht 在白天光線充足的情況下工作得很好,但另一種型號在光線較暗的環境下工作得更好。在這種情況下,需要根據一天中的時間輕松地交換模型,而無需重新啟動應用程序。假設正在更新的模型應該具有相同的網絡參數。
在示例應用程序中,模型更新由修改配置文件的用戶啟動。 DeepStream 應用程序監視配置文件中所做的更改并對其進行驗證。在更改被驗證后, DeepStream OTA 處理程序交換到新模型,完成了這個過程。
這個特性在 deepstream-test5 應用程序中進行了演示,并提供了源代碼。要運行 OTA 模型更新,請運行帶有 -o 選項的應用程序。這是 OTA 覆蓋文件。如果要交換模型,請使用新的模型引擎文件更新此文件。
deepstream-test5 -c-o
更新后的模型需要是一個 TensorRT 引擎文件,這是在更改 OTA 覆蓋文件之前離線完成的。要創建 TensorRT 引擎文件,請運行trtexec:
trtexec --model= --maxBatch= --saveEngine= --deploy= --buildOnly
模型生成后,更新 OTA 覆蓋文件。當應用程序檢測到此更改時,它會自動啟動模型更新過程。在實際環境中,您需要在邊緣上有一個守護進程或服務來更新邊緣上的文件或從云端更新文件。
安全通信
為了在規模上成功部署物聯網設備,最重要和被忽視的一個方面是安全性:能夠在邊緣設備和云之間安全地通信。對于公司來說,確保物聯網設備的安全以及在可信位置收發敏感數據至關重要。
在 DeepStream 5 。 0 中, Kafka 適配器支持使用基于 TLS 的加密的安全通信,從而確保數據的機密性。 TLS (傳輸層安全性)是 SSL 的繼承者,但這兩個術語在文獻中仍然可以互換使用。 TLS / SSL 通常用于在連接到 web 上的服務器(例如 HTTPS )時進行安全通信。 TLS 使用公鑰加密技術來建立會話密鑰, DeepStream 應用程序和代理程序對稱使用這些密鑰來加密會話期間傳輸的數據,因此即使在公共網絡上發送數據,也要對其保密。
DeepStream 5 。 0 支持兩種形式的客戶端身份驗證:基于 SSL 證書的雙向 TLS 身份驗證和基于用戶名/密碼機制的 SASL / Plain 身份驗證。客戶端身份驗證使代理能夠驗證連接到它們的客戶端,并根據其身份選擇性地提供訪問控制。雖然 SASL / Plain 使用了熟悉的密碼身份驗證隱喻,并且更容易設置,但是雙向 TLS 使用客戶端證書進行身份驗證,并且提供了一些優勢,可以實現健壯的安全機制。
基于 Mask R-CNN 的實例分割
為了感知像素,從而產生可操作的洞察力,計算機視覺依賴于深度學習來提供對環境的理解。目標檢測是一種常用的技術來識別幀中的單個對象,如人或汽車。雖然對象檢測對于某些應用程序是有益的,但是當您希望在像素級理解對象時,它就不夠了。。
實例分割在識別對象時提供像素級的精度。分割對于需要在對象及其背景之間進行描繪的應用程序非常有用,例如在 AI 驅動的綠色屏幕中,您希望模糊或更改幀的背景,或者分割幀中的道路或天空。它還可以用于使用輸出的實例掩碼來提高跟蹤器的精度。
DeepStream 通過一個新的自定義解析器(用于后處理)、屏幕顯示( OSD )中用于呈現分段掩碼的掩碼覆蓋函數、用于掩碼的新元數據類型以及用于標識消息轉換器中多邊形的新消息模式,實現了管道中的實例分段。您可以使用跟蹤器中的掩碼元數據來改進跟蹤,在屏幕上呈現掩碼,或者通過 MessageBroker 發送掩碼元數據以進行脫機分析。
要開始使用 Mask R-CNN ,請從 NVIDIA-AI-IOT/deepstream_tlt_apps#tlt-models GitHub repo 下載一個經過預訓練的模型。該模型在 NVIDIA 內部汽車儀表盤圖像數據集上訓練,以識別汽車。有關詳細信息,請參見 使用 NVIDIA 遷移學習工具箱的 MaskRCNN 實例分割訓練模型 。
DeepStream SDK 包含兩個示例應用程序,演示如何使用預訓練掩碼 R-CNN 模型。 Mask R-CNN 模型可以從 deepstream-app 調用。以下目錄中提供了配置管道和模型的配置:
$DEEPSTREAM_DIR/samples/configs/tlt_pretrained_models/
以下是要為 Mask R-CNN 模型運行的關鍵配置文件:
$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.txt
是deepstream-app
使用的主配置文件,它為整個視頻分析管道配置參數。以下是必須根據模型修改的關鍵參數。在[OSD]
下,將display-mask
選項更改為 1 ,這將在對象上覆蓋遮罩。
[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
文件是一個推理配置文件,用于設置掩碼 R-CNN 推理的參數。此文件由[primary-gie]
節下的主deepstream_app_source1_mrcnn.txt
配置引用。以下是運行 Mask R-CNN 所需的關鍵參數:
[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
選項設置自定義后處理函數來解析推理的輸出。此函數內置于custom-lib-path
指定的. so 文件中。此庫的源在以下目錄中提供:
$DEEPSTREAM_DIR/sources/libs/nvdsinfer_customparser/nvdsinfer_custombboxparser.cpp.
要運行應用程序,請運行以下命令:
deepstream-app -c deepstream_app_source1_mrcnn.txt
它在 SDK 中提供的剪輯上運行。要嘗試自己的源代碼,請在/deepstream_app_source1_mrcnn.txt
中修改[source0]
。圖 9 顯示了在不同平臺上使用deepstream-app
可以預期的端到端性能。性能以deepstream-app
處理的每秒幀數( FPS )度量:
- 在 Jetson Nano 和 DLAs 上,它的批處理大小為 1 。
- 在 Jetson AGX Xavier 和 Xavier NX 上,運行的批處理大小為 2 。
- 在 T4 上,它以批大小 4 運行。
雖然直觀地看到輸出是很好的,但真正的用例可能是將元數據發送到不同的進程或云。這些信息可以由邊緣或云端的不同應用程序使用,以進行進一步的分析。
使用 DeepStream ,您可以使用支持的 messagebroker 協議之一(如 Kafka 或 MQTT )使用為 mask polygon 定義的模式來發送 mask 元數據。 DeepStream 船舶具有 MaskRCNN 模型的邊緣到云示例。有關如何使用 message broker 準備事件元數據和發送掩碼信息的更多信息,請參閱以下應用程序:
$DEEPSTREAM_DIR/sources/apps/sample_apps/deepstream-mrcnn-app
要部署的生成
DeepStream 5 。 0 提供了許多很好的特性,使開發用于邊緣部署的 AI 應用程序變得容易。您可以使用 Python API actions 和 Triton 服務器,以最小的工作量快速原型化和創建 IVA 管道。
AI 模型可以通過 Triton Server 在培訓框架中進行本地部署,以增加靈活性。您可以使用大量的物聯網特性來創建可管理的 IVA 應用程序。可以使用雙向 TLS 身份驗證將消息從邊緣安全地發送到云。邊緣和云之間的雙向通信提供了更好的應用程序可管理性。這可以用來更新邊緣的人工智能模型,記錄感興趣的事件,或者使用它從設備中檢索信息。
關于作者
Zheng Liu 是 NVIDIA IVA 平臺軟件組的工程經理,專注于 DeepStream SDK 開發。鄭擁有紐約康奈爾大學計算機科學碩士學位。
Bhushan Rupde 管理著位于浦那 NVIDIA 的智能視頻分析小組,目前負責 DeepStream SDK 。 Bhushan 擁有印度孟買 IIT 電氣工程碩士學位。
Chintan Shah 是 NVIDIA 的產品經理,專注于智能視頻分析解決方案的 AI 產品。他管理工具箱,用于有效的深度學習培訓和實時推理。在他之前的工作中,他正在為 NVIDIA GPU 開發硬件 IP 。他擁有北卡羅來納州立大學電氣工程碩士學位。
Prashant Gaikwad 是 NVIDIA 的高級軟件工程師。他在圣塔 Clara 工作,與 NVDLA 團隊一起加速 NVDLA 上的 DNNs 。他對人工智能加速器和這一領域的發展充滿熱情。
Bhanu Pisupati 在過去的 15 年里一直在物聯網、嵌入式系統和計算機體系結構領域開發產品、系統和工具。他目前參與設計和開發基于深度學習的智能城市解決方案,作為 NVIDIA 大都市“邊緣到云”平臺的一部分。他擁有印第安納大學布盧明頓分校計算機科學博士學位和馬德拉斯印度理工學院土木工程本科學位。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5026瀏覽量
103280 -
gpu
+關注
關注
28文章
4754瀏覽量
129082 -
服務器
+關注
關注
12文章
9239瀏覽量
85678
發布評論請先 登錄
相關推薦
評論