# Copyright (c) OpenMMLab. All rights reserved.fromabcimportABCMetafromtypingimportCallable,List,Optional,Unionimporttorchfrommmengine.datasetimportBaseDatasetfrommmaction.utilsimportConfigType
[docs]classBaseActionDataset(BaseDataset,metaclass=ABCMeta):"""Base class for datasets. Args: ann_file (str): Path to the annotation file. pipeline (List[Union[dict, ConfigDict, Callable]]): A sequence of data transforms. data_prefix (dict or ConfigDict, optional): Path to a directory where videos are held. Defaults to None. test_mode (bool): Store True when building test or validation dataset. Defaults to False. multi_class (bool): Determines whether the dataset is a multi-class dataset. Defaults to False. num_classes (int, optional): Number of classes of the dataset, used in multi-class datasets. Defaults to None. start_index (int): Specify a start index for frames in consideration of different filename format. However, when taking videos as input, it should be set to 0, since frames loaded from videos count from 0. Defaults to 0. modality (str): Modality of data. Support ``RGB``, ``Flow``, ``Pose``, ``Audio``. Defaults to ``RGB``. """def__init__(self,ann_file:str,pipeline:List[Union[ConfigType,Callable]],data_prefix:Optional[ConfigType]=dict(prefix=''),test_mode:bool=False,multi_class:bool=False,num_classes:Optional[int]=None,start_index:int=0,modality:str='RGB',**kwargs)->None:self.multi_class=multi_classself.num_classes=num_classesself.start_index=start_indexself.modality=modalitysuper().__init__(ann_file,pipeline=pipeline,data_prefix=data_prefix,test_mode=test_mode,**kwargs)
[docs]defget_data_info(self,idx:int)->dict:"""Get annotation by index."""data_info=super().get_data_info(idx)data_info['modality']=self.modalitydata_info['start_index']=self.start_indexifself.multi_class:onehot=torch.zeros(self.num_classes)onehot[data_info['label']]=1.data_info['label']=onehotreturndata_info