|
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() |