code style

This commit is contained in:
Sefik Ilkin Serengil 2022-06-22 14:11:35 +01:00
parent 48d1c90589
commit 5d767e2d49
3 changed files with 28 additions and 55 deletions

View File

@ -418,7 +418,7 @@ def analyze(img_path, actions = ('emotion', 'age', 'gender', 'race') , models =
resp_obj["age"] = int(apparent_age) #int cast is for the exception - object of type 'float32' is not JSON serializable resp_obj["age"] = int(apparent_age) #int cast is for the exception - object of type 'float32' is not JSON serializable
elif action == 'gender': elif action == 'gender':
try:
if img_224 is None: if img_224 is None:
img_224, region = functions.preprocess_face(img = img_path, target_size = (224, 224), grayscale = False, enforce_detection = enforce_detection, detector_backend = detector_backend, return_region = True) img_224, region = functions.preprocess_face(img = img_path, target_size = (224, 224), grayscale = False, enforce_detection = enforce_detection, detector_backend = detector_backend, return_region = True)
@ -427,16 +427,12 @@ def analyze(img_path, actions = ('emotion', 'age', 'gender', 'race') , models =
gender_labels = ["Woman", "Man"] gender_labels = ["Woman", "Man"]
resp_obj["gender"] = {} resp_obj["gender"] = {}
for i in range(0, len(gender_labels)): for i, gender_label in enumerate(gender_labels):
gender_label = gender_labels[i]
gender_prediction = 100 * gender_predictions[i] gender_prediction = 100 * gender_predictions[i]
resp_obj["gender"][gender_label] = gender_prediction resp_obj["gender"][gender_label] = gender_prediction
resp_obj["dominant_gender"] = gender_labels[np.argmax(gender_predictions)] resp_obj["dominant_gender"] = gender_labels[np.argmax(gender_predictions)]
except Exception as e:
resp_obj["dominant_gender"] = None
resp_obj["gender"] = None
resp_obj["error"] = e
elif action == 'race': elif action == 'race':
if img_224 is None: if img_224 is None:
img_224, region = functions.preprocess_face(img = img_path, target_size = (224, 224), grayscale = False, enforce_detection = enforce_detection, detector_backend = detector_backend, return_region = True) #just emotion model expects grayscale images img_224, region = functions.preprocess_face(img = img_path, target_size = (224, 224), grayscale = False, enforce_detection = enforce_detection, detector_backend = detector_backend, return_region = True) #just emotion model expects grayscale images

View File

@ -1,35 +0,0 @@
from deepface import DeepFace
dataset = [
'dataset/img1.jpg',
'dataset/img5.jpg',
'dataset/img6.jpg',
'dataset/img7.jpg',
'dataset/img9.jpg',
'dataset/img11.jpg',
'dataset/img11.jpg',
]
def test_gender_prediction():
detectors = ['opencv', 'ssd', 'retinaface', 'mtcnn'] # dlib not tested
for detector in detectors:
test_gender_prediction_with_detector(detector)
def test_gender_prediction_with_detector(detector):
results = DeepFace.analyze(dataset, actions=('gender',), detector_backend=detector, prog_bar=False,
enforce_detection=False)
for result in results:
assert 'gender' in result.keys()
assert 'dominant_gender' in result.keys() and result["dominant_gender"] in ["Man", "Woman"]
if result["dominant_gender"] == "Man":
assert result["gender"]["Man"] > result["gender"]["Woman"]
else:
assert result["gender"]["Man"] < result["gender"]["Woman"]
print(f'detector {detector} passed')
return True
if __name__ == "__main__":
test_gender_prediction()

View File

@ -3,7 +3,6 @@ import os
import tensorflow as tf import tensorflow as tf
import cv2 import cv2
from deepface import DeepFace from deepface import DeepFace
from tests.test_nonbinary_gender import test_gender_prediction, test_gender_prediction_with_detector
print("-----------------------------------------") print("-----------------------------------------")
@ -207,14 +206,27 @@ def test_cases():
print("--------------------------") print("--------------------------")
print("non-binary gender tests")
def run_gender_prediction_test(): #interface validation - no need to call evaluate here
for img1_path, img2_path, verified in dataset:
for detector in detectors: for detector in detectors:
evaluate(test_gender_prediction_with_detector(detector)) result = DeepFace.analyze(img1_path, actions=('gender',), detector_backend=detector, enforce_detection=False)
print(result)
assert 'gender' in result.keys()
assert 'dominant_gender' in result.keys() and result["dominant_gender"] in ["Man", "Woman"]
if result["dominant_gender"] == "Man":
assert result["gender"]["Man"] > result["gender"]["Woman"]
else:
assert result["gender"]["Man"] < result["gender"]["Woman"]
# ---------------------------------------------
test_cases() test_cases()
run_gender_prediction_test()
print("num of test cases run: " + str(num_cases)) print("num of test cases run: " + str(num_cases))
print("succeeded test cases: " + str(succeed_cases)) print("succeeded test cases: " + str(succeed_cases))