File size: 1,700 Bytes
780389c
8b2cbe6
1e8e71b
 
9740995
8b2cbe6
9740995
ccc35d4
1e8e71b
9740995
 
 
082831f
9740995
082831f
9740995
cbc2dd6
9740995
385e56e
8b2cbe6
9740995
ccc35d4
8b2cbe6
9740995
ccc35d4
8b2cbe6
 
 
9740995
8b2cbe6
9740995
8b2cbe6
 
 
9740995
8b2cbe6
9740995
790227b
 
9740995
66947f7
 
 
 
 
1ded52c
66947f7
9740995
 
 
 
cbc2dd6
9740995
 
 
 
ccc35d4
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
import spaces
import gradio as gr
import cv2
import tempfile
from ultralytics import YOLOv10

model = YOLOv10.from_pretrained(f'jameslahm/yolov10n')

@spaces.GPU
def yolov10_inference(image, conf_threshold):
    width, _ = image.size
    import time
    start = time.time()
    results = model.predict(source=image, imgsz=width, conf=conf_threshold)
    end = time.time()
    annotated_image = results[0].plot()
    print("time", end - start)
    return annotated_image[:, :, ::-1]


css=""".my-group {max-width: 600px !important; max-height: 600 !important;}
                      .my-column {display: flex !important; justify-content: center !important; align-items: center !important};"""


with gr.Blocks(css=css) as app:
    gr.HTML(
        """
    <h1 style='text-align: center'>
    YOLOv10 Webcam Stream
    </h1>
    """)
    gr.HTML(
        """
        <h3 style='text-align: center'>
        <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.Column(elem_classes=["my-column"]):
        with gr.Group(elem_classes=["my-group"]):
            image = gr.Image(type="pil", label="Image", sources="webcam")
            conf_threshold = gr.Slider(
                label="Confidence Threshold",
                minimum=0.0,
                maximum=1.0,
                step=0.05,
                value=0.30,
            )
        image.stream(
            fn=yolov10_inference,
            inputs=[image, conf_threshold],
            outputs=[image],
            stream_every=0.1,
            time_limit=30
        )

if __name__ == '__main__':
    app.launch()