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
True/Predicted | Chairs | Vases | Lamps |
---|---|---|---|
Chairs | ![]() |
NA | NA |
Vases | ![]() |
![]() |
![]() |
Lamps | ![]() |
![]() |
![]() |
Discussion: The above grid is structured similar to a confusion matris to show a representative example of correct/incorrect predictions.
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.
True/Predicted | Chairs | Vases | Lamps |
---|---|---|---|
Chairs | ![]() |
![]() |
![]() |
Vases | NA | ![]() |
![]() |
Lamps | ![]() |
![]() |
![]() |
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.
Ground Truth | Predicted | Accuracy |
---|---|---|
![]() |
![]() |
Accuracy: 0.5961 |
![]() |
![]() |
Accuracy: 0.4566 |
![]() |
![]() |
Accuracy: 0.4737 |
![]() |
![]() |
Accuracy: 0.9974 |
![]() |
![]() |
Accuracy: 0.9959 |
![]() |
![]() |
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.
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
.
Num Points Test Acc 0 3 0.650459 1 5 0.650891 2 10 0.683468 3 25 0.718574 4 50 0.766548 5 75 0.788028 6 100 0.807066 7 250 0.855144 8 500 0.883702 9 1000 0.900462 10 2000 0.905737 11 3000 0.906641
Num Points | 3 | 10 | 25 | 50 | 100 | 250 | 1000 |
---|---|---|---|---|---|---|---|
Ground truth | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Predicted | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Test Accuracy | 0.6505 | 0.6834 | 0.7186 | 0.7665 | 0.8071 | 0.8551 | 0.9004 |
Discussion:
Num Points Test Acc 0 3 0.246590 1 5 0.267576 2 10 0.365163 3 25 0.670514 4 50 0.866737 5 75 0.906611 6 100 0.927597 7 250 0.946485 8 500 0.966422 9 1000 0.967471 10 2000 0.971668 11 3000 0.966422
Num Points | 3 | 10 | 25 | 50 | 100 | 250 | 1000 |
---|---|---|---|---|---|---|---|
Point Cloud | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Test Accuracy | 0.2455 | 0.3494 | 0.6684 | 0.8625 | 0.9203 | 0.9538 | 0.9717 |
Discussion:
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.
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.
Elev\Azim | 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315 | 360 |
---|---|---|---|---|---|---|---|---|---|
0 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
45 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
90 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
135 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
180 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
225 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
270 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
315 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
360 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Discussion: Similar to the segmentation task the scatter plot isn't the most revealing plot but it does show large variations.
(120, 60) | (120, 300) |
---|---|
![]() |
![]() |
Elev\Azim | 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315 | 360 |
---|---|---|---|---|---|---|---|---|---|
0 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
45 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
90 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
135 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
180 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
225 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
270 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
315 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
360 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.