Home

Awesome

<div align="center"> <img src="images/opencood.png" width="600"/> <div>&nbsp;</div> <div>&nbsp;</div> </div>

paper Documentation Status License: MIT

OpenCOOD is an <strong>Open</strong> <strong>COO</strong>perative <strong>D</strong>etection framework for autonomous driving. It is also the official implementation of the <strong> ICRA 2022 </strong> paper OPV2V.

<p align="center"> <img src="images/demo1.gif" width="600" alt="" class="img-responsive"> <img src="images/camera_demo.gif" width="600" alt="" class="img-responsive"> </p>

News:

Features

Data Downloading

All the data can be downloaded from UCLA BOX. If you have a good internet, you can directly download the complete large zip file such as train.zip. In case you suffer from downloading large files, we also split each data set into small chunks, which can be found in the directory ending with _chunks, such as train_chunks. After downloading, please run the following command to each set to merge those chunks together:

cat train.zip.part* > train.zip
unzip train.zip

Installation

Please refer to data introduction and installation guide to prepare data and install OpenCOOD. To see more details of OPV2V data, please check our website.

Quick Start

Data sequence visualization

To quickly visualize the LiDAR stream in the OPV2V dataset, first modify the validate_dir in your opencood/hypes_yaml/visualization.yaml to the opv2v data path on your local machine, e.g. opv2v/validate, and the run the following commond:

cd ~/OpenCOOD
python opencood/visualization/vis_data_sequence.py [--color_mode ${COLOR_RENDERING_MODE}]

Arguments Explanation:

Train your model

OpenCOOD uses yaml file to configure all the parameters for training. To train your own model from scratch or a continued checkpoint, run the following commonds:

python opencood/tools/train.py --hypes_yaml ${CONFIG_FILE} [--model_dir  ${CHECKPOINT_FOLDER} --half]

Arguments Explanation:

To train on multiple gpus, run the following command:

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4  --use_env opencood/tools/train.py --hypes_yaml ${CONFIG_FILE} [--model_dir  ${CHECKPOINT_FOLDER}]

Test the model

Before you run the following command, first make sure the validation_dir in config.yaml under your checkpoint folder refers to the testing dataset path, e.g. opv2v_data_dumping/test.

python opencood/tools/inference.py --model_dir ${CHECKPOINT_FOLDER} --fusion_method ${FUSION_STRATEGY} [--show_vis] [--show_sequence]

Arguments Explanation:

The evaluation results will be dumped in the model directory.

Benchmark and model zoo

Results on OPV2V LiDAR-track (AP@0.7 for no-compression/ compression)

Spconv VersionBackboneFusion StrategyBandwidth (Megabit), <br/> before/after compressionDefault TownsCulver CityDownload
Naive Late1.2.1PointPillarLate0.024/0.0240.781/0.7810.668/0.668url
Cooper1.2.1PointPillarEarly7.68/7.680.800/x0.696/xurl
Attentive Fusion1.2.1PointPillarIntermediate126.8/1.980.815/0.8100.735/0.731url
F-Cooper1.2.1PointPillarIntermediate72.08/1.120.790/0.7880.728/0.726url
V2VNet1.2.1PointPillarIntermediate72.08/1.120.822/0.8140.734/0.729url
CoAlign1.2.1PointPillarIntermediate72.08/2.240.833/0.8060.760/ 0.750url
FPV-RCNN1.2.1PV-RCNNIntermediate(2 stage)0.24/0.240.820/0.8200.763/0.763url
V2VAM1.2.1PointPillarIntermediatex/x0.860/0.8600.813/0.791url
CoBEVT2.0PointPillarIntermediate72.08/1.120.861/0.8360.773/0.730url
Naive Late1.2.1VoxelNetLate0.024/0.0240.738/0.7380.588/0.588url
Cooper1.2.1VoxelNetEarly7.68/7.680.758/x0.677/xurl
Attentive Fusion1.2.1VoxelNetIntermediate576.71/1.120.864/0.8520.775/0.746url
Naive Late1.2.1SECONDLate0.024/0.0240.775/0.7750.682/0.682url
Cooper1.2.1SECONDEarly7.68/7.680.813/x0.738/xurl
Attentive1.2.1SECONDIntermediate63.4/0.990.826/0.7830.760/0.760url
Naive Late1.2.1PIXORLate0.024/0.0240.578/0.5780.360/0.360url
Cooper1.2.1PIXOREarly7.68/7.680.678/x0.558/xurl
Attentive1.2.1PIXORIntermediate313.75/1.220.687/0.6120.546/0.492url

Note:

Results of BEV semantic segmentation on OPV2V camera-track (IoU)

BackboneFusion StrategyVehiclesRoad SurfaceLaneDownload
No FusionCVTNo Fusion37.757.843.7None
Map FusionCVTLate45.160.044.1None
Attentive FusionCVTIntermediate51.960.546.2None
F-CooperCVTIntermediate52.560.446.5None
V2VNetCVTIntermediate53.560.247.5None
DiscoNetCVTIntermediate52.960.745.8None
FuseBEVTCVTIntermediate59.062.149.2url
CoBEVTSinBEVTIntermediate60.463.053.0url

Note: To play with OPV2V camera data, please check here: https://github.com/DerrickXuNu/CoBEVT

Results of 3D Detection on V2XSet LiDAR-Track

