CPU Generated Birds Eye View from KITTI Data
A CUDA C++ kernel that converts raw LiDAR point clouds into the pillar-voxel representation consumed by 3D object detection networks.
This project takes point clouds and turns them into 3D pillars in a BEV grid. This allows for 3D space to be processed by a normal CNN the same as a 2D image would be.
1. Benchmark table comparing this kernel against OpenPCDet's voxel_generator at four point cloud densities on an RTX 5060 Ti:
| Points | This kernel (ms) | OpenPCDet (ms) | Speedup |
|---|---|---|---|
| 25k | 1.050 ± 0.012 | 4.327 ± 0.003 | 4.12x |
| 50k | 1.111 ± 0.010 | 9.088 ± 0.006 | 8.18x |
| 100k | 1.150 ± 0.010 | 23.497 ± 0.033 | 20.43x |
| 130k | 1.207 ± 0.011 | 34.918 ± 0.009 | 28.92x |
voxelize/
├── csrc/
│ ├── voxelize.cu
│ ├── voxelize.h
│ └── voxelize_ext.cpp
├── voxelize/
│ ├── __init__.py
│ └── cpu_reference.py
├── tests/
│ ├── test_correctness.py
│ └── test_benchmark.py
├── benchmarks/
│ ├── benchmark.py
│ ├── profile_kernel.py
│ └── baseline.json
├── scripts/
│ └── explore_kitti.py
├── .github/
│ └── workflows/
│ └── ci.yml
├── setup.py
├── Makefile
└── README.md
This runs entirely on an RTX 5060 Ti 16GB. Only kernel execution and benchmarking is done here, no model training.
| Resource | Requirement |
|---|---|
| GPU | Any NVIDIA GPU |
| VRAM | 2GB minimum |
| CUDA Toolkit | 12.x |
| Python | 3.10+ |
| PyTorch | 2.x |
PointPillars (Lang et al., CVPR 2019)
