CooperScene: Multi-Modal Cooperative Autonomy Benchmark with C-V2X Communication Characterization

July 14, 2026 · View on GitHub

arXiv  |  Project Website  |  Hugging Face

Demo

CooperScene is the first real-world, multi-agent, multi-modal cooperative autonomy dataset with C-V2X communication characterization. It features three connected autonomous vehicles (CAVs) and one instrumented infrastructure roadside unit (RSU), all equipped with multi-modal sensors and commercial off-the-shelf C-V2X communication radios, interacting across diverse real-world traffic scenarios including intersections, highway ramps, and parking areas.

Key highlights

  • 59K synchronized LiDAR frames across 4 cooperative agents
  • 53K camera image frames
  • 344K globally consistent 3D bounding box labels at 10 Hz
  • Real-world C-V2X communication traces (latency, throughput, packet loss, jitter)
  • Centimeter-level localization via GNSS-RTK + spatial-temporal ICP alignment
  • Sub-millisecond sensor synchronization via PTP and hardware triggering

Data Download & Preparation

Download

Public release link https://data.ucr.edu/datasets/cooperscene/.

The benchmark ships in CooperScene format: <split>/<take>/<agent>/<frame>.{pcd,yaml} plus <frame>_camera0.png on camera-equipped agents. Each take has 4 agents: agent 0 is LiDAR-only; agents 1–3 also carry a front camera.

cooperscene/
├── train/
│   ├── 1/                    # take id
│   │   ├── 0/                # agent 0 — LiDAR only
│   │   │   ├── 481260.pcd
│   │   │   ├── 481260.yaml   # pose + GT bboxes
│   │   │   └── ...
│   │   ├── 1/                # agent 1 — LiDAR + front camera
│   │   │   ├── 481260.pcd
│   │   │   ├── 481260.yaml
│   │   │   └── 481260_camera0.png
│   │   ├── 2/  3/            # other agents — same layout as agent 1
│   ├── 2/  3/  ...           # other takes — same 4-agent layout
├── validate/
├── test/
└── mcap/                     # per-take MCAP recordings (LiDAR + camera + throughput)
    ├── 1.mcap
    ├── 2.mcap
    └── ...

The mcap/ recordings are distributed separately and are not part of the core train//validate//test/ archive — they are only needed for raw replay /visualization, not for training or evaluation.

A mini set of 180 contiguous frames (120 train / 30 validate / 30 test) is shipped alongside the full release for pipeline smoke tests — same <split>/<take>/<agent>/<frame> layout.

Data preparation

All models run on the mmengine pipeline and need .pkl index files plus .bin point clouds. Run the converter once with --convert-pcd (writes a .bin next to every .pcd); drop the flag on later runs. --data-root must contain train/, validate/, test/.

python tools/dataset_converters/coop_data_converter.py \
    --data-root /path/to/cooperscene \
    --convert-pcd
# -> <data-root>/cooperscene_coop_infos_{train,val,test}.pkl

Single-agent BEVFusion:

python tools/dataset_converters/data_converter.py \
    --data-root /path/to/cooperscene \
    --out-dir   /path/to/cooperscene \
    --convert-pcd
# -> <out-dir>/cooperscene_infos_{train,val,test}.pkl

Quick Start

Docker

The image builds on pytorch/pytorch:2.1.1-cuda12.1-cudnn8-devel and installs the full stack (mmengine / mmcv 2.1 / mmdet 3.x / mmdet3d 1.4 / spconv / shapely).

1. Build the image

cd CooperScene/
docker build -t cooperscene -f docker/Dockerfile .

2. Get configs + checkpoints from Hugging Face

cd CooperScene/
pip install -U huggingface_hub
hf download cisl-hf/CooperScene --local-dir assets
# -> assets/<model>/{<model>.py, <model>.pth}  (config + checkpoint together)

3. Enter the container (bind code + dataset)

All configs use data_root = 'data/cooperscene', so bind your dataset to …/data/cooperscene and the commands below need no path overrides.

cd CooperScene/
docker run --gpus all -it --rm \
    -v "$(pwd)":/workspace/CooperScene \
    -v /path/to/cooperscene_dataset:/workspace/CooperScene/data/cooperscene \
    cooperscene bash

