Spaces:
Running
Running
File size: 6,689 Bytes
6f5ac87 b345bd5 851eb77 3a28ead a5c8542 3a28ead c61869a 851eb77 97afcf2 1351229 6f5ac87 35410c9 bac63be 6954573 6f5ac87 e83cfe3 7e4c2e9 705b2ec 4a88045 e31efcc 4b41529 e97ca08 e31efcc 74b0c95 55bb760 6f5ac87 28862c0 55bb760 6f5ac87 55bb760 e97ca08 31dad98 aa18569 93f44e4 851eb77 fe3f366 47d75b8 023264e 3a7c9f0 f890670 e141787 3a7c9f0 90d7927 e141787 f07963f 023264e 169e0bb 31dad98 a5c8542 31dad98 a5c8542 31dad98 a5c8542 31dad98 a5c8542 31dad98 6f5ac87 28862c0 6f5ac87 44a1062 64d5085 1206f49 4ba8d1f 151bcd3 31dad98 ac472a5 31dad98 e97ca08 31dad98 151bcd3 5ff22f0 31dad98 6f5ac87 31dad98 fca7821 a5c8542 |
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
import gradio as gr
import torch
# from sahi.prediction import ObjectPrediction
# from sahi.utils.cv import visualize_object_predictions, read_image
import os
import requests
import json
import cv2
from PIL import Image
# from huggingface_hub import hf_hub_download
from ultralyticsplus import YOLO, render_result
from ultralyticsplus.hf_utils import download_from_hub
# from ultralyticsplus import render_result
# import requests
# import cv2
image_path = [['test_images/2a998cfb0901db5f8210.jpg','cham_diem_yolov8', 640, 0.25, 0.45],['test_images/2ce19ce0191acb44920b.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/2daab6ea3310e14eb801.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/4a137deefb14294a7005 (1).jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/7e77c596436c9132c87d.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/170f914014bac6e49fab.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/3355ec3269c8bb96e2d9.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/546306a88052520c0b43.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/33148464019ed3c08a8f.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/a17a992a1cd0ce8e97c1.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/b5db5e42d8b80ae653a9 (1).jpg','cham_diem_yolov8', 640, 0.25, 0.45],['test_images/b8ee1f5299a84bf612b9.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/b272fec7783daa63f32c.jpg','cham_diem_yolov8', 640, 0.25, 0.45],['test_images/bb202b3eaec47c9a25d5.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/bf1e22b0a44a76142f5b.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/ea5473c5f53f27617e2e.jpg','cham_diem_yolov8', 640, 0.25, 0.45],
['test_images/ee106392e56837366e79.jpg','cham_diem_yolov8', 640, 0.25, 0.45], ['test_images/f88d2214a4ee76b02fff.jpg','cham_diem_yolov8', 640, 0.25, 0.45]]
# Load YOLO model
# model = YOLO('linhcuem/cham_diem_yolov8')
# model = YOLO('linhcuem/chamdiemgianhang_yolov8_300epochs')
# model = YOLO('linhcuem/chamdiemgianhang_yolov8_ver21')
# model = YOLO('linhcuem/cham_diem_yolov8_ver20')
# model_ids = ['linhcuem/checker_TB_yolov8_ver1', 'linhcuem/cham_diem_yolov8', 'linhcuem/chamdiemgianhang_yolov8_300epochs', 'linhcuem/cham_diem_yolov8_ver20', 'linhcuem/chamdiemgianhang_yolov8_ver21']
# model = YOLO(model_path)
# current_model_id = model_ids[-1]
# model = YOLO(current_model_id)
# model = YOLO(model_path)
model_path = download_from_hub("linhcuem/checker_TB_yolov8_ver1", "linhcuem/chamdiemgianhang_yolov8_ver21")
###################################################
def yolov8_img_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,
):
model = YOLO(model_path)
model.conf = conf_threshold
model.iou = iou_threshold
results = model.predict(image, imgsz=image_size, conf=conf_threshold, iou=iou_threshold)
render = render_result(model=model, image=image, result=results[0])
# get the model names list
names = model.names
object_counts = {x: 0 for x in names}
for r in results:
for c in r.boxes.cls:
c = int(c)
if c in names:
object_counts[c] += 1
elif c not in names:
object_counts[c] = 1
present_objects = object_counts.copy()
for i in object_counts:
if object_counts[i] < 1:
present_objects.pop(i)
return render, {names[k]: v for k, v in present_objects.items()}
def yolov8_vid_inference(video_path):
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
success, frame = cap.read()
if success:
frame_copy = frame.copy()
outputs = model.predict(source=frame)
results = outputs[0].cpu().numpy()
for i, det in enumerate(results.boxes.xyxy):
cv2.rectangle(
frame_copy,
(int(det[0]), int(det[1])),
(int(det[2]), int(det[3])),
color=(0, 0, 255),
thickness=2,
lineType=cv2.LINE_AA
)
yield cv2.cvtColor(frame_copy, cv2.COLOR_BGR2RGB)
inputs_vid = [
gr.components.Video(type="filepath", label="Input Video"),
]
outputs_vid = [
gr.components.Image(type="numpy", label="Output Image"),
]
interface_vid = gr.Interface(
fn=yolov8_vid_inference,
inputs = inputs_vid,
outputs = outputs_vid,
title = "Detect Thiên Việt productions",
cache_examples = False,
)
inputs = [
gr.inputs.Image(type="filepath", label="Input Image"),
gr.inputs.Dropdown(["linhcuem/checker_TB_yolov8_ver1", "linhcuem/chamdiemgianhang_yolov8_ver21"],
default="linhcuem/checker_TB_yolov8_ver1", 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")
# count_obj = gr.Textbox(show_label=False)
title = "Detect Thiên Việt productions"
interface_image = gr.Interface(
fn=yolov8_img_inference,
inputs=[
gr.Image(type='pil'),
gr.Dropdown(["linhcuem/checker_TB_yolov8_ver1", "linhcuem/chamdiemgianhang_yolov8_ver21"],
default="linhcuem/checker_TB_yolov8_ver1", label="Model"),
gr.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"),
gr.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),
gr.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"),
],
outputs=[gr.Image(type="pil"),gr.Textbox(show_label=False)],
title=title,
examples=image_path,
cache_examples=True if image_path else False,
)
gr.TabbedInterface(
[interface_image, interface_vid],
tab_names=['Image inference', 'Video inference']
).queue().launch()
# demo_app = gr.Interface(
# fn=yolov8_img_inference,
# inputs=inputs,
# outputs=outputs,
# title=title,
# examples=image_path,
# cache_examples=True,
# theme='huggingface',
# )
# demo_app.launch(debug=True, enable_queue=True)
# interface_image.launch(debug=True, enable_queue=True) |