Griffin¶
Griffin is an aerial-ground cooperative perception dataset collected in CARLA, pairing a ground vehicle with a UAV (drone) for cooperative 3D detection and tracking. It contains 255 scenes (~15 s each, ~150 frames at 10 Hz) across four UAV-altitude subsets, totaling over 37.7k samples and 914.8k 3D annotations.
The 123D parser converts the vehicle-side (ground agent): four cardinal pinhole
cameras, the 80-beam top LiDAR, ego poses, and 3D boxes. Each scene becomes one log,
routed to its official train / val partition.
Note
The drone-side (UAV) agent is also available as a separate single-agent conversion
(dataset=griffin_drone): five pinhole cameras (four cardinal + one nadir), ego poses, and
3D boxes, with aerial state (UAV flag, per-frame altitude) in a custom modality. The drone
carries no LiDAR. True first-class cooperation (vehicle + drone with cross-agent transforms
as a core datatype) remains a design-first follow-up; the vehicle and drone logs of a scene
already share one global (ENU) frame, so they can be aligned by scene id + timestamp.
Overview
Paper |
Griffin: Aerial-Ground Cooperative Detection and Tracking Dataset and Benchmark (arXiv preprint, 2025) |
Download |
|
Code |
|
License |
|
Available splits |
|
Available Modalities¶
Name |
Available |
Description |
|---|---|---|
Ego Vehicle |
✓ |
Ego poses are provided in an ENU world frame; vehicle parameters follow the CARLA
ego model, see |
Map |
X |
n/a |
Bounding Boxes |
✓ |
Bounding boxes are available with the |
Traffic Lights |
X |
n/a |
Cameras |
✓ |
Griffin (vehicle-side) has 4x
|
Lidars |
✓ |
Griffin (vehicle-side) has 1x
|
Dataset Specific
- class py123d.parser.registry.GriffinBoxDetectionLabel[source]
Griffin (aerial-ground cooperative) dataset annotation categories.
Griffin annotates dynamic traffic participants with CARLA-derived semantic types. The official benchmark collapses these into three evaluation classes (
car,bicycle,pedestrian); we keep the native granularity here and map down toDefaultBoxDetectionLabelinto_default().Category collapsing follows
obj_type_mappingin the official converter. See Wang et al., “Griffin: Aerial-Ground Cooperative Detection and Tracking Dataset and Benchmark”, arXiv preprint 2503.06983 (2025), and the official toolkit (https://github.com/wang-jh18-SVM/Griffin).- PEDESTRIAN = 0
- CAR = 1
- TRUCK = 2
- BUS = 3
- MOTORCYCLE = 4
- BICYCLE = 5
- to_default()[source]
Inherited, see superclass.
- Return type:
DefaultBoxDetectionLabel
Download¶
Download the dataset from Hugging Face
or Baidu Netdisk and extract
the KITTI-style griffin-release trees. The 123D conversion expects the official
directory structure with subset folders directly under $GRIFFIN_DATA_ROOT:
$GRIFFIN_DATA_ROOT/
├── griffin_50scenes_25m/
│ └── griffin-release/
│ └── vehicle-side/
│ ├── calib/ # {front,back,left,right,lidar_top}.json (extrinsic + intrinsic)
│ ├── camera/
│ │ ├── front/ # {frame}.png (frame = 6-digit, e.g. 000620)
│ │ ├── back/
│ │ ├── left/
│ │ └── right/
│ ├── label/ # {frame}.txt (ego-frame 3D boxes)
│ ├── lidar/
│ │ └── lidar_top/ # {frame}.ply (ego-frame, intensity field "I")
│ ├── pose/ # {frame}.json (ENU pose, degrees)
│ └── scene_infos.json
├── griffin_50scenes_40m/
│ └── ...
├── griffin_50scenes_55m/
│ └── ...
└── griffin_100scenes_random/
└── ...
The official train / val partitions are embedded in the package
(py123d.parser.griffin.splits), so only the griffin-release trees are required.
Installation¶
Griffin conversion requires the griffin extras group (plyfile for the LiDAR
.ply files and scipy for the pose/box Euler-angle conversion):
pip install py123d[griffin]
Conversion¶
Data already extracted to $GRIFFIN_DATA_ROOT (see Download):
py123d-conversion dataset=griffin
Convert a different subset or partition by overriding splits:
py123d-conversion dataset=griffin \
'dataset.parser.splits=[griffin_100scenes_random_train, griffin_100scenes_random_val]'
Note
By default the conversion stores relative sensor file paths rather than the sensor data
itself. To embed sensors, adapt the lidar_store_option / camera_store_option in
the griffin.yaml converter configuration.
Dataset Issues¶
Ego Vehicle: Vehicle parameters are representative CARLA values; the ego frame is taken to coincide with the IMU frame.
Coordinate frames: LiDAR points and labels are stored in the ego frame (X-forward, Y-left, Z-up); poses use an ENU world frame with
xyzEuler angles in degrees. The parser lifts boxes to the global frame and keeps LiDAR points ego-relative.Labels: Non-traffic CARLA categories (e.g. military props) are outside the Griffin perception taxonomy and are skipped during conversion.
Drone-side: Converted separately (
dataset=griffin_drone) as a single-agent UAV log: 5 cameras incl. a nadirbottomcamera (PCAM_D0), no LiDAR, and aerial state in aCustomModality(idaerial). Cooperative (joint vehicle + drone) perspectives are not modelled as a first-class type yet.
Citation¶
If you use Griffin in your research, please cite:
@misc{wang2025griffin,
title={Griffin: Aerial-Ground Cooperative Detection and Tracking Dataset and Benchmark},
author={Jiahao Wang and Xiangyu Cao and Jiaru Zhong and Yuner Zhang and Haibao Yu and Lei He and Shaobing Xu},
year={2025},
eprint={2503.06983},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2503.06983},
}