A project demonstrating Lidar related AI solutions, including three GPU accelerated Lidar/camera DL networks (PointPillars, CenterPoint, BEVFusion) and the related libs (cuPCL, 3D SparseConvolution, YUV2RGB, cuOSD,).
Lidar AI Solution
This is a highly optimized solution for self-driving 3D-lidar repository.
It does a great job of speeding up sparse convolution/CenterPoint/BEVFusion/OSD/Conversion.
CUDA & TensorRT solution for pointpillars inference, including:
Preprocess: Voxelization & Feature Extending with CUDA kernel
Detector: 2.5D backbone with TensorRT and onnx export solution.
Postprocess: Parse bounding box, class type and direction
Easy To Use: Preparation, inference, evaluation all in one to reproduce torch Impl accuracy.
cuOSD(CUDA On-Screen Display Library)
Draw all elements using a single CUDA kernel.
Line: Plotting lines by interpolation(Nearest or Linear).
RotateBox: Supports drawn with different border colors and fill colors.
Circle: Supports drawn with different border colors and fill colors.
Rectangle: Supports drawn with different border colors and fill colors.
Text: Supports stb_truetype and pango-cairo backends, allowing fonts to be read via TTF or using font-family.
Arrow: Combination of arrows by 3 lines.
Point: Plotting points by interpolation(Nearest or Linear).
Clock: Time plotting based on text support
cuPCL(CUDA Point Cloud Library)
Provide several GPU accelerated Point Cloud operations with high accuracy and high perfomrance at the same time: cuICP, cuFilter, cuSegmentation, cuOctree, cuCluster, cuNDT, Voxelization(incoming).
cuICP: CUDA accelerated iterative corresponding point vertex cloud(point-to-point) registration implementation.
cuFilter: Support CUDA accelerated features: PassThrough and VoxelGrid.
cuSegmentation: Support CUDA accelerated features: RandomSampleConsensus with a plane model.
cuOctree: Support CUDA accelerated features: Approximate Nearest Search and Radius Search.
cuCluster: Support CUDA accelerated features: Cluster based on the distance among points.
cuNDT: CUDA accelerated 3D Normal Distribution Transform registration implementation for point cloud data.
YUVToRGB(CUDA Conversion)
YUV to RGB conversion. Combine Resize/Padding/Conversion/Normalization into a single kernel function.
Most of the time, it can be bit-aligned with OpenCV.
It will give an exact result when the scaling factor is a rational number.
Better performance is usually achieved when the stride can divide by 4.
Supported Input Format:
NV12BlockLinear
NV12PitchLinear
YUV422Packed_YUYV
Supported Interpolation methods:
Nearest
Bilinear
Supported Output Data Type:
Uint8
Float32
Float16
Supported Output Layout:
CHW_RGB/BGR
HWC_RGB/BGR
CHW16/32/4/RGB/BGR for DLA input
Supported Features:
Resize
Padding
Conversion
Normalization
Thanks
This project makes use of a number of awesome open source libraries, including: