VladyslavTalakh
refactor
22bf63b
raw
history blame
1.62 kB
import os
import cv2
import gradio as gr
import numpy as np
import joblib
from facial_image import FacialImage, convert_to_numpy_array
title = "Sytoss System: Beauty Recognition"
description = "A model to classify is face beautiful or not."
target_width = 512
facial = FacialImage()
loaded_svm_classifier = joblib.load('svm_model.pkl')
example_list = [["examples/" + example] for example in os.listdir("examples")]
def process_image(input_image: np.ndarray):
if input_image is not None:
output_image = input_image
input_height, input_width, _ = input_image.shape
if input_width > target_width:
scale_factor = float(target_width / input_width)
output_width = int(input_width * scale_factor)
output_height = int(input_height * scale_factor)
dsize = (output_width, output_height)
output_image = cv2.resize(input_image, dsize)
ratios, output_image = facial.calculate_ratios(output_image)
ratios_vector = convert_to_numpy_array(ratios)
class_probabilities = loaded_svm_classifier.predict_proba([ratios_vector])
predicted_class = np.argmax(class_probabilities)
probability_of_predicted_class = class_probabilities[0, predicted_class]
return output_image, predicted_class, probability_of_predicted_class
return None, None
iface = gr.Interface(
process_image,
inputs=gr.inputs.Image(),
outputs=["image", gr.Number(label="Predicted class"), gr.Number(label="Probability")],
title=title,
description=description,
examples=example_list)
iface.launch()