I am trying to build a neural net to predict gender and age of persons. For this I am using the IMBD+Wiki Dataset (https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/). Thats about 500k images labeled with year of birth, year of foto-taken and gender.
For gender prediction I created a csv file for the wiki dataset (60k images) with labels for male/female and split the data for 80% train and 15% validation and 5% test. Then followed the steps from lesson 1-3 … mainly:
1) Enable data augmentation and precompute = True
2) Use lr_find() to find decent learning rate
3) Train last layer from precomputed activations for 1-2 epochs
4) Train last layer with data augmentation (precompute = False) for 2-3 epochs with cycle_len=1
5) Unfreeze all layers
6) Set an array of learning rates (orders of magnitude per step)
7) Use lr_find() again
8) Train full network with cycle_mult=2 until over-fitting
After completing these steps I get an accuracy of ~ 0.94 (resnext50). Not bad but also room to improve …
For age prediction I tried the same procedure. I created a csv file with labels for “age-class”. For this I am subtracting “year-of-foto-taken” - “year-of-birth”. Then I do some sanity checks (age between 0-100) and I label the foto with 0 for 0-9, 10 for 10-19, 20 for 20-29 etc.
Then I try to train a classifier like for the gender detection. After various experiments all I can get is about ~0,46 % accuracy. Of course it is much harder to predict the age of a person then the gender but 0.46 seems pretty low as I am just trying to predict something like 10-19 or 20-29 and not the exact age.
What would be the next experiments you would try to improve the classifiers? Is it a much better idea to train the age prediction as a “regression problem”?