{"id":13441950,"url":"https://github.com/ddsediri/IterativePFN","last_synced_at":"2025-03-20T13:31:36.030Z","repository":{"id":153575316,"uuid":"617878779","full_name":"ddsediri/IterativePFN","owner":"ddsediri","description":"Official code implementation for the paper \"IterativePFN: True Iterative Point Cloud Filtering\" (published in CVPR 2023).","archived":false,"fork":false,"pushed_at":"2023-08-23T00:21:51.000Z","size":20056,"stargazers_count":48,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-28T05:12:16.473Z","etag":null,"topics":["denoising","filtering","graph-convolutional-networks","pointcloud"],"latest_commit_sha":null,"homepage":"https://ddsediri.github.io/projects/IterativePFN/","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/ddsediri.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}},"created_at":"2023-03-23T09:56:08.000Z","updated_at":"2024-10-24T07:29:59.000Z","dependencies_parsed_at":"2024-01-16T02:56:18.987Z","dependency_job_id":null,"html_url":"https://github.com/ddsediri/IterativePFN","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/ddsediri%2FIterativePFN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddsediri%2FIterativePFN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddsediri%2FIterativePFN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddsediri%2FIterativePFN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddsediri","download_url":"https://codeload.github.com/ddsediri/IterativePFN/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244619148,"owners_count":20482369,"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":["denoising","filtering","graph-convolutional-networks","pointcloud"],"created_at":"2024-07-31T03:01:39.986Z","updated_at":"2025-03-20T13:31:36.005Z","avatar_url":"https://github.com/ddsediri.png","language":"Python","readme":"![IterativePFN network](iterativepfn_network.png)\n```The official implementation of our paper titled \"IterativePFN: True Iterative Point Cloud Filtering\". Please reach out in case you encounter issues with the setup.```\n\n# IterativePFN: True Iterative Point Cloud Filtering\nDasith de Silva Edirimuni, Xuequan Lu, Zhiwen Shao, Gang Li, Antonio Robles-Kelly, Ying He\n\nPaper: [ArXiv](https://arxiv.org/abs/2304.01529)\n\nAbstract: The quality of point clouds is often limited by noise introduced during their capture process. Consequently, a fundamental 3D vision task is the removal of noise, known as point cloud filtering or denoising. State-of-the-art learning based methods focus on training neural networks to infer filtered displacements and directly shift noisy points onto the underlying clean surfaces. In high noise conditions, they iterate the filtering process. However, this iterative filtering is only done at test time and is less effective at ensuring points converge quickly onto the clean surfaces. We propose IterativePFN (iterative point cloud filtering network), which consists of multiple IterationModules that model the true iterative filtering process internally, within a single network. We train our IterativePFN network using a novel loss function that utilizes an adaptive ground truth target at each iteration to capture the relationship between intermediate filtering results during training. This ensures that the filtered results converge faster to the clean surfaces. Our method is able to obtain better performance compared to state-of-the-art methods. The source code can be found at: https://github.com/ddsediri/IterativePFN.\n\n\n## Install required software\nPlease run the following pip and conda install commands:\n```\nconda create -n newenv2023 python=3.7\nconda activate newenv2023\nconda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch\nconda install -c fvcore -c iopath -c conda-forge fvcore iopath\nconda install -c bottler nvidiacub\nconda install pytorch3d -c pytorch3d\nconda install pyg -c pyg\npip install pytorch-lightning==1.7.6\npip install point-cloud-utils==0.27.0\npip install plyfile\npip install pandas\n```\n\n**Please refer to the \"How to run\" section for either testing a pretrained network or training a new one.**\n\nWe have tested our networks with the following setup:\n```\nPython 3.7\nUbuntu 22.04\nCUDA 11.3\nPyTorch 1.11.0\nPyTorch3D 0.7.1\nPyG 2.1.0\n```\nFor faster training, we use a SLURM cluster with 3-4 NVIDIA A100 GPUs and a batch size of 16. Please update your respective config settings according to your resources.\n\n## Download dataset + pre-trained models\n\nPlease download the training and testing datasets and the pretrained model by following this link: [located here](https://drive.google.com/file/d/1-TvHy3bvq8X1vI0ztwmmubDqhngRLQDu/view?usp=drive_link) and downloading ```data_and_ckpt.zip```.\n\nThereafter, unzip ```data_and_ckpt.zip``` and place the contents of the ```/data_and_ckpt``` folder, i.e., the ```/data``` and ```/pretrained``` folders, directly within the root folder where the bash scripts are placed.\n\n## How to run\n\n### Train the network\nPlease make sure ```launcher_train.sh``` has execute permissions and that the ```data``` folder is correctly placed in the root directory. Thereafter, run the following command:\n```\n./launcher_train.sh\n```\nThe folder corresponding to the training run with trained models will appear within ```./logs```. \n\n### Run inference only (without training a new network)\nPlease make sure ```launcher_test.sh``` has execute permissions and that the ```/data``` and ```/pretrained``` folders are correctly placed in the root directory. Thereafter, run the following command:\n```\n./launcher_test.sh\n```\n\nThe evaluation results will be displayed in the terminal. You may further analyse the code within ```Evaluate.py```. The filtered output will be found at ```./data/results```. We use the Chamfer and Point2Mesh distances for our results tables and visualizations (see below).\n\n### Results\nHere is a heat-map visualization of P2M results. Please note that for the results tables, we use bidirectional P2M results (average of each point to nearest mesh triangle and each mesh triangle to nearest point). However, for the heat-map, we only use point-wise P2M results (distance of each point to nearest mesh triangle), consistent with previous works such as ScoreDenoise by Luo and Hu. Also, all metrics are calculated using PyTorch3D implementations of the corresponding metrics.\n![SOTA results](sota_results.gif)\n```Results on the 2% noise scale with synthetic Gaussian noise.```\n\n## Acknowledgement and citation\nOur code is partially based on ``Score-Based Point Cloud Denoising`` by Shitong Luo and Wei Hu. Kudos to them for their excellent implementation and resources. Please check their GitHub repo [here](https://github.com/luost26/score-denoise).\n\nIf you find our paper interesting and our code useful, please cite our paper with the following BibTex citation:\n```\n@InProceedings{de_Silva_Edirimuni_2023_CVPR,\n    author    = {de Silva Edirimuni, Dasith and Lu, Xuequan and Shao, Zhiwen and Li, Gang and Robles-Kelly, Antonio and He, Ying},\n    title     = {IterativePFN: True Iterative Point Cloud Filtering},\n    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},\n    month     = {June},\n    year      = {2023},\n    pages     = {13530-13539}\n}\n```","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddsediri%2FIterativePFN","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddsediri%2FIterativePFN","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddsediri%2FIterativePFN/lists"}