OCDNet 与 TAO Deploy
为了生成优化的 TensorRT 引擎,OCDNet .onnx
文件(从 tao export
生成)被作为 tao-deploy
的输入。有关训练 OCDNet 模型的更多信息,请参阅 OCDNet 训练文档。
gen_trt_engine
实验规范文件中的 gen_trt_engine
参数提供了从 .onnx
文件生成 TensorRT 引擎的选项。以下是一个示例配置
gen_trt_engine:
width: 1280
height: 736
img_mode: BGR
onnx_file: '/results/export/model_best.onnx'
trt_engine: /results/export/model_int8.engine
tensorrt:
data_type: int8
workspace_size: 20480
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 1
layers_precision: [
"/backbone/patch_embed/stem/stem.0/Conv:fp32",
"/backbone/patch_embed/stages.0/blocks/blocks.0/conv_dw/Conv:fp32",
"/backbone/patch_embed/stages.0/blocks/blocks.0/norm/ReduceMean:fp32"
]
calibration:
cal_image_dir: /data/ocdnet_vit/train/img
cal_cache_file: /results/export/cal.bin
cal_batch_size: 8
cal_num_batches: 2
参数 | 数据类型 | 默认值 | 描述 | 支持的值 |
results_dir |
string | – | 结果目录的路径 | – |
onnx_file |
string | – | .onnx 模型的路径 |
– |
trt_engine |
string | – | 生成的 TensorRT 引擎的绝对路径 | – |
width |
unsigned int | – | 输入宽度 | >0 |
height |
unsigned int | – | 输入高度 | >0 |
img_mode |
string | BGR | 输入图像模式 | BGR,RGB,GRAY |
tensorrt
tensorrt
参数定义 TensorRT 引擎的生成。
参数 | 数据类型 | 默认值 | 描述 | 支持的值 |
data_type |
string | fp32 | 用于 TensorRT 引擎的精度 | fp32/fp16/int8 |
workspace_size |
unsigned int | 1024 | TensorRT 引擎的最大工作区大小 | >1024 |
min_batch_size |
unsigned int | 1 | 优化配置文件形状的最小批次大小 | >0 |
opt_batch_size |
unsigned int | 1 | 优化配置文件形状的最佳批次大小 | >0 |
max_batch_size |
unsigned int | 1 | 优化配置文件形状的最大批次大小 | >0 |
layers_precision |
List | – | 用于指定层精度的列表 | layerName:[precision] precision: fp32/fp16/int8 |
calibration
calibration
参数定义使用 PTQ INT8 校准的 TensorRT 引擎生成。
参数 | 数据类型 | 默认值 | 描述 | 支持的值 |
cal_image_dir |
string list | 包含用于校准的图像的路径列表 | ||
cal_cache_file |
string | 要转储的校准缓存文件的路径 | ||
cal_batch_size |
unsigned int | 1 | 校准期间每个批次的批次大小 | >0 |
cal_num_batches |
unsigned int | 1 | 要校准的批次数量 | >0 |
使用以下命令运行 OCDNet 引擎生成
tao deploy ocdnet gen_trt_engine -e /path/to/spec.yaml \
gen_trt_engine.onnx_file=/path/to/onnx/file \
gen_trt_engine.trt_engine=/path/to/engine/file \
gen_trt_engine.tensorrt.data_type=<data_type>
必需参数
-e, --experiment_spec_file
:实验规范文件的路径gen_trt_engine.onnx_file
:要转换的.onnx
模型。如果规范文件中定义了此参数,则可以省略。gen_trt_engine.trt_engine
:将存储生成的引擎的路径。如果规范文件中定义了此参数,则可以省略。gen_trt_engine.tensorrt.data_type
:要导出的精度。如果规范文件中定义了此参数,则可以省略。
可选参数
results_dir
:将转储状态日志 JSON 文件的目录
示例用法
以下是使用 gen_trt_engine
命令生成 FP16 TensorRT 引擎的示例
tao deploy ocdnet gen_trt_engine -e $SPECS_DIR/gen_trt_engine.yaml \
gen_trt_engine.onnx_file=$RESULTS_DIR/export/model_best.onnx \
gen_trt_engine.trt_engine=$RESULTS_DIR/export/ocdnet_model.engine \
gen_trt_engine.tensorrt.data_type=fp16
以下是使用 gen_trt_engine
命令生成 INT8 TensorRT 引擎的示例
tao deploy ocdnet gen_trt_engine -e $SPECS_DIR/gen_trt_engine.yaml \
gen_trt_engine.onnx_file=$RESULTS_DIR/export/model_best.onnx \
gen_trt_engine.tensorrt.min_batch_size=1 \
gen_trt_engine.tensorrt.opt_batch_size=3 \
gen_trt_engine.tensorrt.max_batch_size=3 \
gen_trt_engine.tensorrt.data_type=int8 \
gen_trt_engine.trt_engine=$RESULTS_DIR/export/ocdnet_model.engine
TAO 评估规范文件 可以重用于此步骤。以下是一个示例规范文件
model:
load_pruned_graph: False
pruned_graph_path: /results/prune/pruned_0.1.pth
evaluate:
results_dir: /results/evaluate
checkpoint: /results/train/model_best.pth
trt_engine: /results/export/ocdnet_model.engine
gpu_id: 0
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
dataset:
validate_dataset:
data_path: ['/data/ocdnet/test']
args:
pre_processes:
- type: Resize2D
args:
short_size:
- 1280
- 736
resize_text_polys: true
img_mode: BGR
filter_keys: []
ignore_tags: ['*', '###']
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 4
使用以下命令运行 OCDNet 引擎评估
tao deploy ocdnet evaluate -e /path/to/spec.yaml \
results_dir=/path/to/results \
evaluate.trt_engine=/path/to/engine/file
必需参数
-e, --experiment_spec
:用于评估的实验规范文件。这应该与tao evaluate
规范文件相同。evaluate.trt_engine
:要运行评估的引擎文件。如果在规范文件中定义了此参数,则可以忽略。
可选参数
results_dir
:将转储状态日志 JSON 文件和评估结果的目录。
示例用法
以下是使用 evaluate
命令通过 TensorRT 引擎运行评估的示例
tao deploy ocdnet evaluate -e $SPECS_DIR/evaluate.yaml \
results_dir=$RESULTS_DIR \
evaluate.trt_engine=$RESULTS_DIR/export/ocdnet_model.engine
您可以重用 TAO 推理规范文件 用于此步骤。以下是一个示例规范文件
inference:
checkpoint: /results/train/model_best.pth
trt_engine: /results/export/ocdnet_model.engine
input_folder: /data/ocdnet/test/img
width: 1280
height: 736
img_mode: BGR
polygon: false
results_dir: /results/inference
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
使用以下命令运行 OCDNet 引擎推理
tao deploy ocdnet inference -e /path/to/spec.yaml \
inference.trt_engine=$RESULTS_DIR/export/ocdnet_model.engine \
inference.input_folder=$DATA_DIR/test/img \
inference.results_dir=$RESULTS_DIR/inference
必需参数
-e, --experiment_spec_file
:实验规范文件的路径inference.trt_engine
:要运行推理的引擎文件。如果规范文件中定义了此参数,则可以省略。inference.input_folder
:要运行推理的引擎文件。如果规范文件中定义了此参数,则可以省略。inference.results_dir
:将转储状态日志 JSON 文件和推理结果的目录。如果规范文件中定义了此参数,则可以省略。
示例用法
以下是使用 inference
命令通过 TensorRT 引擎运行推理的示例
tao deploy ocdnet inference -e $SPECS_DIR/inference.yaml \
inference.trt_engine=$RESULTS_DIR/export/ocdnet_model.engine \
inference.input_folder=$DATA_DIR/test/img \
inference.results_dir=$RESULTS_DIR/inference