def build_dataloader()

in utils/eval_utils.py [0:0]


def build_dataloader(db_cfg, split_cfg, fold, num_workers, distributed):
    import torch.utils.data as data
    from datasets import preprocessing
    if db_cfg['transform'] == 'msc+color':
        video_transform = preprocessing.VideoPrep_MSC_CJ(
            crop=(db_cfg['crop_size'], db_cfg['crop_size']),
            num_frames=int(db_cfg['video_fps'] * db_cfg['clip_duration']),
            pad_missing=True,
            augment=split_cfg['use_augmentation'],
            min_area=db_cfg['min_area'],
            color=db_cfg['color'],
        )
    elif db_cfg['transform'] == 'crop+color':
        video_transform = preprocessing.VideoPrep_Crop_CJ(
            crop=(db_cfg['crop_size'], db_cfg['crop_size']),
            num_frames=int(db_cfg['video_fps'] * db_cfg['clip_duration']),
            pad_missing=True,
            augment=split_cfg['use_augmentation'],
        )
    else:
        raise ValueError

    import datasets
    if db_cfg['name'] == 'ucf101':
        dataset = datasets.UCF
    elif db_cfg['name'] == 'hmdb51':
        dataset = datasets.HMDB
    elif db_cfg['name'] == 'kinetics':
        dataset = datasets.Kinetics
    else:
        raise ValueError('Unknown dataset')

    db = dataset(
        subset=split_cfg['split'].format(fold=fold),
        return_video=True,
        video_clip_duration=db_cfg['clip_duration'],
        video_fps=db_cfg['video_fps'],
        video_transform=video_transform,
        return_audio=False,
        return_labels=True,
        mode=split_cfg['mode'],
        clips_per_video=split_cfg['clips_per_video'],
    )

    if distributed:
        sampler = torch.utils.data.distributed.DistributedSampler(db)
    else:
        sampler = None

    drop_last = split_cfg['drop_last'] if 'drop_last' in split_cfg else True
    loader = data.DataLoader(
        db,
        batch_size=db_cfg['batch_size']  if split_cfg['mode'] == 'clip' else max(1, db_cfg['batch_size']//split_cfg['clips_per_video']),
        num_workers=num_workers,
        pin_memory=True,
        shuffle=(sampler is None) and split_cfg['use_shuffle'],
        sampler=sampler,
        drop_last=drop_last
    )
    return loader