Generating EVIMO2 v2
Preparation
Setup Docker container
Use the instructions here.
Download
Download and extract the raw recordings from the downloads page
The drive should have at least 4TB of free space if the entire dataset is to be generated with default settings.
The result should look like this:
>> ls -1 /media/$USER/EVIMO/raw
imo/
imo_ll/
raw_imo_ll.tar.gz
raw_imo.tar.gz
raw_sanity_ll.tar.gz
raw_sanity.tar.gz
raw_sfm_ll.tar.gz
raw_sfm.tar.gz
sanity/
sanity_ll/
sfm/
sfm_ll/
Swapfile (if necessary)
Generation currently requires about 80GB of memory (RAM). A large swapfile on an SSD will work.
These instructions may help with creating swapfile.
Generate a particular sequence
Generating a single sequence can take a few minutes to an hour depending on the seqeuence. More cores will make it faster.
cd evimo/tools/evimo2_docker
./docker_build.sh
./docker_run.sh /media/$USER/EVIMO
cd ~/catkin_ws; catkin_make; pip3 install -e ~/pydvs/lib; cd
source ~/catkin_ws/devel/setup.bash
cd ~/tools/evimo2_generate; ./generate.sh ~/EVIMO/raw/imo/eval/scene13_dyn_test_00
Generate everything
Generating the entire dataset can take over 24 hours.
cd evimo/tools/evimo2_docker
./docker_build.sh
./docker_run.sh /media/$USER/EVIMO
cd ~/tools/evimo2_generate
./generate_all.sh ~/EVIMO/raw
./package_all.py ~/EVIMO/raw ~/EVIMO/packaged move
./compress_packaged.py ~/EVIMO/packaged ~/EVIMO/compressed compress
See the detailed tools descriptions below for more information.
Remove bad sequences from packaged output
After manual evaluation, the following sequences were found to contain no usable data and so were removed from the packaged output before compressing.
txt/flea3_7/imo/train/scene6_dyn_train_00_000000
txt/left_camera/imo/train/scene6_dyn_train_00_000000
txt/right_camera/imo/train/scene6_dyn_train_00_000000
txt/samsung_mono/imo/train/scene6_dyn_train_00_000000
txt/left_camera/imo_ll/eval/scene16_d_dyn_test_01_000000
txt/right_camera/imo_ll/eval/scene16_d_dyn_test_01_000000
txt/samsung_mono/imo_ll/eval/scene16_d_dyn_test_01_000000
txt/flea3_7/sanity/depth_var/depth_var_1_ud_000000
txt/left_camera/sanity/depth_var/depth_var_1_ud_000000
txt/right_camera/sanity/depth_var/depth_var_1_ud_000000
txt/samsung_mono/sanity/depth_var/depth_var_1_ud_000000
txt/flea3_7/sfm/train/scene7_03_000002
txt/left_camera/sfm/train/scene7_03_000002
txt/right_camera/sfm/train/scene7_03_000002
txt/samsung_mono/sfm/train/scene7_03_000002
txt/flea3_7/sfm/train/seq_1_5_000001
txt/left_camera/sfm/train/seq_1_5_000001
txt/right_camera/sfm/train/seq_1_5_000001
npz/flea3_7/imo/train/scene6_dyn_train_00_000000
npz/left_camera/imo/train/scene6_dyn_train_00_000000
npz/right_camera/imo/train/scene6_dyn_train_00_000000
npz/samsung_mono/imo/train/scene6_dyn_train_00_000000
npz/left_camera/imo_ll/eval/scene16_d_dyn_test_01_000000
npz/right_camera/imo_ll/eval/scene16_d_dyn_test_01_000000
npz/samsung_mono/imo_ll/eval/scene16_d_dyn_test_01_000000
npz/flea3_7/sanity/depth_var/depth_var_1_ud_000000
npz/left_camera/sanity/depth_var/depth_var_1_ud_000000
npz/right_camera/sanity/depth_var/depth_var_1_ud_000000
npz/samsung_mono/sanity/depth_var/depth_var_1_ud_000000
npz/flea3_7/sfm/train/scene7_03_000002
npz/left_camera/sfm/train/scene7_03_000002
npz/right_camera/sfm/train/scene7_03_000002
npz/samsung_mono/sfm/train/scene7_03_000002
npz/flea3_7/sfm/train/seq_1_5_000001
npz/left_camera/sfm/train/seq_1_5_000001
npz/right_camera/sfm/train/seq_1_5_000001
video/flea3_7/imo/train/scene6_dyn_train_00_flea3_7_ground_truth_000000.mp4
video/left_camera/imo/train/scene6_dyn_train_00_left_camera_ground_truth_000000.mp4
video/right_camera/imo/train/scene6_dyn_train_00_right_camera_ground_truth_000000.mp4
video/samsung_mono/imo/train/scene6_dyn_train_00_samsung_mono_ground_truth_000000.mp4
video/left_camera/imo_ll/eval/scene16_d_dyn_test_01_left_camera_ground_truth_000000.mp4
video/right_camera/imo_ll/eval/scene16_d_dyn_test_01_right_camera_ground_truth_000000.mp4
video/samsung_mono/imo_ll/eval/scene16_d_dyn_test_01_samsung_mono_ground_truth_000000.mp4
video/flea3_7/sanity/depth_var/depth_var_1_ud_flea3_7_ground_truth_000000.mp4
video/left_camera/sanity/depth_var/depth_var_1_ud_left_camera_ground_truth_000000.mp4
video/right_camera/sanity/depth_var/depth_var_1_ud_right_camera_ground_truth_000000.mp4
video/samsung_mono/sanity/depth_var/depth_var_1_ud_samsung_mono_ground_truth_000000.mp4
video/flea3_7/sfm/train/scene7_03_flea3_7_ground_truth_000002.mp4
video/left_camera/sfm/train/scene7_03_left_camera_ground_truth_000002.mp4
video/right_camera/sfm/train/scene7_03_right_camera_ground_truth_000002.mp4
video/samsung_mono/sfm/train/scene7_03_samsung_mono_ground_truth_000002.mp4
video/flea3_7/sfm/train/seq_1_5_flea3_7_ground_truth_000001.mp4
video/left_camera/sfm/train/seq_1_5_left_camera_ground_truth_000001.mp4
video/right_camera/sfm/train/seq_1_5_right_camera_ground_truth_000001.mp4
Generation Tools
All generation tools are located in evimo/tools/evimo2_generation
.
Clear
Deletes all generated files but leaves the raw recordings
Clear all:
./clear_all.sh ~/EVIMO/raw
Clear a specific recording:
./clear.sh ~/EVIMO/raw/imo/eva/scene13_dyn_test_00
Generate
Runs for each camera in a sequence folder
the offline tool to generate txt format
the evimo-gen python tool to generat npz format and visualization frames
ffmpeg to make the visualization video
cleans up all intermediate artifacts to save TB’s of disk space as it goes along
all final artifacts are left in each sequences folder, they will be moved into the final dataset file/folder structure later
Generate all:
./generate_all.sh ~/raw
Generate a specific recording:
./generate.sh ~/EVIMO/raw/imo/eva/scene13_dyn_test_00
Package
Checks that files that should have been made by generate.sh
are present and copies or moves files into the released file/folder structure.
To do a dry run (check for missing generated files)
./package_all.py ~/EVIMO/raw ~/EVIMO/packaged dry
To do a real run (moves files and copies those that can’t be moved):
Moving instead of copying saves over a 1 TB of drive space and makes the process fit on a 4TB drive.
./package_all.py ~/EVIMO/raw ~/EVIMO/packaged move
Compress
Checks that files that should have been made by generate.sh
are present and copies or moves files into the released file/folder structure.
To do a dry run:
./compress_packaged.py ~/EVIMO/packaged ~/EVIMO/compressed dry
To do a real run (moves files and copies those that can’t be moved):
./compress_packaged.py ~/EVIMO/packaged ~/EVIMO/compressed compress