Spaces:
Sleeping
Sleeping
File size: 1,287 Bytes
7435e6e | 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 | import torch
import numpy as np
from typing import Union, Optional
from PIL import Image
from mmdet.apis import DetInferencer
from ultralytics.engine.results import Results
import warnings
class MMDetector(DetInferencer):
def __call__(
self,
inputs,
) -> Results:
"""Call the inferencer as in DetInferencer but for single image.
Args:
inputs (np.ndarray | str): Inputs for the inferencer.
Returns:
Result: yolo-like result
"""
ori_inputs = self._inputs_to_list(inputs)
data = list(self.preprocess(
ori_inputs, batch_size=1))[0][1]
preds = self.forward(data)[0]
yolo_result = Results(
orig_img=ori_inputs[0], path="", names=[""],
boxes=torch.cat((preds.pred_instances.bboxes, preds.pred_instances.scores.unsqueeze(-1), preds.pred_instances.labels.unsqueeze(-1)), dim=1),
masks=preds.pred_instances.masks
)
return yolo_result
def predict(self, source: Image.Image, conf=None):
"""yolo interface"""
if conf is not None:
warnings.warn(f"confidence value {conf} ignored")
return [self.__call__(np.array(source.convert("RGB")))] |