From 4060232b67cda00cbc25a7aec594275a441d7393 Mon Sep 17 00:00:00 2001 From: haraduka Date: Thu, 2 Mar 2023 14:03:44 +0900 Subject: [PATCH 1/2] change_vocab --- detic/predictor.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/detic/predictor.py b/detic/predictor.py index 318205a..4b5eb1f 100644 --- a/detic/predictor.py +++ b/detic/predictor.py @@ -5,6 +5,7 @@ from collections import deque import cv2 import torch +import random from detectron2.data import MetadataCatalog from detectron2.engine.defaults import DefaultPredictor @@ -67,6 +68,13 @@ def __init__(self, cfg, args, self.predictor = DefaultPredictor(cfg) reset_cls_test(self.predictor.model, classifier, num_classes) + def change_classfier(self, vocab): + self.metadata = MetadataCatalog.get("__unused+"+str(random.random())) + self.metadata.thing_classes = vocab.split(',') + classifier = get_clip_embeddings(self.metadata.thing_classes) + num_classes = len(self.metadata.thing_classes) + reset_cls_test(self.predictor.model, classifier, num_classes) + def run_on_image(self, image): """ Args: From 3261b730a2a11b4a52d684f4bc38aeb6c38b529b Mon Sep 17 00:00:00 2001 From: Yoshiki Obinata Date: Fri, 31 Jan 2025 17:02:18 +0900 Subject: [PATCH 2/2] add change_vocabulary, set_default_vocabulary feature --- detic/predictor.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/detic/predictor.py b/detic/predictor.py index 4b5eb1f..7d116c7 100644 --- a/detic/predictor.py +++ b/detic/predictor.py @@ -38,7 +38,7 @@ def get_clip_embeddings(vocabulary, prompt='a '): } class VisualizationDemo(object): - def __init__(self, cfg, args, + def __init__(self, cfg, args, instance_mode=ColorMode.IMAGE, parallel=False): """ Args: @@ -51,10 +51,12 @@ def __init__(self, cfg, args, self.metadata = MetadataCatalog.get("__unused") self.metadata.thing_classes = args.custom_vocabulary.split(',') classifier = get_clip_embeddings(self.metadata.thing_classes) + self._default_vocabulary = None else: self.metadata = MetadataCatalog.get( BUILDIN_METADATA_PATH[args.vocabulary]) classifier = BUILDIN_CLASSIFIER[args.vocabulary] + self._default_vocabulary = args.vocabulary num_classes = len(self.metadata.thing_classes) self.cpu_device = torch.device("cpu") @@ -68,13 +70,26 @@ def __init__(self, cfg, args, self.predictor = DefaultPredictor(cfg) reset_cls_test(self.predictor.model, classifier, num_classes) - def change_classfier(self, vocab): + def change_vocabulary(self, vocab): + """ + Args: + vocab (str): The comma separated string of vocabulary + """ self.metadata = MetadataCatalog.get("__unused+"+str(random.random())) self.metadata.thing_classes = vocab.split(',') classifier = get_clip_embeddings(self.metadata.thing_classes) num_classes = len(self.metadata.thing_classes) reset_cls_test(self.predictor.model, classifier, num_classes) + def set_defalt_vocabulary(self): + if not self._default_vocabulary: + raise RuntimeError("The VisualizationDemo is not initalized with buildin vocabulary") + self.metadata = MetadataCatalog.get( + BUILDIN_METADATA_PATH[self._default_vocabulary]) + classifier = BUILDIN_CLASSIFIER[self._default_vocabulary] + num_classes = len(self.metadata.thing_classes) + reset_cls_test(self.predictor.model, classifier, num_classes) + def run_on_image(self, image): """ Args: