TAO v5.5.0

RetinaNet 与 TAO Deploy

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

可以使用与 tao model retinanet export 命令相同的 spec 文件。

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

复制
已复制!
            

tao deploy retinanet 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_image_dir CAL_IMAGE_DIR] [--cal_data_file CAL_DATA_FILE] [--cal_cache_file CAL_CACHE_FILE] [--cal_json_file CAL_JSON_FILE] [--max_batch_size MAX_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:所需的引擎数据类型。选项为 fp32fp16int8。默认值为 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_data_file:为校准引擎生成的 Tensorfile。如果与 --cal_image_dir 一起使用,它也可以是输出文件。

  • --cal_image_dir:用于校准的图像目录。

注意

--cal_image_dir 参数用于图像,并应用必要的预处理以在 --cal_data_file 参数中提到的路径生成 tensorfile,该文件反过来用于校准。tensorfile 中批次的数量从设置为 --batches 参数的值获得,batch_size 从设置为 --batch_size 参数的值获得。请确保 --cal_image_dir 中提到的目录至少有 batch_size * batches 张图像。有效图像扩展名为 .jpg、.jpeg 和 .png。在这种情况下,校准张量的 input_dimensions.etlt 模型的输入层导出。

INT8 引擎生成可选参数

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

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

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

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

  • --max_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 retinanet gen_trt_engine -m /workspace/ssd_resnet18_epoch_100_int8.onnx \ -e /workspace/ssd_retrain_resnet18_kitti.txt \ -r /export/ \ --cal_image_dir /workspace/data/training/image_2 \ --data_type int8 \ --batch_size 8 \ --batches 10 \ --cal_cache_file /export/cal.bin \ --cal_data_file /export/cal.tensorfile \ --engine_file /export/int8.engine

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

复制
已复制!
            

eval_config { batch_size: 8 matching_iou_threshold: 0.5 } nms_config { confidence_threshold: 0.001 } augmentation_config { output_width: 1248 output_height: 384 output_channel: 3 } 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 }

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

复制
已复制!
            

tao deploy retinanet 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 retinanet evaluate -m /export/int8.engine \ -e /workspace/ssd_retrain_resnet18_kitti.txt \ -i /workspace/tao-experiments/data/val/images \ -l /workspace/tao-experiments/data/val/labels \ -r /workspace/tao-experiments/evaluate

复制
已复制!
            

tao deploy retinanet 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 retinanet inference -m /export/int8.engine \ -e /workspace/ssd_retrain_resnet18_kitti.txt \ -i /workspace/tao-experiments/data/val/images \ -r /workspace/tao-experiments/inference

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

上一篇 OCDNet 与 TAO Deploy
下一篇 SSD 与 TAO Deploy
© 版权所有 2024, NVIDIA。 最后更新于 2024 年 10 月 15 日。