1. A computer-implemented method for training a pyramid convolutional neural network (CNN) comprising at least N shared layers where N≧2 and at least one unshared network coupled to the Nth shared layer, the method comprising: training CNN levels 1 to N in that order, wherein CNN level n comprises an input for receiving face images, the first n shared layers of the pyramid CNN, the unshared network of the pyramid CNN, and an output producing representations of the face images; wherein the input is coupled to a first of the n shared layers; each shared layer includes convolution, non-linearity and down-sampling; an nth of the n shared layers is coupled to the unshared network; and the unshared network is coupled to the output; wherein training CNN level n comprises: presenting face images to the input, each face image producing a corresponding representation at the output; processing the representations to produce estimates of a metric, for which actual values of the metric are known; and adapting the nth shared layer and the unshared network based on the estimates of the metric compared to the actual values of the metric.