NVIDIA DeepStream 5.0構建智能視頻分析應用程序


NVIDIA DeepStream 5.0構建智能視頻分析應用程序

無論是要平衡產品分配和優化流量的倉庫,工廠流水線檢查還是醫院管理,要確保員工和護理人員在照顧病人的同時使用個人保護設備(PPE),就可以實現高級智能視頻分析(IVA)有用。

在基礎層,全球在城市,體育館,工廠和醫院中部署了數十億個攝像頭和IoT傳感器,每天生成數PB的數據。隨着數據的爆炸式增長,必須使用AI來簡化和執行有效的IVA。

許多公司和開發人員都在努力構建可管理的IVA管道,因為這些工作需要AI專業知識,高效的硬件,可靠的軟件以及廣泛的資源才能進行大規模部署。NVIDIA打造了DeepStream SDK,以消除這些障礙,並使每個人都能輕松,高效地創建基於AI的,GPU加速的應用程序,以進行視頻分析。

DeepStream SDK是一個可擴展的框架,用於為邊緣構建高性能,托管的IVA應用程序。借助DeepStream,可以跨多個行業構建從智慧城市和建築到零售,制造業和醫療保健的AI應用程序。

DeepStream運行時系統已通過流水線化,以支持深度學習推理,圖像和傳感器處理,並在流應用程序中將見解發送到雲。為了進行大規模部署,可以使用容器構建本機雲,DeepStream應用程序,並使用Kubernetes平台對所有這些進行編排。在邊緣上部署時,應用程序可以在IoT設備和雲標准消息代理(例如Kafka和MQTT)之間進行通信,以進行大規模,廣域部署。

 

 

 1. DeepStream –邊緣到雲

DeepStream應用程序可以在由NVIDIA Jetson提供支持的邊緣設備或由NVIDIA T4提供支持的本地服務器上運行。來自邊緣的數據可以發送到雲,以進行更高級別的分析和可視化。

本文其余部分深入探討了DeepStream 5.0發行的主要功能。

DeepStream 5.0功能

借助DeepStream 5.0,NVIDIA使在邊緣上構建和部署基於AI的IVA應用程序的工作變得前所未有的輕松。以下是新功能:

對Triton Inference Server的支持

創建AI是一個反復的實驗過程,數據科學家在其中花費大量時間在不同的架構上進行實驗和制作原型。在此階段,重點更多地放在如何最好地解決問題上,而不是AI模型的效率上。希望花費更多的時間來獲得其用例的高精度,而不是花費優化推理的周期。希望在實際場景中快速創建原型並查看模型的性能。

過去,使用DeepStream執行視頻分析涉及將模型轉換為NVIDIA TensorRT(推理運行時)。從DeepStream 5.0開始,可以選擇在訓練框架中本地運行模型。這使可以快速構建端到端系統的原型。

DeepStream 5.0直接從應用程序集成了Triton Server。Triton Server為提供了將任何深度學習框架與DeepStream結合使用的靈活性。推理服務Gst-nvinferserver通過可用的API從DeepStream插件()本地集成。該插件接收NV12 / RGBA緩沖區,並將其發送到較低級的庫。該庫對圖像進行預處理,並轉換為模型可接受的所需張量大小。張量通過CUDA共享內存發送到Triton Server庫。

推斷后,Triton Server將輸出張量返回到共享庫,在共享庫中對其進行后處理以生成元數據。該元數據被附加回現有的元數據並向下游發送。通過集成推理服務器,可以使用DeepStream中的所有構建塊來構建有效的IVA管道,並在的訓練框架上本地執行推理。

 

 

 2. DeepStream 5.0中的Triton Server推理插件。

DeepStream本身仍支持TensorRT。如果正在尋找最高的推理吞吐量或資源受限以部署完整的框架和大型模型,則這是首選的方法。如果正在尋找靈活性,並且可以在性能方面做出取舍,那么Triton Server是最佳途徑。

下表總結了這兩種方法的優缺點。

表1. TensorRT和Triton Server的權衡。

