| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
A memory-efficient 3D point cloud classifier that replaces dense voxel grids with a single-resolution spatial hash table, enabling real-time 3D perception on memory-constrained edge devices like the NVIDIA Jetson Nano.
This project investigates the optimal hash table size for 3D point cloud classification under tight memory budgets. A 32³ binary voxel grid is compressed into a fixed-size 1D hash array, and a lightweight MLP classifies the resulting feature descriptor. The method is benchmarked against an uncompressed 3D CNN baseline on a 10-class subset of ModelNet40, achieving a 37.6× memory reduction (4.52 MB → 0.12 MB) with only a 10.4% accuracy drop (95.7% → 85.3%) at the optimal table size T = 4096.
3D-pointcloud-spatial-hash-opt/ ├── checkpoints/ # Trained model weights ├── data/ │ ├── processed/ # Preprocessed point clouds + hash indices │ └── raw/ModelNet40/ # Raw .off mesh files (10 classes) ├── reports/ ├── figures/ ├── src/ │ ├── data/ # Dataset loading, sampling, voxelization │ ├── experiments/ # Hash sweep and plotting scripts │ ├── models/ # Hash encoder, MLP, 3D CNN baseline │ ├── training/ # Training loops and metric logging │ └── utils/ # Config and hash function ├── tests/ # Unit tests │ ├── test_cnn.py │ ├── test_collision.py │ ├── test_dataset.py │ └── test_models.py ├── .gitignore ├── LICENSE ├── README.md ├── requirements.txt └── run_cnn.py
| Method | Memory (MB) | Accuracy (%) | Collision Rate (%) |
|---|---|---|---|
| 3D CNN Baseline | 4.52 | 95.7 | 0.0 |
| Hash T = 2²⁰ (1,048,576) | 32.00 | 85.8 | 0.0 |
| Hash T = 2¹⁶ (65,536) | 2.00 | 82.8 | 0.5 |
| Hash T = 2¹² (4,096) | 0.12 | 85.3 | 11.8 |
| Hash T = 2⁸ (256) | 0.01 | 44.2 | 74.3 |
| Figure | Description |
|---|---|
![]() |
Spatial hash model architecture |
![]() |
Memory vs. accuracy Pareto curve |
![]() |
Collision rate vs. accuracy |
![]() |
Validation accuracy over 10 epochs |
Full analysis is available in the project report.
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txtpython src/data/off_to_pointcloudv2.pyThis samples 2048 points per mesh, voxelizes into a 32³ binary grid, extracts occupied coordinates, and precomputes hash indices into data/processed/.
# Hash table size sweep (T = 256, 4096, 65536, 1048576)
python src/experiments/run_hash_sweep.py
# Dense 3D CNN baseline
python run_cnn.pypython src/experiments/plot_results.pyOutputs are saved to experiment_results/.
If you use this work, please cite:
@misc{aygun2025spatialhash,
author = {Esranur Ayg{\"u}n},
title = {Optimal Hash Table Size for 3D Point Cloud Classification},
year = {2026},
howpublished = {\url{https://github.com/fukichime/3D-pointcloud-spatial-hash-opt}},
note = {Department of Computer Engineering, Bahçeşehir University}
}This project uses ModelNet40. Please cite the original dataset:
@inproceedings{wu20153d,
author = {Wu, Zhirong and Song, Shuran and Khosla, Aditya and Yu, Fisher and Zhang, Linguang and Tang, Xiaoou and Xiao, Jianxiong},
title = {3D ShapeNets: A Deep Representation for Volumetric Shapes},
booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
pages = {1912--1920},
year = {2015}
}| Back | FazBrowse Home | New Git URL |