Spaces:
Build error
Build error
onipot
commited on
Commit
•
b2de2a8
1
Parent(s):
cf58338
detect cleanup
Browse files- .gitignore +2 -1
- app.py +4 -3
- yolov5/detect.py +6 -36
.gitignore
CHANGED
@@ -1,2 +1,3 @@
|
|
1 |
__pycache__/
|
2 |
-
*.sh
|
|
|
|
1 |
__pycache__/
|
2 |
+
*.sh
|
3 |
+
*.pt
|
app.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
import gradio as gr
|
2 |
from PIL import Image,ImageDraw, ImageFont
|
3 |
import sys
|
4 |
-
import os
|
5 |
import torch
|
6 |
from util import Detection
|
|
|
7 |
|
8 |
face_model = os.environ.get('FACE_MODEL')
|
9 |
age_model = os.environ.get('AGE_MODEL')
|
@@ -24,7 +24,7 @@ roboto_font = ImageFont.truetype("Roboto-Regular.ttf")
|
|
24 |
|
25 |
def run_yolo(img):
|
26 |
|
27 |
-
img_path = img.name
|
28 |
img0 = Image.open(img_path).convert("RGB")
|
29 |
draw = ImageDraw.Draw(img0)
|
30 |
|
@@ -56,7 +56,8 @@ def run_yolo(img):
|
|
56 |
|
57 |
return img0
|
58 |
|
59 |
-
|
|
|
60 |
outputs = gr.outputs.Image(type="pil", label="Output Image")
|
61 |
|
62 |
title = "AgeGuesser"
|
|
|
1 |
import gradio as gr
|
2 |
from PIL import Image,ImageDraw, ImageFont
|
3 |
import sys
|
|
|
4 |
import torch
|
5 |
from util import Detection
|
6 |
+
import os
|
7 |
|
8 |
face_model = os.environ.get('FACE_MODEL')
|
9 |
age_model = os.environ.get('AGE_MODEL')
|
|
|
24 |
|
25 |
def run_yolo(img):
|
26 |
|
27 |
+
img_path = img.name
|
28 |
img0 = Image.open(img_path).convert("RGB")
|
29 |
draw = ImageDraw.Draw(img0)
|
30 |
|
|
|
56 |
|
57 |
return img0
|
58 |
|
59 |
+
|
60 |
+
inputs = gr.inputs.Image(type='filepath', label="Input Image")
|
61 |
outputs = gr.outputs.Image(type="pil", label="Output Image")
|
62 |
|
63 |
title = "AgeGuesser"
|
yolov5/detect.py
CHANGED
@@ -251,7 +251,7 @@ def predict(
|
|
251 |
augment=False, # augmented inference
|
252 |
visualize=False, # visualize features
|
253 |
update=False, # update all models
|
254 |
-
project=
|
255 |
name='exp', # save results to project/name
|
256 |
exist_ok=False, # existing project/name ok, do not increment
|
257 |
line_thickness=3, # bounding box thickness (pixels)
|
@@ -267,20 +267,9 @@ def predict(
|
|
267 |
|
268 |
save_dir = None
|
269 |
save_path = None
|
270 |
-
# save_img = not nosave and not source.endswith('.txt') # save inference images
|
271 |
-
is_file = Path(source).suffix[1:] in (IMG_FORMATS + VID_FORMATS)
|
272 |
-
is_url = source.lower().startswith(('rtsp://', 'rtmp://', 'http://', 'https://'))
|
273 |
-
webcam = source.isnumeric() or source.endswith('.txt') or (is_url and not is_file)
|
274 |
-
|
275 |
-
# Directories
|
276 |
-
if project is not None:
|
277 |
-
save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run
|
278 |
-
(save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir
|
279 |
|
280 |
dataset = LoadImages(source, img_size=imgsz, stride=stride, auto=pt)
|
281 |
-
|
282 |
-
#vid_path, vid_writer = [None] * bs, [None] * bs
|
283 |
-
|
284 |
# Run inference
|
285 |
|
286 |
dt, seen = [0.0, 0.0, 0.0], 0
|
@@ -299,7 +288,7 @@ def predict(
|
|
299 |
dt[0] += t2 - t1
|
300 |
|
301 |
# Inference
|
302 |
-
visualize =
|
303 |
pred = model(im, augment=augment, visualize=visualize)
|
304 |
t3 = time_sync()
|
305 |
dt[1] += t3 - t2
|
@@ -308,34 +297,16 @@ def predict(
|
|
308 |
pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)
|
309 |
dt[2] += time_sync() - t3
|
310 |
|
311 |
-
# Second-stage classifier (optional)
|
312 |
-
# pred = utils.general.apply_classifier(pred, classifier_model, im, im0s)
|
313 |
-
|
314 |
# Process predictions
|
315 |
preds = []
|
316 |
for i, det in enumerate(pred): # per image
|
317 |
-
seen += 1
|
318 |
-
if webcam: # batch_size >= 1
|
319 |
-
p, im0, frame = path[i], im0s[i].copy(), dataset.count
|
320 |
-
s += f'{i}: '
|
321 |
-
else:
|
322 |
-
p, im0, frame = path, im0s.copy(), getattr(dataset, 'frame', 0)
|
323 |
-
|
324 |
-
p = Path(p) # to Path
|
325 |
|
326 |
-
|
327 |
-
|
328 |
-
#imc = im0.copy() if save_crop else im0 # for save_crop
|
329 |
-
#annotator = Annotator(im0, line_width=line_thickness, example=str(names))
|
330 |
if len(det):
|
331 |
# Rescale boxes from img_size to im0 size
|
332 |
det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0.shape).round()
|
333 |
|
334 |
-
# Print results
|
335 |
-
""" for c in det[:, -1].unique():
|
336 |
-
n = (det[:, -1] == c).sum() # detections per class
|
337 |
-
s += f"{n} {names[int(c)]}{'s' * (n > 1)}, " # add to string """
|
338 |
-
|
339 |
for *xyxy, conf, cls in reversed(det):
|
340 |
face = im0[int(xyxy[1]):int(xyxy[3]),int(xyxy[0]):int(xyxy[2])]
|
341 |
face_img = cv2.cvtColor(face, cv2.COLOR_BGR2RGB)
|
@@ -344,8 +315,7 @@ def predict(
|
|
344 |
y = age_model(im)
|
345 |
|
346 |
age = y[0]
|
347 |
-
|
348 |
-
# xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh
|
349 |
preds.append({"class": str(int(age)), "xmin": int(xyxy[0]), "ymin": int(xyxy[1]), "xmax": int(xyxy[2]),"ymax": int(xyxy[3]), "conf": float(conf)})
|
350 |
|
351 |
yield preds, save_path
|
|
|
251 |
augment=False, # augmented inference
|
252 |
visualize=False, # visualize features
|
253 |
update=False, # update all models
|
254 |
+
project=None, # save results to project/name
|
255 |
name='exp', # save results to project/name
|
256 |
exist_ok=False, # existing project/name ok, do not increment
|
257 |
line_thickness=3, # bounding box thickness (pixels)
|
|
|
267 |
|
268 |
save_dir = None
|
269 |
save_path = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
270 |
|
271 |
dataset = LoadImages(source, img_size=imgsz, stride=stride, auto=pt)
|
272 |
+
|
|
|
|
|
273 |
# Run inference
|
274 |
|
275 |
dt, seen = [0.0, 0.0, 0.0], 0
|
|
|
288 |
dt[0] += t2 - t1
|
289 |
|
290 |
# Inference
|
291 |
+
visualize = False
|
292 |
pred = model(im, augment=augment, visualize=visualize)
|
293 |
t3 = time_sync()
|
294 |
dt[1] += t3 - t2
|
|
|
297 |
pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)
|
298 |
dt[2] += time_sync() - t3
|
299 |
|
|
|
|
|
|
|
300 |
# Process predictions
|
301 |
preds = []
|
302 |
for i, det in enumerate(pred): # per image
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
|
304 |
+
p, im0, frame = path, im0s.copy(), getattr(dataset, 'frame', 0)
|
305 |
+
|
|
|
|
|
306 |
if len(det):
|
307 |
# Rescale boxes from img_size to im0 size
|
308 |
det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0.shape).round()
|
309 |
|
|
|
|
|
|
|
|
|
|
|
310 |
for *xyxy, conf, cls in reversed(det):
|
311 |
face = im0[int(xyxy[1]):int(xyxy[3]),int(xyxy[0]):int(xyxy[2])]
|
312 |
face_img = cv2.cvtColor(face, cv2.COLOR_BGR2RGB)
|
|
|
315 |
y = age_model(im)
|
316 |
|
317 |
age = y[0]
|
318 |
+
|
|
|
319 |
preds.append({"class": str(int(age)), "xmin": int(xyxy[0]), "ymin": int(xyxy[1]), "xmax": int(xyxy[2]),"ymax": int(xyxy[3]), "conf": float(conf)})
|
320 |
|
321 |
yield preds, save_path
|