Part 1: Nose Tip Detection

Sample Images and the Nose Keypoints

Graph of training loss and valid loss

Predicting Nose Points

Failures

I think these fail because they're not looking straight into the camera, and there's not enough data for the model to learn that faces can rotate

Success

Part 2: Full Facial Keypoints Detection


My CNN model has 6 convolutions and 3 linear layers. After each convolution I apply the max pool 2d of the ReLu output. I also apply the ReLu to the first two linear layers.

plot of train and valid loss

Predictions

Failures

white is actual, red is predicted

I think these aren't as good because the face is looking in different direction and the mouth is open in the first one.

Success

Filters

Chose the Wide Resnet 101-2 model as it had the lowest Top-5 Error on the pytorch website. A wide resnet reduces the training time but with the expense of increasing the number of parameters due to the widening of the network. Chose a batch size of 4 to increase accuracy but also not have a long training time. I tried learning rate of 0.001, but I think it got stuck in a local minimum.

Plot for valid and training loss