What you're asking will have limitations unless you have a bottomless pit of funding. It is relatively easy to develop an algorithm that will pick out faces when the faces in the photo are large in the frame, facing forward, well lit and no part is obscured by clothing etc. The more tolerance you need for other than perfect conditions the more complex the algorithm needs to be, exponentially so and likewise the cost. One promising idea is to use the mathematics of neural networks - we'd set the network up as a Java program and "train" it - you'd have to do the training manually and it would be time-consuming for you. I'd like to do this project for you because it would be a challenge intellectually, and for the amount I've bid I believe you would get something decent, not a semi-solution that failed 4 times in 10.