I have been working on a Face Recognition system to log attendance using OpenCV version 3.3.1 in Java.
I'm using haarcascade_frontalface_alt
to detect faces. But I have seen a lot of false positives.
To avoid this, I followed the below technique.
- I will first run
haarcascade_frontalface_alt
to detect a face region. - Then I will run
haarcascade_eye_tree_eyeglasses
to check if the face region has eyes. - If yes, I will split the image into 2 halves, vertically and I will use
haarcascade_eye
to detect eyes in each half to avoid any false positives.
This technique is not working in all cases and I have encountered a few cases where haarcascade_eye_tree_eyeglasses
is returning more than 2 eyes & haarcascade_eye
is returning more than 1 eye in each half.
Also, in order to eliminate noise(ears, hair and neck areas, etc) from the image, I'm cropping the image by a ROI specified as left eye position to right eye position. I also applied histogram equalization on the final image.
The only things I need to get rid of are false positives and multiple eye detections.
Please help me in this regard and also let me know if there is any better approach.
Here is the sample image with multiple eye detection.