YOLO-World / app.py
SkalskiP's picture
test of the first version of the code - zero-shot detection only
716ca0c
raw
history blame
No virus
1.84 kB
from typing import List
import gradio as gr
import numpy as np
import supervision as sv
from inference.models import YOLOWorld
MARKDOWN = """
# YOLO-World 🌎
Powered by Roboflow [Inference](https://github.com/roboflow/inference) and [Supervision](https://github.com/roboflow/supervision).
"""
MODEL = YOLOWorld(model_id="yolo_world/l")
BOUNDING_BOX_ANNOTATOR = sv.BoundingBoxAnnotator()
LABEL_ANNOTATOR = sv.LabelAnnotator(text_color=sv.Color.BLACK)
def process_categories(categories: str) -> List[str]:
return [category.strip() for category in categories.split(',')]
def process_image(input_image: np.ndarray, categories: str) -> np.ndarray:
categories = process_categories(categories)
MODEL.set_classes(categories)
results = MODEL.infer(input_image, confidence=0.003)
detections = sv.Detections.from_inference(results).with_nms(0.1)
output_image = input_image.copy()
output_image = BOUNDING_BOX_ANNOTATOR.annotate(output_image, detections)
output_image = LABEL_ANNOTATOR.annotate(output_image, detections)
return output_image
with gr.Blocks() as demo:
gr.Markdown(MARKDOWN)
with gr.Row():
input_image_component = gr.Image(
type='numpy',
label='Input Image'
)
output_image_component = gr.Image(
type='numpy',
label='Output Image'
)
with gr.Row():
categories_text_component = gr.Textbox(
label='Categories',
placeholder='comma separated list of categories',
scale=5
)
submit_button_component = gr.Button('Submit', scale=1)
submit_button_component.click(
fn=process_image,
inputs=[input_image_component, categories_text_component],
outputs=output_image_component
)
demo.launch(debug=False, show_error=True)