以下是帶有DeepStream的Triton Server的主要功能:

  • 支持以下模型格式:
  • 在Jetson和T4上的TensorRT,TensorFlow GraphDef和SavedModel以及TensorFlow-TensorRT模型
  • 僅T4上的ONNX,PyTorch和Caffe2 NetDef
  • 多個模型(或同一模型的多個實例)可以在同一GPU上同時運行。

要開始使用帶有DeepStream的Triton Server,提供了幾個示例配置文件和一個腳本來檢索開源模型。有同時運行TensorRT和TensorFlow模型的示例。對於本文,將DeepStream安裝目錄稱為$DEEPSTREAM_DIR。實際的安裝目錄取決於使用的是裸機版本還是容器版本。

如果在x86平台上的NVIDIA GPU上運行,請nvcr.io/nvidia/deepstream:5.0-20.04-tritonNVIDIA NGC中拉出容器。在x86上帶有DeepStream的Triton Server僅適用於-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凍結的graphdef。

這是config.pbtxt模型庫中提供的示例文件。首先,使用platform關鍵字指定深度學習框架。可用選項如下:

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

接下來,指定輸入維,數據類型和數據格式。然后,指定所有輸出張量的所有輸出尺寸和數據類型。有關配置文件中所有選項的更多信息,請參見模型配置

名稱:“ ssd_inception_v2_coco_2018_01_28”
平台:“ tensorflow_graphdef”
max_batch_size:128
輸入 [
  {
    名稱:“ image_tensor”
    數據類型:TYPE_UINT8
    格式:FORMAT_NHWC
    昏暗:[300,300,3]
  }
]
輸出 [
  {
    名稱:“ detection_boxes”
    數據類型:TYPE_FP32
    昏暗:[100,4]
    重塑{形狀:[100,4]}
  },
  {
    名稱:“ detection_classes”
    數據類型:TYPE_FP32
    昏暗:[100]
  },
  {
    名稱:“ detection_scores”
    數據類型:TYPE_FP32
    昏暗:[100]
  },
  {
    名稱:“ num_detections”
    數據類型:TYPE_FP32
    昏暗:[1]
    重塑{形狀:[]}
  }
]

接下來,使用ssd_inception_v2模型運行deepstream-app 。Triton Server的示例配置文件位於中/configs/deepstream-app-trtis。通常需要運行兩個或更多配置文件deepstream-app。一個是頂級配置文件,為整個管道設置參數,其他是用於推理的配置文件。

為了提高可用性和簡化性,每個推理引擎都需要一個唯一的配置文件。如果級聯多個推理,則需要多個配置文件。對於此示例,使用以下文件:

  • source1_primary_detector.txt
  • config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt
[primary-gie]
啟用= 1
(0):nvinfer; (1):nvinferserver
插件類型= 1
推斷原始輸出dir = trtis輸出
批量大小= 1
間隔= 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 Server進行推理,這很常見。在這個配置文件,更改插件式下[primary-gie],以1使用推理服務器。

config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt文件用於指定推理選項,例如預處理,后處理和模型存儲庫。有關不同選項的更多信息,請參見《NVIDIA DeepStream SDK快速入門指南》和《NVIDIA DeepStream插件手冊》

為了將張量數據后處理到邊界框中,本示例使用一個名為的自定義邊界框解析器,該解析器NvDsInferParseCustomTfSSDcustom_parse_bbox_funcconfig文件中的鍵指定。此自定義函數custom_lib在以下配置文件的部分下指定的庫中編譯。的源代碼在NvDsInferParseCustomTfSSD中提供$DEEPSTREAM_DIR/sources/libs/nvdsinfer_customparser/

