|
import json |
|
import glob |
|
from collections import Counter |
|
|
|
import requests |
|
import gradio as gr |
|
from ultralyticsplus import YOLO, download_from_hub, render_result |
|
|
|
hf_model_ids = [ |
|
"chanelcolgate/chamdiemgianhang-vsk", |
|
"chanelcolgate/chamdiemgianhang-vsk-v2", |
|
"chanelcolgate/chamdiemgianhang-vsk-v4", |
|
"chanelcolgate/chamdiemgianhang-vsk-v5", |
|
"chanelcolgate/chamdiemgianhang-vsk-v6", |
|
] |
|
|
|
image_paths = [ |
|
[image_path, "chanelcolgate/chamdiemgianhang-vsk-v2", 640, 0.25, 0.45] |
|
for image_path in glob.glob("./tmp/*.jpg") |
|
] |
|
|
|
|
|
def detection_image( |
|
image=None, |
|
hf_model_id="chanelcolgate/chamdiemgianhang-vsk-v2", |
|
image_size=640, |
|
conf_threshold=0.25, |
|
iou_threshold=0.45, |
|
): |
|
model_path = download_from_hub(hf_model_id) |
|
model = YOLO(model_path) |
|
results = model(image, imgsz=image_size, conf=conf_threshold, iou=iou_threshold) |
|
json_result = json.loads(results[0].tojson()) |
|
class_counts = Counter(detection["name"] for detection in json_result) |
|
|
|
render = render_result(model=model, image=image, result=results[0]) |
|
return render, class_counts |
|
|
|
|
|
def detection_image_link( |
|
image=None, |
|
hf_model_id="chanelcolgate/chamdiemgianhang-vsk-v2", |
|
image_size=640, |
|
conf_threshold=0.25, |
|
iou_threshold=0.45, |
|
): |
|
model_path = download_from_hub(hf_model_id) |
|
model = YOLO(model_path) |
|
results = model(image, imgsz=image_size, conf=conf_threshold, iou=iou_threshold) |
|
json_result = json.loads(results[0].tojson()) |
|
class_counts = Counter(detection["name"] for detection in json_result) |
|
|
|
render = render_result(model=model, image=image, result=results[0]) |
|
return render, class_counts |
|
|
|
|
|
title = "Cham Diem Gian Hang VSK" |
|
|
|
interface = gr.Interface( |
|
fn=detection_image, |
|
inputs=[ |
|
gr.Image(type="pil"), |
|
gr.Dropdown(hf_model_ids), |
|
gr.Slider(minimum=320, maximum=1280, value=640, step=32, label="Image Size"), |
|
gr.Slider( |
|
minimum=0.0, |
|
maximum=1.0, |
|
value=0.25, |
|
step=0.05, |
|
label="Confidence Threshold", |
|
), |
|
gr.Slider( |
|
minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold" |
|
), |
|
], |
|
outputs=[gr.Image(type="pil"), gr.Textbox(show_label=False)], |
|
title=title, |
|
examples=image_paths, |
|
cache_examples=True if image_paths else False, |
|
) |
|
|
|
interface_link = gr.Interface( |
|
fn=detection_image, |
|
inputs=[ |
|
gr.Textbox(label="Image Link"), |
|
gr.Dropdown(hf_model_ids), |
|
gr.Slider(minimum=320, maximum=1280, value=640, step=32, label="Image Size"), |
|
gr.Slider( |
|
minimum=0.0, |
|
maximum=1.0, |
|
value=0.25, |
|
step=0.05, |
|
label="Confidence Threshold", |
|
), |
|
gr.Slider( |
|
minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold" |
|
), |
|
], |
|
outputs=[gr.Image(type="pil"), gr.Textbox(show_label=False)], |
|
title=title, |
|
) |
|
|
|
gr.TabbedInterface( |
|
[interface, interface_link], tab_names=["Image inference", "Image link inference"] |
|
).queue().launch() |
|
|