Deep Age Distribution Learning for Apparent Age Estimation

ChaLearn Looking at People Workshop, CVPR, 2016

2nd of Apparent Age Estimation


Apparent age estimation has attracted more and more researchers since its potential applications in the real word. Apparent age estimation differs from chronological age estimation in that each facial image is labelled by multiple individuals, the mean age is the ground truth age and the uncertainty is introduced by the standard deviation. In this paper, Deep Age Distribution Learning (DADL) is proposed to solve this problem. According to the given mean age and standard deviation, we generate Gaussian age distribution for each facial image as the training target instead of the single age. Our DADL method first detects the facial region in image and aligns the facial image, then uses the deep Convolutional Neural Network(CNN) based on the VGGFace and fine-tuned on the age dataset to extract the predicted age distribution and finally it uses ensemble method to get the result. Our DADL method had a good performance in ChaLearn Looking at People 2016-Track 1:Age Estimation and ranked the 2nd place.

The framework of Deep Age Label Distribution Learning method

Basic Requirements

- Matlab, version 2014a and higher.

- Matcovnet, version 1.0-beta18 ([2]

- GPU driver, cuda-7.0 if nessesary.

Facial image pre-procession

Before train the deep network, we first preprocess the facial images. The three steps of the facial images pre-procession are shown as follows:

The face region of each image was detected by the face detector described in [3]. Then the detected face was feed into a public available facial point detector software, i.e., [3], to detect five facial key points, including the left/right eye centers, nose tip and left/right mouth corners. Finally, based on these facial points, we employed face alignment for these facial images.

Download codes and the models


Once downloaded, unzip the compressed folder and you will see:

Download code to use the Deep Age Distribution

Copy and Replace the three files 'cnn_train.m', 'cnn_extract.m', 'evaluate.m' to the '<Matconvnet_Root>/examples/';

Copy the file 'vl_klloss.m' to the '<Matconvnet_Root>/matlab/';

Copy the file 'vl_simplenn.m' to the '<Matconvnet_Root>/matlab/simplenn/';


Once downloaded,Readme.txt will help you use our model for prediction.

This file including four trained models, competition pictures, related scripts and etc.

Code for extracting features from models

These scripts are used to extract features from the last full connected layer of corresponding models. Note that you have to use these scripts in '<Matconvnet_Root>/examples/'

Ensemble method

After extracting features from models, you can get the last full connected layers feature from the traning images and the test images. They are named 'whole_data1', 'whole_data2', 'whole_data3' and 'whole_data4'. We provide the data in this folder and you can run Script 'enssemble.m' to get the final results.

[1]R. Rothe, R. Timofte, and L. Gool. Dex: Deep expectation of apparent age from a single image. In Proceedings of the IEEE International Conference on Computer Vision Workshops, pages 10–15, 2015.

[2]A. Vedaldi and K. Lenc. Matconvnet – convolutional neural networks for matlab. 2015

[3] Y. Sun, X. Wang, and X. Tang. Deep convolutional network cascade for facial point detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 3476–3483, 2013