Test accuracy of the model is 96.85% with 100 epochs of training.
Below figure shows random 3 point clouds and their prediction and ground truth classes.
![]() |
![]() |
![]() |
Ground Truth: Chair | Ground Truth: Vase | Ground Truth: Lamp |
Prediction: Chair | Prediction: Lamp | Prediciton: Lamp |
Below figure shows 3 point clouds with wrong predictions and their ground truth classes.
![]() |
![]() |
![]() |
Ground Truth: Chair | Ground Truth: Vase | Ground Truth: Lamp |
Prediction: Lamp | Prediction: Lamp | Prediciton: Vase |
The chair point cloud is a folder chair and thus looks less like a standard chair.
The vase's shape resemples like a lamp on a square base and thus is ambiguous as a vase.
The lamp's structure looks like a vase.
The segmentation accuracy is 89.00 %
Below figure shows 3 sample point clouds with high segmentation accuracy and 3 point clouds with low segmentaion accuracy
Good segmentation | |||
Ground Truth | ![]() |
![]() |
![]() |
Predicted | ![]() |
![]() |
![]() |
Accuracy | 98.00 | 99.13 | 99.68 |
Bad segmentation | |||
Ground Truth | ![]() |
![]() |
![]() |
Predicted | ![]() |
![]() |
![]() |
Accuracy | 38.65 | 53.39 | 57.21 |
The point clouds where segmentation accuracy is low the parts are mostly ambiguous or the chair shape does not follow a standard chair.
For e.g. in the third round base chair its difficult to say till where yellow label should end.
Number of point clouds
For segmentation:
Num points | 10000 | 8000 | 5000 | 1000 | 100 |
Accuracy | 89.00 % | 88.99 % | 88.94 % | 88.12 | 79.48 |
For classification:
Num points | 10000 | 8000 | 5000 | 1000 | 100 |
Accuracy | 96.85 % | 96.85 % | 96.85 % | 96.74 | 93.10 |
The model is fairly robust to number of points for both segmentation and classification tasks.
Rotaion degree
For segmentation with varying degree of rotation around x-axis:
Rotation | 0.2 rad | 0.5 rad | 1.12 rad | 2.0 rad | 3.14 rad |
Accuracy | 85.99 % | 70.10 % | 45.68 % | 22.57 | 29.29 |
For classification with varying degree of rotation around x-axis:
Rotation | 0.2 rad | 0.5 rad | 1.12 rad | 2.0 rad | 3.14 rad |
Accuracy | 93.80 % | 55.08 % | 19.20 % | 39.97 % | 58.76 % |
The model is not robust to rotation for both segmentation and classification tasks. But the affect on classification is more severe for angles close to 90 degrees
I implemeted a 3 level PointNet++ with susampling at each time step 512,128,1 centroids from the full point cloud and 64 neighbhours. The farthest point sampling is based on nearest neighbhours in the feature space.
The code can be run by 'python train.py --task cls --arch plus'
The classification accuracy is 96.96% with 100 epochs of training. This is only marginally better than PointNet results.
Possible reasons can be training on 5k points and the choice of radius and subsampling strategy. I tried a few choices and selected the best performing model.
Few visualizations of point clouds and its prediction are shown below similar to Q1.
![]() |
![]() |
![]() |
Ground Truth: Chair | Ground Truth: Chair | Ground Truth: Lamp |
Prediction: Chair | Prediction: Chair | Prediciton: Lamp |
Below figure shows 3 point clouds with wrong predictions and their ground truth classes. There was no wrong prediction for the chiar class.
![]() |
![]() |
Ground Truth: Vase | Ground Truth: Lamp |
Prediction: Lamp | Prediciton: Chair |
For classification with varying degree of rotation around x-axis:
Rotation | 0.2 rad | 0.5 rad | 1.12 rad | 2.0 rad | 3.14 rad |
Accuracy | 96.74 % | 75.34 % | 21.30 % | 38.82 | 51.94 |
The model is slightly more robust to rotation compared to PointNet architecture at lower rotation degrees (<= 0.5 in radians).