TAO v5.5.0

Mask RCNN 与 TAO Deploy

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

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

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

复制
已复制!
            

tao deploy mask_rcnn 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: 要转换的 .uff.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。

  • --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 mask_rcnn gen_trt_engine -m /workspace/mrcnn.uff \ -e /workspace/default_spec.txt \ -r /export \ --cal_image_dir /workspace/raw-data/val2017 \ --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

用于评估的批次大小将与引擎生成期间使用的 --max_batch_size 相同。标签文件将从 spec 文件中的 dataset_config.val_json_file 派生。与 TAO 评估 spec 文件相同的 spec 文件。示例 spec 文件

复制
已复制!
            

data_config{ image_size: "(832, 1344)" augment_input_data: True eval_samples: 500 training_file_pattern: "/workspace/tao-experiments/data/train*.tfrecord" validation_file_pattern: "/workspace/tao-experiments/data/val*.tfrecord" val_json_file: "/workspace/tao-experiments/data/raw-data/annotations/instances_val2017.json" # dataset specific parameters num_classes: 91 skip_crowd_during_training: True } maskrcnn_config { nlayers: 50 arch: "resnet" freeze_bn: True freeze_blocks: "[0,1]" gt_mask_size: 112 # Region Proposal Network rpn_positive_overlap: 0.7 rpn_negative_overlap: 0.3 rpn_batch_size_per_im: 256 rpn_fg_fraction: 0.5 rpn_min_size: 0. # Proposal layer. batch_size_per_im: 512 fg_fraction: 0.25 fg_thresh: 0.5 bg_thresh_hi: 0.5 bg_thresh_lo: 0. # Faster-RCNN heads. fast_rcnn_mlp_head_dim: 1024 bbox_reg_weights: "(10., 10., 5., 5.)" # Mask-RCNN heads. include_mask: True mrcnn_resolution: 28 # training train_rpn_pre_nms_topn: 2000 train_rpn_post_nms_topn: 1000 train_rpn_nms_threshold: 0.7 # evaluation test_detections_per_image: 100 test_nms: 0.5 test_rpn_pre_nms_topn: 1000 test_rpn_post_nms_topn: 1000 test_rpn_nms_thresh: 0.7 # model architecture min_level: 2 max_level: 6 num_scales: 1 aspect_ratios: "[(1.0, 1.0), (1.4, 0.7), (0.7, 1.4)]" anchor_scale: 8 # localization loss rpn_box_loss_weight: 1.0 fast_rcnn_box_loss_weight: 1.0 mrcnn_weight_loss_mask: 1.0 }

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

复制
已复制!
            

tao deploy mask_rcnn 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 引擎运行评估的示例

复制
已复制!
            

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

复制
已复制!
            

tao deploy mask_rcnn 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: 测试图像所在的目录

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

示例用法

用于推理的批次大小将与引擎生成期间使用的 --max_batch_size 相同。以下是使用 inference 命令通过 TensorRT 引擎运行推理的示例

复制
已复制!
            

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

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

上一篇 LPRNet 与 TAO Deploy
下一篇 Mask2former 与 TAO Deploy
© 版权所有 2024, NVIDIA。 上次更新于 2024 年 10 月 15 日。