2
2
import torch .distributed as dist
3
3
4
4
from vlmeval .config import supported_VLM
5
+ from vlmeval .dataset .video_dataset_config import supported_video_datasets
5
6
from vlmeval .dataset import build_dataset
6
7
from vlmeval .inference import infer_data_job
7
8
from vlmeval .inference_video import infer_data_job_video
@@ -26,16 +27,22 @@ def build_model_from_config(cfg, model_name):
26
27
raise ValueError (f'Class { cls_name } is not supported in `vlmeval.api` or `vlmeval.vlm`' )
27
28
28
29
29
- def build_dataset_from_config (cfg ):
30
+ def build_dataset_from_config (cfg , dataset_name ):
30
31
import vlmeval .dataset
31
32
import inspect
32
- config = cp .deepcopy (cfg )
33
+ config = cp .deepcopy (cfg [dataset_name ])
34
+ if config == {}:
35
+ return supported_video_datasets [dataset_name ]()
33
36
assert 'class' in config
34
37
cls_name = config .pop ('class' )
35
38
if hasattr (vlmeval .dataset , cls_name ):
36
39
cls = getattr (vlmeval .dataset , cls_name )
37
40
sig = inspect .signature (cls .__init__ )
38
41
valid_params = {k : v for k , v in config .items () if k in sig .parameters }
42
+ if valid_params .get ('fps' , 0 ) > 0 and valid_params .get ('nframe' , 0 ) > 0 :
43
+ raise ValueError ('fps and nframe should not be set at the same time' )
44
+ if valid_params .get ('fps' , 0 ) <= 0 and valid_params .get ('nframe' , 0 ) <= 0 :
45
+ raise ValueError ('fps and nframe should be set at least one valid value' )
39
46
return cls (** valid_params )
40
47
else :
41
48
raise ValueError (f'Class { cls_name } is not supported in `vlmeval.dataset`' )
@@ -190,20 +197,16 @@ def main():
190
197
if use_config :
191
198
if world_size > 1 :
192
199
if rank == 0 :
193
- dataset = build_dataset_from_config (cfg ['data' ][ dataset_name ] )
200
+ dataset = build_dataset_from_config (cfg ['data' ], dataset_name )
194
201
dist .barrier ()
195
- dataset = build_dataset_from_config (cfg ['data' ][ dataset_name ] )
202
+ dataset = build_dataset_from_config (cfg ['data' ], dataset_name )
196
203
if dataset is None :
197
204
logger .error (f'Dataset { dataset_name } is not valid, will be skipped. ' )
198
205
continue
199
206
else :
200
207
dataset_kwargs = {}
201
208
if dataset_name in ['MMLongBench_DOC' , 'DUDE' , 'DUDE_MINI' , 'SLIDEVQA' , 'SLIDEVQA_MINI' ]:
202
209
dataset_kwargs ['model' ] = model_name
203
- if dataset_name == 'MMBench-Video' :
204
- dataset_kwargs ['pack' ] = args .pack
205
- if dataset_name == 'Video-MME' :
206
- dataset_kwargs ['use_subtitle' ] = args .use_subtitle
207
210
208
211
# If distributed, first build the dataset on the main process for doing preparation works
209
212
if world_size > 1 :
@@ -215,29 +218,6 @@ def main():
215
218
if dataset is None :
216
219
logger .error (f'Dataset { dataset_name } is not valid, will be skipped. ' )
217
220
continue
218
- # Handling Video Datasets. For Video Dataset, set the fps for priority
219
- if args .fps > 0 :
220
- if dataset_name == 'MVBench' :
221
- raise ValueError ('MVBench does not support fps setting, please transfer to MVBench_MP4!' )
222
- args .nframe = 0
223
- if dataset_name in ['MMBench-Video' ]:
224
- packstr = 'pack' if args .pack else 'nopack'
225
- if args .nframe > 0 :
226
- result_file_base = f'{ model_name } _{ dataset_name } _{ args .nframe } frame_{ packstr } .xlsx'
227
- else :
228
- result_file_base = f'{ model_name } _{ dataset_name } _{ args .fps } fps_{ packstr } .xlsx'
229
- elif dataset .MODALITY == 'VIDEO' :
230
- if args .pack :
231
- logger .info (f'{ dataset_name } not support Pack Mode, directly change to unpack' )
232
- args .pack = False
233
- packstr = 'pack' if args .pack else 'nopack'
234
- if args .nframe > 0 :
235
- result_file_base = f'{ model_name } _{ dataset_name } _{ args .nframe } frame_{ packstr } .xlsx'
236
- else :
237
- result_file_base = f'{ model_name } _{ dataset_name } _{ args .fps } fps_{ packstr } .xlsx'
238
- if dataset_name in ['Video-MME' , 'LongVideoBench' ]:
239
- subtitlestr = 'subs' if args .use_subtitle else 'nosubs'
240
- result_file_base = result_file_base .replace ('.xlsx' , f'_{ subtitlestr } .xlsx' )
241
221
242
222
# Handling Multi-Turn Dataset
243
223
if dataset .TYPE == 'MT' :
0 commit comments