How yuudengg/distilldrive_3090 works
DistillDrive is an end-to-end autonomous-driving research system for training annotation-driven teacher models and camera-based student models, then distilling multi-mode planning behavior. The workflow spans nuScenes data preparation, scene perception, motion and planning, staged training, and open-/closed-loop evaluation; visualization supports inspection. The README documents the teacher-to-student and multi-stage distillation workflow. Source excerpts show selected training, dataset, and model interactions; unsampled subsystem links are omitted where their callers are not evidenced.
Main entry points: sparsedrive.py SparseDrive student · nuscenes_3d_dataset_light.py nuScenes datasets · distilldrive.py DistillDrive teacher · motion_planning_head.py Motion and planning
Components 20
Data and evaluation
- nuScenes conversion
tools/data_converter/nuscenes_converter.py - nuScenes datasets
projects/mmdet3d_plugin/datasets/nuscenes_3d_dataset_light.py - Data pipelines
projects/mmdet3d_plugin/datasets/pipelines - Task evaluation
projects/mmdet3d_plugin/datasets/evaluation - 3D box utilities
projects/mmdet3d_plugin/datasets/utils.py
Perception models
- SparseDrive student
projects/mmdet3d_plugin/models/sparsedrive.py - 3D detection
projects/mmdet3d_plugin/models/detection3d/detection3d_head.py - Map prediction
projects/mmdet3d_plugin/models/map - Feature aggregation
projects/mmdet3d_plugin/models/blocks.py - Temporal instance bank
projects/mmdet3d_plugin/models/instance_bank.py
Distillation and planning
- DistillDrive teacher
projects/mmdet3d_plugin/models/distilldrive.py - DLP planning
projects/mmdet3d_plugin/models/dlp/dlp_head.py - Motion and planning
projects/mmdet3d_plugin/models/motion/motion_planning_head.py - Distribution modeling
projects/mmdet3d_plugin/models/diffusion/distributions.py - Distillation stages
projects/configs/stage0/distilldrive_stage0_distribution.py
Training and inspection
- Training entry
tools/train.py - Training orchestration
projects/mmdet3d_plugin/apis/mmdet_train.py - BEV visualization
tools/visualization/bev_render.py - Camera visualization
tools/visualization/cam_render.py
Other components
- Research engineer
Connections 22
- Research engineer → nuScenes conversion: prepares data
- nuScenes conversion → nuScenes datasets: creates annotations
- nuScenes datasets → Data pipelines: loads samples
- nuScenes datasets → Task evaluation: evaluates results
projects/mmdet3d_plugin/datasets/nuscenes_3d_dataset_light.py - nuScenes datasets → 3D box utilities: uses geometry
projects/mmdet3d_plugin/datasets/utils.py - Research engineer → Training entry: starts training
tools/train.py - Training entry → Training orchestration: dispatches training
tools/train.py - Training orchestration → nuScenes datasets: builds datasets
projects/mmdet3d_plugin/apis/mmdet_train.py - Training entry → SparseDrive student: builds configured model
- SparseDrive student → 3D detection: predicts objects
- SparseDrive student → Map prediction: predicts maps
- 3D detection → Feature aggregation: aggregates features
projects/mmdet3d_plugin/models/detection3d/detection3d_head.py - SparseDrive student → Temporal instance bank: retains temporal state
- DistillDrive teacher → DLP planning: uses planning head
- SparseDrive student → Motion and planning: predicts motion and plans
- Motion and planning → Temporal instance bank: reads temporal state
projects/mmdet3d_plugin/models/motion/motion_planning_head.py - Motion and planning → Distribution modeling: models distributions
projects/mmdet3d_plugin/models/motion/motion_planning_head.py - Distillation stages → DistillDrive teacher: configures stages
- DistillDrive teacher → SparseDrive student: distills knowledge
README.md - Research engineer → BEV visualization: inspects predictions
- Research engineer → Camera visualization: inspects cameras
- Camera visualization → BEV visualization: reuses render constants
tools/visualization/cam_render.py