Segformer 与 TAO Deploy
从 tao export
生成的 Segformer ONNX 文件被用作 tao-deploy
的输入,以生成优化的 TensorRT 引擎。我们不支持 Segformer 的 Int8 精度。
相同的 spec 文件可以用作 tao model segformer export
命令。
trt_config
gen_trt_engine
参数定义 TensorRT 引擎的生成。
gen_trt_engine:
onnx_file: /path/to/onnx_file
trt_engine: /path/to/trt_engine
input_width: 512
input_height: 512
tensorrt:
data_type: FP32
workspace_size: 1024
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 1
参数 | 数据类型 | 默认值 | 描述 | 支持的值 |
onnx_file |
string | 用于 TensorRT 引擎的精度 | ||
trt_engine |
string | TensorRT 引擎的最大工作区大小 | ||
input_channel |
unsigned int | 3 | 输入通道大小。仅支持值 3。 | 3 |
input_width |
unsigned int | 960 | 输入宽度 | >0 |
input_height |
unsigned int | 544 | 输入高度 | >0 |
batch_size |
unsigned int | -1 | ONNX 模型的批次大小 | >=-1 |
tensorrt
tensorrt
参数定义 TensorRT 引擎的生成。
参数 | 数据类型 | 默认值 | 描述 | 支持的值 |
data_type |
string | fp32 | 用于 TensorRT 引擎的精度 | fp32/fp16 |
workspace_size |
unsigned int | 1024 | TensorRT 引擎的最大工作区大小 | >1024 |
min_batch_size |
unsigned int | 1 | 用于优化 profile 形状的最小批次大小 | >0 |
opt_batch_size |
unsigned int | 1 | 用于优化 profile 形状的最佳批次大小 | >0 |
max_batch_size |
unsigned int | 1 | 用于优化 profile 形状的最大批次大小 | >0 |
使用以下命令运行 Segformer 引擎生成
tao deploy segformer gen_trt_engine -e /path/to/spec.yaml \
results_dir=/path/to/results \
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
: 用于设置 TensorRT 引擎生成的实验 spec 文件
可选参数
results_dir
: 将要转储 JSON 状态日志文件的目录gen_trt_engine.onnx_file
: 要转换的.onnx
模型gen_trt_engine.trt_engine
: 生成的引擎将存储的路径gen_trt_engine.tensorrt.data_type
: 要导出的精度
示例用法
以下是使用 gen_trt_engine
命令生成 FP16 TensorRT 引擎的示例
tao deploy segformer gen_trt_engine -e $DEFAULT_SPEC
gen_trt_engine.onnx_file=$ONNX_FILE \
gen_trt_engine.trt_engine=$ENGINE_FILE \
gen_trt_engine.tensorrt.data_type=FP16
与 TAO 评估/推理 spec 文件相同的 spec 文件。示例 spec 文件
model:
input_height: 512
input_width: 512
backbone:
type: "mit_b1"
dataset:
img_norm_cfg:
mean:
- 127.5
- 127.5
- 127.5
std:
- 127.5
- 127.5
- 127.5
test_dataset:
img_dir: /data/images/val
ann_dir: /data/masks/val
input_type: "grayscale"
data_root: /tlt-pytorch
palette:
- seg_class: foreground
rgb:
- 0
- 0
- 0
label_id: 0
mapping_class: foreground
- seg_class: background
rgb:
- 255
- 255
- 255
label_id: 1
mapping_class: background
batch_size: 1
workers_per_gpu: 1
使用以下命令运行 Segformer 引擎评估
tao deploy segformer evaluate -e /path/to/spec.yaml \
results_dir=/path/to/results \
evaluate.trt_engine=/path/to/engine/file
必需参数
-e, --experiment_spec
: 用于评估的实验 spec 文件。这应该与tao evaluate
spec 文件相同
可选参数
results_dir
: 将要转储评估文件和评估结果的目录evaluate.trt_engine
: 用于评估的引擎文件
示例用法
以下是使用 evaluate
命令通过 TensorRT 引擎运行评估的示例
tao deploy segformer evaluate -e $DEFAULT_SPEC
results_dir=$RESULTS_DIR \
evaluate.trt_engine=$ENGINE_FILE
使用以下命令运行 SegFormer 引擎推理
tao deploy segformer inference -e /path/to/spec.yaml \
results_dir=/path/to/results \
inference.trt_engine=/path/to/engine/file
必需参数
-e, --experiment_spec
: 用于推理的实验 spec 文件。这应该与tao inference
spec 文件相同。
可选参数
results_dir
: 将要转储 JSON 状态日志文件和推理结果的目录inference.trt_engine
: 用于推理的引擎文件
示例用法
对于推理,您可以重复使用在running_evaluation_through_tensorrt_engine下提到的 spec 配置。以下是使用 inference
命令通过 TensorRT 引擎运行推理的示例
tao deploy segformer inference -e $DEFAULT_SPEC
results_dir=$RESULTS_DIR \
inference.trt_engine=$ENGINE_FILE
掩码覆盖可视化将存储在 $RESULTS_DIR/vis_overlay
下,原始预测(掩码格式)将存储在 $RESULTS_DIR/mask_labels
下。