Spaces:
Running
Running
import os | |
import logging | |
import numpy as np | |
from typing import List | |
from ultralytics import YOLOWorld | |
class YoloWorld: | |
def __init__(self,model_name = "yolov8x-worldv2.pt"): | |
self.model = YOLOWorld(model_name) | |
self.model.to(device='cpu') | |
def run_inference(self,image_path:str,object_prompts:List): | |
object_details = [] | |
self.model.set_classes(object_prompts) | |
results = self.model.predict(image_path) | |
for result in results: | |
for box in result.boxes: | |
object_data = {} | |
x1, y1, x2, y2 = np.array(box.xyxy.cpu(), dtype=np.int32).squeeze() | |
c1,c2 = (x1,y1),(x2,y2) | |
confidence = round(float(box.conf.cpu()),2) | |
label = f'{results[0].names[int(box.cls)]}' # [{100*round(confidence,2)}%]' | |
print("Object Name :{} Bounding Box:{},{} Confidence score {}\n ".format(label ,c1 ,c2,confidence)) | |
object_data[label] = { | |
'bounding_box':[x1,y1,x2,y2], | |
'confidence':confidence | |
} | |
object_details.append(object_data) | |
return object_details | |