Spaces:
Runtime error
Runtime error
import gradio as gr | |
import keras | |
import cv2 | |
from tensorflow.keras.preprocessing.image import img_to_array | |
from tensorflow.keras.preprocessing.image import load_img | |
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input | |
import numpy as np | |
from PIL import Image | |
def modelpred(img): | |
#Loading the saved model | |
frame=cv2.imread(img) | |
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) | |
faces = faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(60, 60),flags=cv2.CASCADE_SCALE_IMAGE) | |
faces_list=[] | |
preds=[] | |
locs=[] | |
label_list=[] | |
for (x, y, w, h) in faces: | |
face_frame = frame[y:y+h,x:x+w] | |
face_frame = cv2.cvtColor(face_frame, cv2.COLOR_BGR2RGB) | |
face_frame = cv2.resize(face_frame, (224, 224)) | |
face_frame = img_to_array(face_frame) | |
face_frame = np.expand_dims(face_frame, axis=0) | |
face_frame = preprocess_input(face_frame) | |
(startX, startY, endX, endY) = (x,y,x+w,y+h) | |
box=(startX, startY, endX, endY) | |
locs.append(box) | |
p=model.predict(face_frame) | |
preds.append(p) | |
for (box,pred) in zip(locs,preds): | |
(startX, startY, endX, endY) = box | |
(withoutMask,mask,notproper) = pred[0] | |
# print(pred) | |
# determine the class label and color we'll use to draw | |
# the bounding box and text | |
if (mask > withoutMask and mask>notproper): | |
label = "Great you have worn the mask correctly" | |
elif ( withoutMask > notproper): | |
label = "Please wear a mask" | |
else: | |
label = "Please wear the mask properly" | |
if label == "Great you have worn the mask correctly": | |
color = (0, 255, 0) | |
elif label=="Please wear a mask": | |
color = (0, 0, 255) | |
else: | |
color = (255, 140, 0) | |
# include the probability in the label | |
label = "{}: {:.2f}%".format(label,max(mask, withoutMask, notproper) * 100) | |
label_list.append(label) | |
# display the label and bounding box rectangle on the output | |
# frame | |
cv2.putText(frame, label, (startX, startY - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.45, color, 2) | |
cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2) | |
# Display the resulting frame | |
# You may need to convert the color. | |
img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) | |
im_pil = Image.fromarray(img) | |
return (im_pil,label_list) | |
imgpath=gr.inputs.Image(type="filepath") | |
# webcam=gr.inputs.Image(source="webcam",type="filepath",optional=True) | |
iface = gr.Interface(fn=modelpred, inputs=imgpath, outputs=[gr.outputs.Image(type="pil"),"text"],title="Face Mask Detection using Deep Neural Networks",description="""Implementation of an efficient neural network to detect and differentiate between people with high accuracy into 3 classes - those who have correctly worn face masks, those who have worn masks incorrectly and those who have not worn them. Implemented and fine tuned a MobileNetV2 network for this task and achieved an accuracy of 92.39%.""",allow_flagging="never",live=False,examples=[["images-3.jpeg"],["power-family-with-father-mother-daughter-wearing-medical-face-mask-protect-2019-ncov-covid-19-corona-virus-stay-home-concept_73622-1419.jpg"],["3000-2.jpg"]]) | |
model = keras.models.load_model('model') | |
faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_alt2.xml') | |
iface.launch(debug=True) |