Spaces:
Sleeping
Sleeping
# --------------------------------------------------------------------------------------------------- | |
# CLIP-DINOiser | |
# authors: Monika Wysoczanska, Warsaw University of Technology | |
# --------------------------------------------------------------------------------------------------- | |
# modified from TCL | |
# Copyright (c) 2023 Kakao Brain. All Rights Reserved. | |
# --------------------------------------------------------------------------------------------------- | |
import mmcv | |
from mmseg.datasets import build_dataloader, build_dataset | |
from mmcv.utils import Registry | |
from mmcv.cnn import MODELS as MMCV_MODELS | |
MODELS = Registry('models', parent=MMCV_MODELS) | |
SEGMENTORS = MODELS | |
from .clip_dinoiser_eval import DinoCLIP_Infrencer | |
def build_seg_dataset(config): | |
"""Build a dataset from config.""" | |
cfg = mmcv.Config.fromfile(config) | |
dataset = build_dataset(cfg.data.test) | |
return dataset | |
def build_seg_dataloader(dataset, dist=True): | |
# batch size is set to 1 to handle varying image size (due to different aspect ratio) | |
if dist: | |
data_loader = build_dataloader( | |
dataset, | |
samples_per_gpu=1, | |
workers_per_gpu=2, | |
dist=dist, | |
shuffle=False, | |
persistent_workers=True, | |
pin_memory=False, | |
) | |
else: | |
data_loader = build_dataloader( | |
dataset=dataset, | |
samples_per_gpu=1, | |
workers_per_gpu=2, | |
dist=dist, | |
shuffle=False, | |
persistent_workers=True, | |
pin_memory=False, | |
) | |
return data_loader | |
def build_seg_inference( | |
model, | |
dataset, | |
config, | |
seg_config, | |
): | |
dset_cfg = mmcv.Config.fromfile(seg_config) # dataset config | |
classnames = dataset.CLASSES | |
kwargs = dict() | |
if hasattr(dset_cfg, "test_cfg"): | |
kwargs["test_cfg"] = dset_cfg.test_cfg | |
seg_model = DinoCLIP_Infrencer(model, num_classes=len(classnames), **kwargs, **config.evaluate) | |
seg_model.CLASSES = dataset.CLASSES | |
seg_model.PALETTE = dataset.PALETTE | |
return seg_model | |