TAO v5.5.0

使用 TAO Deploy 部署 DetectNet_v2

tao model export 生成的 DetectNet_v2 etlt` 文件被用作 tao deploy 的输入,以生成优化的 TensorRT 引擎。有关训练 DetectNet_v2 的更多信息,请参阅 DetectNet_v2 训练文档

DetectNet_v2 使用训练集中的数据进行 INT8 校准。数据批次在整个训练数据集中随机采样,从而提高 INT8 模型的准确性。INT8 校准步骤中的数据预处理与训练过程相同。校准作为一个单步过程发生,数据批次是动态生成的。相同的 spec 文件可以用于 tao model detectnet_v2 export 命令。

使用以下命令运行 DetectNet_v2 引擎生成

复制
已复制!
            

tao deploy detectnet_v2 gen_trt_engine [-h] [-v] -m MODEL_PATH -e EXPERIMENT_SPEC -r RESULTS_DIR [-k KEY] [--data_type {fp32,fp16,int8}] [--engine_file ENGINE_FILE] [--cal_cache_file CAL_CACHE_FILE] [--cal_json_file CAL_JSON_FILE] [--max_batch_size MAX_BATCH_SIZE] [--min_batch_size MIN_BATCH_SIZE] [--opt_batch_size OPT_BATCH_SIZE] [--batch_size BATCH_SIZE] [--batches BATCHES] [--max_workspace_size MAX_WORKSPACE_SIZE] [-s STRICT_TYPE_CONSTRAINTS] [--force_ptq FORCE_PTQ] [--gpu_index GPU_INDEX] [--log_file LOG_FILE]

必需参数

  • -m, --model_path: 要转换的 .onnx.etlt 模型

  • -e, --experiment_spec: 用于设置 TensorRT 引擎生成的实验 spec 文件。这应该与导出规范文件相同。

  • -r, --results_dir: 将要转储 JSON 状态日志文件的目录

可选参数

  • -h, --help: 显示此帮助消息并退出。

  • -k, --key: 用于加载 .etlt 模型的用户特定编码密钥

  • --data_type: 期望的引擎数据类型。选项为 fp32, fp16, int8。默认值为 fp32。校准缓存将在 INT8 模式下生成。如果使用 INT8,则需要以下 INT8 参数。

  • --engine_file: 序列化的 TensorRT 引擎文件的路径。请注意,此文件是硬件特定的,不能在 GPU 之间通用。由于 TensorRT 引擎文件是硬件特定的,除非部署 GPU 与训练 GPU 完全相同,否则您不能使用此引擎文件进行部署。

  • -s, --strict_type_constraints: 一个布尔标志,指示在构建 TensorRT 引擎时是否应用 TensorRT 严格类型约束。

  • --gpu_index: 用于导出模型的(离散)GPU 的索引。如果机器安装了多个 GPU,您可以指定 GPU 的索引来运行导出。请注意,gen_trt_engine 只能在单个 GPU 上运行。

  • --log_file: 日志文件的路径。默认路径为 “stdout”。

INT8 引擎生成可选参数

  • --cal_cache_file: 保存校准缓存文件的路径。默认值为 ./cal.bin

  • --cal_json_file: 包含 QAT 模型张量比例的 json 文件的路径。如果要为 QAT 模型生成引擎,则此参数是必需的。

  • --batches: 用于校准的批次数。默认值为 10。

  • --batch_size: 用于校准的批次大小。默认值为 1。

  • --max_batch_size: TensorRT 引擎的最大批次大小。默认值为 1。

  • --min_batch_size: TensorRT 引擎的最小批次大小。默认值为 1。

  • --opt_batch_size: TensorRT 引擎的最佳批次大小。默认值为 1。

  • --max_workspace_size: TensorRT 引擎的最大工作区大小(Gb)。默认值为:(2 Gb)。

  • --force_ptq: 一个布尔标志,用于强制对导出的 etlt 模型进行训练后量化。

注意

当为启用 QAT 训练的模型生成 TensorRT 引擎时,需要由 cal_cache_file 参数定义的张量比例因子。但是,请注意,当前版本的 QAT 不原生支持 Jetson 中的 DLA int8 部署。为了在带有 DLA int8 的 Jetson 上部署此模型,请使用 --force_ptq 标志以使用 TensorRT 训练后量化来生成校准缓存文件。

示例用法

以下是使用 gen_trt_engine 命令生成 INT8 TensorRT 引擎的示例

复制
已复制!
            

tao deploy detectnet_v2 gen_trt_engine -m /workspace/dnv2_resnet18_epoch_100_int8.onnx \ -e /workspace/dnv2_retrain_resnet18_kitti.txt \ -r /export/ \ --data_type int8 \ --batch_size 8 \ --batches 10 \ --cal_cache_file /export/cal.bin \ --engine_file /export/int8.engine

与 TAO 评估 spec 文件相同的 spec 文件。示例 spec 文件

复制
已复制!
            

dataset_config { validation_data_sources: { image_directory_path: "/workspace/tao-experiments/data/val/images" label_directory_path: "/workspace/tao-experiments/data/val/labels" } image_extension: "png" target_class_mapping { key: "car" value: "car" } target_class_mapping { key: "pedestrian" value: "pedestrian" } target_class_mapping { key: "cyclist" value: "cyclist" } target_class_mapping { key: "van" value: "car" } target_class_mapping { key: "person_sitting" value: "pedestrian" } validation_fold: 0 } postprocessing_config { target_class_config { key: "car" value { clustering_config { clustering_algorithm: DBSCAN dbscan_confidence_threshold: 0.9 coverage_threshold: 0.00499999988824 dbscan_eps: 0.20000000298 dbscan_min_samples: 0.0500000007451 minimum_bounding_box_height: 20 } } } target_class_config { key: "cyclist" value { clustering_config { clustering_algorithm: DBSCAN dbscan_confidence_threshold: 0.9 coverage_threshold: 0.00499999988824 dbscan_eps: 0.15000000596 dbscan_min_samples: 0.0500000007451 minimum_bounding_box_height: 20 } } } target_class_config { key: "pedestrian" value { clustering_config { clustering_algorithm: DBSCAN dbscan_confidence_threshold: 0.9 coverage_threshold: 0.00749999983236 dbscan_eps: 0.230000004172 dbscan_min_samples: 0.0500000007451 minimum_bounding_box_height: 20 } } } } evaluation_config { minimum_detection_ground_truth_overlap { key: "car" value: 0.699999988079 } minimum_detection_ground_truth_overlap { key: "cyclist" value: 0.5 } minimum_detection_ground_truth_overlap { key: "pedestrian" value: 0.5 } evaluation_box_config { key: "car" value { minimum_height: 20 maximum_height: 9999 minimum_width: 10 maximum_width: 9999 } } evaluation_box_config { key: "cyclist" value { minimum_height: 20 maximum_height: 9999 minimum_width: 10 maximum_width: 9999 } } evaluation_box_config { key: "pedestrian" value { minimum_height: 20 maximum_height: 9999 minimum_width: 10 maximum_width: 9999 } } }

使用以下命令运行 DetectNet_v2 引擎评估

复制
已复制!
            

tao deploy detectnet_v2 evaluate [-h] -e EXPERIMENT_SPEC -m MODEL_PATH -r RESULTS_DIR [-i IMAGE_DIR] [-l LABEL_DIR] [-b BATCH_SIZE] [--gpu_index GPU_INDEX] [--log_file LOG_FILE]

必需参数

  • -e, --experiment_spec: 用于评估的实验 spec 文件。这应该与 tao evaluate 规范文件相同。

  • -m, --model_path: 要运行评估的引擎文件。

  • -r, --results_dir: 将存储评估结果的目录

可选参数

  • -i, --image_dir: 测试图像所在的目录。如果未指定,将使用 spec 文件中的 validation_data_sources.image_directory_path

  • -l, --label_dir: 测试标注所在的目录。如果未指定,将使用 spec 文件中的 validation_data_sources.label_directory_path

  • -b, --batch_size: 用于评估的批次大小。请注意,此值不能大于引擎生成期间使用的 --max_batch_size。如果未指定,将使用 eval_config.batch_size 代替。

示例用法

以下是使用 evaluate 命令通过 TensorRT 引擎运行评估的示例

复制
已复制!
            

tao deploy detectnet_v2 inference -m /export/int8.engine \ -e /workspace/dnv2_retrain_resnet18_kitti.txt \ -i /workspace/tao-experiments/data/val/images \ -l /workspace/tao-experiments/data/val/labels \ -r /workspace/tao-experiments/inference

复制
已复制!
            

tao deploy detectnet_v2 inference [-h] -e EXPERIMENT_SPEC -m MODEL_PATH -r RESULTS_DIR [-i IMAGE_DIR] [-b BATCH_SIZE] [--gpu_index GPU_INDEX] [--log_file LOG_FILE]

必需参数

  • -e, --experiment_spec: 用于评估的实验 spec 文件。这应该与 tao evaluate 规范文件相同。

  • -m, --model_path: 要运行评估的引擎文件。

  • -r, --results_dir: 将存储评估结果的目录

可选参数

  • -i, --image_dir: 测试图像所在的目录。如果未指定,将使用 spec 文件中的 validation_data_sources.image_directory_path

  • -b, --batch_size: 用于评估的批次大小。请注意,此值不能大于引擎生成期间使用的 --max_batch_size。如果未指定,将使用 eval_config.batch_size 代替。

示例用法

以下是使用 inference 命令通过 TensorRT 引擎运行推理的示例

复制
已复制!
            

tao deploy detectnet_v2 inference -m /export/int8.engine \ -e /workspace/dnv2_retrain_resnet18_kitti.txt \ -i /workspace/tao-experiments/data/val/images \ -r /workspace/tao-experiments/inference

可视化结果将存储在 $RESULTS_DIR/images_annotated 下,KITTI 格式的预测将存储在 $RESULTS_DIR/labels 下。

上一篇 使用 TAO Deploy 部署 Grounding DINO
下一篇 使用 TAO Deploy 部署 DSSD
© 版权所有 2024, NVIDIA。 上次更新于 2024 年 10 月 15 日。