DSSD 与 TAO Deploy
从 tao model export
生成的 DSSD .etlt
文件作为 tao deploy
的输入,以生成优化的 TensorRT 引擎。有关训练 DSSD 的更多信息,请参阅 DSSD 训练文档。
相同的 spec 文件可以用于 tao model dssd export
命令。
使用以下命令运行 DSSD 引擎生成
tao deploy dssd 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]
[--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_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。--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 dssd 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
}
使用以下命令运行 DSSD 引擎评估
tao deploy dssd 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 dssd inference -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/inference
tao deploy dssd 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 dssd 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
下。