infer_config {
  unique_id:5
  gpu_ids:[0]
  max_batch_size:4
  后端{
    trt_is {
      型號名稱:“ ssd_inception_v2_coco_2018_01_28”
      版本:-1
      model_repo {
        根目錄:“ ../../ trtis_model_repo”
        log_level:2
        tf_gpu_memory_fraction:0.6
        tf_disable_soft_placement:0
      }
    }
  }
 
  預處理{
    網絡格式:IMAGE_FORMAT_RGB
    張量順序:TENSOR_ORDER_NONE
    maintain_aspect_ratio:0
    規范化{
      scale_factor:1.0
      channel_offsets:[0,0,0]
    }
  }
 
  后期過程 {
    labelfile_path:“ ../../ trtis_model_repo / ssd_inception_v2_coco_2018_01_28 / labels.txt”
    檢測{
      num_detected_classes:91
      custom_parse_bbox_func:“ NvDsInferParseCustomTfSSD”
      nms {
        置信度閾值:0.3
        iou_threshold:0.4
        最高紀錄:20
      }
    }
  }
 
  額外的 {
    copy_input_to_host_buffers:否
  }
 
  custom_lib {
    路徑:“ / opt / nvidia / deepstream / deepstream-5.0 / lib / libnvds_infercustomparser.so”
  }
}
input_control {
  進程模式:PROCESS_MODE_FULL_FRAME
  間隔:0
}

現在,使用以下命令運行該應用程序:

deepstream-app -c source1_primary_detector.txt

應打開一個帶有示例視頻的彈出窗口,其中顯示了行人,汽車和自行車周圍的邊界框。

應用程序需要花費幾分鍾來構建TensorFlow圖。如果應用程序無法運行並返回“已殺死”,則很可能是系統內存不足。檢查系統內存使用情況以確認問題。如果是內存問題,則根據tf_gpu_memory_fraction模型修改infer_configin中的參數config_infer_primary_detector_ssd_inception_v2_coco_2018_01_28.txt,或其他nvinferserver適用的配置文件。此參數為TF模型分配每個進程的GPU內存份額。將其更改為0.4可能會有所幫助。有關如何使用此參數的更多信息,請參閱DS插件手冊– Gst-inferserver

該模型最多可以檢測91個類別,包括各種動物,食物和運動器材。有關可以檢測到的類的更多信息,請參見trtis-model-repo/ssd_inception_v2_coco_2018_01_28/labels.txt文件。

嘗試將這個應用程序與其他視頻一起運行,看看該模型是否可以檢測到其他類。使用海衛服務器與的自定義DeepStream管道,檢查出的源代碼deepstream-app$DEEPSTREAM_DIR/sources/apps/sample-apps/deepstream-app

Python綁定

Python易於使用,並且在創建AI模型時被數據科學家和深度學習專家廣泛采用。NVIDIA引入了Python綁定,以幫助使用Python構建高性能的AI應用程序。可以使用GStreamer框架的Python綁定Gst-Python構造DeepStream管道。

 

 

 3. Python綁定堆棧。

DeepStream Python應用程序使用Gst-Python API操作構造管道,並使用探測函數訪問管道中各個點的數據。數據類型全部在本機C中,並且需要通過PyBindings或NumPy的填充層才能從Python應用程序訪問。張量數據是推斷后得出的原始張量輸出。如果要檢測對象,則需要通過解析和聚類算法對該張量數據進行后處理,以在檢測到的對象周圍創建邊界框。

利用張量數據的可用性,可以在Python應用程序內部創建解析算法。這很重要,因為張量數據的大小和尺寸以及解析數據所需的解析和聚類算法取決於AI模型的類型。如果希望能夠將新的模型或新的后處理技術引入DeepStream,則將發現非常有用。

另一個有用的數據源是圖像數據。這可用於捕獲AI模型拾取對象的異常,並且想要保存圖像以供將來參考。現在通過該應用程序支持訪問此框架。

DeepStream元數據的Python綁定與示例應用程序一起可用,以演示其用法。可以從GitHub存儲庫NVIDIA-AI-IOT / deepstream_python_apps下載Python示例應用程序。Python綁定模塊現已作為DeepStream SDK軟件包的一部分提供。

遠程管理和控制應用程序

從邊緣向雲發送元數據很有用,但能夠從雲接收和控制消息到邊緣也很重要。

