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