# model settings
model =dict(type='ImageClassifier',
backbone=dict(#主干网络type='ResNet',
depth=18,
num_stages=4,
out_indices=(3,),
style='pytorch'),
neck=dict(type='GlobalAveragePooling'),
head=dict(#分类头type='LinearClsHead',
num_classes=1000,
in_channels=512,
loss=dict(type='CrossEntropyLoss', loss_weight=1.0),
topk=(1,5),))
数据集配置:‘configs/_base_/datasets/imagenet_bs32.py’
# dataset settings
dataset_type ='ImageNet'
data_preprocessor =dict(
num_classes=1000,# RGB format normalization parameters
mean=[123.675,116.28,103.53],
std=[58.395,57.12,57.375],# convert image from BGR to RGB
to_rgb=True,)
train_pipeline =[dict(type='LoadImageFromFile'),dict(type='RandomResizedCrop', scale=224),dict(type='RandomFlip', prob=0.5, direction='horizontal'),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(
batch_size=32,
num_workers=5,
dataset=dict(type=dataset_type,
data_root='data/imagenet',
ann_file='meta/train.txt',
data_prefix='train',
pipeline=train_pipeline),
sampler=dict(type='DefaultSampler', shuffle=True),)
val_dataloader =dict(
batch_size=32,
num_workers=5,
dataset=dict(type=dataset_type,
data_root='data/imagenet',
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
规划配置:‘configs/base/schedules/imagenet_bs256.py’
# optimizer
optim_wrapper =dict(
optimizer=dict(type='SGD', lr=0.1, momentum=0.9, weight_decay=0.0001))# learning policy
param_scheduler =dict(type='MultiStepLR', by_epoch=True, milestones=[30,60,90], gamma=0.1)# train, val, test setting
train_cfg =dict(by_epoch=True, max_epochs=100, val_interval=1)
val_cfg =dict()
test_cfg =dict()# NOTE: `auto_scale_lr` is for automatically scaling LR,# based on the actual training batch size.
auto_scale_lr =dict(base_batch_size=256)
运行配置:‘configs/base/default_runtime.py’(一般默认)
# defaults to use registries in mmpretrain
default_scope ='mmpretrain'# configure default hooks
default_hooks =dict(# record the time of every iteration.
timer=dict(type='IterTimerHook'),# print log every 100 iterations.
logger=dict(type='LoggerHook', interval=100),# enable the parameter scheduler.
param_scheduler=dict(type='ParamSchedulerHook'),# save checkpoint per epoch.
checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=5, save_best='auto'),# set sampler seed in distributed evrionment.
sampler_seed=dict(type='DistSamplerSeedHook'),# validation results visualization, set True to enable it.
visualization=dict(type='VisualizationHook', enable=False),)# configure environment
env_cfg =dict(# whether to enable cudnn benchmark
cudnn_benchmark=False,# set multi process parameters
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),# set distributed parameters
dist_cfg=dict(backend='nccl'),)# set visualizer
vis_backends =[dict(type='LocalVisBackend')]
visualizer =dict(type='UniversalVisualizer', vis_backends=vis_backends)# set log level
log_level ='INFO'# load from which checkpoint
load_from =None# whether to resume training from the loaded checkpoint
resume =False# Defaults to use random seed and disable `deterministic`
randomness =dict(seed=None, deterministic=False)
新建分类猫狗的配置文件:‘resnet18_finetune.py’
# model settings
model =dict(type='ImageClassifier',
backbone=dict(#主干网络type='ResNet',
depth=18,
num_stages=4,
out_indices=(3,),
style='pytorch'),
neck=dict(type='GlobalAveragePooling'),
head=dict(#分类头type='LinearClsHead',
num_classes=2,#修改分类数
in_channels=512,
loss=dict(type='CrossEntropyLoss', loss_weight=1.0),
topk=(1,5),),#设置预训练权重
init_cfg=dict(type='Pretrained', checkpoint='https://download.openmmlab.com/mmclassification/0/resnet/resnet18_8xb32-in1k-20210831-fbbb1da6.pth')# dataset settings
dataset_type ='CustomDataset'
data_preprocessor =dict(
num_classes=1000,# RGB format normalization parameters
mean=[123.675,116.28,103.53],
std=[58.395,57.12,57.375],# convert image from BGR to RGB
to_rgb=True,)
train_pipeline =[dict(type='LoadImageFromFile'),dict(type='RandomResizedCrop', scale=224),dict(type='RandomFlip', prob=0.5, direction='horizontal'),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(
batch_size=32,
num_workers=5,
dataset=dict(type=dataset_type,
data_root='../../data/cat_dogs_dataset/training_set',
pipeline=train_pipeline),
sampler=dict(type='DefaultSampler', shuffle=True),)
val_dataloader =dict(
batch_size=32,
num_workers=5,
dataset=dict(type=dataset_type,
data_root='../../data/cat_dogs_dataset/val_set',
pipeline=test_pipeline),
sampler=dict(type='DefaultSampler', shuffle=False),)
val_evaluator =dict(type='Accuracy', topk=1)# If you want standard test, please manually configure the test dataset
test_dataloader =dict(
batch_size=32,
num_workers=5,
dataset=dict(type=dataset_type,
data_root='../../data/cat_dogs_dataset/test_set',
pipeline=test_pipeline),
sampler=dict(type='DefaultSampler', shuffle=False),)
test_evaluator = val_evaluator
# optimizer
optim_wrapper =dict(
optimizer=dict(type='SGD', lr=0.1, momentum=0.9, weight_decay=0.0001))# learning policy
param_scheduler =dict(type='MultiStepLR', by_epoch=True, milestones=[30,60,90], gamma=0.1)# train, val, test setting
train_cfg =dict(by_epoch=True, max_epochs=100, val_interval=1)
val_cfg =dict()
test_cfg =dict()# NOTE: `auto_scale_lr` is for automatically scaling LR,# based on the actual training batch size.
auto_scale_lr =dict(base_batch_size=256)# defaults to use registries in mmpretrain
default_scope ='mmpretrain'# configure default hooks
default_hooks =dict(# record the time of every iteration.
timer=dict(type='IterTimerHook'),# print log every 100 iterations.
logger=dict(type='LoggerHook', interval=100),# enable the parameter scheduler.
param_scheduler=dict(type='ParamSchedulerHook'),# save checkpoint per epoch.
checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=5, save_best='auto'),# set sampler seed in distributed evrionment.
sampler_seed=dict(type='DistSamplerSeedHook'),# validation results visualization, set True to enable it.
visualization=dict(type='VisualizationHook', enable=False),)# configure environment
env_cfg =dict(# whether to enable cudnn benchmark
cudnn_benchmark=False,# set multi process parameters
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),# set distributed parameters
dist_cfg=dict(backend='nccl'),)# set visualizer
vis_backends =[dict(type='LocalVisBackend')]
visualizer =dict(type='UniversalVisualizer', vis_backends=vis_backends)# set log level
log_level ='INFO'# load from which checkpoint
load_from =None# whether to resume training from the loaded checkpoint
resume =False# Defaults to use random seed and disable `deterministic`
randomness =dict(seed=None, deterministic=False)