50 lines
2.1 KiB
Markdown
50 lines
2.1 KiB
Markdown
PointNet and PointNet++ for Point Cloud Classification and Segmentation
|
|
====
|
|
|
|
This is a reproduction of the papers
|
|
- [PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation](https://arxiv.org/abs/1612.00593).
|
|
- [PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space](https://arxiv.org/abs/1706.02413).
|
|
|
|
# Performance
|
|
|
|
## Classification
|
|
| Model | Dataset | Metric | Score - PyTorch | Score - DGL | Time(s) - PyTorch | Time(s) - DGL |
|
|
|-----------------|------------|----------|------------------|-------------|-------------------|---------------|
|
|
| PointNet | ModelNet40 | Accuracy | 89.2(Official) | 89.3 | 181.8 | 95.0 |
|
|
| PointNet++(SSG) | ModelNet40 | Accuracy | 92.4 | 93.3 | 182.6 | 133.7 |
|
|
| PointNet++(MSG) | ModelNet40 | Accuracy | 92.8 | 93.3 | 383.6 | 240.5 |
|
|
|
|
## Part Segmentation
|
|
|
|
| Model | Dataset | Metric | Score - PyTorch | Score - DGL | Time(s) - PyTorch | Time(s) - DGL |
|
|
|-----------------|------------|----------|-----------------|-------------|-------------------|---------------|
|
|
| PointNet | ShapeNet | mIoU | 84.3 | 83.6 | 251.6 | 234.0 |
|
|
| PointNet++(SSG) | ShapeNet | mIoU | 84.9 | 84.5 | 361.7 | 240.1 |
|
|
| PointNet++(MSG) | ShapeNet | mIoU | 85.4 | 84.6 | 817.3 | 821.8 |
|
|
|
|
+ Score - PyTorch are collected from [this repo](https://github.com/yanx27/Pointnet_Pointnet2_pytorch).
|
|
+ Time(s) are the average training time per epoch, measured on EC2 g4dn.4xlarge instance w/ Tesla T4 GPU.
|
|
# How to Run
|
|
|
|
For point cloud classification, run with
|
|
|
|
```python
|
|
python train_cls.py
|
|
```
|
|
|
|
For point cloud part-segmentation, run with
|
|
|
|
```python
|
|
python train_partseg.py
|
|
```
|
|
|
|
## To Visualize Part Segmentation in Tensorboard
|
|

|
|
First ``pip install tensorboard``
|
|
then run
|
|
```python
|
|
python train_partseg.py --tensorboard
|
|
```
|
|
To display in Tensorboard, run
|
|
``tensorboard --logdir=runs``
|