Detection

We implement lowerbound, upperbound, when2com, who2com, V2VNet as our benchmark detectors. Please see more details in our paper.

Preparation

  • Download V2X-Sim 2.0 datasets from our website.
  • Run the code below to generate preprocessed dataset. You can also download the preprocessed dataset directly from the web page provided above.
make create_data

You might want to consult ./Makefile for all the arguments you can pass in.
For example, the target for create_data is:

create_data:
    python create_data_det.py \
    --root $(original_data_path) \
    --split $(split) \
    --scene_begin $(scene_begin) \
    --scene_end $(scene_end) \
    --savepath $(create_data_save_path) \
    --from_agent $(from_agent) \
    --to_agent $(to_agent)

You should at least set original_data_path to the path of V2X-Sim dataset on your machine, and create_data_save_path to the path of the folder where you want to save the preprocessed data.
You can set the variables at the top of Makefile, or you can pass them in as arguments.
For other arguments, please see the comments in Makefile.

Training

Train benchmark detectors: - Lowerbound / Upperbound / V2VNet / When2Com

make train com=[lowerbound/upperbound/v2v/when2com] rsu=[0/1]
  • DiscoNet
# DiscoNet
make train_disco

# DiscoNet with no cross road (RSU) data
make train_disco_no_rsu
  • When2com_warp
# When2com_warp
make train com=when2com warp_flag=1 rsu=[0/1]
  • Note: Who2com is trained the same way as When2com. They only differ in inference.

Evaluation

Evaluate benchmark detectors:

  • Lowerbound
# with RSU
make test com=[lowerbound/upperbound/v2v/when2com/who2com]

# no RSU
make test_no_rsu com=[lowerbound/upperbound/v2v/when2com/who2com]
  • When2com
# with RSU
make test com=when2com inference=activated warp_flag=[0/1]

# no RSU
make test_no_rsu com=when2com inference=activated warp_flag=[0/1]
  • Who2com
# with RSU
make test com=who2com inference=argmax_test warp_flag=[0/1]

# no RSU
make test_no_rsu com=who2com inference=argmax_test warp_flag=[0/1]
  • When2com with pose information
# with RSU
make test_warp inference=activated

# no RSU
make test_warp_no_rsu inference=activated
  • Who2com with pose information
# with RSU
make test_warp inference=argmax_test

# no RSU
make test_warp_no_rsu inference=argmax_test

Results

Column Δ indicates the performance gain or loss when RSU is involved during training.

Method AP@0.5 w/o RSU AP@0.5 w/ RSU Δ AP@0.7 w/o RSU AP@0.7 w/ RSU Δ
Lower-bound 49.90 46.96 -2.94 44.21 42.33 -1.88
Co-lower-bound 43.99 42.98 -1.01 39.10 38.26 -0.84
When2com 44.02 46.39 +2.37 39.89 40.32 +0.43
When2com* 45.35 48.28 +2.93 40.45 41.43 +0.68
Who2com 44.02 46.39 +2.37 39.89 40.32 +0.43
Who2com* 45.35 48.28 +2.93 40.45 41.13 +0.68
V2VNet 68.35 72.08 +3.73 62.83 65.85 +3.02
DiscoNet 69.03 72.87 +3.84 63.44 66.40 +2.96
Upper-bound 70.43 77.08 +6.65 67.04 72.57 +5.53