File size: 4,352 Bytes
a47293c
57d8a9d
a47293c
 
 
8e4ec6f
 
 
 
a47293c
 
 
 
 
 
 
523db07
a47293c
 
 
 
 
 
 
 
 
8e4ec6f
a47293c
 
 
 
8e4ec6f
 
 
 
 
 
 
 
 
a47293c
8e4ec6f
 
 
a47293c
8e4ec6f
f4e1b73
8e4ec6f
 
 
 
 
a47293c
f4e1b73
a47293c
 
f4e1b73
8e4ec6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import gradio as gr
import torch
import yolov5

# Images
torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg', 'zidane.jpg')
torch.hub.download_url_to_file('https://raw.githubusercontent.com/WongKinYiu/yolov7/main/inference/images/image3.jpg', 'image3.jpg')

def yolov5_inference(
    image: gr.inputs.Image = None,
    model_path: gr.inputs.Dropdown = None,
    image_size: gr.inputs.Slider = 640,
    conf_threshold: gr.inputs.Slider = 0.25,
    iou_threshold: gr.inputs.Slider = 0.45,
):
    """
    YOLOv5 inference function
    Args:
        image: Input image
        model_path: Path to the model
        image_size: Image size
        conf_threshold: Confidence threshold
        iou_threshold: IOU threshold
    Returns:
        Rendered image
    """
    model = yolov5.load(model_path, device="cpu")
    model.conf = conf_threshold
    model.iou = iou_threshold
    results = model([image], size=image_size)
    return results.render()[0]
        

inputs = [
    gr.inputs.Image(type="pil", label="Input Image"),
    gr.inputs.Dropdown(["yolov5s.pt", "alshimaa/yolo5_epoch100"], label="Model"),
    gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"),
    gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),
    gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"),
]

outputs = gr.outputs.Image(type="filepath", label="Output Image")
title = "YOLOv5"
description = "YOLOv5 is a family of object detection models pretrained on COCO dataset. This model is a pip implementation of the original YOLOv5 model."

examples = [['zidane.jpg', 'yolov5s.pt', 640, 0.25, 0.45], ['image3.jpg', 'yolov5s.pt', 640, 0.25, 0.45]]
demo_app = gr.Interface(
    fn=yolov5_inference,
    inputs=inputs,
    outputs=outputs,
    title=title,
    examples=examples,
    cache_examples=True,
    live=True,
    theme='huggingface',
)
demo_app.launch(debug=True, enable_queue=True)
# import gradio as gr
# import torch
# import yolov5
# import subprocess
# import tempfile
# import time
# from pathlib import Path
# import uuid
# import cv2
# import gradio as gr



# # Images
# #torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg', 'zidane.jpg')
# #torch.hub.download_url_to_file('https://raw.githubusercontent.com/obss/sahi/main/tests/data/small-vehicles1.jpeg', 'small-vehicles1.jpeg')
    
# def image_fn(
#     image: gr.inputs.Image = None,
#     model_path: gr.inputs.Dropdown = None,
#     image_size: gr.inputs.Slider = 640,
#     conf_threshold: gr.inputs.Slider = 0.25,
#     iou_threshold: gr.inputs.Slider = 0.45,
# ):
#     """
#     YOLOv5 inference function
#     Args:
#         image: Input image
#         model_path: Path to the model
#         image_size: Image size
#         conf_threshold: Confidence threshold
#         iou_threshold: IOU threshold
#     Returns:
#         Rendered image
#     """

#     model = yolov5.load(model_path, device="cpu", hf_model=True, trace=False)
#     model.conf = conf_threshold
#     model.iou = iou_threshold
#     results = model([image], size=image_size)
#     return results.render()[0]
  


# demo_app = gr.Interface(
#     fn=image_fn,
#     inputs=[
#     gr.inputs.Image(type="pil", label="Input Image"),
#     gr.inputs.Dropdown(
#         choices=[
#             "alshimaa/yolo5_epoch100",
#             #"kadirnar/yolov7-v0.1",
#         ],
#         default="alshimaa/yolo5_epoch100",
#         label="Model",
#     )
#     #gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size")
#     #gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),
#     #gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold")
# ],
#     outputs=gr.outputs.Image(type="filepath", label="Output Image"),
#     title="Object Detector: Identify People Without Mask",
#     examples=[['img1.png', 'alshimaa/yolo5_epoch100', 640, 0.25, 0.45], ['img2.png', 'alshimaa/yolo5_epoch100', 640, 0.25, 0.45], ['img3.png', 'alshimaa/yolo5_epoch100', 640, 0.25, 0.45]],
#     cache_examples=True,
#     live=True,
#     theme='huggingface',
# )
# demo_app.launch(debug=True, enable_queue=True)