TAO v5.5.0

EfficientDet (TF1) with TAO Deploy

TF1 EfficientDet onnx 文件从 tao model export 生成,并作为 tao deploy 的输入,以生成优化的 TensorRT 引擎。有关训练 TF1 EfficientDet 的更多信息,请参阅 TF1 EfficientDet 训练文档

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

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

Copy
Copied!
            

tao deploy efficientdet_tf1 gen_trt_engine [-h] [-v] -m MODEL_PATH -r RESULTS_DIR [-k KEY] [--data_type {fp32,fp16,int8}] [--engine_file ENGINE_FILE] [--cal_image_dir CAL_IMAGE_DIR] [--cal_cache_file CAL_CACHE_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 模型

  • -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_image_dir:用于校准的图像目录。

注意

批次数量从设置为 --batches 参数的值中获得,而 batch_size 从设置为 --batch_size 参数的值中获得。对于 EfficientDet,校准作为一个单步过程发生,数据批次是动态生成的。请确保 --cal_image_dir 中提到的目录至少包含 batch_size * batches 张图像。有效图像扩展名为 .jpg、.jpeg 和 .png。在这种情况下,校准张量的 input_dimensions.etlt 模型的输入层派生。

INT8 引擎生成可选参数

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

  • --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)。

示例用法

这是一个使用 gen_trt_engine 命令生成 INT8 TensorRT 引擎的示例

Copy
Copied!
            

tao deploy efficientdet_tf1 gen_trt_engine -m /workspace/model.step-1000.onnx \ -r /export/ \ --data_type int8 \ --batch_size 8 \ --batches 10 \ --cal_cache_file /export/cal.bin \ --cal_cache_file /export/cal.bin \ --cal_image_dir /workspace/raw-data/val2017 \ --engine_file /export/int8.engine

标签文件将从 spec 文件中的 dataset_config.validation_json_file 派生。与 TAO 评估 spec 文件相同的 spec 文件。示例 spec 文件

Copy
Copied!
            

dataset_config { num_classes: 91 image_size: "512,512" training_file_pattern: "/workspace/tao-experiments/data/train*.tfrecord" validation_file_pattern: "/workspace/tao-experiments/data/val*.tfrecord" validation_json_file: "/workspace/tao-experiments/data/raw-data/annotations/instances_val2017.json" max_instances_per_image: 100 skip_crowd_during_training: True } eval_config { eval_batch_size: 16 eval_epoch_cycle: 2 eval_samples: 500 min_score_thresh: 0.4 max_detections_per_image: 100 }

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

Copy
Copied!
            

tao deploy efficientdet_tf1 evaluate [-h] -e EXPERIMENT_SPEC -m MODEL_PATH -r RESULTS_DIR [-i IMAGE_DIR] [--gpu_index GPU_INDEX] [--log_file LOG_FILE]

必需参数

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

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

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

可选参数

  • -i, --image_dir:测试图像所在的目录

示例用法

这是一个使用 evaluate 命令通过 TensorRT 引擎运行评估的示例

Copy
Copied!
            

tao deploy efficientdet_tf1 evaluate -m /export/int8.engine \ -e /workspace/efficientdet_retrain.txt \ -i /workspace/raw-data/val2017 \ -r /workspace/tao-experiments/inference

Copy
Copied!
            

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

必需参数

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

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

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

可选参数

  • -i, --image_dir:测试图像所在的目录

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

示例用法

这是一个使用 inference 命令通过 TensorRT 引擎运行推理的示例

Copy
Copied!
            

tao deploy efficientdet_tf1 inference -m /export/int8.engine \ -e /workspace/efficientdet_retrain.txt \ -i /workspace/raw-data/val2017 \ -r /workspace/tao-experiments/inference

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

Previous DSSD with TAO Deploy
Next EfficientDet (TF2) with TAO Deploy
© Copyright 2024, NVIDIA. Last updated on Oct 15, 2024.