(cfg)
| 77 | |
| 78 | |
| 79 | def build_train_loader(cfg): |
| 80 | num_workers = get_world_size() |
| 81 | images_per_batch = cfg.SOLVER.IMS_PER_BATCH |
| 82 | |
| 83 | assert ( |
| 84 | images_per_batch % num_workers == 0 |
| 85 | ), "SOLVER.IMS_PER_BATCH ({}) must be divisible by the number of workers ({}).".format( |
| 86 | images_per_batch, num_workers |
| 87 | ) |
| 88 | assert ( |
| 89 | images_per_batch >= num_workers |
| 90 | ), "SOLVER.IMS_PER_BATCH ({}) must be larger than the number of workers ({}).".format( |
| 91 | images_per_batch, num_workers |
| 92 | ) |
| 93 | images_per_worker = images_per_batch // num_workers |
| 94 | |
| 95 | dataset_dicts = get_train_data_dicts(cfg.VISDRONE.TRAIN_JSON, cfg.VISDRONE.TRING_IMG_ROOT) |
| 96 | dataset = DatasetFromList(dataset_dicts, copy=False) |
| 97 | mapper = Mapper(cfg, True) |
| 98 | dataset = MapDataset(dataset, mapper) |
| 99 | |
| 100 | sampler_name = cfg.DATALOADER.SAMPLER_TRAIN |
| 101 | logger = logging.getLogger(__name__) |
| 102 | logger.info("Using training sampler {}".format(sampler_name)) |
| 103 | |
| 104 | if sampler_name == "TrainingSampler": |
| 105 | sampler = samplers.TrainingSampler(len(dataset)) |
| 106 | elif sampler_name == "RepeatFactorTrainingSampler": |
| 107 | sampler = samplers.RepeatFactorTrainingSampler( |
| 108 | dataset_dicts, cfg.DATALOADER.REPEAT_THRESHOLD |
| 109 | ) |
| 110 | else: |
| 111 | raise ValueError("Unknown training sampler: {}".format(sampler_name)) |
| 112 | |
| 113 | batch_sampler = torch.utils.data.sampler.BatchSampler( |
| 114 | sampler, images_per_worker, drop_last=True |
| 115 | ) |
| 116 | # drop_last so the batch always have the same size |
| 117 | data_loader = torch.utils.data.DataLoader( |
| 118 | dataset, |
| 119 | num_workers=cfg.DATALOADER.NUM_WORKERS, |
| 120 | batch_sampler=batch_sampler, |
| 121 | collate_fn=trivial_batch_collator, |
| 122 | worker_init_fn=worker_init_reset_seed, |
| 123 | ) |
| 124 | return data_loader |
| 125 | |
| 126 | |
| 127 | def build_test_loader(cfg): |
no test coverage detected