Mandylove1993 / CUDA-FastBEV

TensorRT deploy and PTQ/QAT tools development for FastBEV, total time only need 6.9ms!!!
MIT License
233 stars 37 forks source link

CUDA-FastBEV

This repository contains sources and model for Fast-BEV inference using CUDA & TensorRT. And provide PTQ and QAT int8 quantization code.

3D Object Detection(on nuScenes validation set)

Model Framework Precision mAP FPS
ResNet18 TensorRT FP16 24.3 113.6(on RTX2080Ti)
ResNet18-PTQ TensorRT FP16+INT8 23.89 143.8
ResNet18-head-PTQ TensorRT FP16 + INT8 23.83 144.9

Model and Data

Prerequisites

To build fastbev, we need to depend on the following libraries:

The data in the performance table was obtained by us on the Nvidia Orin platform, using TensorRT-8.6, cuda-11.4 and cudnn8.6 statistics.

Quick Start for Inference

1. Download models and datas to CUDA-FastBEV directory

unzip models and datas

unzip model.zip unzip nuScenes-example-data.zip

here is the directory structure after unzipping

CUDA-FastBEV |-- example-data |-- 0-FRONT.jpg |-- 1-FRONT_RIGHT.jpg |-- ... |-- example-data.pth |-- x.tensor |-- y.tensor -- valid_c_idx.tensor |-- src |-- ptq |-- model |-- resnet18int8 | |-- fastbev_pre_trt.onnx | |-- fastbev_post_trt_decode.onnx | |-- fastbev_ptq.pth |-- resnet18 -- resnet18int8head `-- tool

### 2. Configure the environment.sh
- Install python dependency libraries
```bash
apt install libprotobuf-dev
pip install onnx

export CUDA_Lib=/path/to/cuda/lib64 export CUDA_Inc=/path/to/cuda/include export CUDA_Bin=/path/to/cuda/bin export CUDA_HOME=/path/to/cuda

export CUDNN_Lib=/path/to/cudnn/lib

resnet18/resnet18int8/resnet18int8head

export DEBUG_MODEL=resnet18int8

fp16/int8

export DEBUG_PRECISION=int8 export DEBUG_DATA=example-data export USE_Python=OFF


- Apply the environment to the current terminal.
```bash
. tool/environment.sh

3. Compile and run

  1. Building the models for tensorRT

    bash tool/build_trt_engine.sh
  2. Compile and run the program

    bash tool/run.sh

PTQ and export ONNX

References