Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -48,9 +48,49 @@ def load_model2():
|
|
| 48 |
threshold = 0.50
|
| 49 |
|
| 50 |
def predict(pilimg,video_in_filepath,threshold):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
-
image_np = pil_image_as_numpy_array(pilimg)
|
| 53 |
-
return predict2(image_np,threshold),None
|
| 54 |
|
| 55 |
def predict2(image_np,threshold):
|
| 56 |
|
|
@@ -130,20 +170,20 @@ detection_model = load_model()
|
|
| 130 |
# predicted_img = predict(image_arr)
|
| 131 |
# predicted_img.save('predicted.jpg')
|
| 132 |
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
# title="Facemask & Glasses",
|
| 137 |
-
# description="Model: ssd_mobilenet_v2_320x320",
|
| 138 |
-
# theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"),
|
| 139 |
-
# examples=[["test_samples/image489.png","",0.55], ["test_samples/image825.png","",0.55], ["test_samples/image833.png","",0.55], ["test_samples/image846.png","",0.55]]
|
| 140 |
-
# ).launch(share=True)
|
| 141 |
-
|
| 142 |
-
gr.Interface(fn=video_fn,
|
| 143 |
-
inputs=gr.Video(label="Input Video"),
|
| 144 |
-
outputs=gr.Video(label="Output Video"),
|
| 145 |
title="Facemask & Glasses",
|
| 146 |
description="Model: ssd_mobilenet_v2_320x320",
|
| 147 |
theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"),
|
| 148 |
-
|
| 149 |
-
).launch(share=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
threshold = 0.50
|
| 49 |
|
| 50 |
def predict(pilimg,video_in_filepath,threshold):
|
| 51 |
+
if pilimg != "":
|
| 52 |
+
image_np = pil_image_as_numpy_array(pilimg)
|
| 53 |
+
return predict2(image_np,threshold),None
|
| 54 |
+
else:
|
| 55 |
+
video_reader = cv2.VideoCapture(video_in_filepath)
|
| 56 |
+
|
| 57 |
+
nb_frames = int(video_reader.get(cv2.CAP_PROP_FRAME_COUNT))
|
| 58 |
+
frame_h = int(video_reader.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
| 59 |
+
frame_w = int(video_reader.get(cv2.CAP_PROP_FRAME_WIDTH))
|
| 60 |
+
fps = video_reader.get(cv2.CAP_PROP_FPS)
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
video_out_filepath = 'detected.mp4'
|
| 64 |
+
video_writer = cv2.VideoWriter(video_out_filepath,
|
| 65 |
+
cv2.VideoWriter_fourcc(*'mp4v'),
|
| 66 |
+
fps,
|
| 67 |
+
(frame_w, frame_h))
|
| 68 |
+
|
| 69 |
+
for i in tqdm(range(nb_frames)):
|
| 70 |
+
ret, image_np = video_reader.read()
|
| 71 |
+
input_tensor = tf.convert_to_tensor(np.expand_dims(image_np, 0), dtype=tf.uint8)
|
| 72 |
+
results = detection_model(input_tensor)
|
| 73 |
+
viz_utils.visualize_boxes_and_labels_on_image_array(
|
| 74 |
+
image_np,
|
| 75 |
+
results['detection_boxes'][0].numpy(),
|
| 76 |
+
(results['detection_classes'][0].numpy()+ label_id_offset).astype(int),
|
| 77 |
+
results['detection_scores'][0].numpy(),
|
| 78 |
+
category_index,
|
| 79 |
+
use_normalized_coordinates=True,
|
| 80 |
+
max_boxes_to_draw=200,
|
| 81 |
+
min_score_thresh=.50,
|
| 82 |
+
agnostic_mode=False,
|
| 83 |
+
line_thickness=2)
|
| 84 |
+
|
| 85 |
+
video_writer.write(np.uint8(image_np))
|
| 86 |
+
|
| 87 |
+
# Release camera and close windows
|
| 88 |
+
video_reader.release()
|
| 89 |
+
video_writer.release()
|
| 90 |
+
cv2.destroyAllWindows()
|
| 91 |
+
cv2.waitKey(1)
|
| 92 |
+
return None,video_out_filepath
|
| 93 |
|
|
|
|
|
|
|
| 94 |
|
| 95 |
def predict2(image_np,threshold):
|
| 96 |
|
|
|
|
| 170 |
# predicted_img = predict(image_arr)
|
| 171 |
# predicted_img.save('predicted.jpg')
|
| 172 |
|
| 173 |
+
gr.Interface(fn=predict,
|
| 174 |
+
inputs=[gr.Image(type="pil",label="Input Image"),gr.Video(label="Input Video"),gr.Textbox(placeholder="0.50",label="Set the confidence threshold (0.00-1.00)")],
|
| 175 |
+
outputs=[gr.Image(type="pil",label="Output Image"),gr.Video(label="Output Video")],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
title="Facemask & Glasses",
|
| 177 |
description="Model: ssd_mobilenet_v2_320x320",
|
| 178 |
theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"),
|
| 179 |
+
examples=[["test_samples/image489.png","",0.55], ["test_samples/image825.png","",0.55], ["test_samples/image833.png","",0.55], ["test_samples/image846.png","",0.55]]
|
| 180 |
+
).launch(share=True)
|
| 181 |
+
|
| 182 |
+
# gr.Interface(fn=video_fn,
|
| 183 |
+
# inputs=gr.Video(label="Input Video"),
|
| 184 |
+
# outputs=gr.Video(label="Output Video"),
|
| 185 |
+
# title="Facemask & Glasses",
|
| 186 |
+
# description="Model: ssd_mobilenet_v2_320x320",
|
| 187 |
+
# theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"),
|
| 188 |
+
# #examples="test_samples/test_video.mp4"
|
| 189 |
+
# ).launch(share=True)
|