Official code release for the RA-L 2026 paper DoGFlow: Self-Supervised LiDAR Scene Flow via Cross-Modal Doppler Guidance.
This repository supports:
- Training-free DoGFlow inference and evaluation on the MAN TruckScenes dataset,
- Pseudo-label generation via radar-guided scene flow,
- Training and evaluation of LiDAR scene flow models using DoGFlow pseudo-labels.
DoGFlow is released within the KTH-RPL/OpenSceneFlow codebase and reuses its data processing, training, and visualization utilities.
- 2026/01/18: DoGFlow accepted to IEEE Robotics and Automation Letters (RA-L).
- 2026/04/05: Initial code release.
We use conda to manage the environment, you can install it follow here. Then create the base environment with the following command [5~15 minutes]:
git clone --recursive https://github.com/ajinkyakhoche/DoGFlow.git
cd DoGFlow && conda env create -f environment.yaml
# You may need export your LD_LIBRARY_PATH with env lib
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/kin/mambaforge/libCUDA package (need install nvcc compiler), the compile time is around 1-5 minutes:
mamba activate dogflow
# CUDA already install in python environment. I also tested others version like 11.3, 11.4, 11.7, 11.8 all works
cd assets/cuda/mmcv && python ./setup.py install && cd ../../..
cd assets/cuda/chamfer3D && python ./setup.py install && cd ../../..
cd assets/cuda/histlib/ && python ./setup.py install && cd ../../..Please refer to the OpenSceneFlow for raw data download and h5py files preparation.
-
If you have setup the MAN TruckScenes dataset correctly, simply run dataprocess/extract_man.py after modifying the fields
data_dirandoutput_dir -
Pre-compute noise-resistant LiDAR cluster labels
python process_nr_lidar_clustering.py --data-dir ${data_path}/[mini,train,val,test]To evaluate DoGFlow, run:
python eval.py model=dogflow dataset_path=${data_path} weather=<WEATHER>- We also provide implementations for NSFP, FastNSF and ICPFlow. Please replace the model tag to [nsfp, fastnsf, icpflow]
- The
weathertag accepts [all_weather, bad_weather, clear, overcast, rain, snow, hail, fog, other_weather]. - We focus on the range-wise EPE as well as IoU metric. For instance, running DoGFlow on TruckScenes validation set containing snow weather gives:
| Distance | Static | Dynamic | NumPointsStatic | NumPointsDynamic | DynamicIOU |
|------------+------------+-----------+-------------------+--------------------+--------------|
| 0-35 | 0.0445699 | 0.34014 | 4.09337e+06 | 1.08394e+06 | 0.825005 |
| 35-50 | 0.00308036 | 0.924955 | 485464 | 6019 | 0.805542 |
| 50-75 | 0.00186762 | 1.09663 | 281349 | 3794 | 0.648605 |
| 75-100 | 0.0032783 | 1.12325 | 130683 | 1761 | 0.600462 |
| 100-inf | 0.00357058 | 1.01682 | 229243 | 1359 | 0.518419 |
| Mean | 0.0112734 | 0.900359 | nan | nan | 0.679607 |
The script also reports the Three-Way EPE, Dynamic Normalized EPE.
- Compute pseudo labels on training set of truckscenes. (tip: this can take time, set
overwrite=Falseto avoid starting from scratch):
python save.py model=dogflow dataset_path="${data_path}/train" overwrite=True- Run the training with the following command (modify the data path accordingly):
python train.py train_data="${data_path}/train" val_data="${data_path}/val" model=ssf lr=8e-3 epochs=100 loss_fn=deflowLoss point_cloud_range="[-204.8, -204.8, -3, 204.8, 204.8, 3]" gt_fraction=0 pseudo_labels=dogflow-
To combine ground truth with pseudo labels during training, i.e. for semi-supervised training, increase gt_fraction.
-
Please check assets/slurm/ for exact settings used in the paper.
TODO: Upload pretrained weights link for MAN TruckScenes.
You can also run the evaluation by yourself with the following command with trained weights:
python eval.py checkpoint=${path_to_pretrained_weights} dataset_path=${data_path}Please refer to the OpenSceneFlow for visualization instructions. Tip: when you run/evaluate
DoGFlow you can set visualize=True to enable rerun
@article{khoche2026dogflow,
author={Khoche, Ajinkya and Zhang, Qingwen and Cai, Yixi and Mansouri, Sina Sharif and Jensfelt, Patric},
journal={IEEE Robotics and Automation Letters},
title={DoGFlow: Self-Supervised LiDAR Scene Flow via Cross-Modal Doppler Guidance},
year={2026},
volume={11},
number={3},
pages={3836-3843},
doi={10.1109/LRA.2026.3662592}
}
This work was supported by Prosense (2020-02963) funded by Vinnova. The computations were enabled by the supercomputing resource Berzelius provided by National Supercomputer Centre at Linköping University and the Knut and Alice Wallenberg Foundation, Sweden.
We thank the authors of NSFP, FastNSF and ICPFlow for making their code publicly available. Thanks to Qingwen Zhang for integrating these methods into OpenSceneFlow