Spaces:
Runtime error
Runtime error
# Copyright (c) OpenMMLab. All rights reserved. | |
from collections import defaultdict | |
from typing import Sequence, Union | |
import numpy as np | |
from mmengine.dataset import Compose | |
from mmengine.model import BaseModel | |
ImageType = Union[str, np.ndarray, Sequence[str], Sequence[np.ndarray]] | |
def _preprare_data(imgs: ImageType, model: BaseModel): | |
cfg = model.cfg | |
for t in cfg.test_pipeline: | |
if t.get('type') == 'LoadAnnotations': | |
cfg.test_pipeline.remove(t) | |
is_batch = True | |
if not isinstance(imgs, (list, tuple)): | |
imgs = [imgs] | |
is_batch = False | |
if isinstance(imgs[0], np.ndarray): | |
cfg.test_pipeline[0]['type'] = 'LoadImageFromNDArray' | |
# TODO: Consider using the singleton pattern to avoid building | |
# a pipeline for each inference | |
pipeline = Compose(cfg.test_pipeline) | |
data = defaultdict(list) | |
for img in imgs: | |
if isinstance(img, np.ndarray): | |
data_ = dict(img=img) | |
else: | |
data_ = dict(img_path=img) | |
data_ = pipeline(data_) | |
data['inputs'].append(data_['inputs']) | |
data['data_samples'].append(data_['data_samples']) | |
return data, is_batch | |