{"id":13442328,"url":"https://github.com/yahuiliu99/PointConT","last_synced_at":"2025-03-20T13:33:25.560Z","repository":{"id":148130827,"uuid":"470895916","full_name":"yahuiliu99/PointConT","owner":"yahuiliu99","description":"Official implementation of the paper \"Point Cloud Classification Using Content-based Transformer via Clustering in Feature Space\"","archived":false,"fork":false,"pushed_at":"2023-06-01T12:23:27.000Z","size":256,"stargazers_count":32,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-28T05:13:06.359Z","etag":null,"topics":["point-cloud","pointnet2","pytorch"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yahuiliu99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-03-17T07:49:57.000Z","updated_at":"2024-10-23T06:12:18.000Z","dependencies_parsed_at":"2024-01-16T02:46:29.195Z","dependency_job_id":"68805aea-e62d-49c5-918a-c13742d8c0d1","html_url":"https://github.com/yahuiliu99/PointConT","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/yahuiliu99%2FPointConT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahuiliu99%2FPointConT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahuiliu99%2FPointConT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahuiliu99%2FPointConT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yahuiliu99","download_url":"https://codeload.github.com/yahuiliu99/PointConT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244619279,"owners_count":20482392,"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":["point-cloud","pointnet2","pytorch"],"created_at":"2024-07-31T03:01:44.394Z","updated_at":"2025-03-20T13:33:25.211Z","avatar_url":"https://github.com/yahuiliu99.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003c!--\n * @Date: 2022-06-18 08:26:35\n * @Author: Liu Yahui\n * @LastEditors: Liu Yahui\n * @LastEditTime: 2022-07-02 13:58:24\n--\u003e\n# PointConT\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/point-cloud-classification-using-content/3d-point-cloud-classification-on-scanobjectnn)](https://paperswithcode.com/sota/3d-point-cloud-classification-on-scanobjectnn?p=point-cloud-classification-using-content)\n\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/point-cloud-classification-using-content/3d-point-cloud-classification-on-modelnet40)](https://paperswithcode.com/sota/3d-point-cloud-classification-on-modelnet40?p=point-cloud-classification-using-content)\n\nThis repository is an official implementation of the following paper:\n\u003e [Point Cloud Classification Using Content-based Transformer via Clustering in Feature Space](https://arxiv.org/pdf/2303.04599v1.pdf)\n\u003e\n\u003eYahui Liu, Bin Tian, Yisheng Lv, Lingxi Li, Feiyue Wang\n\u003e\n\u003e**Accepted for publication in the *IEEE/CAA Journal of Automatica Sinica***\n\n\n## Get Started\n### Installation\n```\n# clone this repo\ngit clone https://github.com/yahuiliu99/PointConT.git\ncd PointConT\n\n# create a conda env\nconda create -n pointcont -y python=3.7 numpy=1.20 numba\nconda activate pointcont\n\n# install PyTorch and libs (refer to requirements.txt)\n# please install compatible PyTorch and CUDA versions\nconda install -y pytorch=1.10.1 torchvision cudatoolkit=11.1 -c pytorch -c nvidia\npip install hydra-core==1.1 h5py scikit-learn einops tqdm warmup-scheduler deepspeed tensorboard  \n\n# install the pointnet++ library cuda extensions\npip install pointnet2_ops_lib/.\n```\n\n### Data Preparation\n\nWhen you first run the command for training, the datasets will be automatically downloaded and saved in `data/`.\n- **ModelNet40** --\u003e`data/modelnet40_ply_hdf5_2048/`\n- **ScanObjectNN** --\u003e`data/h5_files/`\n\nAlternatively, you can manually download the official data ([ModelNet40](https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip) | [ScanObjectNN](https://hkust-vgd.github.io/scanobjectnn/)) in any path, and create a symbolic link to your datasets folder.\n```\nmkdir data\nln -s /path/to/your/data/folder data/\n```\n\n## Training\n### Step 1: Check config file \nYou can modify settings in `config/cls.yaml`.\n\nMake sure the `eval` is set to False.\n\n\u003e We support [wandb](https://wandb.ai/site) for collecting results online. Just set `wandb.use_wandb=True` if use wandb. \n\u003e Please check the [official wandb doc](https://docs.wandb.ai/) for more details. \n\n### Step 2: Train PointConT\n- Classification on ModelNet40\n\n    ```\n    python main_cls.py db=modelnet40\n    ```\n\n- Classification on ScanObjectNN\n\n    ```\n    python main_cls.py db=scanobjectnn\n    ```\n    \n`config/cls.yaml` will be automatically loaded when you run the command.\n\n\n## Evaluation\nTo evaluate a trained-model, please set `eval=True` in `config/cls.yaml` and run `python main_cls.py db=${dataset}`\n\nOr you can override values in the loaded config from the command line:\n\n```\npython main_cls.py db=${dataset} eval=True\n```\n\n\n## Visualization\n### Dependency\n- [Mitsuba](https://www.mitsuba-renderer.org/)\n\nPlease refer to the following github repository for point cloud rendering code: [PointFlowRenderer](https://github.com/zekunhao1995/PointFlowRenderer)\n\n![img](img/visual.jpg)\n\n## Results (pretrained model)\n\n| Dataset |    mAcc  |   OA   |   Download |      \n| ------- | ---- | ---- | :----: | \n| ModelNet40   |   90.5   |   93.5   |   [ckpt](https://drive.google.com/file/d/1ZUrZMnqsnr2Tkqt51Aa9LPmsfQ0P3dmI/view?usp=sharing) \\| [log](https://drive.google.com/file/d/14v4mmwN7qXnufIML-_1XmWU14U4eej2w/view?usp=share_link)   |      \n| ScanObjectNN    |   86.0   |   88.0   |   [ckpt](https://drive.google.com/file/d/1hewKbJoERzaqY261_QQoenZ0Ni9-iYGF/view?usp=sharing) \\| [log](https://drive.google.com/file/d/1s-z5quorbZUYHfTNWnevS-CA_jcy9S0F/view?usp=sharing)   |   \n| ScanObjectNN *   |   88.5   |   90.3   |   [config](config/voting_cls.yaml) \\| [log](https://drive.google.com/file/d/1XHQjuHzMBOciWhY7WlM6DsiaiZydrSVR/view?usp=sharing)   |      \n\n\\* denotes method evaluated with voting strategy \n## Citation\n\nIf you find our work useful in your research, please consider citing:\n```\n@article{Liu2023PointConT,\n    author = {Liu, Yahui and Tian, Bin and Lv, Yisheng and Li, Lingxi and Wang, Fei-Yue},\n    title = {Point Cloud Classification Using Content-based Transformer via Clustering in Feature Space},\n    journal = {IEEE/CAA Journal of Automatica Sinica}, \n    year={2023},\n    volume={10},\n    number={8},\n    pages={1-9},\n    doi={10.1109/JAS.2023.123432}\n}\n```\n\n## Acknowledgement\n\nOur code is mainly based on the following open-source projects. Many thanks to the authors for their wonderful works.\n\n\n[PointNet2](https://github.com/erikwijmans/Pointnet2_PyTorch),  [Point-Transformers](https://github.com/qq456cvb/Point-Transformers), [DGCNN](https://github.com/AnTao97/dgcnn.pytorch), \n[CurveNet](https://github.com/tiangexiang/CurveNet), \n[PointMLP](https://github.com/ma-xu/pointMLP-pytorch), [PAConv](https://github.com/CVMI-Lab/PAConv), [PointNeXt](https://github.com/guochengqian/pointnext)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahuiliu99%2FPointConT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahuiliu99%2FPointConT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahuiliu99%2FPointConT/lists"}