File size: 2,889 Bytes
c72f916
4f32028
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271251d
4f32028
 
 
 
 
7754142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4f32028
 
271251d
0febdc1
 
 
 
 
f591895
0febdc1
4f32028
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271251d
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
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'] = 999
    image = read_image(image)
    results = model.predict(image)
    render = render_result(model=model, image=image, result=results[0])
    
    return render

def gr_postprocess(image):
    """
    Gradio postprocess function
    Args:
        image: Input image
    Returns:
        Processed image
    """

    # Convert the image to RGB
    image = image.convert('RGB')

    # Resize the image to the desired size
    image = image.resize((640, 480))

    # Convert the image to a numpy array
    image = np.array(image)

    return image

inputs = [
# Images
    gr.Examples(
        [
            'samples/1.jpeg',
            'samples/2.JPG',
        ],
        inputs={'postprocess': gr_postprocess(inputs)},
    ),
    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 = "YOLOobjectdetection: Efficient ObjectDetection"

description = "πŸ” YoloTableExtract is a powerful space that utilizes YOLOv8s for accurate table detection and extraction. Whether tables are bordered or borderless, this space can effectively identify and extract them from images. For further assistance and support related to documentation or data-related issues, feel free to contact [email protected]. If you find this space helpful, please show your appreciation by liking it. β€οΈπŸ‘πŸΌ"
examples = [['1.jpeg', "foduucom/object_detection", 640, 0.25, 0.45], ['2.JPG', "foduucom/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)