{"id":13443853,"url":"https://github.com/minzhang-1/PointHop","last_synced_at":"2025-03-20T17:32:01.749Z","repository":{"id":159556269,"uuid":"198758446","full_name":"minzhang-1/PointHop","owner":"minzhang-1","description":"PointHop: An Explainable Machine Learning Method for Point Cloud Classification","archived":false,"fork":false,"pushed_at":"2020-07-14T07:41:26.000Z","size":425383,"stargazers_count":21,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-28T07:41:12.295Z","etag":null,"topics":["3d-classification","classification","feedforward","machine-learning","point-cloud"],"latest_commit_sha":null,"homepage":null,"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/minzhang-1.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":"2019-07-25T04:40:18.000Z","updated_at":"2024-03-18T16:10:04.000Z","dependencies_parsed_at":"2023-05-06T08:46:59.148Z","dependency_job_id":null,"html_url":"https://github.com/minzhang-1/PointHop","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/minzhang-1%2FPointHop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minzhang-1%2FPointHop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minzhang-1%2FPointHop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minzhang-1%2FPointHop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minzhang-1","download_url":"https://codeload.github.com/minzhang-1/PointHop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244660606,"owners_count":20489365,"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":["3d-classification","classification","feedforward","machine-learning","point-cloud"],"created_at":"2024-07-31T03:02:12.117Z","updated_at":"2025-03-20T17:31:56.741Z","avatar_url":"https://github.com/minzhang-1.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# PointHop: *An Explainable Machine Learning Method for Point Cloud Classification*\nCreated by Min Zhang, Haoxuan You, Pranav Kadam, Shan Liu, C.-C. Jay Kuo from University of Southern California.\n\n![introduction](https://github.com/minzhang-1/PointHop/blob/master/doc/intro.png)\n\n### Introduction\nThis work is an official implementation of our [arXiv tech report](https://arxiv.org/abs/1907.12766). We proposed a novel explainable machine learning method for point cloud, called the PointHop method.\n\nWe address the problem of unordered point cloud data using a space partitioning procedure and developing a robust descriptor that characterizes the relationship between a point and its one-hop neighbor in a PointHop unit. Furthermore, we used the Saab transform to reduce the attribute dimension in each PointHop unit. In the classification stage, we fed the feature vector to a classifier and explored ensemble methods to improve the classification performance. It was shown by experimental results that the training complexity of the PointHop method is significantly lower than that of state-of-the-art deep learning-based methods with comparable classification performance. \n\nIn this repository, we release code and data for training a PointHop classification network on point clouds sampled from 3D shapes.\n\n### Spark version\nThis implementation has a high requirement for memory. If you only have 16/32GB memory, please use our [new distributed version](https://github.com/minzhang-1/PointHop-PointHop2_Spark) which is built upon Apache Spark. The new version implements the baseline within 20 minutes, using less than 12GB memory.\n\n### Citation\nIf you find our work useful in your research, please consider citing:\n\n\t@article{zhang2020pointhop,\n\t  title={PointHop: An Explainable Machine Learning Method for Point Cloud Classification},\n\t  author={Zhang, Min and You, Haoxuan and Kadam, Pranav and Liu, Shan and Kuo, C-C Jay},\n\t  journal={IEEE Transactions on Multimedia},\n\t  year={2020},\n\t  publisher={IEEE}\n\t}\n\n### Installation\n\nThe code has been tested with Python 3.5. You may need to install h5py, pytorch, sklearn, pickle and threading packages.\n\nTo install h5py for Python:\n```bash\nsudo apt-get install libhdf5-dev\nsudo pip install h5py\n```\n\n### Usage\nTo train a single model to classify point clouds sampled from 3D shapes:\n\n    python3 train.py\n\nAfter the above training, we can evaluate the single model.\n\n    python3 evaluate.py\n\nIf you would like to achieve better performance, you can change the argument `ensemble` from `False` to `True` in both `train.py` and `evaluate.py`.\n\nIf you run the code on your laptop with small memory, you can change the argument `num_batch_train` or `num_batch_test` larger. To get the same speed and performance as the paper, set `num_batch_train` as 1 and `num_batch_test` as 1 and change `incremenntalpca` to `pca` in pointhop.py\n\nLog files and network parameters will be saved to `log` folder. Point clouds of \u003ca href=\"http://modelnet.cs.princeton.edu/\" target=\"_blank\"\u003eModelNet40\u003c/a\u003e models in HDF5 files will be automatically downloaded (416MB) to the data folder. Each point cloud contains 2048 points uniformly sampled from a shape surface. Each cloud is zero-mean and normalized into an unit sphere. There are also text files in `data/modelnet40_ply_hdf5_2048` specifying the ids of shapes in h5 files.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminzhang-1%2FPointHop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminzhang-1%2FPointHop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminzhang-1%2FPointHop/lists"}