|
import os |
|
import gradio as gr |
|
import PIL.Image as Image |
|
|
|
from ultralytics import YOLO |
|
|
|
model = YOLO("best.pt") |
|
|
|
|
|
def predict_image(img, conf_threshold, iou_threshold, image_size): |
|
"""Predicts objects in an image using a YOLOv8 model with adjustable confidence and IOU thresholds.""" |
|
results = model.predict( |
|
source=img, |
|
conf=conf_threshold, |
|
iou=iou_threshold, |
|
show_labels=True, |
|
show_conf=True, |
|
imgsz=image_size, |
|
) |
|
|
|
for r in results: |
|
im_array = r.plot() |
|
im = Image.fromarray(im_array[..., ::-1]) |
|
|
|
return im |
|
|
|
example_list = [["examples/" + example] for example in os.listdir("examples")] |
|
|
|
iface = gr.Interface( |
|
fn=predict_image, |
|
inputs=[ |
|
gr.Image(type="pil", label="Upload Image"), |
|
gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"), |
|
gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"), |
|
gr.Slider( |
|
label="Image Size", |
|
minimum=320, |
|
maximum=1280, |
|
step=32, |
|
value=640, |
|
) |
|
], |
|
outputs=gr.Image(type="pil", label="Result"), |
|
title="YOLOv10: Real-Time Fire and Smoke Detection", |
|
description="This project utilizes the YOLOv10 model to detect Fire and Smoke in Real-Time. Adjust the confidence and IoU thresholds for optimal detection performance. Upload an image to see the detection results.\n [Github](https://github.com/X-Men01/YOLOv10-Fire-and-Smoke-Detection)", |
|
examples=[ |
|
[example_list[0][0], 0.25, 0.45, 640], |
|
[example_list[1][0], 0.25, 0.45, 960], |
|
[example_list[2][0], 0.25, 0.45, 640], |
|
], |
|
allow_flagging="never", |
|
submit_btn="Run Inference", |
|
article = "Created at [09. PyTorch Model Deployment](https://www.learnpytorch.io/09_pytorch_model_deployment/)." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch(show_error=True) |
|
|