Fafa-DL / Awesome-Backbones

Integrate deep learning models for image classification | Backbone learning/comparison/magic modification project
1.39k stars 232 forks source link

测试集处理 #52

Open huisuli opened 1 year ago

huisuli commented 1 year ago

在train.py中为什么加载数据这里val_pipeline = copy.deepcopy(train_pipeline) 测试集的处理需要复制训练集的处理,这样训练集每次都会随机裁剪尺寸,在evaluation.py里也是这样, train_dataset = Mydataset(train_datas, train_pipeline) val_pipeline = copy.deepcopy(train_pipeline) val_dataset = Mydataset(val_datas, val_pipeline) train_loader = DataLoader(train_dataset, shuffle=True, batch_size=data_cfg.get('batch_size'), num_workers=data_cfg.get('num_workers'),pin_memory=True, drop_last=True, collate_fn=collate) val_loader = DataLoader(val_dataset, shuffle=False, batch_size=data_cfg.get('batch_size'), num_workers=data_cfg.get('num_workers'), pin_memory=True, drop_last=True, collate_fn=collate)

Fafa-DL commented 1 year ago

是的,当时官方也是这样做的。如果测试时固定大小我也有做过,精度会有一定下降。建议多次取均值,下一次更新考虑自主选择测试方法

huisuli commented 1 year ago

那我也可以把测试集这部分加上标签,送进去训练和测试,这样也行吧? val_pipeline = [ dict(type='LoadImageFromFile'), dict( type='CenterCrop', crop_size=384, efficientnet_style=True, interpolation='bicubic'), dict(type='Normalize', **img_norm_cfg), dict(type='ImageToTensor', keys=['img']), dict(type='ToTensor', keys=['gt_label']), dict(type='Collect', keys=['img', 'gt_label']) ]

MadMrFox commented 12 months ago

测试时将训练参数设置不做任何增强和裁剪就可以稳定输出了,唯一的问题是,训练时进行了增强数据,测试时不做处理的结果会差很多。 以resnet50.py为例 原本的 train_pipeline = [ dict(type='LoadImageFromFile'), dict( type='RandAugment', policies=policies, num_policies=2, magnitude_level=12), dict( type='RandomResizedCrop', size=224, efficientnet_style=True, interpolation='bicubic', backend='pillow'), dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), dict(type='Lighting', **img_lighting_cfg), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=False), dict(type='ImageToTensor', keys=['img']), dict(type='ToTensor', keys=['gt_label']), dict(type='Collect', keys=['img', 'gt_label']) ] 改为 train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='Resize', size=224), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=False), dict(type='ImageToTensor', keys=['img']), dict(type='ToTensor', keys=['gt_label']), dict(type='Collect', keys=['img', 'gt_label']) ]