MethodSpconv VersionBackbonePerfect AP@0.5Perfect AP@0.7Noisy AP@0.5Noisy AP@0.7Download Link
No Fusion2.0PointPillar60.640.260.640.2
Late Fusion2.0PointPillar72.762.054.930.7
Early Fusion2.0PointPillar81.971.072.038.4
F-Cooper2.0PointPillar84.068.071.546.9
Attentive Fusion2.0PointPillar80.766.470.948.7
V2VNet2.0PointPillar84.567.779.149.3
DiscoNet2.0PointPillar84.469.579.854.1
CoBEVT2.0PointPillar84.966.081.154.3url
Where2Comm2.0PointPillar85.565.482.053.4URL
V2X-ViT2.0PointPillar88.271.283.661.4url

<strong>Important Notes for Training in V2XSet:</strong>

  1. When you train from scratch, please first set async and loc_err to false to train on perfect setting. Also, set compression to 0 at beginning.
  2. After the model on perfect setting converged, set compression to 32 (please change the config yaml in your trained model directory) and continue training on the perfect setting for another 1-2 epoches.
  3. Next, set async to true, async_mode to 'real', async_overhead to 200 or 300, loc_err to true, xyz_std to 0.2, rpy_std to 0.2, and then continue training your model on this noisy setting. Please note that you are free to change these noise setting during training to obtain better performance.
  4. Eventually, use the model fine-tuned on noisy setting as the test model for both perfect and noisy setting.

Tutorials

We have a series of tutorials to help you understand OpenCOOD more. Please check the series of our tutorials.

Citation

If you are using our OpenCOOD framework or OPV2V dataset for your research, please cite the following paper:

@inproceedings{xu2022opencood,
 author = {Runsheng Xu, Hao Xiang, Xin Xia, Xu Han, Jinlong Li, Jiaqi Ma},
 title = {OPV2V: An Open Benchmark Dataset and Fusion Pipeline for Perception with Vehicle-to-Vehicle Communication},
 booktitle = {2022 IEEE International Conference on Robotics and Automation (ICRA)},
 year = {2022}}

Supported Projects

OpenCOOD has supported several top conference papers in cooperative perception field.

V2V4Real: A large-scale real-world dataset for Vehicle-to-Vehicle Cooperative Perception <br> Runsheng Xu, Xin Xia, Jinlong Li, Hanzhao Li, Shuo Zhang, Zhengzhong Tu, Zonglin Meng, Hao Xiang, Xiaoyu Dong, Rui Song, Hongkai Yu, Bolei Zhou, Jiaqi Ma <br> CVPR 2023 <br> [Paper][Code]

Robust Collaborative 3D Object Detection in Presence of Pose Errors <br> Yifan Lu, Quanhao Li, Baoan Liu, Mehrdad Dianati, Chen Feng, Siheng Chen, Yanfeng Wang <br> ICRA 2023 <br> [Paper][Code]

Analyzing Infrastructure LiDAR Placement with Realistic LiDAR Simulation Library <br> Xinyu Cai, Wentao Jiang, Runsheng Xu, Wenquan Zhao, Jiaqi Ma, Si Liu, Yikang Li <br> ICRA 2023 <br> [Paper][Code]

Bridging the Domain Gap for Multi-Agent Perception <br> Runsheng Xu, Jinlong Li, Xiaoyu Dong, Hongkai Yu, Jiaqi Ma∗<br> ICRA 2023 <br> [Paper][Code]

Model Agnostic Multi-agent Perception <br> Runsheng Xu, Weizhe Chen, Hao Xiang, Xin Xia, Lantao Liu, Jiaqi Ma∗<br> ICRA 2023 <br> [Paper][Code]

Learning for Vehicle-to-Vehicle Cooperative Perception under Lossy Communication <br> Jinlong Li, Runsheng Xu, Xinyu Liu, Jin Ma, Zicheng Chi, Jiaqi Ma, Hongkai Yu<br> TIV 2023 <br> [Paper] [Code]

Where2comm: Communication-Efficient Collaborative Perception via Spatial Confidence Maps <br> Yue Hu, Shaoheng Fang, Zixing Lei, Yiqi Zhong, Siheng Chen<br> Neurips 2022 <br> [Paper] [Code]

Adaptive Feature Fusion for Cooperative Perception using LiDAR Point Clouds <br> Donghao Qiao, Farhana Zulkernine<br> WACV 2023 <br> [Paper]

CoBEVT: Cooperative Bird's Eye View Semantic Segmentation with Sparse Transformers <br> Runsheng Xu*, Zhengzhong Tu*, Hao Xiang, Wei Shao, Bolei Zhou, Jiaqi Ma <br> CoRL2022 <br> [Paper] [Code]

V2X-ViT: Vehicle-to-Everything Cooperative Perception with Vision Transformer <br> Runsheng Xu*, Hao Xiang*, Zhengzhong Tu*, Xin Xia, Ming-Hsuan Yang, Jiaqi Ma <br> ECCV2022 <br> [Paper] [Code] [Talk]

OPV2V: An Open Benchmark Dataset and Fusion Pipeline for Perception with Vehicle-to-Vehicle Communication <br> Runsheng Xu*, Hao Xiang*, Xin Xia, Jinlong Li, Jiaqi Ma <br> ICRA2022 <br> [Paper] [Website] [Code]