|
2 | 2 | import warnings |
3 | 3 |
|
4 | 4 | from vlmeval.smp import dump, get_intermediate_file_path, listinstr, load |
| 5 | +from vlmeval.smp.status_report import is_number, to_number |
5 | 6 | from vlmeval.utils import track_progress_rich |
6 | 7 | from .image_base import ImageBaseDataset |
7 | 8 | from .utils import DEBUG_MESSAGE, build_judge |
@@ -107,3 +108,39 @@ def evaluate(self, eval_file, **judge_kwargs): |
107 | 108 | score_tgt = get_intermediate_file_path(eval_file, '_score', 'csv') |
108 | 109 | dump(score, score_tgt) |
109 | 110 | 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) |
0 commit comments