This repository contains tools for building the InLocCIIRC dataset. The dataset is constructed incrementally for each Space. The usual steps are as follows:
- Obtain the sweepData.json file
- Obtain panoramas
- Obtain MatterPak and normalize it
- Rotate panoramas
- Build cutouts
- Build point cloud file
- Build query poses
- Build file lists
- Build scores
- Plot the dataset including retrieved poses
- Plot query pipeline
- Prepare to plot distance threshold vs accuracy
- Create a key.js file based on the keyTemplate.js file
- Run a web server in the getSweepData folder
- Open the getSweepData.html in your browser as a localhost address - e.g. http://127.0.0.1:8887/getSweepData.html
- Open the console, the sweepData.json is being printed there
- Manually download a panorama for every sweep
- Name the panoramas according to their number as taken by the Capture iPadOS app
- Make sure the circle around the mouse pointer is not present in the panorama
- Name the panoramas as number.pano in matterport.com
- Download the panoramas as number.jpg
- Buy the MatterPak
- Download it, it contains cloud.xyz, .obj files
- Rotate them along the x axis (psi angle) by -90.0 degrees; recommended tool: CloudCompare
- Save them accordingly into the models directory, use .ply extension for the point cloud, .obj extension for the mesh
- Open the rotatePanoramas folder in Matlab
- Set up the appropriate Space name in setupParams2.m
- Adjust and run buildSweepDataMatFile.m
- Adjust and run rotatePanoramas.m
- For panoramas that failed to rotate properly, try changing the goodness in sweepData
- Try increasing the point size of the point cloud projection
- If the proper rotation still cannot be found, use manuallyRotatePanorama.m file
- Adjust the Space name and the panoIds array
- It is necessary that the display is turned on, otherwise you get an error from pyrender
- Adjust the Space name
- Choose the desired mode in transformPoses.m: setupParams(mode)
- Note the comment on the third line
- Change the mode accordingly
- Set up appropriate mode in buildFeatures.m
- Execute buildFeatures.m on a machine with GPU.
- Execute buildScores on a machine with ~1 GB of RAM
- Make sure the demo has finished and now we have retrievedPoses directory in evaluation directory
- It is recommended to erase evaluation/temporary directory
- Run evaluation/spaceTopViews.py and check that the output images are looking good
- Run evaluation/queryPipeline.m for queries of interest
- Execute evaluation/distThreshVsAccuracy.py
- empty TODO list
If you have query sequences, you need to generate raw poses. TODO: the next steps are outdated!
- Navigate to buildRawPoses.m
- Guess a synchronization constant
- Set up parameters in functions/InLocCIIRC_utils/params folder
- Set generateMiniSequence to true, until you find the right synchronization constant
- Set generateMiniSequence to false, adjust the params until projections match queries
- Next, when a not-great-not-terrible generic params are found, use the next section to build upon them and find even better params
- Once the parameters are good enough, scroll down and execute the code snippet that generates rawPoses.csv
- Do not overwrite functions/matconvnet when syncing local repo with remote repo. It contains already built package for the remote. However, if hit accidentally happens, prebuilt binary can be found at boruvka:/datagrid/personal/lucivpav/matconvnet