4. Train (inside the container)

tools/train.py trains models on train split, and validates on validate split

python tools/train.py assets/ermvp/ermvp.py

Available configs (swap the path above for any of these):

  • BEVFusion (single / cooperative × lidar / lidar-cam): bevfusion/bevfusion_single_lidar.py, bevfusion/bevfusion_single_lidarcam.py, bevfusion/bevfusion_coop_lidar.py, bevfusion/bevfusion_coop_lidarcam.py
  • CoBEVT / CoSDH / ERMVP / V2VAM / V2VNet / V2X-ViT: cobevt/cobevt.py, cosdh/cosdh.py, ermvp/ermvp.py, v2vam/v2vam.py, v2vnet/v2vnet.py, v2xvit/v2xvit.py

5. Evaluate

tools/test.py evaluates the test split by default. Each config has a matching checkpoint in the same folder (<model>.pth):

# ERMVP
python tools/test.py assets/ermvp/ermvp.py assets/ermvp/ermvp.pth

# BEVFusion (cooperative lidar)
python tools/test.py assets/bevfusion/bevfusion_coop_lidar.py \
                     assets/bevfusion/bevfusion_coop_lidar.pth

Table 2: agent settings x network

The cooperative CoopDataset accepts two eval-time knobs (override with --cfg-options test_dataloader.dataset.<field>=...):

FieldValuesMeaning
agent_settingV+I, V+V, V+V+I, V+2V, V+2V+I, Nonewhich cooperators participate; sub-settings are averaged over every valid agent combination. None = full V+2V+I, no expansion
networkunlimited, cv2xunlimited = perfect sharing (mAP Unlimited); cv2x = async transmission delay from share_size_mb (per cooperator, Table 2) and cv2x_throughput (default 1.6 Mbps), giving mAP (C-V2X)

Single setting example (V+V over C-V2X for v2vnet):

python tools/test.py assets/v2vnet/v2vnet.py assets/v2vnet/v2vnet.pth \
    --cfg-options \
        test_dataloader.dataset.agent_setting=V+V \
        test_dataloader.dataset.network=cv2x \
        test_dataloader.dataset.share_size_mb=10.0

Full Table 2 sweep (all models x settings x networks):

bash tools/run_table2.sh                 # -> work_dirs/table2/<model>__<setting>__<network>/
MODELS="cobevt" SETTINGS="V+I V+2V+I" NETWORKS=cv2x bash tools/run_table2.sh

Local install

Tested with Python 3.10 / CUDA 12.1 / PyTorch 2.1. Dependencies are listed in requirements.txt (use mim so the correct mmcv wheel is fetched):

cd CooperScene/
pip install -U openmim
mim install -r requirements.txt
# BEVFusion configs need the CUDA ops, built once from the repo root:
python models/bevfusion/setup.py develop

Arguments

Common parameters you'll override most often:

FieldMeaning
train_dataloader.batch_sizeper-GPU batch (default 4)
train_dataloader.num_workersworker processes (default 4)
*_dataloader.dataset.data_rootdataset root containing train/, validate/, test/ (default data/cooperscene)
*_dataloader.dataset.ann_file.pkl index for that split (e.g. cooperscene_coop_infos_val.pkl)
optim_wrapper.optimizer.lrbase learning rate (per-config)
train_cfg.max_epochstotal epochs (per-config)
load_fromwarm-start checkpoint path (default None = train from scratch)

Override any of these from the CLI with --cfg-options. Example (ermvp):

python tools/train.py assets/ermvp/ermvp.py \
    --cfg-options \
        train_dataloader.batch_size=2 \
        train_dataloader.num_workers=8 \
        train_dataloader.dataset.data_root=/path/to/cooperscene \
        train_cfg.max_epochs=30 \
        optim_wrapper.optimizer.lr=5e-4 \
        load_from=/path/to/ckpt.pth

Benchmark Result

Full details in the paper and on the project website.

Cooperative 3D Object Detection

Benchmark of cooperative perception under C-V2X and unlimited (infeasible) network, with increasing number of agents, in terms of accuracy (mAP), total data sharing size per frame, and the latency if all data were to be transmitted over C-V2X. Bold marks the best result per column within each method.

