Spaces:
Running
Running
File size: 1,198 Bytes
0e78cbf |
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 |
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
|