You can download the paper results at: https://vision.in.tum.de/webshare/g/dm-vio/dm-vio_paper_results.zip
The plots and tables from the paper can be reproduced using the script paper_evaluations.py.
For this you need to insert the path to the downloaded results at the beginning of the script.
These are not shown in the paper, but as they do not depend as much on the individual machine it makes sense to run them first.
python3 run_dmvio.py --output=null --dataset=euroc --dmvio_settings=euroc.yaml
python3 run_dmvio.py --output=null --dataset=tumvi --dmvio_settings=tumvi.yaml
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=4seasons.yaml
python3 run_dmvio.py --output=null --dataset=euroc --dmvio_settings=euroc.yaml --realtime --dmvio_args="maxPreloadImages=16000"
python3 run_dmvio.py --output=null --dataset=tumvi --dmvio_settings=tumvi.yaml --realtime --dmvio_args="maxPreloadImages=16000"
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=4seasons.yaml --realtime --dmvio_args="maxPreloadImages=16000"
- adjust
maxPreloadImagesaccording to the RAM available on your machine, these values were meant to be used with 16GB. With enough RAM (>=32GB) you should not need this argument at all. - for 4Seasons
--dataset=4seasonsCRwas used for the main paper results to make absolutely sure it uses exactly the same images as the other evaluated methods. But--datset=4seasonsshould be mostly the same and doesn't need the long dataset preprocessing (which can be performed by passing--crop_imagestodownload_4seasons.py).
These should not be run in realtime mode as some of the ablations are not designed for it.
# Normal method
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=4seasons.yaml
# 1. No Reinit and no Marginalization Replacement
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=ablations/4seasonsNoReinitAndMargReplacement.yaml
# 2. No Initial Readvancing (+ all changes in 1.)
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=ablations/4seasonsNoInitialReadvancing.yaml
# 3. No PGBA (+ all changes in 2.)
python3 run_dmvio.py --output=null --dataset=4seasons --dmvio_settings=ablations/4seasonsNoPGBA.yaml
Note that after the paper publication the parameter setting_minFramesBetweenKeyframes has been added, which slightly
improves the non-realtime results and brings them closer to the realtime results. You can also reproduce the original
paper ablation by adding --dmvio_args="setting_minFramesBetweenKeyframes=0" to all the lines above.
# Disable dynamic weight
python3 run_dmvio.py --output=null --dataset=tumvi --dmvio_settings=tumvi.yaml --realtime --dmvio_args="maxPreloadImages=16000 dynamicWeightRMSEThresh=1e6"
Like DSO, DM-VIO is nondeterministic, which is why we run multiple times on each sequence. Therefore it is best to
inspect the cumulative error plots (line_plot), rather than looking at individual executions.
The realtime results depend on the power and OS of the used system, which is why we recommend to first generate the
non-realtime results. By default, in realtime mode the system will preload all images. Depending on the RAM available
you should set the argument maxPreloadImages.