{"id":31696646,"url":"https://github.com/haddriax/modelnet10-classifier","last_synced_at":"2025-10-08T17:10:24.691Z","repository":{"id":318150630,"uuid":"1065322651","full_name":"haddriax/ModelNet10-classifier","owner":"haddriax","description":"WIP - A classifier for 3D shapes from the ModelNet10 dataset. The project will include data loading, preprocessing, local model training, and evaluation. It's ultimately designed to display a comparison between different deep learning models and transformations using Tensorboard.","archived":false,"fork":false,"pushed_at":"2025-10-05T11:52:49.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T13:26:49.855Z","etag":null,"topics":["cnn-classification","deep-learning","modelnet10","pointnet","pytorch"],"latest_commit_sha":null,"homepage":"","language":null,"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/haddriax.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-27T13:46:02.000Z","updated_at":"2025-10-05T11:56:09.000Z","dependencies_parsed_at":"2025-10-05T13:26:51.366Z","dependency_job_id":null,"html_url":"https://github.com/haddriax/ModelNet10-classifier","commit_stats":null,"previous_names":["haddriax/modelnet10-classifier"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/haddriax/ModelNet10-classifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haddriax%2FModelNet10-classifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haddriax%2FModelNet10-classifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haddriax%2FModelNet10-classifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haddriax%2FModelNet10-classifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haddriax","download_url":"https://codeload.github.com/haddriax/ModelNet10-classifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haddriax%2FModelNet10-classifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278981518,"owners_count":26079640,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cnn-classification","deep-learning","modelnet10","pointnet","pytorch"],"created_at":"2025-10-08T17:10:22.371Z","updated_at":"2025-10-08T17:10:24.684Z","avatar_url":"https://github.com/haddriax.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ModelNet10-classifier\nA classifier made using Pytorch to classify 3D shapes from the ModelNet10 dataset.  \nThe project includes data loading, preprocessing, local model training, and evaluation.\nIt's ultimately designed to display a comparison between different deep learning models and transformations for 3D shape classification using Tensorboard.\n\n## Why this project?\nI already worked on 2D classification on CIFAR, and I was curious about 3D classification from points clouds that could resemble what a LIDAR sensor would capture.  \nI also wanted to create a modular codebase using Pytorch, allowing easy experimentation with different models and transformations to learn about optimizer and hyperparameter tuning.  \nI'll also be able to work on implementing more models from known papers and get a good overview their processes, and maybe start one from scratch after.  \nFinally, I wanted to practice using Tensorboard for visualizing training progress and results, since it's a already available tool and good to compare models performances.\n\n## Tensorboard Visualization\nTo follow the training process, TensorBoard is used for visualization. Make sure you have TensorBoard installed.\n#### Manual start:\nIf Tensorboard doesn't start automatically, run the following command in your terminal:\n```bash\npython scripts/start_tensorboard.py\n```\nWith a specific log directory:\n```bash\ntensorboard --logdir outputs/tensorboard/runs\n```\nThen, open your web browser on `http://localhost:6006/` to view the TensorBoard dashboard.\n## Run\n`python scripts/train.py`\n## Deep Learning Models\n* PointNet (default)\n* PointTransformer (in progress)\n* DGCNN (in progress)\n* PointNet++ (in progress)\n\n## About the ModelNet10 Dataset\n#### Download links:\n* https://www.kaggle.com/datasets/balraj98/modelnet10-princeton-3d-object-dataset\n* https://modelnet.cs.princeton.edu/  \n#### Description:\nThe ModelNet10 dataset is widely used for benchmarking 3D shape classification algorithm containing a collection of 3D CAD models from 10 different categories: \n* bathtub\n* bed \n* chair\n* desk\n* dresser\n* monitor\n* nightstand\n* sofa\n* table\n* toilet  \nThe models are provided in OFF (Object File Format) files, a simple ASCII-based 3D mesh format that stores polygonal mesh data.  \n#### OFF format structure:  \nOFF  \n_num_vertices num_faces num_edges_  \nx1 y1 z1  \nx2 y2 z2  \n_..._  \nxn yn zn  \nn_vertices_face1 v1 v2 v3 ... [r g b a]  \nn_vertices_face2 v1 v2 v3 ... [r g b a]  \n_..._  \n\n## Sampling\nIn order to be fed into the neural network, the 3D models need to be converted into point clouds.  \nThe points are sampled from the surface of the 3D models, to ensure uniformity in the input data, each 3D model is sampled to have exactly 1024 points (default value).  \nWe use a Farthest Point Sampling (FPS) algorithm from Open3D, which selects points that are as far apart from each other as possible, ensuring a good coverage of the model's surface.\n### Note:\nThe sampling process is performed on-the-fly during training and evaluation, meaning that each time a model is loaded, a new set of points is sampled. This introduces variability in the input data, which can help improve the robustness of the trained models.  \nHowever, this can be computationally expensive and would starve the GPU during training (the data pre-processing becomes the bottleneck).\nTo mitigate this, I will either precompute FPS sampled point clouds and save them to disk (using GPU acceleration if I can).  \nA second possibility is to compute the next batch of sampled point clouds in a separate thread while the current batch is being processed by the GPU. This way, the CPU can prepare the next batch of data while the GPU is busy.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaddriax%2Fmodelnet10-classifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaddriax%2Fmodelnet10-classifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaddriax%2Fmodelnet10-classifier/lists"}