Skip to content

Commit 145bdaf

Browse files
committed
Update Video-MME、Video-MMMU and YorNDataset primary metrics
1 parent 445c119 commit 145bdaf

3 files changed

Lines changed: 49 additions & 1 deletion

File tree

vlmeval/dataset/image_yorn.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import warnings
33

44
from vlmeval.smp import dump, get_intermediate_file_path, listinstr, load
5+
from vlmeval.smp.status_report import is_number, to_number
56
from vlmeval.utils import track_progress_rich
67
from .image_base import ImageBaseDataset
78
from .utils import DEBUG_MESSAGE, build_judge
@@ -107,3 +108,39 @@ def evaluate(self, eval_file, **judge_kwargs):
107108
score_tgt = get_intermediate_file_path(eval_file, '_score', 'csv')
108109
dump(score, score_tgt)
109110
return score
111+
112+
@classmethod
113+
def report_primary_metric(cls, metrics: dict | None) -> dict:
114+
if not isinstance(metrics, dict) or not metrics:
115+
return {}
116+
117+
def get_number(key):
118+
value = metrics.get(key)
119+
return to_number(value) if is_number(value) else None
120+
121+
mme_scores = [get_number(key) for key in ('perception', 'reasoning')]
122+
if all(value is not None for value in mme_scores):
123+
return {'Overall Score': sum(mme_scores)}
124+
125+
hallusion_keys = ('split=Overall|aAcc', 'split=Overall|fAcc', 'split=Overall|qAcc')
126+
hallusion_scores = [get_number(key) for key in hallusion_keys]
127+
if all(value is not None for value in hallusion_scores):
128+
return {'Overall Acc': sum(hallusion_scores) / len(hallusion_scores)}
129+
130+
pope_f1 = get_number('split=Overall|Overall')
131+
if pope_f1 is not None:
132+
return {'Overall F1': pope_f1}
133+
134+
amber_acc = get_number('Avg ACC')
135+
if amber_acc is not None:
136+
return {'Avg ACC': amber_acc}
137+
138+
overall_acc = get_number('Overall')
139+
if overall_acc is not None:
140+
return {'Overall Acc': overall_acc}
141+
142+
acc = get_number('acc')
143+
if acc is not None:
144+
return {'Overall Acc': acc}
145+
146+
return super().report_primary_metric(metrics)

vlmeval/dataset/videomme.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,6 @@ def report_primary_metric(cls, metrics: dict | None) -> dict:
301301
return {}
302302

303303
if 'overall|overall' in metrics:
304-
return {'Overall Score': metrics['overall|overall'] * 100}
304+
return {'Overall Acc': metrics['overall|overall'] * 100}
305305
else:
306306
return super().report_primary_metric(metrics)

vlmeval/dataset/videommmu.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from vlmeval.smp import (dump, get_cache_path, get_intermediate_file_path, load, md5,
1616
modelscope_flag_set)
17+
from vlmeval.smp.status_report import is_number, to_number
1718
from vlmeval.utils import track_progress_rich
1819
from .video_base import VideoBaseDataset
1920

@@ -708,6 +709,16 @@ def evaluate(self, eval_file, **judge_kwargs):
708709
dump(score, score_pth)
709710
return score
710711

712+
@classmethod
713+
def report_primary_metric(cls, metrics: dict | None) -> dict:
714+
if not isinstance(metrics, dict) or not metrics:
715+
return {}
716+
717+
value = metrics.get('Overall#acc')
718+
if is_number(value):
719+
return {'Overall Acc': to_number(value)}
720+
return super().report_primary_metric(metrics)
721+
711722
def doc_to_text_perception_comprehension(self, doc):
712723
post_prompt = self.PERCEPTION_AND_COMPREHENSION_PROMPT
713724
question = doc["question"]

0 commit comments

Comments
 (0)