Spaces:
Sleeping
Sleeping
File size: 6,468 Bytes
6f5ac87 b345bd5 851eb77 3a28ead a5c8542 3a28ead 851eb77 97afcf2 6f5ac87 35410c9 bac63be 6954573 6f5ac87 7c8b758 7e4c2e9 0a91448 4a88045 023264e 7c8b758 023264e 74b0c95 6f5ac87 1b30cd7 6f5ac87 510164d aa18569 851eb77 93f44e4 851eb77 fe3f366 47d75b8 023264e 3a7c9f0 f890670 e141787 3a7c9f0 90d7927 e141787 f07963f 023264e 169e0bb a5c8542 4ba8d1f a5c8542 6f5ac87 43c806f 96e167c 43c806f aa18569 43c806f 6f5ac87 64d5085 1206f49 4ba8d1f 151bcd3 6f5ac87 ac472a5 29f41bd 41f369f 6e81c99 023264e 41f369f 29f41bd 64d5085 151bcd3 6f5ac87 05f5ea4 29f41bd 6f5ac87 a5c8542 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 |
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 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('linhcuem/checker_TB_yolov8_ver1')
# current_model_id = model_ids[-1]
# model = YOLO(current_model_id)
# model = YOLO(model_path)
###################################################
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
# model.overrides['conf'] = conf_threshold
# model.overrides['iou'] = iou_threshold
# model.overrides['agnostic_nms'] = False
# model.overrides['max_det'] = 1000
# image = read_image
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_image = [
# # gr.inputs.Image(type="filepath", label="Input Image"),
# gr.Image(type="pil"),
# # gr.Dropdown(["linhcuem/linhcuem/chamdiemgianhang_yolov8_ver1"],
# default="linhcuem/chamdiemgianhang_yolov8_ver1", label="Model"),
# gr.Slider(maximum=1280, step=32, value = 640, label="Image Size"),
# gr.Slider(maximum=1.0 , step=0.05, value = 0.25, label="Confidence Threshold"),
# gr.Slider(maximum=1.0, step=0.05, value = 0.45, label="IOU Threshold"),
# ]
# outputs_image =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.inputs.Image(type='pil'),
gr.inputs.Dropdown(["linhcuem/checker_TB_yolov8_ver1"],
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.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()
# interface_image.launch(debug=True, enable_queue=True) |