{"id":18682522,"url":"https://github.com/postech-cvlab/dhvr","last_synced_at":"2025-06-25T06:35:40.108Z","repository":{"id":74660920,"uuid":"404649240","full_name":"POSTECH-CVLab/DHVR","owner":"POSTECH-CVLab","description":"[ICCV 2021] Deep Hough Voting for Robust Global Registration","archived":false,"fork":false,"pushed_at":"2022-02-17T07:34:02.000Z","size":3256,"stargazers_count":64,"open_issues_count":2,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-20T11:41:23.926Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/POSTECH-CVLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-09-09T08:45:26.000Z","updated_at":"2024-12-07T11:12:09.000Z","dependencies_parsed_at":"2023-04-07T21:46:44.307Z","dependency_job_id":null,"html_url":"https://github.com/POSTECH-CVLab/DHVR","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POSTECH-CVLab%2FDHVR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POSTECH-CVLab%2FDHVR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POSTECH-CVLab%2FDHVR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/POSTECH-CVLab%2FDHVR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/POSTECH-CVLab","download_url":"https://codeload.github.com/POSTECH-CVLab/DHVR/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248514445,"owners_count":21116963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T10:12:13.771Z","updated_at":"2025-04-12T04:21:49.979Z","avatar_url":"https://github.com/POSTECH-CVLab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deep Hough Voting for Robust Global Registration, ICCV, 2021\n### [Project Page](https://cvlab.postech.ac.kr/research/DHVR/) | [Paper](https://arxiv.org/abs/2109.04310) | [Video](https://youtu.be/lPv5kKQGxZQ)\n\n[Deep Hough Voting for Robust Global Registration](https://cvlab.postech.ac.kr/research/DHVR/)  \n [Junha Lee](https://junha-l.github.io)\u003csup\u003e1\u003c/sup\u003e,\n Seungwook Kim\u003csup\u003e1\u003c/sup\u003e,\n [Minsu Cho](http://cvlab.postech.ac.kr/~mcho/)\u003csup\u003e1\u003c/sup\u003e,\n [Jaesik Park](http://jaesik.info/)\u003csup\u003e1\u003c/sup\u003e\u003cbr\u003e\n \u003csup\u003e1\u003c/sup\u003ePOSTECH CSE \u0026 GSAI\u003cbr\u003e\nin ICCV 2021 \n\n\u003cdiv style=\"text-align:center\"\u003e\n\u003cimg src=\"assets/pipeline.png\" alt=\"An Overview of the proposed pipeline\"/\u003e\n\u003c/div\u003e\n\n### Overview\n\nPoint cloud registration is the task of estimating the rigid transformation that aligns a pair of point cloud fragments. We present an efficient and robust framework for pairwise registration of real-world 3D scans, leveraging Hough voting in the 6D transformation parameter space. First, deep geometric features are extracted from a point cloud pair to compute putative correspondences. We then construct a set of triplets of correspondences to cast votes on the 6D Hough space, representing the transformation parameters in sparse tensors. Next, a fully convolutional refinement module is applied to refine the noisy votes. Finally, we identify the consensus among the correspondences from the Hough space, which we use to predict our final transformation parameters. Our method outperforms state-of-the-art methods on 3DMatch and 3DLoMatch benchmarks while achieving comparable performance on KITTI odometry dataset. We further demonstrate the generalizability of our approach by setting a new state-of-the-art on ICL-NUIM dataset, where we integrate our module into a multi-way registration pipeline.\n\n### Citing our paper\n\n```\n@InProceedings{lee2021deephough, \n    title={Deep Hough Voting for Robust Global Registration},\n    author={Junha Lee and Seungwook Kim and Minsu Cho and Jaesik Park},\n    booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},\n    year={2021}\n}\n```\n\n### Experiments\n\n|  Speed vs Accuracy | Qualitative results |\n|:----------------------------:|:------------------:|\n| ![Table](assets/ablation_pareto.png)   | ![Accuracy vs. Speed](assets/qual_3dmatch_2.png) |\n\n## Installation\n\nThis repository is developed and tested on \n\n- Ubuntu 18.04\n- CUDA 11.1\n- Python 3.8.11\n- Pytorch 1.4.9\n- MinkowskiEngine 0.5.4\n\n\n### Environment Setup\n\nOur pipeline is built on [MinkowskiEngine](https://github.com/NVIDIA/MinkowskiEngine).\nYou can install the MinkowskiEngine and the python requirements on your system with:\n\n```\n# setup requirements for MinkowksiEngine\nconda create -n dhvr python=3.8\nconda install pytorch=1.9.1 torchvision cudatoolkit=11.1 -c pytorch -c nvidia\nconda install numpy\nconda install openblas-devel -c anaconda\n\n# install MinkowskiEngine\npip install -U git+https://github.com/NVIDIA/MinkowskiEngine -v --no-deps --install-option=\"--blas_include_dirs=${CONDA_PREFIX}/include\" --install-option=\"--blas=openblas\"\n\n# download and setup DHVR\ngit clone https://github.com/junha-l/DHVR.git\ncd DHVR\npip install -r requirements.txt\n```\n\nWe also depends on [torch-batch-svd](https://github.com/KinglittleQ/torch-batch-svd), an open-source library for 100x faster (batched) svd on GPU.\nYou can follow the below instruction to install `torch-batch-svd`\n```\n# if your cuda installation directory is other than \"/usr/local/cuda\", you have to specify it.\n(CUDA_HOME=PATH/TO/CUDA/ROOT) bash scripts/install_3rdparty.sh\n```\n\n## 3DMatch Dataset\n\n#### Training\n\nYou can download preprocessed training dataset, which is provided by the author of [FCGF](https://github.com/chrischoy/FCGF), via these commands:\n```\n# download 3dmatch train set \nbash scripts/download_3dmatch.sh PATH/TO/3DMATCH\n# create symlink\nln -s PATH/TO/3DMATCH ./dataset/3dmatch\n```\n\n#### Testing\n\nThe official 3DMatch test set is available at the [official website](https://3dmatch.cs.princeton.edu/).\nYou should download fragments data of Geometric Registration Benchmark and decompress them to a new folder.\n\nThen, create a symlink via following command:\n```\nln -s PATH/TO/3DMATCH_TEST ./dataset/3dmatch-test\n```\n\n## Train DHVR\n\nThe default feature extractor we used in our experiments is [FCGF](https://github.com/chrischoy/FCGF). You can download pretrained FCGF models via following commands:\n\n```\nbash scripts/download_weights.sh\n```\n\nThen, train with \n```\npython train.py config/train_3dmatch.gin --run_name NAME_OF_EXPERIMENT\n```\n\n## Test DHVR\n\nYou can test DHVR via following commands:\n\n#### 3DMatch\n```\npython test.py config/test_3dmatch.gin --run_name EXP_NAME --load_path PATH/TO/CHECKPOINT\n```\n\n#### 3DLoMatch\n```\npython test.py config/test_3dlomatch.gin --run_name EXP_NAME --load_path PATH/TO/CHECKPOINT\n```\n\n### Pretrained Weights\nWe also provide pretrained weights on 3DMatch dataset. You can download the checkpoint in following [link](https://drive.google.com/file/d/1f9EKcCCTCs5KJrEccmB08P6a-N-6NnlC/view?usp=sharing).\n\n## Acknowledments\n\nOur code is based on the [MinkowskiEngine](https://github.com/NVIDIA/MinkowskiEngine). We also refer to [FCGF](https://github.com/chrischoy/FCGF), [DGR](https://github.com/chrischoy/DeepGlobalRegistration), and [torch-batch-svd](https://github.com/KinglittleQ/torch-batch-svd).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostech-cvlab%2Fdhvr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpostech-cvlab%2Fdhvr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostech-cvlab%2Fdhvr/lists"}