(split, config)
| 197 | |
| 198 | |
| 199 | def build_dataset(split, config): |
| 200 | if config.DATA.TRANSFORM == 'build_transform': |
| 201 | transform = build_transform(split == 'train', config) |
| 202 | elif config.DATA.TRANSFORM == 'build_transform_for_linear_probe': |
| 203 | transform = build_transform_for_linear_probe(split == 'train', config) |
| 204 | else: |
| 205 | raise NotImplementedError |
| 206 | print(split, transform) |
| 207 | dataset = None |
| 208 | nb_classes = None |
| 209 | prefix = split |
| 210 | if config.DATA.DATASET == 'imagenet' or config.DATA.DATASET == 'imagenet-real': |
| 211 | if prefix == 'train' and not config.EVAL_MODE: |
| 212 | root = os.path.join(config.DATA.DATA_PATH, 'train') |
| 213 | dataset = ImageCephDataset(root, 'train', |
| 214 | transform=transform, |
| 215 | on_memory=config.DATA.IMG_ON_MEMORY) |
| 216 | elif prefix == 'val': |
| 217 | root = os.path.join(config.DATA.DATA_PATH, 'val') |
| 218 | dataset = ImageCephDataset(root, 'val', transform=transform) |
| 219 | nb_classes = 1000 |
| 220 | elif config.DATA.DATASET == 'imagenet22K': |
| 221 | if prefix == 'train': |
| 222 | if not config.EVAL_MODE: |
| 223 | root = config.DATA.DATA_PATH |
| 224 | dataset = ImageCephDataset(root, 'train', |
| 225 | transform=transform, |
| 226 | on_memory=config.DATA.IMG_ON_MEMORY) |
| 227 | nb_classes = 21841 |
| 228 | elif prefix == 'val': |
| 229 | root = os.path.join(config.DATA.DATA_PATH, 'val') |
| 230 | dataset = ImageCephDataset(root, 'val', transform=transform) |
| 231 | nb_classes = 1000 |
| 232 | elif config.DATA.DATASET == 'imagenetv2': |
| 233 | from .imagenetv2 import ImageNetV2Dataset |
| 234 | if prefix == 'train' and not config.EVAL_MODE: |
| 235 | print(f'Only test split available for {config.DATA.DATASET}') |
| 236 | else: |
| 237 | dataset = ImageNetV2Dataset(variant='matched-frequency', |
| 238 | transform=transform, |
| 239 | location=config.DATA.DATA_PATH) |
| 240 | nb_classes = 1000 |
| 241 | elif config.DATA.DATASET == 'imagenet_sketch': |
| 242 | if prefix == 'train' and not config.EVAL_MODE: |
| 243 | print(f'Only test split available for {config.DATA.DATASET}') |
| 244 | else: |
| 245 | dataset = ImageFolder(root=config.DATA.DATA_PATH, transform=transform) |
| 246 | nb_classes = 1000 |
| 247 | elif config.DATA.DATASET == 'imagenet_a': |
| 248 | if prefix == 'train' and not config.EVAL_MODE: |
| 249 | print(f'Only test split available for {config.DATA.DATASET}') |
| 250 | else: |
| 251 | dataset = ImageFolder(root=config.DATA.DATA_PATH, transform=transform) |
| 252 | nb_classes = 1000 # actual number of classes is 200 |
| 253 | elif config.DATA.DATASET == 'imagenet_r': |
| 254 | if prefix == 'train' and not config.EVAL_MODE: |
| 255 | print(f'Only test split available for {config.DATA.DATASET}') |
| 256 | else: |
no test coverage detected