This project provides a comprehensive pipeline for radar point cloud clustering, tracking, visualization, and precision evaluation using the NuScenes dataset. The system processes radar data to identify and track clusters across multiple frames and cameras, visualizes results on both 360-degree camera views and global maps, and evaluates clustering precision.
- Overview
- Visual Results
- Installation
- Quick Start
- 1. Clustering and Tracking (clusterTrack)
- 2. Visualization (visCamMap)
- 3. Precision Evaluation (precision)
- Output Structure
- Configuration
- Troubleshooting
The project consists of three main components:
- Clustering and Tracking (
clusterTrack/) - Processes radar data to identify and track clusters - Visualization (
visCamMap/) - Creates visual outputs for camera views and global maps - Precision Evaluation (
precision/) - Evaluates clustering accuracy and generates performance metrics
Our model successfully detects and tracks the radar cluster corresponding to the bus as a moving object over a long sequence of frames.
- Python 3.8+
- NuScenes dataset (v1.0-mini or full version)
pip install -r requirements.txtDownload the NuScenes dataset and update the data_path in configuration files or use command-line arguments to specify the path.
-
Process radar data and generate clusters:
cd clusterTrack python processScenes.py --data-path /path/to/nuscenes --scene-name scene-0061 -
Visualize on 360-degree cameras:
cd ../visCamMap python main360.py --mode single --scene scene-0061 -
Visualize on global map:
python mainMap.py --mode single --scene scene-0061
-
Evaluate precision:
cd ../precision python main.py --data-path /path/to/nuscenes --plot-type precisionSimga5
Step 1: Navigate to the clustering directory
cd clusterTrackProcesses radar data from NuScenes dataset and generates clustering results.
Usage:
# Process a single scene
python processScenes.py --data-path /path/to/nuscenes --scene-name scene-0061
# Process a range of scenes
python processScenes.py --data-path /path/to/nuscenes --start 0 --end 5
# Process all scenes with custom output directory
python processScenes.py --data-path /path/to/nuscenes --output-dir ./custom_outputParameters:
--data-path: Path to NuScenes dataset (required)--scene-name: Process specific scene by name--start: Starting scene index (default: 0)--end: Ending scene index (default: all remaining)--output-dir: Custom output directory for results
Step 2: Navigate to the visualization directory
cd visCamMapCreates videos showing radar clusters overlaid on 360-degree camera views.
Usage:
# Visualize single scene
python main360.py --mode single --scene scene-0061
# Visualize range of scenes
python main360.py --mode range --start 0 --end 3
# Visualize all available scenes
python main360.py --mode allOutput: Creates individual camera frame images, combined panoramic frames, and MP4 videos.
Creates videos showing radar clusters on global map with road context.
Usage:
# Visualize single scene on global map
python mainMap.py --mode single --scene scene-0061
# Visualize multiple scenes
python mainMap.py --mode range --start 0 --end 5
# Process all scenes
python mainMap.py --mode allOutput: Creates global map visualizations with cluster tracking and off-road detection.
Step 3: Navigate to the precision evaluation directory
cd precisionComprehensive precision evaluation with multiple plot types.
Usage:
# Basic precision evaluation
python main.py --data-path /path/to/nuscenes --plot-type precisionSimga5
# Cluster count analysis
python main.py --data-path /path/to/nuscenes --plot-type num_cluster
# Movement pattern analysis
python main.py --data-path /path/to/nuscenes --plot-type mov_stationary_cluster
# RCS-based analysis
python main.py --data-path /path/to/nuscenes --plot-type rcs_clusterAvailable Plot Types:
precisionSimga5: Accuracy vs consecutive frame requirementsnum_cluster: Total cluster count analysismov_stationary_cluster: Movement pattern categorizationpercentage_mov_status_cluster: Movement pattern percentagesprecistion_mov_status_cluster: Movement pattern precision scoresrcs_cluster: RCS-based cluster analysispercentage_rcs_status_cluster: RCS pattern percentagesprecision_rcs_status_cluster: RCS pattern precision scores
Parameters:
--sigma: Similarity threshold (default: 5)--range-sigma: List of sigma values for comparison--consecutive-frames: Range of frame requirements (default: 1-30)--version: NuScenes dataset version (default: v1.0-mini)
The system generates several types of outputs:
project_root/
├── clustering_data_pkl_rcs/ # Clustering results (pickle files)
│ ├── scene-0061_clustering_data.pkl
│ └── scene-0103_clustering_data.pkl
├── 360_cam_videos/ # 360-degree camera videos
│ ├── scene-0061.mp4
│ └── scene-0103.mp4
├── 360_cam_individual_frames/ # Individual camera frames
│ └── scene-0061/
│ ├── front/
│ ├── front_left/
│ └── ...
├── 360_cam_combined_frames/ # Combined panoramic frames
│ └── scene-0061/
│ ├── frame_0000.png
│ └── frame_0001.png
├── global_map_videos/ # Global map visualizations
│ ├── scene-0061_cluster_map.mp4
│ └── scene-0061/
│ ├── frame_0000.png
│ └── frame_0001.png
├── accuracy_vs_Freq_rcs_dyna.png # Precision evaluation plots
└── num_cluster.png
Clustering Results (clustering_data_pkl_rcs/):
- Binary pickle files containing processed clustering data
- Each file contains frame-by-frame cluster information
- Includes cluster positions, IDs, RCS values, and tracking data
360-Degree Visualizations:
360_cam_videos/: MP4 videos showing radar clusters on camera views360_cam_individual_frames/: Separate images for each camera view360_cam_combined_frames/: Panoramic view combining all 6 cameras
Global Map Visualizations:
global_map_videos/: MP4 videos showing clusters on road maps- Individual frame images with road context and off-road detection
- Cluster movement analysis and semantic labeling
Evaluation Results:
- Various PNG plots showing accuracy, cluster counts, and performance metrics
Update paths in configuration files or use command-line arguments:
For clusterTrack/config.py:
DEFAULT_PATHS = {
'pickle_save_root': './clustering_data_pkl_rcs',
}For visCamMap/config.py:
DEFAULT_PATHS = {
"data_path": "/path/to/your/nuscenes/dataset",
"data_dir": "./clustering_data_pkl_rcs",
# ... other paths
}Clustering Parameters:
CLUSTERING_PARAMS = {
'velocity_threshold': 0.5, # m/s
'position_threshold': 2.0, # meters
'min_cluster_size': 3, # minimum points per cluster
}Tracking Parameters:
TRACKING_PARAMS = {
'max_distance_threshold': 5.0, # meters
'cross_camera_threshold': 3.0, # meters
'max_cluster_age': 10, # frames
'max_colors': 50 # color palette size
}VIDEO_PARAMS = {
"fps": 5,
"frame_size": (1600, 900) # width, height
}1. Import Errors
# Ensure you're in the correct directory
cd clusterTrack # or visCamMap, precision
# Check Python path
export PYTHONPATH="${PYTHONPATH}:$(pwd)"2. Missing NuScenes Data
- Verify dataset path in config files
- Ensure you have the correct NuScenes version (v1.0-mini or full)
- Check that the dataset includes radar data
3. Memory Issues
- Process scenes individually using
--scene-nameparameter - Reduce the number of concurrent scenes being processed
- Consider using a machine with more RAM for large datasets
4. Visualization Issues
- Ensure clustering data exists before running visualization
- Check that pickle files are properly generated in
clustering_data_pkl_rcs/ - Verify output directories have write permissions
5. Performance Optimization
- Use
--startand--endparameters to process scenes in batches - Adjust clustering parameters to reduce computational load
Make sure to run scripts in the correct order:
- First:
clusterTrack/processScenes.py(generates clustering data) - Then:
visCamMap/main360.pyormainMap.py(creates visualizations) OR - Finally:
precision/main.py(evaluates results)
For questions, issues, or contributions:
- Create an issue on GitHub
- Contact: qxy699@mocs.utc.edu / parisahatami001@gmail.com
Last updated: Aug 2025