DeepStream 5.0現在支持雙向通信,以發送和接收雲到設備的消息。這對於各種用例來說尤其重要,例如觸發應用程序記錄重要事件,更改操作參數和應用程序配置,空中(OTA)更新或請求系統日志和其他重要信息。

 

 

 4.雙向消息傳遞體系結構。

DeepStream應用程序可以訂閱Apache Kafka主題,以從雲中接收消息。設備到雲的消息傳遞當前是通過Gstnvmsgbroker(MSGBROKER)插件進行的。默認情況下,Gstnvmsgbroker插件使用適當的協議調用較低級的適配器庫。可以在Kafka,AMQP,MQTT或Azure IoT之間進行選擇,甚至可以創建自定義適配器。DeepStream 5.0引入了新的低級msgbroker庫,以提供統一的接口,用於跨各種協議的雙向消息傳遞。Gstnvmsgbroker插件可以選擇與此新庫進行接口連接,而不必直接調用協議適配器庫,這是使用配置選項控制的。

對於雲到邊緣消息傳遞,DeepStream 5.0中受支持的協議是Kafka,使用新的低級msgbroker庫,可直接與DeepStream應用程序進行交互。

DeepStream 5.0支持其他幾種IoT功能,這些功能可以與雙向消息傳遞結合使用。DeepStream現在提供了一個API,可根據異常消息或可能發送給設備的消息進行智能記錄。此外,在應用程序運行時,DeepStream還支持AI模型的OTA更新。

智能錄像

通常需要進行基於事件的視頻錄制。代替連續記錄內容,智能記錄可以節省寶貴的磁盤空間並可以提供更快的可搜索性。

智能記錄僅在滿足特定規則或條件時記錄事件。發出記錄信號的觸發器可以來自應用程序本地,來自邊緣運行的某些服務或來自雲。

 

 

 5.智能記錄架構。

提供了豐富的API以構建智能錄制事件管理器。這些操作可隨時用於開始和停止記錄。當必須記錄事件時,在觸發器之前開始保存剪輯很有用。通過智能記錄API操作,可以將其配置為記錄事件發生前的時間。這非常有用,因為在檢測到並觸發異常時,在異常發生與錄制事件管理器開始錄制之間存在一定的延遲。在記錄開始提供整個事件序列之前,記錄一段有限的時間。

為了演示此功能,在deepstream-test5應用程序中內置了一個智能錄制事件管理器。智能記錄模塊保留視頻緩存,以便記錄的視頻不僅在事件生成后具有幀,而且還可以在事件之前具有幀。可以根據使用情況配置視頻緩存的大小。事件管理器啟動智能記錄模塊的開始和停止選項。

可以通過從雲接收到的JSON消息來觸發記錄。消息格式如下:

{
      命令:字符串// <開始記錄/停止記錄>
      開始:字符串//“ 2020-05-18T20:02:00.051Z”
      結束:字符串//“ 2020-05-18T20:02:02.851Z”,
      傳感器: {
        id:字符串
      }
    }

deepstream-test5示例應用程序演示了如何從雲中接收和處理此類消息。目前支持Kafka。要激活此功能,請在應用程序配置文件中填充並啟用以下塊:

配置該組以啟用雲消息使用者。
[message-consumer0]
啟用= 1
proto-lib = / opt / nvidia / deepstream / deepstream-5.0 / lib / libnvds_kafka_proto.so
conn-str =;
config-file =
subscription-topic-list = ;;
如果消息的傳感器名稱為id而不是索引(0、1,2等),請使用此選項。
傳感器列表文件= dstest5_msgconv_sample_config.txt

在應用程序運行時,使用Kafka代理在主題中發布上述JSON消息subscribe-topic-list以開始和停止記錄。

有關如何在應用程序中使用此功能的更多信息,請參見《NVIDIA DeepStream插件手冊》的“智能視頻記錄”部分。可以在以下目錄中找到deepstream-test5的源代碼:

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

智能記錄事件管理器的實現可以在以下文件中找到:

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

