本仓库是BEV 3D检测(包括BEVFormer、BEVDet)在TensorRT上的部署项目,支持FP32/FP16/INT8推理。同时,为了提高BEVFormer在TensorRT上的推理速度,本项目实现了一些支持nv_half、nv_half2和INT8的TensorRT算子。在几乎不影响精度的情况下,BEVFormer base的推理速度可以提高四倍以上,引擎大小可以减少90%以上,GPU内存使用可以节省80%以上。此外,该项目还支持MMDetection中常见的2D目标检测模型,只需少量代码更改即可支持INT8量化和TensorRT部署。
模型 | 数据集 | 批次大小 | NDS/mAP | FPS | 大小 (MB) | 内存 (MB) | 设备 |
---|---|---|---|---|---|---|---|
BEVFormer tiny<br />下载 | NuScenes | 1 | NDS: 0.354<br/>mAP: 0.252 | 15.9 | 383 | 2167 | RTX 3090 |
BEVFormer small<br />下载 | NuScenes | 1 | NDS: 0.478<br/>mAP: 0.370 | 5.1 | 680 | 3147 | RTX 3090 |
BEVFormer base<br />下载 | NuScenes | 1 | NDS: 0.517<br/>mAP: 0.416 | 2.4 | 265 | 5435 | RTX 3090 |
模型 | 数据集 | 批量大小 | 浮点/整型 | 量化方法 | NDS/mAP | FPS | 大小 (MB) | 内存 (MB) | 设备 |
---|---|---|---|---|---|---|---|---|---|
BEVFormer tiny | NuScenes | 1 | FP32 | - | NDS: 0.354<br/>mAP: 0.252 | 37.9 (x1) | 136 (x1) | 2159 (x1) | RTX 3090 |
BEVFormer tiny | NuScenes | 1 | FP16 | - | NDS: 0.354<br/>mAP: 0.252 | 69.2 (x1.83) | 74 (x0.54) | 1729 (x0.80) | RTX 3090 |
BEVFormer tiny | NuScenes | 1 | FP32/INT8 | PTQ熵<br />每张量 | NDS: 0.353<br/>mAP: 0.249 | 65.1 (x1.72) | 58 (x0.43) | 1737 (x0.80) | RTX 3090 |
BEVFormer tiny | NuScenes | 1 | FP16/INT8 | PTQ熵<br />每张量 | NDS: 0.353<br/>mAP: 0.249 | 70.7 (x1.87) | 54 (x0.40) | 1665 (x0.77) | RTX 3090 |
BEVFormer small | NuScenes | 1 | FP32 | - | NDS: 0.478<br/>mAP: 0.370 | 6.6 (x1) | 245 (x1) | 4663 (x1) | RTX 3090 |
BEVFormer small | NuScenes | 1 | FP16 | - | NDS: 0.478<br/>mAP: 0.370 | 12.8 (x1.94) | 126 (x0.51) | 3719 (x0.80) | RTX 3090 |
BEVFormer small | NuScenes | 1 | FP32/INT8 | PTQ熵<br />每张量 | NDS: 0.476<br/>mAP: 0.367 | 8.7 (x1.32) | 158 (x0.64) | 4079 (x0.87) | RTX 3090 |
BEVFormer small | NuScenes | 1 | FP16/INT8 | PTQ熵<br />每张量 | NDS: 0.477<br/>mAP: 0.368 | 13.3 (x2.02) | 106 (x0.43) | 3441 (x0.74) | RTX 3090 |
BEVFormer base * | NuScenes | 1 | FP32 | - | NDS: 0.517<br/>mAP: 0.416 | 1.5 (x1) | 1689 (x1) | 13893 (x1) | RTX 3090 |
BEVFormer base | NuScenes | 1 | FP16 | - | NDS: 0.517<br/>mAP: 0.416 | 1.8 (x1.20) | 849 (x0.50) | 11865 (x0.85) | RTX 3090 |
BEVFormer base * | NuScenes | 1 | FP32/INT8 | PTQ熵<br />每张量 | NDS: 0.516<br/>mAP: 0.414 | 1.8 (x1.20) | 426 (x0.25) | 12429 (x0.89) | RTX 3090 |
BEVFormer base * | NuScenes | 1 | FP16/INT8 | PTQ熵<br />每张量 | NDS: 0.515<br/>mAP: 0.414 | 2.2 (x1.47) | 244 (x0.14) | 11011 (x0.79) | RTX 3090 |
* 使用TensorRT-8.5.1.7时onnx2trt出现"内存不足"错误,但使用TensorRT-8.4.3.1可以成功转换。因此,这些引擎的版本是TensorRT-8.4.3.1。
使用nv_half的FP16插件