PointNet for ModelNet40 Classification

Reimplementation of PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation (Qi et al., 2017).

Architecture

Exact architecture from the paper (Appendix C):

  • Input Transform (T-Net 3×3): MLP(64,128,1024) → max pool → FC(512,256) → 3×3
  • Shared MLP(64,64) → Feature Transform (T-Net 64×64) → MLP(64,128,1024)
  • Global max pool → FC(512,256,40) + dropout(0.3)
  • Orthogonal regularization (λ=0.001) on both T-Nets

Training Recipe (from paper)

Parameter Value
Points sampled 1024 (uniform, normalized to unit sphere)
Augmentation Random up-axis rotation + Gaussian jitter (σ=0.02)
Optimizer Adam, lr=0.001, β₁=0.9
Batch size 32
LR schedule ÷2 every 20 epochs
Epochs trained 250
Best test accuracy 83.83% (epoch 238)

Usage

import torch
# Copy the PointNetClassification class from pointnet_modelnet40.py
model = PointNetClassification(num_classes=40)
model.load_state_dict(torch.load('pytorch_model.bin'))
model.eval()

# Input: (B, 3, 1024) point cloud normalized to unit sphere
# Output: (B, 40) logits

Dataset

Trained on jxie/modelnet40-2048 — 9,840 train / 2,468 test samples across 40 object categories.

Generated by ML Intern

This model repository was generated by ML Intern, an agent for machine learning research and development on the Hugging Face Hub.

Downloads last month
50
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for DavidHanSZ/pointnet-modelnet40

Evaluation results