Skip to content

Commit

Permalink
Merge branch 'main' of github.com:magic-research/Sa2VA
Browse files Browse the repository at this point in the history
  • Loading branch information
zhang-tao-whu committed Jan 22, 2025
2 parents fa06ce2 + 3db7631 commit 6227903
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 3 deletions.
69 changes: 69 additions & 0 deletions projects/llava_sam2/evaluation/dataset/base_eval_dataset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from torch.utils.data import Dataset
import copy
from collections.abc import Mapping
from typing import Union
from mmengine.config import Config
import logging
from mmengine.fileio import list_from_file
from mmengine.logging import print_log
from abc import abstractmethod


class BaseEvalDataset(Dataset):

METAINFO: dict = dict(name='default')

def __init__(self, metainfo: Union[Mapping, Config, None] = None):
self._metainfo = self._load_metainfo(copy.deepcopy(metainfo))

@classmethod
def _load_metainfo(cls,
metainfo: Union[Mapping, Config, None] = None) -> dict:
"""Collect meta information from the dictionary of meta.
Args:
metainfo (Mapping or Config, optional): Meta information dict.
If ``metainfo`` contains existed filename, it will be
parsed by ``list_from_file``.
Returns:
dict: Parsed meta information.
"""
# avoid `cls.METAINFO` being overwritten by `metainfo`
cls_metainfo = copy.deepcopy(cls.METAINFO)
if metainfo is None:
return cls_metainfo
if not isinstance(metainfo, (Mapping, Config)):
raise TypeError('metainfo should be a Mapping or Config, '
f'but got {type(metainfo)}')

for k, v in metainfo.items():
if isinstance(v, str):
# If type of value is string, and can be loaded from
# corresponding backend. it means the file name of meta file.
try:
cls_metainfo[k] = list_from_file(v)
except (TypeError, FileNotFoundError):
print_log(
f'{v} is not a meta file, simply parsed as meta '
'information',
logger='current',
level=logging.WARNING)
cls_metainfo[k] = v
else:
cls_metainfo[k] = v
return cls_metainfo

@property
def metainfo(self) -> dict:
"""Get meta information of dataset.
Returns:
dict: meta information collected from ``BaseDataset.METAINFO``,
annotation file and metainfo argument during instantiation.
"""
return copy.deepcopy(self._metainfo)

@abstractmethod
def evaluate(self, results, work_dir):
pass
2 changes: 1 addition & 1 deletion projects/llava_sam2/evaluation/dataset/refVOS.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from mmengine.dist import master_only

from vlm.datasets.evaluation.base_eval_dataset import BaseEvalDataset
from .base_eval_dataset import BaseEvalDataset

SEG_PROMPT = "<image>\nPlease segment {}."

Expand Down
4 changes: 2 additions & 2 deletions projects/llava_sam2/evaluation/ref_vos_eval.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import tqdm
from transformers import AutoModel, AutoTokenizer

from projects.llava_sam2.hf_evaluation.dataset import RefVOSDataset
from projects.llava_sam2.hf_evaluation.utils import _init_dist_pytorch, _init_dist_slurm, get_dist_info, get_rank, collect_results_cpu, barrier
from projects.llava_sam2.evaluation.dataset import RefVOSDataset
from projects.llava_sam2.evaluation.utils import _init_dist_pytorch, _init_dist_slurm, get_dist_info, get_rank, collect_results_cpu

import concurrent.futures
from pycocotools import mask as cocomask
Expand Down

0 comments on commit 6227903

Please sign in to comment.