From 1c3933c9b75f188a0762b49377d234c8c788a1f4 Mon Sep 17 00:00:00 2001 From: mjq2020 Date: Wed, 16 Aug 2023 02:02:25 +0000 Subject: [PATCH] configs: update classification config files --- configs/_base_/default_runtime_cls.py | 2 +- .../mobnetv2_0.35_rep_1bx16_300e_cifar10.py | 18 +-- .../mobnetv2_0.35_rep_1bx16_300e_cifar100.py | 14 ++- .../mobnetv2_0.35_rep_1bx16_300e_custom.py | 21 ++-- .../mobnetv2_0.35_rep_1bx16_300e_mnist.py | 106 ++++++++++++++++++ .../mobnetv2_1.0_1bx16_300e_cifar10.py | 14 ++- .../mobnetv2_1.0_1bx16_300e_cifar100.py | 14 ++- .../mobnetv2_1.0_1bx16_300e_custom.py | 14 ++- .../mobnetv3_small_1bx16_300e_cifar10.py | 12 +- .../mobnetv3_small_1bx16_300e_cifar100.py | 14 ++- .../mobnetv3_small_1bx16_300e_custom.py | 20 ++-- 11 files changed, 180 insertions(+), 69 deletions(-) create mode 100644 configs/classification/mobnetv2_0.35_rep_1bx16_300e_mnist.py diff --git a/configs/_base_/default_runtime_cls.py b/configs/_base_/default_runtime_cls.py index 9a677f58..e4bff913 100644 --- a/configs/_base_/default_runtime_cls.py +++ b/configs/_base_/default_runtime_cls.py @@ -29,7 +29,7 @@ # set visualizer vis_backends = [dict(type='LocalVisBackend')] -# visualizer = dict(type='mmcls.UniversalVisualizer', vis_backends=vis_backends) +visualizer = dict(type='mmcls.ClsVisualizer', vis_backends=vis_backends) # set log level log_level = 'INFO' diff --git a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar10.py b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar10.py index 92b363de..e961e3d7 100644 --- a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar10.py +++ b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar10.py @@ -10,22 +10,23 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 model = dict( type='edgelab.ImageClassifier', - backbone=dict(type='MobileNetv2', widen_factor=0.35, out_indices=(2,), rep=True), + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), + backbone=dict(type='MobileNetv2', gray_input=False, widen_factor=0.35, out_indices=(2,), rep=True), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( type='mmcls.LinearClsHead', - in_channels=16, + in_channels=32, num_classes=num_classes, loss=dict(type='mmcls.CrossEntropyLoss', loss_weight=1.0), topk=(1, 5), @@ -33,9 +34,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -93,7 +95,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -101,4 +103,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar100.py b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar100.py index 29cefbe5..b2034ae7 100644 --- a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar100.py +++ b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_cifar100.py @@ -10,17 +10,18 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='MobileNetv2', widen_factor=0.35, out_indices=(2,), rep=True), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -33,9 +34,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -93,7 +95,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -101,4 +103,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_custom.py b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_custom.py index 0a8391f7..95ec7ba0 100644 --- a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_custom.py +++ b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_custom.py @@ -10,24 +10,18 @@ data_root = 'datasets/digit' height = 96 width = 96 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 -data_preprocessor = dict( - type='mmcls.ClsDataPreprocessor', - mean=[0, 0, 0], - std=[255.0, 255.0, 255.0], - to_rgb=True, -) model = dict( type='edgelab.ImageClassifier', - data_preprocessor=data_preprocessor, + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='MobileNetv2', widen_factor=0.35, out_indices=(2,), rep=True), neck=dict(type='mmcls.GlobalAveragePooling', dim=2), head=dict( @@ -42,9 +36,10 @@ train_pipeline = [ dict(type='LoadImageFromFile'), + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -100,7 +95,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -108,4 +103,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_0.35_rep_1bx16_300e_mnist.py b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_mnist.py new file mode 100644 index 00000000..aeb004df --- /dev/null +++ b/configs/classification/mobnetv2_0.35_rep_1bx16_300e_mnist.py @@ -0,0 +1,106 @@ +_base_ = '../_base_/default_runtime_cls.py' +default_scope = 'edgelab' +custom_imports = dict(imports=['edgelab'], allow_failed_imports=False) + +# model settings +num_classes = 10 +gray = True + +# dataset settings +dataset_type = 'mmcls.MNIST' +data_root = 'datasets' +height = 32 +width = 32 +batch_size = 32 +workers = 8 +persistent_workers = True + +# optimizer +lr = 0.01 +epochs = 100 + + +model = dict( + type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0], std=[255.0]), + backbone=dict(type='MobileNetv2', gray_input=gray, widen_factor=0.35, out_indices=(2,), rep=True), + neck=dict(type='mmcls.GlobalAveragePooling'), + head=dict( + type='mmcls.LinearClsHead', + in_channels=32, + num_classes=num_classes, + loss=dict(type='mmcls.CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + ), +) + +train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.Rotate', angle=30.0, prob=0.6), + dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), + dict(type='mmcls.PackClsInputs'), +] + +test_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.PackClsInputs'), +] + +train_dataloader = dict( + # Training dataset configurations + batch_size=batch_size, + num_workers=workers, + persistent_workers=persistent_workers, + dataset=dict( + type=dataset_type, + data_root=data_root, + data_prefix='cifar10/', + test_mode=False, + pipeline=train_pipeline, + ), + sampler=dict(type='DefaultSampler', shuffle=True), +) + +val_dataloader = dict( + batch_size=batch_size, + num_workers=workers, + persistent_workers=persistent_workers, + dataset=dict( + type=dataset_type, + data_root=data_root, + data_prefix='cifar10/', + test_mode=True, + pipeline=test_pipeline, + ), + sampler=dict(type='DefaultSampler', shuffle=False), +) + +test_dataloader = val_dataloader + +# evaluator +val_evaluator = dict(type='mmcls.Accuracy', topk=(1, 5)) +test_evaluator = val_evaluator + + +val_cfg = dict() +test_cfg = dict() + +# optimizer +optim_wrapper = dict(optimizer=dict(type='SGD', lr=lr, momentum=0.9, weight_decay=0.0001)) + +# learning policy +param_scheduler = [ + dict(type='LinearLR', begin=0, end=30, start_factor=0.001, by_epoch=False), # warm-up + dict( + type='MultiStepLR', + begin=1, + end=500, + milestones=[30, 60, 90], + gamma=0.1, + by_epoch=True, + ), +] + +auto_scale_lr = dict(base_batch_size=batch_size) + +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_1.0_1bx16_300e_cifar10.py b/configs/classification/mobnetv2_1.0_1bx16_300e_cifar10.py index 0c3b4cab..ecf3f94c 100644 --- a/configs/classification/mobnetv2_1.0_1bx16_300e_cifar10.py +++ b/configs/classification/mobnetv2_1.0_1bx16_300e_cifar10.py @@ -10,16 +10,17 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV2', widen_factor=1.0), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -32,9 +33,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -91,7 +93,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -99,4 +101,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_1.0_1bx16_300e_cifar100.py b/configs/classification/mobnetv2_1.0_1bx16_300e_cifar100.py index 8010c4ba..b138badf 100644 --- a/configs/classification/mobnetv2_1.0_1bx16_300e_cifar100.py +++ b/configs/classification/mobnetv2_1.0_1bx16_300e_cifar100.py @@ -10,16 +10,17 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV2', widen_factor=1.0), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -32,9 +33,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -91,7 +93,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -99,4 +101,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv2_1.0_1bx16_300e_custom.py b/configs/classification/mobnetv2_1.0_1bx16_300e_custom.py index 64dc96f0..2736d363 100644 --- a/configs/classification/mobnetv2_1.0_1bx16_300e_custom.py +++ b/configs/classification/mobnetv2_1.0_1bx16_300e_custom.py @@ -10,13 +10,13 @@ data_root = 'datasets/digit' height = 96 width = 96 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 data_preprocessor = dict( type='mmcls.ClsDataPreprocessor', @@ -27,6 +27,7 @@ model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV2', widen_factor=1.0), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -41,9 +42,10 @@ train_pipeline = [ dict(type='LoadImageFromFile'), + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -99,7 +101,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -107,4 +109,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv3_small_1bx16_300e_cifar10.py b/configs/classification/mobnetv3_small_1bx16_300e_cifar10.py index 3d2c8d37..4781baf9 100644 --- a/configs/classification/mobnetv3_small_1bx16_300e_cifar10.py +++ b/configs/classification/mobnetv3_small_1bx16_300e_cifar10.py @@ -10,8 +10,8 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer @@ -20,6 +20,7 @@ model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV3', arch='small'), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -36,9 +37,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -89,8 +91,8 @@ # optimizer optim_wrapper = dict(optimizer=dict(type='SGD', lr=lr, momentum=0.9, weight_decay=0.0001)) # learning policy -param_scheduler = dict(type='MultiStepLR', by_epoch=True, milestones=[100, 150], gamma=0.1) +param_scheduler = dict(type='MultiStepLR', by_epoch=True, milestones=[30, 60, 90], gamma=0.1) auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv3_small_1bx16_300e_cifar100.py b/configs/classification/mobnetv3_small_1bx16_300e_cifar100.py index 5884ac6a..58043f68 100644 --- a/configs/classification/mobnetv3_small_1bx16_300e_cifar100.py +++ b/configs/classification/mobnetv3_small_1bx16_300e_cifar100.py @@ -10,16 +10,17 @@ data_root = 'datasets' height = 32 width = 32 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV3', arch='small'), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -36,9 +37,10 @@ ) train_pipeline = [ + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -89,8 +91,8 @@ # optimizer optim_wrapper = dict(optimizer=dict(type='SGD', lr=lr, momentum=0.9, weight_decay=0.0001)) # learning policy -param_scheduler = dict(type='MultiStepLR', by_epoch=True, milestones=[100, 150], gamma=0.1) +param_scheduler = dict(type='MultiStepLR', by_epoch=True, milestones=[30, 60, 90], gamma=0.1) auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5) diff --git a/configs/classification/mobnetv3_small_1bx16_300e_custom.py b/configs/classification/mobnetv3_small_1bx16_300e_custom.py index 6c62004c..44e746cd 100644 --- a/configs/classification/mobnetv3_small_1bx16_300e_custom.py +++ b/configs/classification/mobnetv3_small_1bx16_300e_custom.py @@ -10,23 +10,18 @@ data_root = 'datasets/digit' height = 96 width = 96 -batch_size = 16 -workers = 1 +batch_size = 32 +workers = 8 persistent_workers = True # optimizer lr = 0.01 -epochs = 300 +epochs = 100 -data_preprocessor = dict( - type='mmcls.ClsDataPreprocessor', - mean=[0, 0, 0], - std=[255.0, 255.0, 255.0], - to_rgb=True, -) model = dict( type='edgelab.ImageClassifier', + data_preprocessor=dict(type='mmdet.DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0]), backbone=dict(type='mmcls.MobileNetV3', arch='small'), neck=dict(type='mmcls.GlobalAveragePooling'), head=dict( @@ -44,9 +39,10 @@ train_pipeline = [ dict(type='LoadImageFromFile'), + dict(type='mmengine.Resize', scale=(height, width)), + dict(type='mmcls.ColorJitter', brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2), dict(type='mmcls.Rotate', angle=30.0, prob=0.6), dict(type='mmcls.RandomFlip', prob=0.5, direction='horizontal'), - dict(type='mmengine.Resize', scale=(height, width)), dict(type='mmcls.PackClsInputs'), ] @@ -102,7 +98,7 @@ type='MultiStepLR', begin=1, end=500, - milestones=[100, 200, 250], + milestones=[30, 60, 90], gamma=0.1, by_epoch=True, ), @@ -110,4 +106,4 @@ auto_scale_lr = dict(base_batch_size=batch_size) -train_cfg = dict(by_epoch=True, max_epochs=epochs) +train_cfg = dict(by_epoch=True, max_epochs=epochs, val_interval=5)