Open XiaoJiNu opened 3 months ago
你好,文档中没有看到转换为int8并实现推理的完整流程,能否支持该功能
支持,该 repo 沿用的是 tensorRT_Pro 中的 INT8 量化方案,采用的是 TRT C++ API 实现 PTQ 量化,因此你只需要在量化时指定 calibration dataset 路径即可,使用示例如下:
TRT::compile(
mode, // FP32、FP16、INT8
test_batch_size, // max batch size
onnx_file, // source
model_file, // save to
{},
int8process,
"inference",
"calibration_dataset", // 指定校准数据集路径
"calib.entropy.cache", // 指定保存的校准文件名
"Calibrator::Entropy", // 指定校准器,目前仅支持 Entropy 和 MinMax
);
谢谢,现在提示这个错误,我用的tensorrt版本是tensorrt-8.6.1,是onnx-tensorrt版本不对是吗 [2024-06-10 12:27:08][info][app_yolo.cpp:133]:===================== test YoloV10 INT8 yolov10n ================================== [2024-06-10 12:27:08][warn][trt_builder.cpp:550]:Too few images provided, 6[provided] < 16[max batch size], image copy will be performed [2024-06-10 12:27:08][info][trt_builder.cpp:564]:Compile INT8 Onnx Model 'yolov10n.onnx'. [2024-06-10 12:27:13][error][trt_builder.cpp:30]:NVInfer: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/ModelImporter.cpp:736: While parsing node number 310 [GatherElements -> "/model.23/GatherElements_output_0"]: [2024-06-10 12:27:13][error][trt_builder.cpp:30]:NVInfer: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/ModelImporter.cpp:737: --- Begin node --- [2024-06-10 12:27:13][error][trt_builder.cpp:30]:NVInfer: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/ModelImporter.cpp:738: input: "/model.23/Split_3_output_0" input: "/model.23/Tile_output_0" output: "/model.23/GatherElements_output_0" name: "/model.23/GatherElements" op_type: "GatherElements" attribute { name: "axis" i: 1 type: INT }
[2024-06-10 12:27:13][error][trt_builder.cpp:30]:NVInfer: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/ModelImporter.cpp:739: --- End node --- [2024-06-10 12:27:13][error][trt_builder.cpp:30]:NVInfer: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/ModelImporter.cpp:741: ERROR: /home/yr/yr/code/cv/object_detection/tensorRT_Pro-YOLOv8/src/tensorRT/onnx_parser/builtin_op_importers.cpp:1455 In function importGatherElements: [8] Assertion failed: !isDynamic(daDims) && !isDynamic(idxDims) && "This version of TenosrRT does not support GatherElements on dynamic shapes!" [2024-06-10 12:27:13][error][trt_builder.cpp:609]:Can not parse OnnX file: yolov10n.onnx [2024-06-10 12:27:13][error][yolo.cpp:202]:Engine yolov10n.INT8.trtmodel load failed [2024-06-10 12:27:13][error][app_yolo.cpp:53]:Engine is nullptr
算子解析问题,提示说这个版本的 TensorRT 不支持动态 shape 的 GatherElements 算子,默认使用的 onnxparser 版本是 8.0 的,你可能需要手动替换 onnx_parser 具体可以参考:RT-DETR推理详解及部署实现
好的谢谢
你好,文档中没有看到转换为int8并实现推理的完整流程,能否支持该功能