159 lines
4.5 KiB
Python
159 lines
4.5 KiB
Python
# Refer to https://pytorch.org/blog/ml-models-torchvision-v0.9/#classification
|
|
# ----------------------------
|
|
# -[x] auto_augment='imagenet'
|
|
# -[x] batch_size=128 (per gpu)
|
|
# -[x] epochs=600
|
|
# -[x] opt='rmsprop'
|
|
# -[x] lr=0.064
|
|
# -[x] eps=0.0316
|
|
# -[x] alpha=0.9
|
|
# -[x] weight_decay=1e-05
|
|
# -[x] momentum=0.9
|
|
# -[x] lr_gamma=0.973
|
|
# -[x] lr_step_size=2
|
|
# -[x] nproc_per_node=8
|
|
# -[x] random_erase=0.2
|
|
# -[x] workers=16 (workers_per_gpu)
|
|
# - modify: RandomErasing use RE-M instead of RE-0
|
|
|
|
_base_ = [
|
|
'../_base_/models/mobilenet_v3_small_imagenet.py',
|
|
'../_base_/datasets/imagenet_bs32_pil_resize.py',
|
|
'../_base_/default_runtime.py'
|
|
]
|
|
|
|
img_norm_cfg = dict(
|
|
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
|
|
|
|
policies = [
|
|
[
|
|
dict(type='Posterize', bits=4, prob=0.4),
|
|
dict(type='Rotate', angle=30., prob=0.6)
|
|
],
|
|
[
|
|
dict(type='Solarize', thr=256 / 9 * 4, prob=0.6),
|
|
dict(type='AutoContrast', prob=0.6)
|
|
],
|
|
[dict(type='Equalize', prob=0.8),
|
|
dict(type='Equalize', prob=0.6)],
|
|
[
|
|
dict(type='Posterize', bits=5, prob=0.6),
|
|
dict(type='Posterize', bits=5, prob=0.6)
|
|
],
|
|
[
|
|
dict(type='Equalize', prob=0.4),
|
|
dict(type='Solarize', thr=256 / 9 * 5, prob=0.2)
|
|
],
|
|
[
|
|
dict(type='Equalize', prob=0.4),
|
|
dict(type='Rotate', angle=30 / 9 * 8, prob=0.8)
|
|
],
|
|
[
|
|
dict(type='Solarize', thr=256 / 9 * 6, prob=0.6),
|
|
dict(type='Equalize', prob=0.6)
|
|
],
|
|
[dict(type='Posterize', bits=6, prob=0.8),
|
|
dict(type='Equalize', prob=1.)],
|
|
[
|
|
dict(type='Rotate', angle=10., prob=0.2),
|
|
dict(type='Solarize', thr=256 / 9, prob=0.6)
|
|
],
|
|
[
|
|
dict(type='Equalize', prob=0.6),
|
|
dict(type='Posterize', bits=5, prob=0.4)
|
|
],
|
|
[
|
|
dict(type='Rotate', angle=30 / 9 * 8, prob=0.8),
|
|
dict(type='ColorTransform', magnitude=0., prob=0.4)
|
|
],
|
|
[
|
|
dict(type='Rotate', angle=30., prob=0.4),
|
|
dict(type='Equalize', prob=0.6)
|
|
],
|
|
[dict(type='Equalize', prob=0.0),
|
|
dict(type='Equalize', prob=0.8)],
|
|
[dict(type='Invert', prob=0.6),
|
|
dict(type='Equalize', prob=1.)],
|
|
[
|
|
dict(type='ColorTransform', magnitude=0.4, prob=0.6),
|
|
dict(type='Contrast', magnitude=0.8, prob=1.)
|
|
],
|
|
[
|
|
dict(type='Rotate', angle=30 / 9 * 8, prob=0.8),
|
|
dict(type='ColorTransform', magnitude=0.2, prob=1.)
|
|
],
|
|
[
|
|
dict(type='ColorTransform', magnitude=0.8, prob=0.8),
|
|
dict(type='Solarize', thr=256 / 9 * 2, prob=0.8)
|
|
],
|
|
[
|
|
dict(type='Sharpness', magnitude=0.7, prob=0.4),
|
|
dict(type='Invert', prob=0.6)
|
|
],
|
|
[
|
|
dict(
|
|
type='Shear',
|
|
magnitude=0.3 / 9 * 5,
|
|
prob=0.6,
|
|
direction='horizontal'),
|
|
dict(type='Equalize', prob=1.)
|
|
],
|
|
[
|
|
dict(type='ColorTransform', magnitude=0., prob=0.4),
|
|
dict(type='Equalize', prob=0.6)
|
|
],
|
|
[
|
|
dict(type='Equalize', prob=0.4),
|
|
dict(type='Solarize', thr=256 / 9 * 5, prob=0.2)
|
|
],
|
|
[
|
|
dict(type='Solarize', thr=256 / 9 * 4, prob=0.6),
|
|
dict(type='AutoContrast', prob=0.6)
|
|
],
|
|
[dict(type='Invert', prob=0.6),
|
|
dict(type='Equalize', prob=1.)],
|
|
[
|
|
dict(type='ColorTransform', magnitude=0.4, prob=0.6),
|
|
dict(type='Contrast', magnitude=0.8, prob=1.)
|
|
],
|
|
[dict(type='Equalize', prob=0.8),
|
|
dict(type='Equalize', prob=0.6)],
|
|
]
|
|
|
|
train_pipeline = [
|
|
dict(type='LoadImageFromFile'),
|
|
dict(type='RandomResizedCrop', size=224, backend='pillow'),
|
|
dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),
|
|
dict(type='AutoAugment', policies=policies),
|
|
dict(
|
|
type='RandomErasing',
|
|
erase_prob=0.2,
|
|
mode='const',
|
|
min_area_ratio=0.02,
|
|
max_area_ratio=1 / 3,
|
|
fill_color=img_norm_cfg['mean']),
|
|
dict(type='Normalize', **img_norm_cfg),
|
|
dict(type='ImageToTensor', keys=['img']),
|
|
dict(type='ToTensor', keys=['gt_label']),
|
|
dict(type='Collect', keys=['img', 'gt_label'])
|
|
]
|
|
|
|
data = dict(
|
|
samples_per_gpu=128,
|
|
workers_per_gpu=4,
|
|
train=dict(pipeline=train_pipeline))
|
|
evaluation = dict(interval=10, metric='accuracy')
|
|
|
|
# optimizer
|
|
optimizer = dict(
|
|
type='RMSprop',
|
|
lr=0.064,
|
|
alpha=0.9,
|
|
momentum=0.9,
|
|
eps=0.0316,
|
|
weight_decay=1e-5)
|
|
optimizer_config = dict(grad_clip=None)
|
|
# learning policy
|
|
lr_config = dict(policy='step', step=2, gamma=0.973, by_epoch=True)
|
|
runner = dict(type='EpochBasedRunner', max_epochs=600)
|