File size: 3,668 Bytes
4e1619d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1a27cdb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4e1619d
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
import gradio as gr
from ultralytics import YOLO


def yolov10_inference(image, model_id, image_size, conf_threshold):
    model = YOLO(f'{model_id}.engine')
    results = model.predict(source=image, imgsz=image_size, conf=conf_threshold)
    annotated_image = results[0].plot()
    return annotated_image[:, :, ::-1], None


def yolov10_inference_for_examples(image, model_path, image_size, conf_threshold):
    annotated_image, _ = yolov10_inference(image, model_path, image_size, conf_threshold)
    return annotated_image


def app():
    with gr.Blocks():
        with gr.Row():
            with gr.Column():
                image = gr.Image(type="pil", label="Image", visible=True)
                model_id = gr.Dropdown(
                    label="Model",
                    choices=[
                        "yolov10s",
                        "yolov10m",
                        "yolov10m_ssvd_0.4",
                        "yolov10m_wsvd_0.4",
                    ],
                    value="yolov10s",
                )
                image_size = gr.Slider(
                    label="Image Size",
                    minimum=320,
                    maximum=1280,
                    step=32,
                    value=640,
                )
                conf_threshold = gr.Slider(
                    label="Confidence Threshold",
                    minimum=0.0,
                    maximum=1.0,
                    step=0.05,
                    value=0.25,
                )
                yolov10_infer = gr.Button(value="Detect Smoke")

            with gr.Column():
                output_image = gr.Image(type="numpy", label="Annotated Image", visible=True)

        yolov10_infer.click(
            fn=yolov10_inference,
            inputs=[image, model_id, image_size, conf_threshold],
            outputs=[output_image],
        )

        gr.Examples(
            examples=[
                [
                    "examples/smoke1.jpg",
                    "yolov10s",
                    1280,
                    0.25,
                ],
                [
                    "examples/smoke2.jpg",
                    "yolov10s",
                    1280,
                    0.25,
                ],
                [
                    "examples/smoke3.jpg",
                    "yolov10s",
                    1280,
                    0.25,
                ],
                [
                    "examples/smoke4.jpg",
                    "yolov10s",
                    1280,
                    0.25,
                ],
                [
                    "examples/smoke5.jpg",
                    "yolov10s",
                    1280,
                    0.25,
                ],
            ],
            fn=yolov10_inference_for_examples,
            inputs=[
                image,
                model_id,
                image_size,
                conf_threshold,
            ],
            outputs=[output_image],
            cache_examples='lazy',
        )

if __name__ == '__main__':
    gradio_app = gr.Blocks()
    with gradio_app:
        gr.HTML(
            """
        <h1 style='text-align: center'>
        YOLOv10 for early fire detection with low resource consumption
        </h1>
        """)
        gr.HTML(
            """
            <h3 style='text-align: center'>
            Original paper and code:
            <a href='https://arxiv.org/abs/2405.14458' target='_blank'>arXiv</a> | <a href='https://github.com/THU-MIG/yolov10' target='_blank'>github</a>
            </h3>
            """)
        with gr.Row():
            with gr.Column():
                app()
    gradio_app.launch()