Spaces:
Runtime error
Runtime error
import gradio as gr | |
from ultralyticsplus import YOLO, render_result | |
from ultralytics.yolo.utils.plotting import Annotator | |
def yolov8_inference( | |
image: gr.Image = None, | |
model_path = "eeshawn11/naruto_hand_seal_detection", | |
conf_threshold: gr.Slider = 0.50, | |
iou_threshold: gr.Slider = 0.45, | |
): | |
""" | |
YOLOv8 inference function | |
Args: | |
image: Input image | |
model_path: Path to the model | |
conf_threshold: Confidence threshold | |
iou_threshold: IOU threshold | |
Returns: | |
Rendered image | |
""" | |
# model = YOLO(model_path) | |
model = YOLO("ultralyticsplus/yolov8s") | |
model.conf = conf_threshold | |
model.iou = iou_threshold | |
# results = model.predict(image, return_outputs=True) | |
results = model.predict(image) | |
# object_prediction_list = [] | |
# annotator = Annotator(image) | |
# for _, image_results in enumerate(results): | |
# if len(image_results)!=0: | |
# image_predictions_in_xyxy_format = image_results['det'] | |
# for pred in image_predictions_in_xyxy_format: | |
# x1, y1, x2, y2 = ( | |
# int(pred[0]), | |
# int(pred[1]), | |
# int(pred[2]), | |
# int(pred[3]), | |
# ) | |
# bbox = [x1, y1, x2, y2] | |
# score = pred[4] | |
# category_name = model.model.names[int(pred[5])] | |
# category_id = pred[5] | |
# annotator.box_label(bbox, f"{category_name} {score}") | |
# object_prediction = ObjectPrediction( | |
# bbox=bbox, | |
# category_id=int(category_id), | |
# score=score, | |
# category_name=category_name, | |
# ) | |
# object_prediction_list.append(object_prediction) | |
# image = read_image(image) | |
# output_image = visualize_object_predictions(image=image, object_prediction_list=object_prediction_list) | |
# return output_image['image'] | |
# return annotator.result() | |
render = render_result(model=model, image=image, result=results[0]) | |
return render | |
inputs = [ | |
# gr.inputs.Image(type="filepath", label="Input Image"), | |
gr.Image(source="upload", type="pil", label="Image Upload", interactive=True), | |
gr.Slider(minimum=0.0, maximum=1.0, value=0.5, 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="filepath", label="Output Image") | |
title = "Naruto Hand Seal Detection with YOLOv8" | |
myapp = gr.Interface( | |
fn=yolov8_inference, | |
inputs=inputs, | |
outputs=outputs, | |
title=title, | |
) | |
myapp.queue() | |
myapp.launch() |