Initial commit of project

This commit is contained in:
2021-02-16 00:20:14 -05:00
parent f818047117
commit 58de7cce9f
14 changed files with 588 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
import os
import cv2
import numpy as np
from keras.models import load_model
from PIL import Image
import config
gender_classifier = load_model(config.GENDER_MODEL_PATH, compile=False)
# https://github.com/keras-team/keras/issues/6462
gender_classifier._make_predict_function()
gender_target_size = gender_classifier.input_shape[1:3]
gender_offsets = (10, 10)
def detect_genders(faceBoundary, image):
result = ""
face = get_boundary_box(faceBoundary, np.shape(image))
x1, x2, y1, y2 = apply_offsets(face, gender_offsets)
rgb_face = image[y1:y2, x1:x2]
try:
rgb_face = cv2.resize(rgb_face, gender_target_size)
except Exception as e:
print('Error while resizing the image', e)
return result
rgb_face = pre_process_input(rgb_face)
rgb_face = np.expand_dims(rgb_face, 0)
gender_prediction = gender_classifier.predict(rgb_face)
result = {
'woman': float(gender_prediction[0][0]),
'man': float(gender_prediction[0][1])
}
return result
def apply_offsets(face_coordinates, offsets):
x, y, width, height = face_coordinates
x_off, y_off = offsets
return max(x - x_off, 0), x + width + x_off, max(y - y_off, 0), y + height + y_off
def pre_process_input(x, v2=False):
x = x.astype('float32')
x = x / 255.0
if v2:
x = x - 0.5
x = x * 2.0
return x
def load_image(imageFilename):
try:
img = Image.open(imageFilename)
img = img.convert('RGB')
return np.array(img)
except Exception as e:
print("Not a valid image found on {0}: {1}".format(imageFilename, e))
return None
def get_boundary_box(boundary, image_shape):
X = max(boundary[3], 0)
Y = max(boundary[0], 0)
width = min(abs(X - boundary[1]), image_shape[0])
height = min(abs(Y - boundary[2]), image_shape[1])
return [X, Y, width, height]