detectFace bug + robust eye detector

This commit is contained in:
Sefik Ilkin Serengil 2021-06-24 15:59:59 +03:00
parent cca16c56d3
commit 057f06c09c
3 changed files with 16 additions and 15 deletions

View File

@ -794,9 +794,7 @@ def detectFace(img_path, detector_backend = 'opencv', enforce_detection = True):
Returns: Returns:
deteced and aligned face in numpy format 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 img = functions.preprocess_face(img = img_path, detector_backend = detector_backend
, enforce_detection = enforce_detection)[0] #preprocess_face returns (1, 224, 224, 3) , enforce_detection = enforce_detection)[0] #preprocess_face returns (1, 224, 224, 3)
return img[:, :, ::-1] #bgr to rgb return img[:, :, ::-1] #bgr to rgb

View File

@ -42,7 +42,8 @@ def detect_face(detector, img, align = True):
faces = [] faces = []
try: 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: except:
pass 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 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: 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) 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[df.idx.values[0:2]] #eyes variable stores the largest 2 eye
#eyes = eyes[0:2] #eyes = eyes[0:2]
#----------------------- #-----------------------

View File

@ -24,16 +24,17 @@ print("Running unit tests for TF ", tf.__version__)
from deepface.basemodels import VGGFace, OpenFace, Facenet, FbDeepFace from deepface.basemodels import VGGFace, OpenFace, Facenet, FbDeepFace
from deepface.extendedmodels import Age, Gender, Race, Emotion from deepface.extendedmodels import Age, Gender, Race, Emotion
print("-----------------------------------------")
#----------------------------------------- #-----------------------------------------
if False: print("DeepFace.detectFace test")
print("Detector tests") detectors = ['opencv', 'ssd', 'dlib', 'mtcnn', 'retinaface']
import matplotlib.pyplot as plt for detector in detectors:
detectors = ['opencv', 'ssd', 'dlib', 'mtcnn', 'retinaface'] img = DeepFace.detectFace("dataset/img11.jpg", detector_backend = detector)
for detector in detectors: print(detector," test is done")
img = DeepFace.detectFace("dataset/img11.jpg", detector_backend = detector) #import matplotlib.pyplot as plt
plt.imshow(img) #plt.imshow(img)
plt.show() #plt.show()
#----------------------------------------- #-----------------------------------------
print("-----------------------------------------") print("-----------------------------------------")
@ -168,7 +169,7 @@ dataset = [
['dataset/img1.jpg', 'dataset/img2.jpg', True], ['dataset/img1.jpg', 'dataset/img2.jpg', True],
['dataset/img5.jpg', 'dataset/img6.jpg', True], ['dataset/img5.jpg', 'dataset/img6.jpg', True],
['dataset/img6.jpg', 'dataset/img7.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/img1.jpg', 'dataset/img11.jpg', True],
['dataset/img2.jpg', 'dataset/img11.jpg', True], ['dataset/img2.jpg', 'dataset/img11.jpg', True],