iS-MAP: Neural Implicit Mapping and Positioning for Structural Environments(ACCV 2024)[[Paper]](https://link.springer.com/chapter/10.1007/978-981-96-0969-7_22)

November 23, 2025 · View on GitHub

image Overview of the system: We sample the 3D points along the ray from each pixel and then encode the sample points by hybrid hash and multi-scale feature plane, and decode them to the TSDF value sis_i and the TSDF feature hih_i by the geometric decoder φg\varphi_{g}. Considering the consistency of geometry and appearance, hih_i is then concatenated with the feature plane encoding ρ(xi)\rho(x_{i}) to predict the raw color cic_i by appearance decoder φc\varphi_{c}. After TSDF volume rendering, the scene representation is optimized by minimizing sdf loss LsdfL_{sdf}, smooth loss LsmoL_{smo}, depth loss LdL_d , color loss LcL_c and structural consistency loss LconL_{con} in the mapping thread. Additionally, we also added Manhattan matching loss LcoorL_{coor} to the tracking thread to further optimize the camera pose.

Installation

You can create an anaconda environment called ismap. Please install libopenexr-dev before creating the environment.

sudo apt-get install libopenexr-dev
conda env create -f environment.yaml
conda activate ismap

You will then need to install tiny-cuda-nn to use the hash grid. We recommend installing it from source code.

cd tiny-cuda-nn/bindings/torch
python setup.py install

Download Dataset & Data preprocessing

Download the data as below and the data is saved into the ./Datasets/Replica folder.

bash scripts/download_replica.sh

For running iS-MAP, you should generate line mask with LSD first. We provide a simple preprocessing code to perform LSD segmentation. For example, for room0 scene, after downloading the Replica dataset, you can run

python preprocess_line.py 

The line mask images will be generated in the root path of dataset and the folder named ./line_seg.

Alternatively, we recommend directly downloading the preprocessed dataset including the ./line_seg folder here.

Run

After downloading the data to the ./Datasets folder, you can run iS-MAP:

python -W ignore run.py configs/Replica/room0.yaml

The rendering image and reconstruction mesh are saved in $OUTPUT_FOLDER/mapping_vis and $OUTPUT_FOLDER/mesh. The final_mesh_eval_rec_culled.ply means mesh culling the unseen and occluded regions.

Evaluation

Average Trajectory Error

To evaluate the average trajectory error. Run the command below with the corresponding config file:

python src/tools/eval_ate.py configs/Replica/room0.yaml

Reconstruction Error

We follow the evaluation method of Co-SLAM, remove the unseen areas and add some virtual camera positions to balance accuracy and prediction ability. For detailed evaluation code, please refer to here.

Acknowledgement

Thanks to previous open-sourced repo: ESLAM, Co-SLAM, NICE-SLAM

Citing

If you find our work useful, please consider citing:

@inproceedings{wang2024map,
  title={iS-MAP: Neural Implicit Mapping and Positioning for Structural Environments},
  author={Wang, Haocheng and Cao, Yanlong and Shou, Yejun and Shen, Lingfeng and Wei, Xiaoyao and Xu, Zhijie and Ren, Kai},
  booktitle={Proceedings of the Asian Conference on Computer Vision},
  pages={747--763},
  year={2024}
}