OTA模型更新

邊緣IVA應用程序的理想要求之一是隨着AI模型的增強以實現更高的准確性,實時修改或更新AI模型。使用DeepStream 5.0,現在可以在應用程序運行時更新模型。這意味着可以使用零停機時間來更新模型。這對於不能接受任何延遲的關鍵任務應用程序很重要。

當需要連續交換模型時,此功能也很有用。例如,可以根據一天中的時間交換模型。通常,一個模型在光線充足的白天可能效果很好,但是另一種模型在光線不足的情況下效果會更好。在這種情況下,需要根據一天中的時間輕松地交換模型,而無需重新啟動應用程序。假設要更新的模型應具有相同的網絡參數。

在示例應用程序中,模型更新由用戶修改配置文件啟動。DeepStream應用程序監視配置文件中所做的更改並進行驗證。在確認更改之后,DeepStream OTA處理程序將交換到新模型,從而完成該過程。

 

 

 6. OTA模型更新工作流程。

在Deepstream-test5應用程序中使用提供的源代碼演示了此功能。要運行OTA模型更新,請使用-o選項運行該應用程序。這是OTA覆蓋文件。要交換模型時,請使用新的模型引擎文件更新此文件。

deepstream-test5 -c <DS配置> -o <OTA覆蓋>

更新后的模型必須是TensorRT引擎文件,並且在更改OTA覆蓋文件之前先離線完成。要創建TensorRT引擎文件,請運行trtexec

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

生成模型后,更新OTA覆蓋文件。當應用程序檢測到此更改時,將自動啟動模型更新過程。在實際環境中,將需要邊緣上的守護程序或服務來更新邊緣上的文件或從雲中更新文件。

安全通訊

對於大規模成功部署IoT設備而言,最重要且被忽略的方面之一是安全性:能夠在邊緣設備與雲之間安全地通信。對於公司而言,保護物聯網設備以及在受信任位置之間收發敏感數據至關重要。

使用DeepStream 5.0,Kafka適配器支持使用基於TLS的加密的安全通信,從而確保數據的機密性。TLS(傳輸層安全性)是SSL的后繼產品,但是這兩個術語在文獻中仍可互換使用。TLS / SSL通常用於在連接到Web上的服務器(例如HTTPS)時進行安全通信。TLS使用公共密鑰密碼術來建立會話密鑰,DeepStream應用程序和代理均對稱使用該會話密鑰來加密在會話期間傳輸的數據,從而即使在公共網絡上發送數據時也可以保持機密。

DeepStream 5.0支持兩種形式的客戶端身份驗證:基於SSL證書的雙向TLS身份驗證和基於用戶名/密碼機制的SASL / Plain身份驗證。客戶端身份驗證使代理能夠驗證連接到客戶端的客戶端,並根據其身份有選擇地提供訪問控制。雖然SASL / Plain使用熟悉的密碼身份驗證隱喻並且易於設置,但是雙向TLS使用客戶端證書進行身份驗證,並提供了一些優點,這些優點使得可以實現可靠的安全機制。

有關實現安全連接的更多信息,請參見《NVIDIA DeepStream插件手冊》

 

 

 7.使用SSL證書的安全身份驗證。

使用Mask R-CNN進行實例分割

為了感知導致可行見解的像素,計算機視覺依賴於深度學習來提供對環境的理解。對象檢測是一種常用的技術,用於識別框架中的單個對象,例如人或汽車。盡管對象檢測對於某些應用程序很有用,但是當想要了解像素級別的對象時,就不足。

實例分割可在識別對象時提供像素級的准確性。對於需要在對象及其背景之間划定界限的應用程序(例如在AI驅動的綠屏中),希望在其中模糊或更改框架的背景或在框架中分割道路或天空時,分段功能非常有用。也可以用於通過輸出中的實例蒙版來提高跟蹤器的准確性。

