Source code for datumaro.components.algorithms.hash_key_inference.base
# Copyright (C) 2023 Intel Corporation
#
# SPDX-License-Identifier: MIT
from typing import TYPE_CHECKING, Sequence
from datumaro.components.dataset import Dataset
if TYPE_CHECKING:
import datumaro.plugins.explorer as explorer
else:
from datumaro.util.import_util import lazy_import
explorer = lazy_import("datumaro.plugins.explorer")
[docs]
class HashInference:
def __init__(self, *datasets: Sequence[Dataset]) -> None:
pass
@property
def model(self):
if self._model is None:
self._model = explorer.ExplorerLauncher(model_name="clip_visual_ViT-B_32")
return self._model
@property
def text_model(self):
if self._text_model is None:
self._text_model = explorer.ExplorerLauncher(model_name="clip_text_ViT-B_32")
return self._text_model
def _compute_hash_key(self, datasets, datasets_to_infer):
for dataset_to_infer in datasets_to_infer:
if dataset_to_infer:
dataset_to_infer.run_model(self.model, append_annotation=True)
for dataset, dataset_to_infer in zip(datasets, datasets_to_infer):
updated_items = [
dataset.get(item.id, item.subset).wrap(annotations=item.annotations)
for item in dataset_to_infer
]
dataset.update(updated_items)
return datasets