ModelAgentsC-V2X @0.3C-V2X @0.5C-V2X @0.7Unlim. @0.3Unlim. @0.5Unlim. @0.7Sharing Size (MB)Latency (ms)
V2VNetV+I0.430.330.200.550.420.2310.064,349
V2VNetV+V0.350.250.150.660.550.3410.064,038
V2VNetV+V+I0.360.270.150.700.600.3720.076,879
V2VNetV+2V0.320.230.130.790.740.4720.072,773
V2VNetV+2V+I0.320.230.130.810.750.5030.0107,432
V2X-ViTV+I0.500.380.200.540.410.210.3382,211
V2X-ViTV+V0.530.430.260.650.550.350.3381,305
V2X-ViTV+V+I0.560.450.260.700.590.360.6679,215
V2X-ViTV+2V0.600.530.330.790.730.490.6677,022
V2X-ViTV+2V+I0.600.520.330.800.740.501.0149,976
V2VAMV+I0.530.400.220.570.440.240.4232,264
V2VAMV+V0.530.430.260.680.560.370.4232,253
V2VAMV+V+I0.580.470.270.740.630.390.84610,301
V2VAMV+2V0.610.540.340.820.760.530.8468,117
V2VAMV+2V+I0.620.540.340.840.780.531.26911,302
CoBEVTV+I0.480.390.200.520.430.210.5002,707
CoBEVTV+V0.500.410.260.640.550.370.5002,393
CoBEVTV+V+I0.540.440.250.700.600.371.00011,059
CoBEVTV+2V0.570.490.330.800.730.541.0008,987
CoBEVTV+2V+I0.590.500.320.820.750.541.50012,381
ERMVPV+I0.610.460.240.650.510.260.3461,730
ERMVPV+V0.610.490.300.760.630.420.3461,730
ERMVPV+V+I0.630.510.310.790.670.430.6923,460
ERMVPV+2V0.660.570.370.870.800.570.6923,460
ERMVPV+2V+I0.640.560.360.870.810.571.0385,190
CoSDHV+I0.570.430.230.580.440.240.0595298
CoSDHV+V0.630.470.290.670.540.350.0595298
CoSDHV+V+I0.680.530.320.720.620.390.1190595
CoSDHV+2V0.740.610.400.790.720.510.1190595
CoSDHV+2V+I0.750.610.410.810.730.520.1785893

Multi-Modal Cooperative Perception (BEVFusion)

AgentModalityBEV @0.3BEV @0.5BEV @0.73D @0.33D @0.53D @0.7
VLiDAR0.780.560.310.700.380.21
VLiDAR+Cam0.800.570.330.720.420.23
V+VLiDAR0.810.650.390.750.540.22
V+VLiDAR+Cam0.800.650.410.740.540.25
V+2VLiDAR0.900.840.560.870.730.30
V+2VLiDAR+Cam0.900.830.610.870.740.35

Cooperative Motion Prediction

ModelAgentminADE@1sminADE@3sminADE@5sminFDE@1sminFDE@3sminFDE@5s
V2VNetV0.48952.16484.45380.93075.734410.6390
V2VNetV+V0.54241.56113.55910.75284.48209.1667
V2VNetV+2V0.76101.37962.90961.00793.47627.3660
CMPV0.38510.84211.40220.57861.61253.0712
CMPV+V0.40760.93301.64160.61431.84923.7389
CMPV+2V0.32140.72521.28930.47231.45512.9716

Citation

@inproceedings{CooperScene,
  title={CooperScene: Multi-Modal Cooperative Autonomy Benchmark with C-V2X Communication Characterization},
  author={Bo Wu* and Ruoshen Mo* and Justin Yue and Yanyu Zhang and Janice Nguyen and Guoyuan Wu and Amit Roy-Chowdhury and Matthew J. Barth and Hang Qiu},
  booktitle={European Conference on Computer Vision},
  year={2026},
}

License

This project uses a dual-license model:

  • Code — everything in this repository is released under the MIT License.
  • Dataset — all CooperScene dataset files distributed via the data portal (including mini.zip and the full dataset archives) are released under the CC BY-NC-SA 4.0 License.

Acknowledgements