[Refactor] Support to use "split" to specify training set/validation set in the ImageNet dataset (#1535)
* [Feature]: Add caption * [Feature]: Update scienceqa * [CI] Add test mim CI. (#879) * refactor imagenet dataset * refactor imagenet dataset * refactor imagenet dataset * update imagenet21k * update configs * update mnist * update dataset_prepare.md * fix sun397 url and update user_guides/dataset_prepare.md * update dataset_prepare.md * fix sun397 dataset * fix sun397 * update chinese dataset_prepare.md * update dataset_prepare.md * [Refactor] update voc dataset * [Refactor] update voc dataset * refactor imagenet * refactor imagenet * use mmengine.fileio --------- Co-authored-by: liuyuan <3463423099@qq.com> Co-authored-by: Ma Zerun <mzr1996@163.com> Co-authored-by: Ezra-Yu <18586273+Ezra-Yu@users.noreply.github.com>pull/1609/head
parent
795607cfeb
commit
bc3c4a35ee
|
@ -16,38 +16,13 @@ train_pipeline = [
|
||||||
dict(type='PackInputs'),
|
dict(type='PackInputs'),
|
||||||
]
|
]
|
||||||
|
|
||||||
test_pipeline = [
|
|
||||||
dict(type='LoadImageFromFile'),
|
|
||||||
dict(type='ResizeEdge', scale=256, edge='short'),
|
|
||||||
dict(type='CenterCrop', crop_size=224),
|
|
||||||
dict(type='PackInputs'),
|
|
||||||
]
|
|
||||||
|
|
||||||
train_dataloader = dict(
|
train_dataloader = dict(
|
||||||
batch_size=128,
|
batch_size=128,
|
||||||
num_workers=5,
|
num_workers=5,
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet21k',
|
data_root='data/imagenet21k',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
|
||||||
val_dataloader = dict(
|
|
||||||
batch_size=128,
|
|
||||||
num_workers=5,
|
|
||||||
dataset=dict(
|
|
||||||
type=dataset_type,
|
|
||||||
data_root='data/imagenet21k',
|
|
||||||
ann_file='meta/val.txt',
|
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
|
||||||
)
|
|
||||||
val_evaluator = dict(type='Accuracy', topk=(1, 5))
|
|
||||||
|
|
||||||
# If you want standard test, please manually configure the test dataset
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
test_evaluator = val_evaluator
|
|
||||||
|
|
|
@ -44,8 +44,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -56,8 +55,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -59,8 +59,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
persistent_workers=True,
|
persistent_workers=True,
|
||||||
|
@ -72,8 +71,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
persistent_workers=True,
|
persistent_workers=True,
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,8 +38,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -50,8 +49,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,8 +38,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -50,8 +49,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,8 +38,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -50,8 +49,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -31,8 +31,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -43,8 +42,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -43,6 +43,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -57,9 +57,8 @@ train_dataloader = dict(
|
||||||
num_workers=4,
|
num_workers=4,
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=r'E:\imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='train',
|
||||||
data_prefix='ILSVRC2012_img_val',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -69,9 +68,8 @@ val_dataloader = dict(
|
||||||
num_workers=4,
|
num_workers=4,
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=r'E:\imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='ILSVRC2012_img_val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -50,8 +50,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -62,8 +61,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -50,8 +50,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -62,8 +61,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,6 +29,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -72,8 +71,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
)
|
)
|
||||||
val_evaluator = dict(type='Accuracy', topk=(1, 5))
|
val_evaluator = dict(type='Accuracy', topk=(1, 5))
|
||||||
|
|
|
@ -29,8 +29,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -41,8 +40,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -85,6 +85,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -54,6 +54,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -38,8 +38,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -50,8 +49,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,8 +29,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -41,8 +40,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -48,6 +48,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -28,6 +28,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -86,6 +86,5 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix=dict(img_path='train/'),
|
|
||||||
pipeline=train_pipeline))
|
pipeline=train_pipeline))
|
||||||
|
|
|
@ -29,8 +29,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -41,8 +40,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -37,8 +37,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -49,8 +48,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -55,18 +55,19 @@ data = dict(
|
||||||
workers_per_gpu=8,
|
workers_per_gpu=8,
|
||||||
train=dict(
|
train=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/train',
|
data_root='data/imagenet',
|
||||||
|
split='train',
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
val=dict(
|
val=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
test=dict(
|
test=dict(
|
||||||
# replace `data/val` with `data/test` for standard test
|
# replace `data/val` with `data/test` for standard test
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline))
|
pipeline=test_pipeline))
|
||||||
|
|
||||||
evaluation = dict(interval=10, metric='accuracy')
|
evaluation = dict(interval=10, metric='accuracy')
|
||||||
|
|
|
@ -55,18 +55,19 @@ data = dict(
|
||||||
workers_per_gpu=8,
|
workers_per_gpu=8,
|
||||||
train=dict(
|
train=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/train',
|
data_root='data/imagenet',
|
||||||
|
split='train',
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
val=dict(
|
val=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
test=dict(
|
test=dict(
|
||||||
# replace `data/val` with `data/test` for standard test
|
# replace `data/val` with `data/test` for standard test
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline))
|
pipeline=test_pipeline))
|
||||||
|
|
||||||
evaluation = dict(interval=10, metric='accuracy')
|
evaluation = dict(interval=10, metric='accuracy')
|
||||||
|
|
|
@ -56,18 +56,19 @@ data = dict(
|
||||||
workers_per_gpu=8,
|
workers_per_gpu=8,
|
||||||
train=dict(
|
train=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/train',
|
data_root='data/imagenet',
|
||||||
|
split='train',
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
val=dict(
|
val=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
test=dict(
|
test=dict(
|
||||||
# replace `data/val` with `data/test` for standard test
|
# replace `data/val` with `data/test` for standard test
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_prefix='data/imagenet/val',
|
data_root='data/imagenet',
|
||||||
ann_file='data/imagenet/meta/val.txt',
|
split='val',
|
||||||
pipeline=test_pipeline))
|
pipeline=test_pipeline))
|
||||||
|
|
||||||
evaluation = dict(interval=10, metric='accuracy')
|
evaluation = dict(interval=10, metric='accuracy')
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,8 +38,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -50,8 +49,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -30,8 +30,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -42,8 +41,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,8 +29,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -41,8 +40,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -46,8 +46,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -58,8 +57,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -32,8 +32,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -44,8 +43,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,8 +58,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -70,8 +69,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -37,8 +37,7 @@ train_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/train.txt',
|
split='train',
|
||||||
data_prefix='train',
|
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -49,8 +48,7 @@ val_dataloader = dict(
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/imagenet',
|
data_root='data/imagenet',
|
||||||
ann_file='meta/val.txt',
|
split='val',
|
||||||
data_prefix='val',
|
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
|
@ -22,7 +22,12 @@ test_pipeline = [
|
||||||
dict(type='LoadImageFromFile'),
|
dict(type='LoadImageFromFile'),
|
||||||
dict(type='ResizeEdge', scale=256, edge='short'),
|
dict(type='ResizeEdge', scale=256, edge='short'),
|
||||||
dict(type='CenterCrop', crop_size=224),
|
dict(type='CenterCrop', crop_size=224),
|
||||||
dict(type='PackInputs'),
|
dict(
|
||||||
|
type='PackInputs',
|
||||||
|
# `gt_label_difficult` is needed for VOC evaluation
|
||||||
|
meta_keys=('sample_idx', 'img_path', 'ori_shape', 'img_shape',
|
||||||
|
'scale_factor', 'flip', 'flip_direction',
|
||||||
|
'gt_label_difficult')),
|
||||||
]
|
]
|
||||||
|
|
||||||
train_dataloader = dict(
|
train_dataloader = dict(
|
||||||
|
@ -30,8 +35,8 @@ train_dataloader = dict(
|
||||||
num_workers=5,
|
num_workers=5,
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/VOCdevkit/VOC2007',
|
data_root='data/VOC2007',
|
||||||
image_set_path='ImageSets/Layout/val.txt',
|
split='trainval',
|
||||||
pipeline=train_pipeline),
|
pipeline=train_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=True),
|
sampler=dict(type='DefaultSampler', shuffle=True),
|
||||||
)
|
)
|
||||||
|
@ -41,22 +46,13 @@ val_dataloader = dict(
|
||||||
num_workers=5,
|
num_workers=5,
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type=dataset_type,
|
type=dataset_type,
|
||||||
data_root='data/VOCdevkit/VOC2007',
|
data_root='data/VOC2007',
|
||||||
image_set_path='ImageSets/Layout/val.txt',
|
split='test',
|
||||||
pipeline=test_pipeline),
|
pipeline=test_pipeline),
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
||||||
)
|
)
|
||||||
|
|
||||||
test_dataloader = dict(
|
test_dataloader = val_dataloader
|
||||||
batch_size=16,
|
|
||||||
num_workers=5,
|
|
||||||
dataset=dict(
|
|
||||||
type=dataset_type,
|
|
||||||
data_root='data/VOCdevkit/VOC2007',
|
|
||||||
image_set_path='ImageSets/Layout/val.txt',
|
|
||||||
pipeline=test_pipeline),
|
|
||||||
sampler=dict(type='DefaultSampler', shuffle=False),
|
|
||||||
)
|
|
||||||
|
|
||||||
# calculate precision_recall_f1 and mAP
|
# calculate precision_recall_f1 and mAP
|
||||||
val_evaluator = [
|
val_evaluator = [
|
||||||
|
@ -65,6 +61,5 @@ val_evaluator = [
|
||||||
dict(type='VOCAveragePrecision')
|
dict(type='VOCAveragePrecision')
|
||||||
]
|
]
|
||||||
|
|
||||||
# If you want standard test, please manually configure the test dataset
|
|
||||||
test_dataloader = val_dataloader
|
test_dataloader = val_dataloader
|
||||||
test_evaluator = val_evaluator
|
test_evaluator = val_evaluator
|
||||||
|
|
|
@ -145,16 +145,14 @@ ImageNet has multiple versions, but the most commonly used one is [ILSVRC 2012](
|
||||||
- ILSVRC2012_img_train.tar (~138GB)
|
- ILSVRC2012_img_train.tar (~138GB)
|
||||||
- ILSVRC2012_img_val.tar (~6.3GB)
|
- ILSVRC2012_img_val.tar (~6.3GB)
|
||||||
3. Untar the downloaded files
|
3. Untar the downloaded files
|
||||||
4. Re-organize the image files according the format convention of [CustomDataset](#CustomDataset)
|
|
||||||
|
|
||||||
```{note}
|
### The Directory Structrue of the ImageNet dataset
|
||||||
In MMPretrain, we use the text annotation file format ImageNet in all provided config files. Therefore, to use
|
|
||||||
the subfolder format, you please set `ann_file=''` in these config files.
|
|
||||||
```
|
|
||||||
|
|
||||||
### Subfolder Format
|
We support two ways of organizing the ImageNet dataset: Subfolder Format and Text Annotation File Format.
|
||||||
|
|
||||||
Re-organize the dataset as below:
|
#### Subfolder Format
|
||||||
|
|
||||||
|
We have provided a sample, which you can download and extract from this [link](https://download.openmmlab.com/mmpretrain/datasets/imagenet_1k.zip). The directory structure of the dataset should be as below:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
data/imagenet/
|
data/imagenet/
|
||||||
|
@ -177,37 +175,7 @@ data/imagenet/
|
||||||
│ ├── ...
|
│ ├── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
And then, you can use the [`ImageNet`](mmpretrain.datasets.ImageNet) dataset with the below configurations:
|
#### Text Annotation File Format
|
||||||
|
|
||||||
```python
|
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Training dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='ImageNet',
|
|
||||||
data_root='data/imagenet',
|
|
||||||
data_prefix='train',
|
|
||||||
ann_file='',
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Validation dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='ImageNet',
|
|
||||||
data_root='data/imagenet',
|
|
||||||
data_prefix='val',
|
|
||||||
ann_file='',
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
### Text Annotation File Format
|
|
||||||
|
|
||||||
You can download and untar the meta data from this [link](https://download.openmmlab.com/mmclassification/datasets/imagenet/meta/caffe_ilsvrc12.tar.gz). And re-organize the dataset as below:
|
You can download and untar the meta data from this [link](https://download.openmmlab.com/mmclassification/datasets/imagenet/meta/caffe_ilsvrc12.tar.gz). And re-organize the dataset as below:
|
||||||
|
|
||||||
|
@ -235,7 +203,9 @@ data/imagenet/
|
||||||
│ ├── ...
|
│ ├── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
And then, you can use the [`ImageNet`](mmpretrain.datasets.ImageNet) dataset with the below configurations:
|
### Configuration
|
||||||
|
|
||||||
|
Once your dataset is organized in the way described above, you can use the [`ImageNet`](mmpretrain.datasets.ImageNet) dataset with the below configurations:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
train_dataloader = dict(
|
train_dataloader = dict(
|
||||||
|
@ -243,9 +213,8 @@ train_dataloader = dict(
|
||||||
# Training dataset configurations
|
# Training dataset configurations
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type='ImageNet',
|
type='ImageNet',
|
||||||
data_root='imagenet_folder',
|
data_root='data/imagenet',
|
||||||
data_prefix='train/',
|
split='train',
|
||||||
ann_file='meta/train.txt',
|
|
||||||
pipeline=...,
|
pipeline=...,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -255,9 +224,8 @@ val_dataloader = dict(
|
||||||
# Validation dataset configurations
|
# Validation dataset configurations
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type='ImageNet',
|
type='ImageNet',
|
||||||
data_root='imagenet_folder',
|
data_root='data/imagenet',
|
||||||
data_prefix='val/',
|
split='val',
|
||||||
ann_file='meta/val.txt',
|
|
||||||
pipeline=...,
|
pipeline=...,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -265,69 +233,27 @@ val_dataloader = dict(
|
||||||
test_dataloader = val_dataloader
|
test_dataloader = val_dataloader
|
||||||
```
|
```
|
||||||
|
|
||||||
## CIFAR
|
## Supported Image Classification Datasets
|
||||||
|
|
||||||
We support downloading the [`CIFAR10`](mmpretrain.datasets.CIFAR10) and [`CIFAR100`](mmpretrain.datasets.CIFAR100) datasets automatically, and you just need to specify the
|
| Datasets | split | HomePage |
|
||||||
download folder in the `data_root` field. And please specify `test_mode=False` / `test_mode=True`
|
| ---------------------------------------------------------------------------------- | :---------------------------------- | ----------------------------------------------------------------------------------- |
|
||||||
to use training datasets or test datasets.
|
| [`Calthch101`](mmpretrain.datasets.Caltech101)(data_root[, split, pipeline, ...]) | ["train", "test"] | [Caltech 101](https://data.caltech.edu/records/mzrjq-6wc02) Dataset. |
|
||||||
|
| [`CIFAR10`](mmpretrain.datasets.CIFAR10)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CIFAR10](https://www.cs.toronto.edu/~kriz/cifar.html) Dataset. |
|
||||||
|
| [`CIFAR100`](mmpretrain.datasets.CIFAR100)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CIFAR100](https://www.cs.toronto.edu/~kriz/cifar.html) Dataset. |
|
||||||
|
| [`CUB`](mmpretrain.datasets.CUB)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CUB-200-2011](http://www.vision.caltech.edu/datasets/cub_200_2011/) Dataset. |
|
||||||
|
| [`DTD`](mmpretrain.datasets.DTD)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Describable Texture Dataset (DTD)](https://www.robots.ox.ac.uk/~vgg/data/dtd/) Dataset. |
|
||||||
|
| [`FashionMNIST`](mmpretrain.datasets.FashionMNIST) (data_root[, split, pipeline, ...]) | ["train", "test"] | [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist) Dataset. |
|
||||||
|
| [`FGVCAircraft`](mmpretrain.datasets.FGVCAircraft)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [FGVC Aircraft](https://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/) Dataset. |
|
||||||
|
| [`Flowers102`](mmpretrain.datasets.Flowers102)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Oxford 102 Flower](https://www.robots.ox.ac.uk/~vgg/data/flowers/102/) Dataset. |
|
||||||
|
| [`Food101`](mmpretrain.datasets.Food101)(data_root[, split, pipeline, ...]) | ["train", "test"] | [Food101](https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/) Dataset. |
|
||||||
|
| [`MNIST`](mmpretrain.datasets.MNIST) (data_root[, split, pipeline, ...]) | ["train", "test"] | [MNIST](http://yann.lecun.com/exdb/mnist/) Dataset. |
|
||||||
|
| [`OxfordIIITPet`](mmpretrain.datasets.OxfordIIITPet)(data_root[, split, pipeline, ...]) | ["tranval", test"] | [Oxford-IIIT Pets](https://www.robots.ox.ac.uk/~vgg/data/pets/) Dataset. |
|
||||||
|
| [`Places205`](mmpretrain.datasets.Places205)(data_root[, pipeline, ...]) | - | [Places205](http://places.csail.mit.edu/downloadData.html) Dataset. |
|
||||||
|
| [`StanfordCars`](mmpretrain.datasets.StanfordCars)(data_root[, split, pipeline, ...]) | ["train", "test"] | [Stanford Cars](https://ai.stanford.edu/~jkrause/cars/car_dataset.html) Dataset. |
|
||||||
|
| [`SUN397`](mmpretrain.datasets.SUN397)(data_root[, split, pipeline, ...]) | ["train", "test"] | [SUN397](https://vision.princeton.edu/projects/2010/SUN/) Dataset. |
|
||||||
|
| [`VOC`](mmpretrain.datasets.VOC)(data_root[, image_set_path, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) Dataset. |
|
||||||
|
|
||||||
```python
|
Some dataset homepage links may be unavailable, and you can download datasets through [OpenDataLab](https://opendatalab.com/), such as [Stanford Cars](https://opendatalab.com/Stanford_Cars/download).
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Training dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='CIFAR10',
|
|
||||||
data_root='data/cifar10',
|
|
||||||
test_mode=False,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Validation dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='CIFAR10',
|
|
||||||
data_root='data/cifar10',
|
|
||||||
test_mode=True,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
## MNIST
|
|
||||||
|
|
||||||
We support downloading the [MNIST](mmpretrain.datasets.MNIST) and [Fashion-MNIST](mmpretrain.datasets.FashionMNIST) datasets automatically, and you just need to specify the
|
|
||||||
download folder in the `data_root` field. And please specify `test_mode=False` / `test_mode=True`
|
|
||||||
to use training datasets or test datasets.
|
|
||||||
|
|
||||||
```python
|
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Training dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='MNIST',
|
|
||||||
data_root='data/mnist',
|
|
||||||
test_mode=False,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# Validation dataset configurations
|
|
||||||
dataset=dict(
|
|
||||||
type='MNIST',
|
|
||||||
data_root='data/mnist',
|
|
||||||
test_mode=True,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
## OpenMMLab 2.0 Standard Dataset
|
## OpenMMLab 2.0 Standard Dataset
|
||||||
|
|
||||||
|
|
|
@ -143,15 +143,14 @@ ImageNet 有多个版本,但最常用的一个是 [ILSVRC 2012](http://www.ima
|
||||||
- ILSVRC2012_img_train.tar (~138GB)
|
- ILSVRC2012_img_train.tar (~138GB)
|
||||||
- ILSVRC2012_img_val.tar (~6.3GB)
|
- ILSVRC2012_img_val.tar (~6.3GB)
|
||||||
3. 解压已下载的图片。
|
3. 解压已下载的图片。
|
||||||
4. 根据 [CustomDataset](#CustomDataset) 的格式约定重新组织图像文件
|
|
||||||
|
|
||||||
```{note}
|
### ImageNet数据集目录结构
|
||||||
在 MMPretrain 中,所有配置文件默认使用文本标注文件的数据集。因此,如果希望使用子文件夹格式,请在配置文件中设置 `ann_file=''`。
|
|
||||||
```
|
|
||||||
|
|
||||||
### 子文件夹格式
|
我们支持两种方式组织ImageNet数据集,子目录格式和文本注释文件格式。
|
||||||
|
|
||||||
重新组织数据集如下:
|
#### 子文件夹格式
|
||||||
|
|
||||||
|
我们提供了一个样例,您可以从这个[链接](https://download.openmmlab.com/mmpretrain/datasets/imagenet_1k.zip)下载和解压。数据集的目录结构应如下所示:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
data/imagenet/
|
data/imagenet/
|
||||||
|
@ -174,37 +173,7 @@ data/imagenet/
|
||||||
│ ├── ...
|
│ ├── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
然后,您可以使用具有以下配置的 [`ImageNet`](mmpretrain.datasets.ImageNet) 数据集:
|
#### 文本标注文件格式
|
||||||
|
|
||||||
```python
|
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 训练数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='ImageNet',
|
|
||||||
data_root='data/imagenet',
|
|
||||||
data_prefix='train',
|
|
||||||
ann_file='',
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 验证数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='ImageNet',
|
|
||||||
data_root='data/imagenet',
|
|
||||||
data_prefix='val',
|
|
||||||
ann_file='',
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
### 文本标注文件格式
|
|
||||||
|
|
||||||
您可以从[此链接](https://download.openmmlab.com/mmclassification/datasets/imagenet/meta/caffe_ilsvrc12.tar.gz)下载并解压元数据,然后组织文件夹如下:
|
您可以从[此链接](https://download.openmmlab.com/mmclassification/datasets/imagenet/meta/caffe_ilsvrc12.tar.gz)下载并解压元数据,然后组织文件夹如下:
|
||||||
|
|
||||||
|
@ -232,7 +201,9 @@ data/imagenet/
|
||||||
│ ├── ...
|
│ ├── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
然后,您可以使用具有以下配置的 [`ImageNet`](mmpretrain.datasets.ImageNet) 数据集:
|
### 配置
|
||||||
|
|
||||||
|
当您的数据集以上述方式组织时,您可以使用具有以下配置的 [`ImageNet`](mmpretrain.datasets.ImageNet) 数据集:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
train_dataloader = dict(
|
train_dataloader = dict(
|
||||||
|
@ -240,9 +211,8 @@ train_dataloader = dict(
|
||||||
# 训练数据集配置
|
# 训练数据集配置
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type='ImageNet',
|
type='ImageNet',
|
||||||
data_root='imagenet_folder',
|
data_root='data/imagenet/',
|
||||||
data_prefix='train/',
|
split='train',
|
||||||
ann_file='meta/train.txt',
|
|
||||||
pipeline=...,
|
pipeline=...,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -252,9 +222,8 @@ val_dataloader = dict(
|
||||||
# 验证数据集配置
|
# 验证数据集配置
|
||||||
dataset=dict(
|
dataset=dict(
|
||||||
type='ImageNet',
|
type='ImageNet',
|
||||||
data_root='imagenet_folder',
|
data_root='data/imagenet/',
|
||||||
data_prefix='val/',
|
split='val',
|
||||||
ann_file='meta/val.txt',
|
|
||||||
pipeline=...,
|
pipeline=...,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -262,61 +231,27 @@ val_dataloader = dict(
|
||||||
test_dataloader = val_dataloader
|
test_dataloader = val_dataloader
|
||||||
```
|
```
|
||||||
|
|
||||||
## CIFAR
|
## 支持的图像分类数据集
|
||||||
|
|
||||||
我们支持自动下载 [`CIFAR10`](mmpretrain.datasets.CIFAR10) 和 [`CIFAR100`](mmpretrain.datasets.CIFAR100) 数据集,您只需在 `data_root` 字段中指定下载文件夹即可。 并且通过指定 `test_mode=False` / `test_mode=True` 来使用训练数据集或测试数据集。
|
| 数据集 | split | 主页 |
|
||||||
|
| ----------------------------------------------------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------- |
|
||||||
|
| [`Calthch101`](mmpretrain.datasets.Caltech101)(data_root[, split, pipeline, ...]) | ["train", "test"] | [Caltech 101](https://data.caltech.edu/records/mzrjq-6wc02) 数据集 |
|
||||||
|
| [`CIFAR10`](mmpretrain.datasets.CIFAR10)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CIFAR10](https://www.cs.toronto.edu/~kriz/cifar.html) 数据集 |
|
||||||
|
| [`CIFAR100`](mmpretrain.datasets.CIFAR100)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CIFAR100](https://www.cs.toronto.edu/~kriz/cifar.html) 数据集 |
|
||||||
|
| [`CUB`](mmpretrain.datasets.CUB)(data_root[, split, pipeline, ...]) | ["train", "test"] | [CUB-200-2011](http://www.vision.caltech.edu/datasets/cub_200_2011/) 数据集 |
|
||||||
|
| [`DTD`](mmpretrain.datasets.DTD)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Describable Texture Dataset (DTD)](https://www.robots.ox.ac.uk/~vgg/data/dtd/) 数据集 |
|
||||||
|
| [`FashionMNIST`](mmpretrain.datasets.FashionMNIST) (data_root[, split, pipeline, ...]) | ["train", "test"] | [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist) 数据集 |
|
||||||
|
| [`FGVCAircraft`](mmpretrain.datasets.FGVCAircraft)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [FGVC Aircraft](https://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/) 数据集 |
|
||||||
|
| [`Flowers102`](mmpretrain.datasets.Flowers102)(data_root[, split, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Oxford 102 Flower](https://www.robots.ox.ac.uk/~vgg/data/flowers/102/) 数据集 |
|
||||||
|
| [`Food101`](mmpretrain.datasets.Food101)(data_root[, split, pipeline, ...]) | ["train", "test"] | [Food101](https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/) 数据集 |
|
||||||
|
| [`MNIST`](mmpretrain.datasets.MNIST) (data_root[, split, pipeline, ...]) | ["train", "test"] | [MNIST](http://yann.lecun.com/exdb/mnist/) 数据集 |
|
||||||
|
| [`OxfordIIITPet`](mmpretrain.datasets.OxfordIIITPet)(data_root[, split, pipeline, ...]) | ["tranval", test"] | [Oxford-IIIT Pets](https://www.robots.ox.ac.uk/~vgg/data/pets/) 数据集 |
|
||||||
|
| [`Places205`](mmpretrain.datasets.Places205)(data_root[, pipeline, ...]) | - | [Places205](http://places.csail.mit.edu/downloadData.html) 数据集 |
|
||||||
|
| [`StanfordCars`](mmpretrain.datasets.StanfordCars)(data_root[, split, pipeline, ...]) | ["train", "test"] | [StanfordCars](https://ai.stanford.edu/~jkrause/cars/car_dataset.html) 数据集 |
|
||||||
|
| [`SUN397`](mmpretrain.datasets.SUN397)(data_root[, split, pipeline, ...]) | ["train", "test"] | [SUN397](https://vision.princeton.edu/projects/2010/SUN/) 数据集 |
|
||||||
|
| [`VOC`](mmpretrain.datasets.VOC)(data_root[, image_set_path, pipeline, ...]) | ["train", "val", "tranval", "test"] | [Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 数据集 |
|
||||||
|
|
||||||
```python
|
有些数据集主页链接可能已经失效,您可以通过[OpenDataLab](https://opendatalab.com/)下载数据集,例如 [Stanford Cars](https://opendatalab.com/Stanford_Cars/download)数据集。
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 训练数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='CIFAR10',
|
|
||||||
data_root='data/cifar10',
|
|
||||||
test_mode=False,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 验证数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='CIFAR10',
|
|
||||||
data_root='data/cifar10',
|
|
||||||
test_mode=True,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
## MNIST
|
|
||||||
|
|
||||||
我们支持自动下载 [MNIST](mmpretrain.datasets.MNIST) 和 [Fashion-MNIST](mmpretrain.datasets.FashionMNIST) 数据集,您只需指定 `data_root` 字段中的下载路径即可。 并且通过指定 `test_mode=False` / `test_mode=True` 来使用训练数据集或测试数据集。
|
|
||||||
|
|
||||||
```python
|
|
||||||
train_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 训练数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='MNIST',
|
|
||||||
data_root='data/mnist',
|
|
||||||
test_mode=False,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
val_dataloader = dict(
|
|
||||||
...
|
|
||||||
# 验证数据集配置
|
|
||||||
dataset=dict(
|
|
||||||
type='MNIST',
|
|
||||||
data_root='data/mnist',
|
|
||||||
test_mode=True,
|
|
||||||
pipeline=...,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
test_dataloader = val_dataloader
|
|
||||||
```
|
|
||||||
|
|
||||||
## OpenMMLab 2.0 标准数据集
|
## OpenMMLab 2.0 标准数据集
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Copyright (c) OpenMMLab. All rights reserved.
|
# Copyright (c) OpenMMLab. All rights reserved.
|
||||||
from typing import Optional, Union
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
|
from mmengine import fileio
|
||||||
from mmengine.logging import MMLogger
|
from mmengine.logging import MMLogger
|
||||||
|
|
||||||
from mmpretrain.registry import DATASETS
|
from mmpretrain.registry import DATASETS
|
||||||
|
@ -12,18 +13,79 @@ from .custom import CustomDataset
|
||||||
class ImageNet(CustomDataset):
|
class ImageNet(CustomDataset):
|
||||||
"""`ImageNet <http://www.image-net.org>`_ Dataset.
|
"""`ImageNet <http://www.image-net.org>`_ Dataset.
|
||||||
|
|
||||||
The dataset supports two kinds of annotation format. More details can be
|
The dataset supports two kinds of directory format,
|
||||||
found in :class:`CustomDataset`.
|
|
||||||
|
::
|
||||||
|
|
||||||
|
imagenet
|
||||||
|
├── train
|
||||||
|
│ ├──class_x
|
||||||
|
| | ├── x1.jpg
|
||||||
|
| | ├── x2.jpg
|
||||||
|
| | └── ...
|
||||||
|
│ ├── class_y
|
||||||
|
| | ├── y1.jpg
|
||||||
|
| | ├── y2.jpg
|
||||||
|
| | └── ...
|
||||||
|
| └── ...
|
||||||
|
├── val
|
||||||
|
│ ├──class_x
|
||||||
|
| | └── ...
|
||||||
|
│ ├── class_y
|
||||||
|
| | └── ...
|
||||||
|
| └── ...
|
||||||
|
└── test
|
||||||
|
├── test1.jpg
|
||||||
|
├── test2.jpg
|
||||||
|
└── ...
|
||||||
|
|
||||||
|
or ::
|
||||||
|
|
||||||
|
imagenet
|
||||||
|
├── train
|
||||||
|
│ ├── x1.jpg
|
||||||
|
│ ├── y1.jpg
|
||||||
|
│ └── ...
|
||||||
|
├── val
|
||||||
|
│ ├── x3.jpg
|
||||||
|
│ ├── y3.jpg
|
||||||
|
│ └── ...
|
||||||
|
├── test
|
||||||
|
│ ├── test1.jpg
|
||||||
|
│ ├── test2.jpg
|
||||||
|
│ └── ...
|
||||||
|
└── meta
|
||||||
|
├── train.txt
|
||||||
|
└── val.txt
|
||||||
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data_root (str): The root directory for ``data_prefix`` and
|
data_root (str): The root directory for ``data_prefix`` and
|
||||||
``ann_file``. Defaults to ''.
|
``ann_file``. Defaults to ''.
|
||||||
|
split (str): The dataset split, supports "train", "val" and "test".
|
||||||
|
Default to ''.
|
||||||
data_prefix (str | dict): Prefix for training data. Defaults to ''.
|
data_prefix (str | dict): Prefix for training data. Defaults to ''.
|
||||||
ann_file (str): Annotation file path. Defaults to ''.
|
ann_file (str): Annotation file path. Defaults to ''.
|
||||||
metainfo (dict, optional): Meta information for dataset, such as class
|
metainfo (dict, optional): Meta information for dataset, such as class
|
||||||
information. Defaults to None.
|
information. Defaults to None.
|
||||||
**kwargs: Other keyword arguments in :class:`CustomDataset` and
|
**kwargs: Other keyword arguments in :class:`CustomDataset` and
|
||||||
:class:`BaseDataset`.
|
:class:`BaseDataset`.
|
||||||
|
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
>>> from mmpretrain.datasets import ImageNet
|
||||||
|
>>> train_dataset = ImageNet(data_root='data/imagenet', split='train')
|
||||||
|
>>> train_dataset
|
||||||
|
Dataset ImageNet
|
||||||
|
Number of samples: 1281167
|
||||||
|
Number of categories: 1000
|
||||||
|
Root of dataset: data/imagenet
|
||||||
|
>>> test_dataset = ImageNet(data_root='data/imagenet', split='val')
|
||||||
|
>>> test_dataset
|
||||||
|
Dataset ImageNet
|
||||||
|
Number of samples: 50000
|
||||||
|
Number of categories: 1000
|
||||||
|
Root of dataset: data/imagenet
|
||||||
""" # noqa: E501
|
""" # noqa: E501
|
||||||
|
|
||||||
IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif')
|
IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif')
|
||||||
|
@ -31,11 +93,32 @@ class ImageNet(CustomDataset):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
data_root: str = '',
|
data_root: str = '',
|
||||||
|
split: str = '',
|
||||||
data_prefix: Union[str, dict] = '',
|
data_prefix: Union[str, dict] = '',
|
||||||
ann_file: str = '',
|
ann_file: str = '',
|
||||||
metainfo: Optional[dict] = None,
|
metainfo: Optional[dict] = None,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
kwargs = {'extensions': self.IMG_EXTENSIONS, **kwargs}
|
kwargs = {'extensions': self.IMG_EXTENSIONS, **kwargs}
|
||||||
|
|
||||||
|
if split:
|
||||||
|
splits = ['train', 'val', 'test']
|
||||||
|
assert split in splits, \
|
||||||
|
f"The split must be one of {splits}, but get '{split}'"
|
||||||
|
|
||||||
|
if split == 'test':
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
logger.info(
|
||||||
|
'Since the ImageNet1k test set does not provide label'
|
||||||
|
'annotations, `with_label` is set to False')
|
||||||
|
kwargs['with_label'] = False
|
||||||
|
|
||||||
|
data_prefix = split if data_prefix == '' else data_prefix
|
||||||
|
|
||||||
|
if ann_file == '':
|
||||||
|
_ann_path = fileio.join_path(data_root, 'meta', f'{split}.txt')
|
||||||
|
if fileio.exists(_ann_path):
|
||||||
|
ann_file = _ann_path
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
data_root=data_root,
|
data_root=data_root,
|
||||||
data_prefix=data_prefix,
|
data_prefix=data_prefix,
|
||||||
|
@ -43,14 +126,39 @@ class ImageNet(CustomDataset):
|
||||||
metainfo=metainfo,
|
metainfo=metainfo,
|
||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
|
def extra_repr(self) -> List[str]:
|
||||||
|
"""The extra repr information of the dataset."""
|
||||||
|
body = [
|
||||||
|
f'Root of dataset: \t{self.data_root}',
|
||||||
|
]
|
||||||
|
return body
|
||||||
|
|
||||||
|
|
||||||
@DATASETS.register_module()
|
@DATASETS.register_module()
|
||||||
class ImageNet21k(CustomDataset):
|
class ImageNet21k(CustomDataset):
|
||||||
"""ImageNet21k Dataset.
|
"""ImageNet21k Dataset.
|
||||||
|
|
||||||
Since the dataset ImageNet21k is extremely big, cantains 21k+ classes
|
Since the dataset ImageNet21k is extremely big, contains 21k+ classes
|
||||||
and 1.4B files. We won't provide the default categories list. Please
|
and 1.4B files. We won't provide the default categories list. Please
|
||||||
specify it from the ``classes`` argument.
|
specify it from the ``classes`` argument.
|
||||||
|
The dataset directory structure is as follows,
|
||||||
|
|
||||||
|
ImageNet21k dataset directory ::
|
||||||
|
|
||||||
|
imagenet21k
|
||||||
|
├── train
|
||||||
|
│ ├──class_x
|
||||||
|
| | ├── x1.jpg
|
||||||
|
| | ├── x2.jpg
|
||||||
|
| | └── ...
|
||||||
|
│ ├── class_y
|
||||||
|
| | ├── y1.jpg
|
||||||
|
| | ├── y2.jpg
|
||||||
|
| | └── ...
|
||||||
|
| └── ...
|
||||||
|
└── meta
|
||||||
|
└── train.txt
|
||||||
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data_root (str): The root directory for ``data_prefix`` and
|
data_root (str): The root directory for ``data_prefix`` and
|
||||||
|
@ -63,12 +171,22 @@ class ImageNet21k(CustomDataset):
|
||||||
Defaults to False.
|
Defaults to False.
|
||||||
**kwargs: Other keyword arguments in :class:`CustomDataset` and
|
**kwargs: Other keyword arguments in :class:`CustomDataset` and
|
||||||
:class:`BaseDataset`.
|
:class:`BaseDataset`.
|
||||||
"""
|
|
||||||
|
Examples:
|
||||||
|
>>> from mmpretrain.datasets import ImageNet21k
|
||||||
|
>>> train_dataset = ImageNet21k(data_root='data/imagenet21k', split='train')
|
||||||
|
>>> train_dataset
|
||||||
|
Dataset ImageNet21k
|
||||||
|
Number of samples: 14197088
|
||||||
|
Annotation file: data/imagenet21k/meta/train.txt
|
||||||
|
Prefix of images: data/imagenet21k/train
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif')
|
IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif')
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
data_root: str = '',
|
data_root: str = '',
|
||||||
|
split: str = '',
|
||||||
data_prefix: Union[str, dict] = '',
|
data_prefix: Union[str, dict] = '',
|
||||||
ann_file: str = '',
|
ann_file: str = '',
|
||||||
metainfo: Optional[dict] = None,
|
metainfo: Optional[dict] = None,
|
||||||
|
@ -79,6 +197,21 @@ class ImageNet21k(CustomDataset):
|
||||||
'The `multi_label` option is not supported by now.')
|
'The `multi_label` option is not supported by now.')
|
||||||
self.multi_label = multi_label
|
self.multi_label = multi_label
|
||||||
|
|
||||||
|
if split:
|
||||||
|
splits = ['train']
|
||||||
|
assert split in splits, \
|
||||||
|
f"The split must be one of {splits}, but get '{split}'.\
|
||||||
|
If you want to specify your own validation set or test set,\
|
||||||
|
please set split to None."
|
||||||
|
|
||||||
|
self.split = split
|
||||||
|
data_prefix = split if data_prefix == '' else data_prefix
|
||||||
|
|
||||||
|
if not ann_file:
|
||||||
|
_ann_path = fileio.join_path(data_root, 'meta', f'{split}.txt')
|
||||||
|
if fileio.exists(_ann_path):
|
||||||
|
ann_file = _ann_path
|
||||||
|
|
||||||
logger = MMLogger.get_current_instance()
|
logger = MMLogger.get_current_instance()
|
||||||
|
|
||||||
if not ann_file:
|
if not ann_file:
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mmengine.dist as dist
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
from mmengine.fileio import LocalBackend, exists, get_file_backend, join_path
|
from mmengine.fileio import LocalBackend, exists, get_file_backend, join_path
|
||||||
|
from mmengine.logging import MMLogger
|
||||||
|
|
||||||
from mmpretrain.registry import DATASETS
|
from mmpretrain.registry import DATASETS
|
||||||
from .base_dataset import BaseDataset
|
from .base_dataset import BaseDataset
|
||||||
|
@ -23,13 +24,11 @@ class MNIST(BaseDataset):
|
||||||
https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py
|
https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data_prefix (str): Prefix for data.
|
data_root (str): The root directory of the MNIST Dataset.
|
||||||
test_mode (bool): ``test_mode=True`` means in test phase.
|
split (str, optional): The dataset split, supports "train" and "test".
|
||||||
It determines to use the training set or test set.
|
Default to "train".
|
||||||
metainfo (dict, optional): Meta information for dataset, such as
|
metainfo (dict, optional): Meta information for dataset, such as
|
||||||
categories information. Defaults to None.
|
categories information. Defaults to None.
|
||||||
data_root (str): The root directory for ``data_prefix``.
|
|
||||||
Defaults to ''.
|
|
||||||
download (bool): Whether to download the dataset if not exists.
|
download (bool): Whether to download the dataset if not exists.
|
||||||
Defaults to True.
|
Defaults to True.
|
||||||
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
||||||
|
@ -49,12 +48,29 @@ class MNIST(BaseDataset):
|
||||||
METAINFO = {'classes': MNIST_CATEGORITES}
|
METAINFO = {'classes': MNIST_CATEGORITES}
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
data_prefix: str,
|
|
||||||
test_mode: bool,
|
|
||||||
metainfo: Optional[dict] = None,
|
|
||||||
data_root: str = '',
|
data_root: str = '',
|
||||||
|
split: str = 'train',
|
||||||
|
metainfo: Optional[dict] = None,
|
||||||
download: bool = True,
|
download: bool = True,
|
||||||
|
data_prefix: str = '',
|
||||||
|
test_mode: bool = False,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
|
|
||||||
|
splits = ['train', 'test']
|
||||||
|
assert split in splits, \
|
||||||
|
f"The split must be one of {splits}, but get '{split}'"
|
||||||
|
self.split = split
|
||||||
|
|
||||||
|
# To handle the BC-breaking
|
||||||
|
if split == 'train' and test_mode:
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
logger.warning('split="train" but test_mode=True. '
|
||||||
|
'The training set will be used.')
|
||||||
|
|
||||||
|
if not data_root and not data_prefix:
|
||||||
|
raise RuntimeError('Please set ``data_root`` to'
|
||||||
|
'specify the dataset path')
|
||||||
|
|
||||||
self.download = download
|
self.download = download
|
||||||
super().__init__(
|
super().__init__(
|
||||||
# The MNIST dataset doesn't need specify annotation file
|
# The MNIST dataset doesn't need specify annotation file
|
||||||
|
@ -138,13 +154,11 @@ class FashionMNIST(MNIST):
|
||||||
Dataset.
|
Dataset.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data_prefix (str): Prefix for data.
|
data_root (str): The root directory of the MNIST Dataset.
|
||||||
test_mode (bool): ``test_mode=True`` means in test phase.
|
split (str, optional): The dataset split, supports "train" and "test".
|
||||||
It determines to use the training set or test set.
|
Default to "train".
|
||||||
metainfo (dict, optional): Meta information for dataset, such as
|
metainfo (dict, optional): Meta information for dataset, such as
|
||||||
categories information. Defaults to None.
|
categories information. Defaults to None.
|
||||||
data_root (str): The root directory for ``data_prefix``.
|
|
||||||
Defaults to ''.
|
|
||||||
download (bool): Whether to download the dataset if not exists.
|
download (bool): Whether to download the dataset if not exists.
|
||||||
Defaults to True.
|
Defaults to True.
|
||||||
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
||||||
|
|
|
@ -7,130 +7,12 @@ from mmpretrain.registry import DATASETS
|
||||||
from .base_dataset import BaseDataset
|
from .base_dataset import BaseDataset
|
||||||
from .categories import SUN397_CATEGORIES
|
from .categories import SUN397_CATEGORIES
|
||||||
|
|
||||||
# Note that some images are not a jpg file although the name ends
|
|
||||||
# with jpg and therefore cannot be read properly. So we provide
|
|
||||||
# a list to skip these files.
|
|
||||||
INVALID = [
|
|
||||||
'/a/assembly_line/sun_ajckcfldgdrdjogj.jpg',
|
|
||||||
'/a/auto_factory/sun_apfsprenzdnzbhmt.jpg',
|
|
||||||
'/b/baggage_claim/sun_avittiqqaiibgcau.jpg',
|
|
||||||
'/b/batters_box/sun_alqlfpgtbgggezyr.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_ahsholsagvlrsboa.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_aioomcoujmmcxkkx.jpg',
|
|
||||||
'/b/bow_window/outdoor/sun_atgtjdpqikjmllth.jpg',
|
|
||||||
'/c/carrousel/sun_atsgphqympojgxnc.jpg',
|
|
||||||
'/c/carrousel/sun_auzitjuirwolazns.jpg',
|
|
||||||
'/c/church/outdoor/sun_boagasgfltequmal.jpg',
|
|
||||||
'/c/church/outdoor/sun_brhmnwzzbkphcvfo.jpg',
|
|
||||||
'/c/church/outdoor/sun_byjkqzybxpjnuofa.jpg',
|
|
||||||
'/c/corridor/sun_aznefxvocwpgimko.jpg',
|
|
||||||
'/d/dentists_office/sun_aaefsoauqlcsihou.jpg',
|
|
||||||
'/d/diner/indoor/sun_apswilaujhntrybg.jpg',
|
|
||||||
'/e/elevator/door/sun_aaudobqlphijkjdv.jpg',
|
|
||||||
'/f/fastfood_restaurant/sun_axeniwtesffxqedr.jpg',
|
|
||||||
'/f/fire_station/sun_bjyapttwilyyuxqm.jpg',
|
|
||||||
'/f/fountain/sun_axgmpbdyvqhtkhee.jpg',
|
|
||||||
'/h/hospital_room/sun_ahokhhxjiclpxqqa.jpg',
|
|
||||||
'/o/oast_house/sun_bqsrrygxyrutgjve.jpg',
|
|
||||||
'/r/restaurant_patio/sun_aurwypviprwycame.jpg',
|
|
||||||
'/s/ski_resort/sun_bplmntyzoiobcqhp.jpg',
|
|
||||||
'/w/wine_cellar/bottle_storage/sun_afmzwxkzmxkbamqi.jpg',
|
|
||||||
'/w/wine_cellar/bottle_storage/sun_ahyymswdjejrbhyb.jpg',
|
|
||||||
'/w/wine_cellar/bottle_storage/sun_avnttpxamufejbfe.jpg',
|
|
||||||
'/a/archive/sun_awgsrbljlsvhqjij.jpg',
|
|
||||||
'/a/art_school/sun_aabogqsjulyvmcse.jpg',
|
|
||||||
'/a/art_school/sun_apnzojafyvkariue.jpg',
|
|
||||||
'/b/ball_pit/sun_atjhwqngtoeuwhso.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_asxvsqbexmmtqmht.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_abeugxecxrwzmffp.jpg',
|
|
||||||
'/b/bow_window/outdoor/sun_auwcqhrtzkgihvlv.jpg',
|
|
||||||
'/b/bow_window/outdoor/sun_apnvdyecnjjmcuhi.jpg',
|
|
||||||
'/c/childs_room/sun_alggivksjwwiklmt.jpg',
|
|
||||||
'/c/control_tower/outdoor/sun_avbcxakrvpomqdgr.jpg',
|
|
||||||
'/d/diner/indoor/sun_ajmzozstvsxisvgx.jpg',
|
|
||||||
'/e/elevator/door/sun_aaqsyluqbluugqgy.jpg',
|
|
||||||
'/f/fastfood_restaurant/sun_aevchxlxoruhxgrb.jpg',
|
|
||||||
'/f/firing_range/indoor/sun_affrzvahwjorpalo.jpg',
|
|
||||||
'/f/formal_garden/sun_bjvrlaeatjufekft.jpg',
|
|
||||||
'/g/garage/indoor/sun_akbocuwclkxqlofx.jpg',
|
|
||||||
'/g/greenhouse/indoor/sun_addirvgtxfbndlwf.jpg',
|
|
||||||
'/k/kindergarden_classroom/sun_ajtpaahilrqzarri.jpg',
|
|
||||||
'/l/laundromat/sun_afrrjykuhhlwiwun.jpg',
|
|
||||||
'/m/music_studio/sun_bsntklkmwqgnjrjj.jpg',
|
|
||||||
'/t/track/outdoor/sun_aophkoiosslinihb.jpg',
|
|
||||||
'/a/archive/sun_aegmzltkiwyevpwa.jpg',
|
|
||||||
'/a/auto_factory/sun_aybymzvbxgvcrwgn.jpg',
|
|
||||||
'/b/baggage_claim/sun_atpmiqmnxjpgqsxi.jpg',
|
|
||||||
'/b/baggage_claim/sun_ajffcdpsvgqfzoxx.jpg',
|
|
||||||
'/b/bamboo_forest/sun_ausmxphosyahoyjo.jpg',
|
|
||||||
'/b/batters_box/sun_aaeheulsicxtxnbu.jpg',
|
|
||||||
'/c/carrousel/sun_arjrjcxemhttubqz.jpg',
|
|
||||||
'/c/chicken_coop/outdoor/sun_abcegmmdbizqkpgh.jpg',
|
|
||||||
'/c/control_tower/outdoor/sun_axhjfpkxdvqdfkyr.jpg',
|
|
||||||
'/d/diner/indoor/sun_apaotiublwqeowck.jpg',
|
|
||||||
'/f/fastfood_restaurant/sun_anexashcgmxdbmxq.jpg',
|
|
||||||
'/l/landing_deck/sun_aizahnjfkuurjibw.jpg',
|
|
||||||
'/n/nuclear_power_plant/outdoor/sun_aoblfvgyleweqanr.jpg',
|
|
||||||
'/w/waiting_room/sun_aicytusmthfvqcwc.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_asmvdfnjlulewkpr.jpg',
|
|
||||||
'/b/bus_interior/sun_adhktvidwzmodeou.jpg',
|
|
||||||
'/c/catacomb/sun_algnawesgjzzmcqd.jpg',
|
|
||||||
'/c/church/outdoor/sun_baihxlseimcsdhdx.jpg',
|
|
||||||
'/d/diner/indoor/sun_agoyalzcawgxodbm.jpg',
|
|
||||||
'/e/elevator_shaft/sun_awaitimkinrjaybl.jpg',
|
|
||||||
'/f/fastfood_restaurant/sun_aplvzfbmtqtbsvbx.jpg',
|
|
||||||
'/g/greenhouse/indoor/sun_bkccvyfpwetwjuhk.jpg',
|
|
||||||
'/c/car_interior/backseat/sun_adexwfoqdyhowxpu.jpg',
|
|
||||||
'/c/church/outdoor/sun_blmmweiumednscuf.jpg',
|
|
||||||
'/f/fire_station/sun_bibntbsuunbsdrum.jpg',
|
|
||||||
'/g/game_room/sun_aopfaqlllpvzhrak.jpg',
|
|
||||||
'/u/underwater/coral_reef/sun_biiueajvszaxqopo.jpg',
|
|
||||||
'/a/airplane_cabin/sun_arqyikigkyfpegug.jpg',
|
|
||||||
'/b/badminton_court/indoor/sun_amppvxecgtjpfold.jpg',
|
|
||||||
'/c/carrousel/sun_anxtrtieimkpmhvk.jpg',
|
|
||||||
'/c/computer_room/sun_aebgvpgtwoqbfyvl.jpg',
|
|
||||||
'/f/fire_escape/sun_atbraxuwwlvdoolv.jpg',
|
|
||||||
'/k/kasbah/sun_abxkkoielpavsouu.jpg',
|
|
||||||
'/t/tower/sun_bccqnzcvqkiwicjt.jpg',
|
|
||||||
'/a/archive/sun_afngadshxudodkct.jpg',
|
|
||||||
'/b/bow_window/indoor/sun_awnrlipyxpgxxgxz.jpg',
|
|
||||||
'/c/control_tower/outdoor/sun_arohngcbtsvbthho.jpg',
|
|
||||||
'/f/fire_station/sun_brbskkfgghbfvgkk.jpg',
|
|
||||||
'/r/restaurant_patio/sun_amjfbqzfgxarrpec.jpg',
|
|
||||||
'/v/vineyard/sun_bdxhnbgbnolddswz.jpg',
|
|
||||||
'/b/baggage_claim/sun_axrtsmillrglugia.jpg',
|
|
||||||
'/d/diner/indoor/sun_alaqevbwpjaqqdqz.jpg',
|
|
||||||
'/l/landing_deck/sun_acodgoamhgnnbmvr.jpg',
|
|
||||||
'/c/carrousel/sun_adsafgyrinnekycc.jpg',
|
|
||||||
'/c/church/outdoor/sun_bzqhuwshtdgakkay.jpg',
|
|
||||||
'/c/closet/sun_absahzamlrylkxyn.jpg',
|
|
||||||
'/f/fire_escape/sun_acdthenaosuqcoqn.jpg',
|
|
||||||
'/b/butchers_shop/sun_asrdgbefoszenfex.jpg',
|
|
||||||
'/c/church/outdoor/sun_bzfyucfrdigaqneg.jpg',
|
|
||||||
'/c/church/outdoor/sun_byzxhknqrejdajxi.jpg',
|
|
||||||
'/c/cockpit/sun_ajkulpqauavrmxae.jpg',
|
|
||||||
'/l/living_room/sun_aefoqbeatyufobtx.jpg',
|
|
||||||
'/s/supermarket/sun_attvxbzocurnddbz.jpg',
|
|
||||||
'/c/closet/sun_aqnutmwfkypmrnfy.jpg',
|
|
||||||
'/f/fire_station/sun_bttrtzktpbymxkmf.jpg',
|
|
||||||
'/s/shopping_mall/indoor/sun_avwzjsijaxnwuzjx.jpg',
|
|
||||||
'/w/windmill/sun_blvczkyqbmabzeej.jpg',
|
|
||||||
'/c/chicken_coop/outdoor/sun_amaonsnnkskxwmrj.jpg',
|
|
||||||
'/s/swimming_pool/outdoor/sun_bslaihiqlhfewtzn.jpg',
|
|
||||||
'/u/underwater/coral_reef/sun_bhcrnmvbgnkvcvkr.jpg',
|
|
||||||
'/d/dining_room/sun_azlxdhiajwrhaivq.jpg',
|
|
||||||
'/c/church/outdoor/sun_bnunxbznqnvgeykx.jpg',
|
|
||||||
'/c/corridor/sun_aspwpqqlcwzfanvl.jpg',
|
|
||||||
'/r/restaurant_patio/sun_awcbpizjbudjvrhs.jpg',
|
|
||||||
'/b/ball_pit/sun_avdnmemjrgrbkwjm.jpg',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
@DATASETS.register_module()
|
@DATASETS.register_module()
|
||||||
class SUN397(BaseDataset):
|
class SUN397(BaseDataset):
|
||||||
"""The SUN397 Dataset.
|
"""The SUN397 Dataset.
|
||||||
|
|
||||||
Support the `SUN397 Dataset <https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/>`_ Dataset.
|
Support the `SUN397 Dataset <https://vision.princeton.edu/projects/2010/SUN/>`_ Dataset.
|
||||||
After downloading and decompression, the dataset directory structure is as follows.
|
After downloading and decompression, the dataset directory structure is as follows.
|
||||||
|
|
||||||
SUN397 dataset directory: ::
|
SUN397 dataset directory: ::
|
||||||
|
@ -166,15 +48,26 @@ class SUN397(BaseDataset):
|
||||||
>>> train_dataset = SUN397(data_root='data/SUN397', split='train')
|
>>> train_dataset = SUN397(data_root='data/SUN397', split='train')
|
||||||
>>> train_dataset
|
>>> train_dataset
|
||||||
Dataset SUN397
|
Dataset SUN397
|
||||||
Number of samples: 19824
|
Number of samples: 19850
|
||||||
Number of categories: 397
|
Number of categories: 397
|
||||||
Root of dataset: data/SUN397
|
Root of dataset: data/SUN397
|
||||||
>>> test_dataset = SUN397(data_root='data/SUN397', split='test')
|
>>> test_dataset = SUN397(data_root='data/SUN397', split='test')
|
||||||
>>> test_dataset
|
>>> test_dataset
|
||||||
Dataset SUN397
|
Dataset SUN397
|
||||||
Number of samples: 19829
|
Number of samples: 19850
|
||||||
Number of categories: 397
|
Number of categories: 397
|
||||||
Root of dataset: data/SUN397
|
Root of dataset: data/SUN397
|
||||||
|
|
||||||
|
**Note that some images are not a jpg file although the name ends with ".jpg".
|
||||||
|
The backend of SUN397 should be "pillow" as below to read these images properly,**
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
pipeline = [
|
||||||
|
dict(type='LoadImageFromFile', imdecode_backend='pillow'),
|
||||||
|
dict(type='RandomResizedCrop', scale=224),
|
||||||
|
dict(type='PackInputs')
|
||||||
|
]
|
||||||
""" # noqa: E501
|
""" # noqa: E501
|
||||||
|
|
||||||
METAINFO = {'classes': SUN397_CATEGORIES}
|
METAINFO = {'classes': SUN397_CATEGORIES}
|
||||||
|
@ -206,8 +99,6 @@ class SUN397(BaseDataset):
|
||||||
pairs = list_from_file(self.ann_file)
|
pairs = list_from_file(self.ann_file)
|
||||||
data_list = []
|
data_list = []
|
||||||
for pair in pairs:
|
for pair in pairs:
|
||||||
if pair in INVALID:
|
|
||||||
continue
|
|
||||||
img_path = self.backend.join_path(self.img_prefix, pair[1:])
|
img_path = self.backend.join_path(self.img_prefix, pair[1:])
|
||||||
items = pair.split('/')
|
items = pair.split('/')
|
||||||
class_name = '_'.join(items[2:-1])
|
class_name = '_'.join(items[2:-1])
|
||||||
|
@ -217,6 +108,15 @@ class SUN397(BaseDataset):
|
||||||
|
|
||||||
return data_list
|
return data_list
|
||||||
|
|
||||||
|
def __getitem__(self, idx: int) -> dict:
|
||||||
|
try:
|
||||||
|
return super().__getitem__(idx)
|
||||||
|
except AttributeError:
|
||||||
|
raise RuntimeError(
|
||||||
|
'Some images in the SUN397 dataset are not a jpg file '
|
||||||
|
'although the name ends with ".jpg". The backend of SUN397 '
|
||||||
|
'should be "pillow" to read these images properly.')
|
||||||
|
|
||||||
def extra_repr(self) -> List[str]:
|
def extra_repr(self) -> List[str]:
|
||||||
"""The extra repr information of the dataset."""
|
"""The extra repr information of the dataset."""
|
||||||
body = [
|
body = [
|
||||||
|
|
|
@ -3,6 +3,7 @@ import xml.etree.ElementTree as ET
|
||||||
from typing import List, Optional, Union
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
from mmengine import get_file_backend, list_from_file
|
from mmengine import get_file_backend, list_from_file
|
||||||
|
from mmengine.logging import MMLogger
|
||||||
|
|
||||||
from mmpretrain.registry import DATASETS
|
from mmpretrain.registry import DATASETS
|
||||||
from .base_dataset import expanduser
|
from .base_dataset import expanduser
|
||||||
|
@ -18,16 +19,22 @@ class VOC(MultiLabelDataset):
|
||||||
|
|
||||||
VOC dataset directory: ::
|
VOC dataset directory: ::
|
||||||
|
|
||||||
VOC2007 (data_root)/
|
VOC2007
|
||||||
├── JPEGImages (data_prefix['img_path'])
|
├── JPEGImages
|
||||||
│ ├── xxx.jpg
|
│ ├── xxx.jpg
|
||||||
│ ├── xxy.jpg
|
│ ├── xxy.jpg
|
||||||
│ └── ...
|
│ └── ...
|
||||||
├── Annotations (data_prefix['ann_path'])
|
├── Annotations
|
||||||
│ ├── xxx.xml
|
│ ├── xxx.xml
|
||||||
│ ├── xxy.xml
|
│ ├── xxy.xml
|
||||||
│ └── ...
|
│ └── ...
|
||||||
└── ImageSets (directory contains various imageset file)
|
└── ImageSets
|
||||||
|
└── Main
|
||||||
|
├── train.txt
|
||||||
|
├── val.txt
|
||||||
|
├── trainval.txt
|
||||||
|
├── test.txt
|
||||||
|
└── ...
|
||||||
|
|
||||||
Extra difficult label is in VOC annotations, we will use
|
Extra difficult label is in VOC annotations, we will use
|
||||||
`gt_label_difficult` to record the difficult labels in each sample
|
`gt_label_difficult` to record the difficult labels in each sample
|
||||||
|
@ -37,42 +44,85 @@ class VOC(MultiLabelDataset):
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data_root (str): The root directory for VOC dataset.
|
data_root (str): The root directory for VOC dataset.
|
||||||
image_set_path (str): The path of image set, The file which
|
split (str, optional): The dataset split, supports "train",
|
||||||
|
"val", "trainval", and "test". Default to "trainval".
|
||||||
|
image_set_path (str, optional): The path of image set, The file which
|
||||||
lists image ids of the sub dataset, and this path is relative
|
lists image ids of the sub dataset, and this path is relative
|
||||||
to ``data_root``.
|
to ``data_root``. Default to ''.
|
||||||
data_prefix (dict): Prefix for data and annotation, keyword
|
data_prefix (dict): Prefix for data and annotation, keyword
|
||||||
'img_path' and 'ann_path' can be set. Defaults to be
|
'img_path' and 'ann_path' can be set. Defaults to be
|
||||||
``dict(img_path='JPEGImages', ann_path='Annotations')``.
|
``dict(img_path='JPEGImages', ann_path='Annotations')``.
|
||||||
test_mode (bool): ``test_mode=True`` means in test phase.
|
|
||||||
It determines to use the training set or test set.
|
|
||||||
metainfo (dict, optional): Meta information for dataset, such as
|
metainfo (dict, optional): Meta information for dataset, such as
|
||||||
categories information. Defaults to None.
|
categories information. Defaults to None.
|
||||||
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
**kwargs: Other keyword arguments in :class:`BaseDataset`.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
>>> from mmpretrain.datasets import VOC
|
||||||
|
>>> train_dataset = VOC(data_root='data/VOC2007', split='trainval')
|
||||||
|
>>> train_dataset
|
||||||
|
Dataset VOC
|
||||||
|
Number of samples: 5011
|
||||||
|
Number of categories: 20
|
||||||
|
Prefix of dataset: data/VOC2007
|
||||||
|
Path of image set: data/VOC2007/ImageSets/Main/trainval.txt
|
||||||
|
Prefix of images: data/VOC2007/JPEGImages
|
||||||
|
Prefix of annotations: data/VOC2007/Annotations
|
||||||
|
>>> test_dataset = VOC(data_root='data/VOC2007', split='test')
|
||||||
|
>>> test_dataset
|
||||||
|
Dataset VOC
|
||||||
|
Number of samples: 4952
|
||||||
|
Number of categories: 20
|
||||||
|
Prefix of dataset: data/VOC2007
|
||||||
|
Path of image set: data/VOC2007/ImageSets/Main/test.txt
|
||||||
|
Prefix of images: data/VOC2007/JPEGImages
|
||||||
|
Prefix of annotations: data/VOC2007/Annotations
|
||||||
""" # noqa: E501
|
""" # noqa: E501
|
||||||
|
|
||||||
METAINFO = {'classes': VOC2007_CATEGORIES}
|
METAINFO = {'classes': VOC2007_CATEGORIES}
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
data_root: str,
|
data_root: str,
|
||||||
image_set_path: str,
|
split: str = 'trainval',
|
||||||
|
image_set_path: str = '',
|
||||||
data_prefix: Union[str, dict] = dict(
|
data_prefix: Union[str, dict] = dict(
|
||||||
img_path='JPEGImages', ann_path='Annotations'),
|
img_path='JPEGImages', ann_path='Annotations'),
|
||||||
test_mode: bool = False,
|
test_mode: bool = False,
|
||||||
metainfo: Optional[dict] = None,
|
metainfo: Optional[dict] = None,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
|
|
||||||
|
self.backend = get_file_backend(data_root, enable_singleton=True)
|
||||||
|
|
||||||
|
if split:
|
||||||
|
splits = ['train', 'val', 'trainval', 'test']
|
||||||
|
assert split in splits, \
|
||||||
|
f"The split must be one of {splits}, but get '{split}'"
|
||||||
|
self.split = split
|
||||||
|
|
||||||
|
if not data_prefix:
|
||||||
|
data_prefix = dict(
|
||||||
|
img_path='JPEGImages', ann_path='Annotations')
|
||||||
|
if not image_set_path:
|
||||||
|
image_set_path = self.backend.join_path(
|
||||||
|
'ImageSets', 'Main', f'{split}.txt')
|
||||||
|
|
||||||
|
# To handle the BC-breaking
|
||||||
|
if (split == 'train' or split == 'trainval') and test_mode:
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
logger.warning(f'split="{split}" but test_mode=True. '
|
||||||
|
f'The {split} set will be used.')
|
||||||
|
|
||||||
if isinstance(data_prefix, str):
|
if isinstance(data_prefix, str):
|
||||||
data_prefix = dict(img_path=expanduser(data_prefix))
|
data_prefix = dict(img_path=expanduser(data_prefix))
|
||||||
assert isinstance(data_prefix, dict) and 'img_path' in data_prefix, \
|
assert isinstance(data_prefix, dict) and 'img_path' in data_prefix, \
|
||||||
'`data_prefix` must be a dict with key img_path'
|
'`data_prefix` must be a dict with key img_path'
|
||||||
|
|
||||||
if test_mode is False:
|
if (split and split not in ['val', 'test']) or not test_mode:
|
||||||
assert 'ann_path' in data_prefix and data_prefix[
|
assert 'ann_path' in data_prefix and data_prefix[
|
||||||
'ann_path'] is not None, \
|
'ann_path'] is not None, \
|
||||||
'"ann_path" must be set in `data_prefix` if `test_mode` is' \
|
'"ann_path" must be set in `data_prefix`' \
|
||||||
' False.'
|
'when validation or test set is used.'
|
||||||
|
|
||||||
self.data_root = data_root
|
self.data_root = data_root
|
||||||
self.backend = get_file_backend(data_root, enable_singleton=True)
|
|
||||||
self.image_set_path = self.backend.join_path(data_root, image_set_path)
|
self.image_set_path = self.backend.join_path(data_root, image_set_path)
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
|
|
|
@ -290,41 +290,169 @@ class TestCustomDataset(TestBaseDataset):
|
||||||
class TestImageNet(TestCustomDataset):
|
class TestImageNet(TestCustomDataset):
|
||||||
DATASET_TYPE = 'ImageNet'
|
DATASET_TYPE = 'ImageNet'
|
||||||
|
|
||||||
DEFAULT_ARGS = dict(data_root=ASSETS_ROOT, ann_file='ann.txt')
|
@classmethod
|
||||||
|
def setUpClass(cls) -> None:
|
||||||
|
super().setUpClass()
|
||||||
|
|
||||||
|
tmpdir = tempfile.TemporaryDirectory()
|
||||||
|
cls.tmpdir = tmpdir
|
||||||
|
cls.root = tmpdir.name
|
||||||
|
cls.meta_folder = 'meta'
|
||||||
|
cls.train_file = 'train.txt'
|
||||||
|
cls.val_file = 'val.txt'
|
||||||
|
cls.test_file = 'test.txt'
|
||||||
|
cls.categories = ['cat', 'dog']
|
||||||
|
|
||||||
|
os.mkdir(osp.join(cls.root, cls.meta_folder))
|
||||||
|
|
||||||
|
cls.DEFAULT_ARGS = dict(data_root=cls.root, split='train')
|
||||||
|
|
||||||
|
with open(osp.join(cls.root, cls.meta_folder, cls.train_file),
|
||||||
|
'w') as f:
|
||||||
|
f.write('\n'.join([
|
||||||
|
'1.jpg 0',
|
||||||
|
'2.jpg 1',
|
||||||
|
'3.jpg 1',
|
||||||
|
]))
|
||||||
|
|
||||||
|
with open(osp.join(cls.root, cls.meta_folder, cls.val_file), 'w') as f:
|
||||||
|
f.write('\n'.join([
|
||||||
|
'11.jpg 0',
|
||||||
|
'22.jpg 1',
|
||||||
|
]))
|
||||||
|
|
||||||
|
with open(osp.join(cls.root, cls.meta_folder, cls.test_file),
|
||||||
|
'w') as f:
|
||||||
|
f.write('\n'.join([
|
||||||
|
'aa.jpg',
|
||||||
|
'bb.jpg',
|
||||||
|
]))
|
||||||
|
|
||||||
|
def test_initialize(self):
|
||||||
|
super().test_initialize()
|
||||||
|
|
||||||
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
|
# Test invalid split
|
||||||
|
with self.assertRaisesRegex(AssertionError, 'The split must be'):
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'unknown'
|
||||||
|
dataset_class(**cfg)
|
||||||
|
|
||||||
|
# Test valid splits
|
||||||
|
splits = ['train', 'val']
|
||||||
|
for split in splits:
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = split
|
||||||
|
cfg['classes'] = self.categories
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.data_root, self.root)
|
||||||
|
|
||||||
|
# Test split="test"
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'test'
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
with self.assertLogs(logger, 'INFO') as log:
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertFalse(dataset.with_label)
|
||||||
|
self.assertIn('Since the ImageNet1k test set', log.output[0])
|
||||||
|
|
||||||
def test_load_data_list(self):
|
def test_load_data_list(self):
|
||||||
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
# test classes number
|
# Test default behavior
|
||||||
cfg = {
|
dataset = dataset_class(**self.DEFAULT_ARGS)
|
||||||
**self.DEFAULT_ARGS,
|
self.assertEqual(len(dataset), 3)
|
||||||
'data_prefix': ASSETS_ROOT,
|
|
||||||
'ann_file': '',
|
data_info = dataset[0]
|
||||||
}
|
self.assertEqual(data_info['img_path'],
|
||||||
with self.assertRaisesRegex(
|
osp.join(self.root, 'train', '1.jpg'))
|
||||||
AssertionError, r"\(2\) doesn't match .* classes \(1000\)"):
|
self.assertEqual(data_info['gt_label'], 0)
|
||||||
dataset_class(**cfg)
|
|
||||||
|
# Test split="val"
|
||||||
|
cfg = {**self.DEFAULT_ARGS, 'split': 'val'}
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(len(dataset), 2)
|
||||||
|
|
||||||
|
data_info = dataset[0]
|
||||||
|
self.assertEqual(data_info['img_path'],
|
||||||
|
osp.join(self.root, 'val', '11.jpg'))
|
||||||
|
self.assertEqual(data_info['gt_label'], 0)
|
||||||
|
|
||||||
|
# Test split="test"
|
||||||
|
cfg = {**self.DEFAULT_ARGS, 'split': 'test'}
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(len(dataset), 2)
|
||||||
|
|
||||||
|
data_info = dataset[0]
|
||||||
|
self.assertEqual(data_info['img_path'],
|
||||||
|
osp.join(self.root, 'test', 'aa.jpg'))
|
||||||
|
|
||||||
# test override classes
|
# test override classes
|
||||||
cfg = {
|
cfg = {
|
||||||
**self.DEFAULT_ARGS,
|
**self.DEFAULT_ARGS,
|
||||||
'data_prefix': ASSETS_ROOT,
|
|
||||||
'classes': ['cat', 'dog'],
|
'classes': ['cat', 'dog'],
|
||||||
'ann_file': '',
|
|
||||||
}
|
}
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
self.assertEqual(len(dataset), 3)
|
self.assertEqual(len(dataset), 3)
|
||||||
self.assertEqual(dataset.CLASSES, ('cat', 'dog'))
|
self.assertEqual(dataset.CLASSES, ('cat', 'dog'))
|
||||||
|
|
||||||
|
def test_extra_repr(self):
|
||||||
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
|
||||||
|
self.assertIn(f'Root of dataset: \t{dataset.data_root}', repr(dataset))
|
||||||
|
|
||||||
|
|
||||||
class TestImageNet21k(TestCustomDataset):
|
class TestImageNet21k(TestCustomDataset):
|
||||||
DATASET_TYPE = 'ImageNet21k'
|
DATASET_TYPE = 'ImageNet21k'
|
||||||
|
|
||||||
DEFAULT_ARGS = dict(
|
@classmethod
|
||||||
data_root=ASSETS_ROOT, classes=['cat', 'dog'], ann_file='ann.txt')
|
def setUpClass(cls) -> None:
|
||||||
|
super().setUpClass()
|
||||||
|
|
||||||
|
tmpdir = tempfile.TemporaryDirectory()
|
||||||
|
cls.tmpdir = tmpdir
|
||||||
|
cls.root = tmpdir.name
|
||||||
|
cls.meta_folder = 'meta'
|
||||||
|
cls.train_file = 'train.txt'
|
||||||
|
|
||||||
|
os.mkdir(osp.join(cls.root, cls.meta_folder))
|
||||||
|
|
||||||
|
with open(osp.join(cls.root, cls.meta_folder, cls.train_file),
|
||||||
|
'w') as f:
|
||||||
|
f.write('\n'.join([
|
||||||
|
'cat/a.jpg 0',
|
||||||
|
'cat/b.jpg 0',
|
||||||
|
'dog/a.jpg 1',
|
||||||
|
'dog/b.jpg 1',
|
||||||
|
]))
|
||||||
|
|
||||||
|
cls.DEFAULT_ARGS = dict(
|
||||||
|
data_root=cls.root,
|
||||||
|
classes=['cat', 'dog'],
|
||||||
|
ann_file='meta/train.txt')
|
||||||
|
|
||||||
|
def test_initialize(self):
|
||||||
|
super().test_initialize()
|
||||||
|
|
||||||
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
|
# Test invalid split
|
||||||
|
with self.assertRaisesRegex(AssertionError, 'The split must be'):
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'unknown'
|
||||||
|
dataset_class(**cfg)
|
||||||
|
|
||||||
|
# Test valid splits
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'train'
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.split, 'train')
|
||||||
|
self.assertEqual(dataset.data_root, self.root)
|
||||||
|
|
||||||
def test_load_data_list(self):
|
def test_load_data_list(self):
|
||||||
super().test_initialize()
|
|
||||||
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
# The multi_label option is not implemented not.
|
# The multi_label option is not implemented not.
|
||||||
|
@ -333,11 +461,14 @@ class TestImageNet21k(TestCustomDataset):
|
||||||
dataset_class(**cfg)
|
dataset_class(**cfg)
|
||||||
|
|
||||||
# Warn about ann_file
|
# Warn about ann_file
|
||||||
cfg = {**self.DEFAULT_ARGS, 'ann_file': ''}
|
cfg = {**self.DEFAULT_ARGS, 'ann_file': '', 'lazy_init': True}
|
||||||
|
ann_path = osp.join(self.root, self.meta_folder, self.train_file)
|
||||||
|
os.rename(ann_path, ann_path + 'copy')
|
||||||
logger = MMLogger.get_current_instance()
|
logger = MMLogger.get_current_instance()
|
||||||
with self.assertLogs(logger, 'WARN') as log:
|
with self.assertLogs(logger, 'INFO') as log:
|
||||||
dataset_class(**cfg)
|
dataset_class(**cfg)
|
||||||
self.assertIn('specify the `ann_file`', log.output[0])
|
self.assertIn('specify the `ann_file`', log.output[0])
|
||||||
|
os.rename(ann_path + 'copy', ann_path)
|
||||||
|
|
||||||
# Warn about classes
|
# Warn about classes
|
||||||
cfg = {**self.DEFAULT_ARGS, 'classes': None}
|
cfg = {**self.DEFAULT_ARGS, 'classes': None}
|
||||||
|
@ -345,6 +476,11 @@ class TestImageNet21k(TestCustomDataset):
|
||||||
dataset_class(**cfg)
|
dataset_class(**cfg)
|
||||||
self.assertIn('specify the `classes`', log.output[0])
|
self.assertIn('specify the `classes`', log.output[0])
|
||||||
|
|
||||||
|
# Test split='train'
|
||||||
|
cfg = {**self.DEFAULT_ARGS, 'split': 'train', 'classes': None}
|
||||||
|
dataset = dataset_class(**self.DEFAULT_ARGS)
|
||||||
|
self.assertEqual(len(dataset), 4)
|
||||||
|
|
||||||
|
|
||||||
class TestPlaces205(TestCustomDataset):
|
class TestPlaces205(TestCustomDataset):
|
||||||
DATASET_TYPE = 'Places205'
|
DATASET_TYPE = 'Places205'
|
||||||
|
@ -599,17 +735,12 @@ class TestVOC(TestBaseDataset):
|
||||||
cls.tmpdir = tmpdir
|
cls.tmpdir = tmpdir
|
||||||
data_root = tmpdir.name
|
data_root = tmpdir.name
|
||||||
|
|
||||||
cls.DEFAULT_ARGS = dict(
|
cls.DEFAULT_ARGS = dict(data_root=data_root, split='trainval')
|
||||||
data_root=data_root,
|
|
||||||
image_set_path='ImageSets/train.txt',
|
|
||||||
data_prefix=dict(img_path='JPEGImages', ann_path='Annotations'),
|
|
||||||
pipeline=[],
|
|
||||||
test_mode=False)
|
|
||||||
|
|
||||||
cls.image_folder = osp.join(data_root, 'JPEGImages')
|
cls.image_folder = osp.join(data_root, 'JPEGImages')
|
||||||
cls.ann_folder = osp.join(data_root, 'Annotations')
|
cls.ann_folder = osp.join(data_root, 'Annotations')
|
||||||
cls.image_set_folder = osp.join(data_root, 'ImageSets')
|
cls.image_set_folder = osp.join(data_root, 'ImageSets', 'Main')
|
||||||
os.mkdir(cls.image_set_folder)
|
os.makedirs(cls.image_set_folder)
|
||||||
os.mkdir(cls.image_folder)
|
os.mkdir(cls.image_folder)
|
||||||
os.mkdir(cls.ann_folder)
|
os.mkdir(cls.ann_folder)
|
||||||
|
|
||||||
|
@ -621,7 +752,7 @@ class TestVOC(TestBaseDataset):
|
||||||
train_list = [i for i in range(0, 4)]
|
train_list = [i for i in range(0, 4)]
|
||||||
test_list = [i for i in range(4, 6)]
|
test_list = [i for i in range(4, 6)]
|
||||||
|
|
||||||
with open(osp.join(cls.image_set_folder, 'train.txt'), 'w') as f:
|
with open(osp.join(cls.image_set_folder, 'trainval.txt'), 'w') as f:
|
||||||
for train_item in train_list:
|
for train_item in train_list:
|
||||||
f.write(str(train_item) + '\n')
|
f.write(str(train_item) + '\n')
|
||||||
with open(osp.join(cls.image_set_folder, 'test.txt'), 'w') as f:
|
with open(osp.join(cls.image_set_folder, 'test.txt'), 'w') as f:
|
||||||
|
@ -677,6 +808,31 @@ class TestVOC(TestBaseDataset):
|
||||||
with self.assertRaisesRegex(ValueError, "type <class 'dict'>"):
|
with self.assertRaisesRegex(ValueError, "type <class 'dict'>"):
|
||||||
dataset_class(**cfg)
|
dataset_class(**cfg)
|
||||||
|
|
||||||
|
# Test invalid split
|
||||||
|
with self.assertRaisesRegex(AssertionError, 'The split must be'):
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'unknown'
|
||||||
|
dataset_class(**cfg)
|
||||||
|
|
||||||
|
# Test valid splits
|
||||||
|
splits = ['trainval', 'test']
|
||||||
|
for split in splits:
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = split
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.split, split)
|
||||||
|
|
||||||
|
# Test split='trainval' and test_mode = True
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
with self.assertLogs(logger, 'WARN') as log:
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'trainval'
|
||||||
|
cfg['test_mode'] = True
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.split, 'trainval')
|
||||||
|
self.assertEqual(dataset.test_mode, True)
|
||||||
|
self.assertIn('The trainval set will be used', log.output[0])
|
||||||
|
|
||||||
def test_get_cat_ids(self):
|
def test_get_cat_ids(self):
|
||||||
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
cfg = {'classes': self.fake_classes, **self.DEFAULT_ARGS}
|
cfg = {'classes': self.fake_classes, **self.DEFAULT_ARGS}
|
||||||
|
@ -710,9 +866,8 @@ class TestVOC(TestBaseDataset):
|
||||||
self.assertEqual(data_info['img_path'], f'{fake_img_path}.jpg')
|
self.assertEqual(data_info['img_path'], f'{fake_img_path}.jpg')
|
||||||
self.assertEqual(set(data_info['gt_label']), set(self.fake_labels[0]))
|
self.assertEqual(set(data_info['gt_label']), set(self.fake_labels[0]))
|
||||||
|
|
||||||
# Test with test_mode=True
|
# Test with split='test'
|
||||||
cfg['image_set_path'] = 'ImageSets/test.txt'
|
cfg['split'] = 'test'
|
||||||
cfg['test_mode'] = True
|
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
self.assertEqual(len(dataset), 2)
|
self.assertEqual(len(dataset), 2)
|
||||||
|
|
||||||
|
@ -722,7 +877,8 @@ class TestVOC(TestBaseDataset):
|
||||||
self.assertEqual(set(data_info['gt_label']), set(self.fake_labels[4]))
|
self.assertEqual(set(data_info['gt_label']), set(self.fake_labels[4]))
|
||||||
|
|
||||||
# Test with test_mode=True and ann_path = None
|
# Test with test_mode=True and ann_path = None
|
||||||
cfg['image_set_path'] = 'ImageSets/test.txt'
|
cfg['split'] = ''
|
||||||
|
cfg['image_set_path'] = 'ImageSets/Main/test.txt'
|
||||||
cfg['test_mode'] = True
|
cfg['test_mode'] = True
|
||||||
cfg['data_prefix'] = 'JPEGImages'
|
cfg['data_prefix'] = 'JPEGImages'
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
|
@ -771,9 +927,9 @@ class TestMNIST(TestBaseDataset):
|
||||||
|
|
||||||
tmpdir = tempfile.TemporaryDirectory()
|
tmpdir = tempfile.TemporaryDirectory()
|
||||||
cls.tmpdir = tmpdir
|
cls.tmpdir = tmpdir
|
||||||
|
cls.root = tmpdir.name
|
||||||
data_prefix = tmpdir.name
|
data_prefix = tmpdir.name
|
||||||
cls.DEFAULT_ARGS = dict(
|
cls.DEFAULT_ARGS = dict(data_root=cls.root, split='train')
|
||||||
data_prefix=data_prefix, pipeline=[], test_mode=False)
|
|
||||||
|
|
||||||
dataset_class = DATASETS.get(cls.DATASET_TYPE)
|
dataset_class = DATASETS.get(cls.DATASET_TYPE)
|
||||||
|
|
||||||
|
@ -805,6 +961,39 @@ class TestMNIST(TestBaseDataset):
|
||||||
with open(file, 'wb') as f:
|
with open(file, 'wb') as f:
|
||||||
f.write(data)
|
f.write(data)
|
||||||
|
|
||||||
|
def test_initialize(self):
|
||||||
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
|
# Test with invalid split
|
||||||
|
with self.assertRaisesRegex(AssertionError, 'The split must be'):
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = 'unknown'
|
||||||
|
dataset_class(**cfg)
|
||||||
|
|
||||||
|
# Test with valid split
|
||||||
|
splits = ['train', 'test']
|
||||||
|
test_modes = [False, True]
|
||||||
|
|
||||||
|
for split in splits:
|
||||||
|
for test_mode in test_modes:
|
||||||
|
cfg = {**self.DEFAULT_ARGS}
|
||||||
|
cfg['split'] = split
|
||||||
|
cfg['test_mode'] = test_mode
|
||||||
|
|
||||||
|
if split == 'train' and test_mode:
|
||||||
|
logger = MMLogger.get_current_instance()
|
||||||
|
with self.assertLogs(logger, 'WARN') as log:
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.split, split)
|
||||||
|
self.assertEqual(dataset.test_mode, test_mode)
|
||||||
|
self.assertEqual(dataset.data_root, self.root)
|
||||||
|
self.assertIn('training set will be used', log.output[0])
|
||||||
|
else:
|
||||||
|
dataset = dataset_class(**cfg)
|
||||||
|
self.assertEqual(dataset.split, split)
|
||||||
|
self.assertEqual(dataset.test_mode, test_mode)
|
||||||
|
self.assertEqual(dataset.data_root, self.root)
|
||||||
|
|
||||||
def test_load_data_list(self):
|
def test_load_data_list(self):
|
||||||
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
||||||
|
@ -817,8 +1006,8 @@ class TestMNIST(TestBaseDataset):
|
||||||
np.testing.assert_equal(data_info['img'], self.fake_img)
|
np.testing.assert_equal(data_info['img'], self.fake_img)
|
||||||
np.testing.assert_equal(data_info['gt_label'], self.fake_label)
|
np.testing.assert_equal(data_info['gt_label'], self.fake_label)
|
||||||
|
|
||||||
# Test with test_mode=True
|
# Test with split='test'
|
||||||
cfg = {**self.DEFAULT_ARGS, 'test_mode': True}
|
cfg = {**self.DEFAULT_ARGS, 'split': 'test'}
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
self.assertEqual(len(dataset), 1)
|
self.assertEqual(len(dataset), 1)
|
||||||
|
|
||||||
|
@ -829,7 +1018,7 @@ class TestMNIST(TestBaseDataset):
|
||||||
# Test automatically download
|
# Test automatically download
|
||||||
with patch('mmpretrain.datasets.mnist.download_and_extract_archive'
|
with patch('mmpretrain.datasets.mnist.download_and_extract_archive'
|
||||||
) as mock:
|
) as mock:
|
||||||
cfg = {**self.DEFAULT_ARGS, 'lazy_init': True, 'test_mode': True}
|
cfg = {**self.DEFAULT_ARGS, 'lazy_init': True, 'split': 'test'}
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
dataset.train_list = [['invalid_train_file', None]]
|
dataset.train_list = [['invalid_train_file', None]]
|
||||||
dataset.test_list = [['invalid_test_file', None]]
|
dataset.test_list = [['invalid_test_file', None]]
|
||||||
|
@ -852,7 +1041,7 @@ class TestMNIST(TestBaseDataset):
|
||||||
with self.assertRaisesRegex(RuntimeError, '`download=True`'):
|
with self.assertRaisesRegex(RuntimeError, '`download=True`'):
|
||||||
cfg = {
|
cfg = {
|
||||||
**self.DEFAULT_ARGS, 'lazy_init': True,
|
**self.DEFAULT_ARGS, 'lazy_init': True,
|
||||||
'test_mode': True,
|
'split': 'test',
|
||||||
'download': False
|
'download': False
|
||||||
}
|
}
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
|
@ -1946,7 +2135,7 @@ class TestSUN397(TestBaseDataset):
|
||||||
f.write('\n'.join([
|
f.write('\n'.join([
|
||||||
'/a/abbey/sun_aqswjsnjlrfzzhiz.jpg',
|
'/a/abbey/sun_aqswjsnjlrfzzhiz.jpg',
|
||||||
'/a/airplane_cabin/sun_blczihbhbntqccux.jpg',
|
'/a/airplane_cabin/sun_blczihbhbntqccux.jpg',
|
||||||
'/a/assembly_line/sun_ajckcfldgdrdjogj.jpg', # invalid
|
'/a/assembly_line/sun_ajckcfldgdrdjogj.jpg',
|
||||||
]))
|
]))
|
||||||
|
|
||||||
with open(osp.join(cls.root, cls.meta_folder, cls.test_file),
|
with open(osp.join(cls.root, cls.meta_folder, cls.test_file),
|
||||||
|
@ -1954,8 +2143,8 @@ class TestSUN397(TestBaseDataset):
|
||||||
f.write('\n'.join([
|
f.write('\n'.join([
|
||||||
'/a/abbey/sun_ajkqrqitspwywirx.jpg',
|
'/a/abbey/sun_ajkqrqitspwywirx.jpg',
|
||||||
'/a/airplane_cabin/sun_aqylhacwdsqfjuuu.jpg',
|
'/a/airplane_cabin/sun_aqylhacwdsqfjuuu.jpg',
|
||||||
'/a/auto_factory/sun_apfsprenzdnzbhmt.jpg', # invalid
|
'/a/auto_factory/sun_apfsprenzdnzbhmt.jpg',
|
||||||
'/b/baggage_claim/sun_avittiqqaiibgcau.jpg', # invalid
|
'/b/baggage_claim/sun_avittiqqaiibgcau.jpg',
|
||||||
]))
|
]))
|
||||||
|
|
||||||
def test_initialize(self):
|
def test_initialize(self):
|
||||||
|
@ -1981,7 +2170,7 @@ class TestSUN397(TestBaseDataset):
|
||||||
|
|
||||||
# Test default behavior
|
# Test default behavior
|
||||||
dataset = dataset_class(**self.DEFAULT_ARGS)
|
dataset = dataset_class(**self.DEFAULT_ARGS)
|
||||||
self.assertEqual(len(dataset), 3 - 1)
|
self.assertEqual(len(dataset), 3)
|
||||||
data_info = dataset[0]
|
data_info = dataset[0]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
data_info['img_path'],
|
data_info['img_path'],
|
||||||
|
@ -1992,13 +2181,13 @@ class TestSUN397(TestBaseDataset):
|
||||||
# Test with split='test'
|
# Test with split='test'
|
||||||
cfg = {**self.DEFAULT_ARGS, 'split': 'test'}
|
cfg = {**self.DEFAULT_ARGS, 'split': 'test'}
|
||||||
dataset = dataset_class(**cfg)
|
dataset = dataset_class(**cfg)
|
||||||
self.assertEqual(len(dataset), 4 - 2)
|
self.assertEqual(len(dataset), 4)
|
||||||
data_info = dataset[-1]
|
data_info = dataset[-1]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
data_info['img_path'],
|
data_info['img_path'],
|
||||||
osp.join(self.root, self.data_prefix,
|
osp.join(self.root, self.data_prefix,
|
||||||
'a/airplane_cabin/sun_aqylhacwdsqfjuuu.jpg'))
|
'b/baggage_claim/sun_avittiqqaiibgcau.jpg'))
|
||||||
self.assertEqual(data_info['gt_label'], 1)
|
self.assertEqual(data_info['gt_label'], 26)
|
||||||
|
|
||||||
def test_extra_repr(self):
|
def test_extra_repr(self):
|
||||||
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
dataset_class = DATASETS.get(self.DATASET_TYPE)
|
||||||
|
|
Loading…
Reference in New Issue