解决mmpretrain中的配置类别问题
AssertionError: The number of subfolders (2) doesn’t match the number of specified classes (1000). Please check the data folder.
具体报错信息如下:
Traceback (most recent call last):
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/tools/train.py", line 166, in 
main()
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/tools/train.py", line 162, in main
runner.train()
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/runner/runner.py", line 1703, in train
self.\_train\_loop = self.build\_train\_loop(
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/runner/runner.py", line 1502, in build\_train\_loop
loop = EpochBasedTrainLoop(
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/runner/loops.py", line 44, in **init**
super().**init**(runner, dataloader)
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/runner/base\_loop.py", line 26, in **init**
self.dataloader = runner.build\_dataloader(
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/runner/runner.py", line 1353, in build\_dataloader
dataset = DATASETS.build(dataset\_cfg)
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/registry/registry.py", line 570, in build
return self.build\_func(cfg, \*args, \*\*kwargs, registry=self)
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/registry/build\_functions.py", line 121, in build\_from\_cfg
obj = obj\_cls(\*\*args) # type: ignore
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/mmpretrain/datasets/imagenet.py", line 122, in **init**
super().**init**(
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/mmpretrain/datasets/custom.py", line 219, in **init**
self.full\_init()
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/mmpretrain/datasets/base\_dataset.py", line 178, in full\_init
super().full\_init()
File "/home/lzj/anaconda3/envs/mmpretrain/lib/python3.10/site-packages/mmengine/dataset/base\_dataset.py", line 296, in full\_init
self.data\_list = self.load\_data\_list()
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/mmpretrain/datasets/custom.py", line 264, in load\_data\_list
samples = self.\_find\_samples()
File "/home/lzj/ssd2t/01.my\_algo/mmpretrain-main/mmpretrain/datasets/custom.py", line 234, in \_find\_samples
assert len(self.CLASSES) == len(classes), \
AssertionError: The number of subfolders (2) doesn't match the number of specified classes (1000). Please check the data folder.
配置文件需要修改为CustomDataset
,同时注意修改data_root
和data_prefix
# dataset settings
dataset_type = 'CustomDataset'
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='RandomResizedCrop', scale=224),
dict(type='RandomFlip', prob=0.5, direction='horizontal'),
dict(type='PackInputs'),
]
train_dataloader = dict(
batch_size=32,
num_workers=5,
dataset=dict(
type=dataset_type,
data_root='dataset',
data_prefix='train',
pipeline=train_pipeline),
sampler=dict(type='DefaultSampler', shuffle=True),
)