def make_dataloader(cfg):
    
    train_transforms = T.Compose([
        T.Resize((256, 256)),
        T.RandomCrop((224, 224)),
        T.RandomHorizontalFlip(),
        T.ToTensor(),
        T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ])
    val_transforms = T.Compose([
        T.Resize((256, 256)),
        T.CenterCrop((224, 224)),
        T.ToTensor(),
        T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ])

    num_workers = cfg.DATALOADER.NUM_WORKERS
    dataset = __factory[cfg.DATASETS.NAMES](root_train=cfg.DATASETS.ROOT_TRAIN_DIR,root_val=cfg.DATASETS.ROOT_TEST_DIR, plus_num_id=cfg.DATASETS.PLUS_NUM_ID)
    train_set = ImageDataset(dataset.train, train_transforms)
    train_set1 = ImageDataset(dataset.train, val_transforms)
    
    train_set_normal = ImageDataset(dataset.train, val_transforms)
    img_num1 = len(dataset.train)
    

    if cfg.MODEL.UDA_STAGE == 'UDA':
        dataset2 = __factory[cfg.DATASETS.NAMES2](root_train=cfg.DATASETS.ROOT_TRAIN_DIR2,root_val=cfg.DATASETS.ROOT_TEST_DIR, plus_num_id=cfg.DATASETS.PLUS_NUM_ID)
        train_set2 = ImageDataset(dataset2.train, val_transforms)
        img_num2 = len(dataset2.train)
    
    num_classes = max(dataset.num_train_pids, dataset.num_test_pids)
    cam_num = dataset.num_train_cams
    view_num = dataset.num_train_vids
    
    if cfg.MODEL.DIST_TRAIN:
        print('DIST_TRAIN START')
        mini_batch_size = cfg.SOLVER.IMS_PER_BATCH // dist.get_world_size()
        data_sampler = RandomIdentitySampler_DDP(dataset.train, cfg.SOLVER.IMS_PER_BATCH, cfg.DATALOADER.NUM_INSTANCE)
        batch_sampler = torch.utils.data.sampler.BatchSampler(data_sampler, mini_batch_size, True)
        train_loader = torch.utils.data.DataLoader(
            train_set,
            num_workers=num_workers,
            batch_sampler=batch_sampler,
            collate_fn=train_collate_fn,
            pin_memory=True,
        )
    elif cfg.MODEL.UDA_STAGE == 'UDA':
        train_loader = DataLoader(
                train_set, batch_size=cfg.SOLVER.IMS_PER_BATCH,
                sampler=RandomIdentitySampler(dataset.train, cfg.SOLVER.IMS_PER_BATCH, cfg.DATALOADER.NUM_INSTANCE),
                num_workers=num_workers, collate_fn=train_collate_fn
            )
        train_loader1 = DataLoader(
            train_set1, batch_size=cfg.TEST.IMS_PER_BATCH,
            shuffle=False,
            num_workers=num_workers, collate_fn=train_collate_fn,
            persistent_workers=True, pin_memory=True,

        )
        train_loader2 = DataLoader(
            train_set2, batch_size=cfg.TEST.IMS_PER_BATCH,
            shuffle=False,
            num_workers=num_workers, collate_fn=train_collate_fn,
            pin_memory=True, persistent_workers=True,
        )
    else:
        print('use shuffle sampler strategy')
        train_loader = DataLoader(
        train_set, batch_size=cfg.SOLVER.IMS_PER_BATCH, shuffle=True, num_workers=num_workers,
        collate_fn=train_collate_fn
    )
        
    if cfg.DATASETS.QUERY_MINING:
        if cfg.MODEL.TASK_TYPE == 'classify_DA':
            val_set = ImageDataset(dataset.test, val_transforms)
        else:
            val_set = ImageDataset(dataset.query + dataset.query, val_transforms)
    else:
        if cfg.MODEL.TASK_TYPE == 'classify_DA':
            val_set = ImageDataset(dataset.test, val_transforms)
        else:
            val_set = ImageDataset(dataset.query + dataset.gallery, val_transforms)
            
    val_loader = DataLoader(
        val_set, batch_size=cfg.TEST.IMS_PER_BATCH, shuffle=False, num_workers=num_workers,
        collate_fn=val_collate_fn
    )
    train_loader_normal = DataLoader(
        train_set_normal, batch_size=cfg.TEST.IMS_PER_BATCH, shuffle=False, num_workers=num_workers,
        collate_fn=val_collate_fn
    )
    if cfg.MODEL.TASK_TYPE == 'classify_DA':
        if cfg.MODEL.UDA_STAGE == 'UDA':
            return train_loader, train_loader_normal, val_loader, None, num_classes, cam_num, view_num, train_loader1, train_loader2, img_num1, img_num2, dataset,dataset2
        else:
            return train_loader, train_loader_normal, val_loader, None, num_classes, cam_num, view_num
    else:
        return train_loader, train_loader_normal, val_loader, len(dataset.query), num_classes, cam_num, view_num

在该函数中， tran_set1 和train_set_normal的区别是什么