This repo is implementation for PointNet++ part segmentation model based on PyTorch and pytorch_geometric.
The model has been mergered into pytorch_geometric as a point cloud segmentation example, you can try it.
Segmentation on A subset of shapenet.
Method | mcIoU | Airplane | Bag | Cap | Car | Chair | Earphone | Guitar | Knife | Lamp | Laptop | Motorbike | Mug | Pistol | Rocket | Skateboard | Table |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PointNet++ | 81.9 | 82.4 | 79.0 | 87.7 | 77.3 | 90.8 | 71.8 | 91.0 | 85.9 | 83.7 | 95.3 | 71.6 | 94.1 | 81.3 | 58.7 | 76.4 | 82.6 |
PointNet++(this repo) | 82.5 | 76.1 | 87.8 | 77.5 | 89.89 | 73.7 | 95.3 | 70.5 |
Note,
- mcIOU: mean per-class pIoU
- The model uses single-scale grouping with raw points as input.
- All experiments are trained with same default configration: npoints=2500, batchsize=8, num_epoches=30. The recorded accuracy above is the test accuracy of the final epoch.
- python 3.6.8
- PyTorch 1.1.0
- pytorch_geometric 1.3.0
- torch-cluster 1.4.2
- torch-scatter 1.2.0
- torch-sparse 0.4.0
- Open3D 0.6.0(optional, for visualization of segmentation result)
Training
python main.py
Show segmentation result
python vis/show_seg_res.py
- pointnet.pytorch by fxia22. This repo's tranining code is heavily borrowed from fxia22's repo.
- Official PointNet and PointNet++ tensorflow implementations
- PointNet++ classification example of pytorch_geometric library