DeepStream使用新的自定義解析器進行后期處理,屏幕顯示(OSD)中的遮罩疊加功能(用於渲染分段遮罩),新的遮罩元數據類型以及新的消息架構來標識管道中的多邊形,從而在管道中實現實例分段。消息轉換器。可以使用跟蹤器中的掩碼元數據來改進跟蹤,在屏幕上呈現掩碼或通過消息代理發送掩碼元數據以進行脫機分析。

 

 

 8. Mask R-CNN DeepStream管道。

要開始使用Mask R-CNN,請從NVIDIA-AI-IOT / deepstream_tlt_apps#tlt-models GitHub存儲庫下載預訓練的模型。該模型在NVIDIA內部汽車行車記錄儀圖像數據集上進行了訓練,以識別汽車。有關更多信息,請參閱使用NVIDIA Transfer Learning Toolkit通過MaskRCNN進行實例分割的訓練模型

DeepStream SDK包含兩個示例應用程序,以演示如何使用預訓練的Mask 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]
啟用= 1
gpu-id = 0
border-width = 3
文字大小= 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
顯示文字= 0

/config_infer_primary_mrcnn.txt文件是一個推理配置文件,用於設置Mask R-CNN推理的參數。本節deepstream_app_source1_mrcnn.txt下的主配置引用了此文件[primary-gie]。這是運行Mask R-CNN所需的關鍵參數:

[財產]
gpu-id = 0
凈比例因子= 0.017507
偏移量= 123.675; 116.280; 103.53
模型顏色格式= 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例如是細分網絡
labelfile-path =
int8-calib-file =
推斷尺寸=
num-detected-classes = <與默認值不同的類數>
uff-input-blob-name =輸入
批量大小= 1
0 = FP32、1 = INT8、2 = FP16模式
網絡模式= 2
間隔= 0
gie-unique-id = 1
沒有集群
0 =組矩形,1 = DBSCAN,2 = NMS,3 = DBSCAN + NMS混合,4 =無(無聚類)
MRCNN僅支持cluster-mode = 4;聚類由模型本身完成
集群模式= 4
output-instance-mask = 1

parse-bbox-instance-mask-func-name選項設置自定義后處理功能以解析推斷的輸出。此功能內置到.so文件中custom-lib-path。以下目錄中提供了該庫的源代碼:

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

要運行該應用程序,請運行以下命令:

deepstream-app -c deepstream_app_source1_mrcnn.txt

在SDK中提供的剪輯上運行。要嘗試使用自己的來源,請[source0]在中進行修改/deepstream_app_source1_mrcnn.txt。圖9顯示了deepstream-app在各種平台上可以預期的端到端性能。性能以每秒處理的幀數(FPS)衡量deepstream-app

  • 在Jetson Nano和DLA上,此批處理大小為1。
  • 在Jetson AGX Xavier和Xavier NX上,此批處理大小為2。
  • 在T4上,此批量運行為4。

 

 

 9.性能牛逼他面膜R-CNN模型。

盡管最好直觀地看到輸出,但實際的用例可能是將元數據發送到其他進程或雲。此信息可由邊緣或雲上的其他應用程序使用,以進行進一步分析。

使用DeepStream,可以使用定義的遮罩多邊形模式,使用受支持的消息代理協議之一(例如Kafka或MQTT)發送遮罩元數據。DeepStream附帶了MaskRCNN模型的“從雲端到雲端”的示例。有關如何使用消息代理准備事件元數據和發送掩碼信息的更多信息,請參見以下應用程序:

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

建立部署

DeepStream 5.0提供了許多出色的功能,可以輕松地開始開發用於邊緣部署的AI應用程序。可以使用Python API操作和Triton Server來快速原型化並創建IVA管道,而無需花費太多精力。

可以使用Triton Server在培訓框架中本地部署AI模型,以增加靈活性。可以使用大量強大的物聯網功能來創建可管理的IVA應用程序。可以使用雙向TLS身份驗證將消息從邊緣安全地發送到雲。邊緣和雲之間的雙向通信提供了更好的應用程序可管理性。這可用於更新邊緣的AI模型,記錄感興趣的事件,或用於從設備檢索信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM