From 057f06c09c2385b1e5ee752cb0616926b1581678 Mon Sep 17 00:00:00 2001 From: Sefik Ilkin Serengil Date: Thu, 24 Jun 2021 15:59:59 +0300 Subject: [PATCH] detectFace bug + robust eye detector --- deepface/DeepFace.py | 4 +--- deepface/detectors/OpenCvWrapper.py | 8 +++++--- tests/unit_tests.py | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/deepface/DeepFace.py b/deepface/DeepFace.py index ae03407..fc4c988 100644 --- a/deepface/DeepFace.py +++ b/deepface/DeepFace.py @@ -794,9 +794,7 @@ def detectFace(img_path, detector_backend = 'opencv', enforce_detection = True): Returns: deteced and aligned face in numpy format """ - - functions.initialize_detector(detector_backend = detector_backend) - + img = functions.preprocess_face(img = img_path, detector_backend = detector_backend , enforce_detection = enforce_detection)[0] #preprocess_face returns (1, 224, 224, 3) return img[:, :, ::-1] #bgr to rgb diff --git a/deepface/detectors/OpenCvWrapper.py b/deepface/detectors/OpenCvWrapper.py index 389f6b1..7e4aeef 100644 --- a/deepface/detectors/OpenCvWrapper.py +++ b/deepface/detectors/OpenCvWrapper.py @@ -42,7 +42,8 @@ def detect_face(detector, img, align = True): faces = [] try: - faces = detector["face_detector"].detectMultiScale(img, 1.3, 5) + #faces = detector["face_detector"].detectMultiScale(img, 1.3, 5) + faces = detector["face_detector"].detectMultiScale(img, 1.1, 10) except: pass @@ -60,7 +61,8 @@ def align_face(eye_detector, img): detected_face_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #eye detector expects gray scale image - eyes = eye_detector.detectMultiScale(detected_face_gray, 1.3, 5) + #eyes = eye_detector.detectMultiScale(detected_face_gray, 1.3, 5) + eyes = eye_detector.detectMultiScale(detected_face_gray, 1.1, 10) if len(eyes) >= 2: @@ -76,7 +78,7 @@ def align_face(eye_detector, img): df = pd.DataFrame(items, columns = ["length", "idx"]).sort_values(by=['length'], ascending=False) eyes = eyes[df.idx.values[0:2]] #eyes variable stores the largest 2 eye - + #eyes = eyes[0:2] #----------------------- diff --git a/tests/unit_tests.py b/tests/unit_tests.py index 85262f4..e3e9b5b 100644 --- a/tests/unit_tests.py +++ b/tests/unit_tests.py @@ -24,16 +24,17 @@ print("Running unit tests for TF ", tf.__version__) from deepface.basemodels import VGGFace, OpenFace, Facenet, FbDeepFace from deepface.extendedmodels import Age, Gender, Race, Emotion +print("-----------------------------------------") #----------------------------------------- -if False: - print("Detector tests") - import matplotlib.pyplot as plt - detectors = ['opencv', 'ssd', 'dlib', 'mtcnn', 'retinaface'] - for detector in detectors: - img = DeepFace.detectFace("dataset/img11.jpg", detector_backend = detector) - plt.imshow(img) - plt.show() +print("DeepFace.detectFace test") +detectors = ['opencv', 'ssd', 'dlib', 'mtcnn', 'retinaface'] +for detector in detectors: + img = DeepFace.detectFace("dataset/img11.jpg", detector_backend = detector) + print(detector," test is done") +#import matplotlib.pyplot as plt +#plt.imshow(img) +#plt.show() #----------------------------------------- print("-----------------------------------------") @@ -168,7 +169,7 @@ dataset = [ ['dataset/img1.jpg', 'dataset/img2.jpg', True], ['dataset/img5.jpg', 'dataset/img6.jpg', True], ['dataset/img6.jpg', 'dataset/img7.jpg', True], - #['dataset/img8.jpg', 'dataset/img9.jpg', True], + ['dataset/img8.jpg', 'dataset/img9.jpg', True], ['dataset/img1.jpg', 'dataset/img11.jpg', True], ['dataset/img2.jpg', 'dataset/img11.jpg', True],