1. A method for multilevel clustering for a face recognition process, implemented by one or more computer systems, comprising: performing a first stage of clustering of an image data set by the one or more computer systems, the image data set comprising a plurality of image vectors representing a plurality of facial images, comprising: choosing k vectors in the image data set as a set of k clusters; and assigning each of the remaining image vectors in the image data set to any of the k clusters using first x vector coefficients; calculating a first distance between a query image vector representing a query image and each of the k clusters using the first x vector coefficients; selecting at least a first cluster and a second cluster from the k clusters for which the first distance is minimum; performing a second stage of clustering with the first cluster and the second cluster by the one or more computer systems, comprising: choosing first m image vectors in the first cluster as a set of first m sub-clusters, and assigning each of the remaining image vectors in the first cluster to any of the m sub-clusters using next y vector coefficients; and choosing first m image vectors in the second cluster as a set of second m sub-clusters and assigning each of the remaining image vectors in the second cluster to any of the second m sub-clusters using the next y vector coefficients; calculating a second distance between the query image vector and the first and second m sub-clusters using the next y vector coefficients; selecting a first sub-cluster in the first m sub-clusters and a second sub-cluster in the second m sub-clusters for which the second distance is minimum; and selecting a given image vector from either the first sub-cluster or the second sub-cluster as matching the query image vector.