Finding Faces in a Group Photo

 

min_scale = .95, max_scale = 1.05, and scale_step = 0.03

min_scale = .95, max_scale = 1.05, and scale_step = 0.03

same program but with a larger max_scale and a smaller scale_step

min_scale = 1.2, max_scale = 1.6, and scale_step = 0.05

min_scale = 0.4, max_scale = 0.8, and scale_step = 0.05

 

min_scale = 0.5, max_scale = 1.0, and scale_step = 0.05

 

Here are good examples of non-face items in image that are picked up as faces.  The program fails on objects that have high variance in the y direction.  This is because I find the error for a face by multiplying the MSE and the distance the face is from the face mean and then dividing by the variance of the face squared after I apply the Soblel Operator in the Y direction.  I then divide that answer by variance of the face to the power of .55 after I apply the Sobel Operator in the X direction, this is roughly dividing by the square root.  What this does is way the error to be smaller when there is more variance horizontally and large when there is variance vertically.  Therefore, there will be problems with objects that have high horizontal variance.  We can see this in the blinds and on the finger on the second image.

One way to fix this problem is to remove thin lines from the picture with an erosion operator.

Other errors show up when folds in the clothing have shadows that look like faces.       

 

min_scale = 0.5, max_scale = 1.0, and scale_step = 0.05

 

 

min_scale = 0.6, max_scale = 1.0, and scale_step = 0.05