aijack commited on
Commit
15a7e74
·
1 Parent(s): 3a3a949

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +78 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import sahi
3
+ import torch
4
+ from ultralyticsplus import YOLO, render_model_output
5
+
6
+ # Images
7
+ sahi.utils.file.download_from_url(
8
+ "https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/zidane.jpg",
9
+ "zidane.jpg",
10
+ )
11
+
12
+
13
+ model_names = [
14
+ "yolov8m-seg.pt"
15
+ ]
16
+
17
+ current_model_name = "yolov8m-seg.pt"
18
+ model = YOLO(current_model_name)
19
+
20
+
21
+ def yolov8_inference(
22
+ image: gr.inputs.Image = None,
23
+ model_name: gr.inputs.Dropdown = None,
24
+ image_size: gr.inputs.Slider = 640,
25
+ conf_threshold: gr.inputs.Slider = 0.25,
26
+ iou_threshold: gr.inputs.Slider = 0.45,
27
+ ):
28
+
29
+ global model
30
+ global current_model_name
31
+ if model_name != current_model_name:
32
+ model = YOLO(model_name)
33
+ current_model_name = model_name
34
+ model.overrides["conf"] = conf_threshold
35
+ model.overrides["iou"] = iou_threshold
36
+ results = model.predict(image, imgsz=image_size, return_outputs=True)
37
+ renders = []
38
+ for image_results in model.predict(image, imgsz=image_size, return_outputs=True):
39
+ render = render_model_output(
40
+ model=model, image=image, model_output=image_results
41
+ )
42
+ renders.append(render)
43
+
44
+ return renders[0]
45
+
46
+
47
+ inputs = [
48
+ gr.Image(type="filepath", label="Input Image"),
49
+ gr.Dropdown(
50
+ model_names,
51
+ value=current_model_name,
52
+ label="Model type",
53
+ ),
54
+ gr.Slider(minimum=320, maximum=1280, value=640, step=32, label="Image Size"),
55
+ gr.Slider(
56
+ minimum=0.0, maximum=1.0, value=0.25, step=0.05, label="Confidence Threshold"
57
+ ),
58
+ gr.Slider(minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold"),
59
+ ]
60
+
61
+ outputs = gr.Image(type="filepath", label="Output Image")
62
+ title = "Ultralytics YOLOv8 Segmentation Demo"
63
+ article = "<p style='text-align: center'><a href='http://claireye.com.tw'>Claireye</a> | 2023</p>"
64
+ examples = [
65
+ ["zidane.jpg", "yolov8m-seg.pt", 640, 0.6, 0.45]
66
+
67
+ ]
68
+ demo_app = gr.Interface(
69
+ fn=yolov8_inference,
70
+ inputs=inputs,
71
+ outputs=outputs,
72
+ title=title,
73
+ article = article,
74
+ examples=examples,
75
+ cache_examples=True,
76
+ theme="default",
77
+ )
78
+ demo_app.launch(debug=True, enable_queue=True)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ sahi
2
+ torch
3
+ ultralytics==8.0.6
4
+ ultralyticsplus==0.0.9