File size: 3,468 Bytes
c72f916
82dd917
dd4d617
 
 
4f32028
dd4d617
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7754142
dd4d617
 
 
 
 
 
 
037139b
7754142
dd4d617
 
7754142
dd4d617
 
7754142
dd4d617
7754142
dd4d617
4f32028
dd4d617
 
 
 
 
 
 
 
 
 
 
 
 
037139b
dd4d617
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
import gradio as gr
import torch
from sahi.prediction import ObjectPrediction
from sahi.utils.cv import visualize_object_predictions, read_image
from ultralyticsplus import YOLO, render_result

def yolov8_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,
):
    """
    YOLOv8 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 = YOLO(model_path)
    model.overrides['conf'] = conf_threshold
    model.overrides['iou']= iou_threshold
    model.overrides['agnostic_nms'] = False  # NMS class-agnostic
    model.overrides['max_det'] = 1000 
    image = read_image(image)
    results = model.predict(image)
    render = render_result(model=model, image=image, result=results[0])
    
    return render
        

inputs = [
    gr.inputs.Image(type="filepath", label="Input Image"),
    gr.inputs.Dropdown(["foduucom/thermal-image-object-detection"], 
                       default="foduucom/thermal-image-object-detection", 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 = "ThermalSense: Object Detection in Thermal Images"

description ="""
Tired of playing 'Where's Waldo?' with your thermal images? Look no further! πŸ•΅οΈβ€β™‚οΈπŸ” Our cutting-edge app, powered by the incredible Foduu AI model, has mastered the art of object detection in thermal images. Whether it's locating your lost TV remote in the abyss of your cozy couch or pinpointing the neighborhood cat's stealthy midnight escapades, ThermalFoduu has got your back! πŸ“±πŸ”₯

No more squinting at pixelated blobs – our app skillfully identifies objects with the precision of a hawk eyeing its prey. πŸ¦…πŸŽ― Worried about distinguishing between a warm pizza slice and your sneaky pet lizard? Worry no more! ThermalFoduu's got your back, even in the most 'heated' culinary conundrums. πŸ•πŸ¦Ž

And if you ever find yourself puzzled by the nuances of thermal imagery or craving a deeper dive into the infrared universe, fear not! Our friendly team at Foduu is just an email away. Contact us at info@foduu for all your questions, suggestions, or even if you just want to chat about the latest trends in thermal fashion. πŸ˜ŽπŸ“§

So, if you're ready to unveil the secrets hidden within thermal landscapes, join the ThermalFoduu revolution today! Tap that download button and let the thermal adventure begin! πŸš€πŸŒŒ #ThermalFoduu #HeatSeeker #FoduuMagic

"""
examples = [['samples/1.jpg', 'foduucom/thermal-image-object-detection', 640, 0.25, 0.45], ['samples/2.jpg', 'foduucom/thermal-image-object-detection', 640, 0.25, 0.45]]
demo_app = gr.Interface(
    fn=yolov8_inference,
    inputs=inputs,
    outputs=outputs,
    title=title,
    description=description,
    examples=examples,
    cache_examples=True,
    theme='huggingface',
)
demo_app.launch(debug=True, enable_queue=True)