one.png

Q1. Classification Model

Test Accuracy: 97.17 @ Epoch 52

Confusion Matrix on Test Set

Confusion_matrix_cls.png

Discussion: Chairs clearly have the best performance with no incorrect classifications. It also seems that the number of examples for chairs are much higher than the other two categories

Testing data Examples

True/Predicted Chairs Vases Lamps
Chairs part_3_geometry.gif NA NA
Vases part_3_geometry.gif part_3_geometry.gif part_3.gif
Lamps part_3_geometry.gif part_3_geometry.gif part_3.gif

Discussion: The above grid is structured similar to a confusion matris to show a representative example of correct/incorrect predictions.

Confusion Matrix on Training Set

Confusion_matrix_cls.png

Discussion: We see that the amount of training data for chairs far exceeds the other two classes, which explains why on the test set the performance of Chairs is better than Lamps which in turn is better than Vases.

Training data Examples

True/Predicted Chairs Vases Lamps
Chairs part_3_geometry.gif part_3_geometry.gif part_3.gif
Vases NA part_3_geometry.gif part_3.gif
Lamps part_3_geometry.gif part_3_geometry.gif part_3.gif

Discussion: I've included a few more examples from the training set because all mistake cases were not covered on the test set. We can identify reasons for the mistakes in chair classification here as the sofa classified as a vase does look cuboidal like the vase/flower pot in the centre. Additionally, the stool misclassified as a lamp is different thatn even a human's understanding of a chair and could be interpreted as a base + rod + lamp shade.

Q2. Segmentation Model

Test Accuracy: 90.72 @ Epoch 214

Ground Truth Predicted Accuracy
part_3_geometry.gif part_3_geometry.gif Accuracy: 0.5961
part_3_geometry.gif part_3_geometry.gif Accuracy: 0.4566
part_3.gif part_3_geometry.gif Accuracy: 0.4737
part_3_geometry.gif part_3_geometry.gif Accuracy: 0.9974
part_3_geometry.gif part_3_geometry.gif Accuracy: 0.9959
part_3_geometry.gif part_3_geometry.gif Accuracy: 0.995

Discussion: The examples that the model was really good at are more standard looking chairs with four legs, a seat and a back. As we can see above the ones the model performed more poorly on are rather unique looking chairs, like a single seater sofa, a recliner with an extension or a curved chair/sofa. It is also not obvious to me, as a human, that the ground truth segmentation is undebatably the correct segmentations and the model predictions are not unreasonable.

Q3. Robustness Analysis

Varying num_points

Procedure: I have varied the number of points from 3 to 3000 (for better graphs as the performance doesn't vary beyond a certain point). The code to run this is in the jupyter notebook called index.ipynb and resides in the function experiment_1.

Segmentation

Num Points 3 10 25 50 100 250 1000
Ground truth part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
Predicted part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
Test Accuracy 0.6505 0.6834 0.7186 0.7665 0.8071 0.8551 0.9004

Discussion:

Classification

Num Points 3 10 25 50 100 250 1000
Point Cloud part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
Test Accuracy 0.2455 0.3494 0.6684 0.8625 0.9203 0.9538 0.9717

Discussion:

Varying rotations

Procedure: I have varied the rotations about y axis (azim) and and wrt to the xz plane (elev) independently from 0 to 360. The code to run this is in the jupyter notebook called index.ipynb and resides in the function experiment_2. For the sake of speed, num_points was set to 1000 as we saw in the previous analysis that the performance doesn't improve much beyond it.

Segmentation

Discussion: The 3D plot shows a great variation in the space but it is difficult to identify strong trends, hence I made the following heatmap with Elevation Angle varying along a column and Azimuthal Angle varying along a row.

Screenshot%20from%202022-04-16%2021-48-56.png

Elev\Azim 0 45 90 135 180 225 270 315 360
0 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
45 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
90 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
135 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
180 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
225 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
270 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
315 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
360 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif

Classification

Discussion: Similar to the segmentation task the scatter plot isn't the most revealing plot but it does show large variations.

Screenshot%20from%202022-04-16%2021-48-34.png

(120, 60) (120, 300)
part_3_geometry.gif part_3_geometry.gif
Elev\Azim 0 45 90 135 180 225 270 315 360
0 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
45 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
90 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
135 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
180 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
225 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
270 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
315 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif
360 part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif part_3_geometry.gif

Note: While all visualisation above are rotating objects only a single view of this object corresponding to the appropriate angles were fed into the model.