TAO v5.5.0

部署到 DeepStream 以用于 DetectNet_v2

您训练的深度学习和计算机视觉模型可以部署在边缘设备上,例如 Jetson Xavier 或 Jetson Nano、独立 GPU 或配备 NVIDIA GPU 的云端。TAO 旨在与 DeepStream SDK 集成,因此使用 TAO 训练的模型可以与 DeepStream SDK 开箱即用。

DeepStream SDK 是一个流分析工具包,用于加速构建基于 AI 的视频分析应用程序。本节将介绍如何将您训练的模型部署到 DeepStream SDK。

要将 TAO 训练的模型部署到 DeepStream,我们有两种选择:

  • 选项 1:将 .etlt 模型直接集成到 DeepStream 应用程序中。模型文件由导出生成。

  • 选项 2:使用 TAO Deploy 生成特定于设备的优化 TensorRT 引擎。生成的 TensorRT 引擎文件也可以被 DeepStream 摄取。

  • 选项 3(已弃用,适用于 x86 设备): 使用 TAO Converter 生成特定于设备的优化 TensorRT 引擎。

特定于机器的优化是在引擎创建过程中完成的,因此应为每个环境和硬件配置生成不同的引擎。如果推理环境的 TensorRT 或 CUDA 库更新(包括次要版本更新),或者生成了新模型,则需要生成新引擎。不支持运行使用不同版本的 TensorRT 和 CUDA 生成的引擎,这将导致影响推理速度、准确性和稳定性的未知行为,或者可能完全无法运行。

选项 1 非常简单。.etlt 文件和校准缓存由 DeepStream 直接使用。DeepStream 将自动生成 TensorRT 引擎文件,然后运行推理。TensorRT 引擎生成可能需要一些时间,具体取决于模型大小和硬件类型。

引擎生成可以提前完成,使用选项 2:TAO Deploy 用于将 .etlt 文件转换为 TensorRT;然后将此文件直接提供给 DeepStream。TAO Deploy 工作流程类似于 TAO Converter,后者已从 TAO 4.0.x 版本开始弃用于 x86 设备,但仍是部署到 Jetson 设备所必需的。

有关如何导出 TAO 模型的更多详细信息,请参阅导出模型部分。

标签文件是一个文本文件,其中包含 DetectNet_v2 模型训练用于检测的类名称。此处列出类的顺序必须与模型预测输出的顺序相匹配。当启用 --gen_ds_config 标志运行时,DetectNet_v2 中的导出子任务会生成此文件。

检测模型通常用作主要推理引擎。它也可以用作辅助推理引擎。要在示例 deepstream-app 中运行此模型,您必须修改现有的 config_infer_primary.txt 文件以指向此模型。

dstream_deploy_options2.png

选项 1:将模型 (.onnx) 直接集成到 DeepStream 应用程序中。

对于此选项,您需要在配置文件中添加以下参数。int8-calib-file 仅在 INT8 精度时是必需的。

复制
已复制!
            

onnx-file=<TAO exported .onnx> int8-calib-file=<Calibration cache file>

从 TAO 5.0.0 开始,.etlt 已弃用。要将 .etlt 直接集成到 DeepStream 应用程序中,您需要在配置文件中使用以下参数。

复制
已复制!
            

tlt-encoded-model=<TLT exported .etlt> tlt-model-key=<Model export key> int8-calib-file=<Calibration cache file>

tlt-encoded-model 参数指向从 TAO 导出的模型 (.etlt)。tlt-model-key 是模型导出期间使用的加密密钥。

选项 2:将 TensorRT 引擎文件与 DeepStream 应用程序集成。

  1. 使用 TAO Deploy 生成特定于设备的 TensorRT 引擎。

  2. 生成引擎文件后,修改以下参数以将此引擎与 DeepStream 一起使用

    复制
    已复制!
                

    model-engine-file=<PATH to generated TensorRT engine>

所有其他参数在两种方法之间是通用的。使用在 导出 时生成的 labels.txt 的路径更新配置文件中的 label-file-path 参数。

复制
已复制!
            

labelfile-path=<Classification labels>

对于所有选项,请参阅下面的配置文件。要了解有关所有参数的更多信息,请参阅 DeepStream 开发指南 中的 GsT-nvinfer 部分。

复制
已复制!
            

[property] gpu-id=0 # preprocessing parameters. net-scale-factor=0.0039215697906911373 model-color-format=0 # model paths. int8-calib-file=<Path to optional INT8 calibration cache> labelfile-path=<Path to detectNet_v2_labels.txt> onnx-file=<Path to DetectNet_v2 onnx model> batch-size=4 ## 0=FP32, 1=INT8, 2=FP16 mode network-mode=0 num-detected-classes=3 interval=0 gie-unique-id=1 is-classifier=0 #enable_dbscan=0 [class-attrs-all] threshold=0.2 group-threshold=1 ## Set eps=0.7 and minBoxes for enable-dbscan=1 eps=0.2 #minBoxes=3 roi-top-offset=0 roi-bottom-offset=0 detected-min-w=0 detected-min-h=0 detected-max-w=0 detected-max-h=0

上一篇 部署到 DeepStream 以用于多任务分类
下一篇 部署到 DeepStream 以用于 Deformable DETR
© 版权所有 2024,NVIDIA。 最后更新于 2024 年 10 月 15 日。