Recently I read a research paper on age detection using facial images. So right now because of that I was trying to see how far I could get by applying a CNN to a dataset of facial images (with their respective ages) in order to predict their ages which would be in bins (ex. 0-10, 11-20, 21-30...).
For training and testing
training.shape (50000, 28, 28) testing.shape (2938, 28, 28)
I tried to keep the images small as they would be able to run faster as well as using grayscale. And for the actual layers themselves I tried to keep it simple, for now,
model = Sequential() model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(28,28,1))) model.add(Conv2D(32, kernel_size=3, activation='relu')) model.add(Flatten()) model.add(Dense(10, activation='softmax')) Layer (type) Output Shape Param # ================================================================= conv2d_1 (Conv2D) (None, 26, 26, 64) 640 _________________________________________________________________ conv2d_2 (Conv2D) (None, 24, 24, 32) 18464 _________________________________________________________________ flatten_1 (Flatten) (None, 18432) 0 _________________________________________________________________ dense_1 (Dense) (None, 10) 184330 ================================================================= Total params: 203,434 Trainable params: 203,434 Non-trainable params: 0 _________________________________________________________________
Compiled with the following
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
So far the best accuracy after running for 100 epochs has been 37.16. Which isn't great but recently I've gotten access to one of my schools gpu's so I wanted to fix anything that I'm doing wrong and improve my model. Is there anything you could recommend when it comes to improving the model, theres probably a lot this is more my first time trying to do this.