TOPK = (1, 2) NUM_CLASSES = 6 CLASSES = ['0-11', '12-24', '25-29', '30-40', '41-64', '65+'] dataset_type = 'CustomDataset' data_preprocessor = dict( num_classes=6, mean=[122.7709383, 116.7460125, 104.09373615000001], std=[68.5005327, 66.6321579, 70.32316304999999], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile'), dict( type='RandomResizedCrop', scale=448, backend='pillow', interpolation='bicubic'), dict(type='RandomFlip', prob=0.5, direction='horizontal'), dict(type='PackInputs') ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( _scope_='mmpretrain', type='ResizeEdge', scale=448, edge='short', backend='pillow', interpolation='bicubic'), dict(type='CenterCrop', crop_size=448), dict(type='PackInputs') ] train_dataloader = dict( pin_memory=True, persistent_workers=True, collate_fn=dict(type='default_collate'), batch_size=10, num_workers=5, dataset=dict( type='CustomDataset', data_root='../data-raw/external/UTKFace/', ann_file='train/train_age.txt', data_prefix='train', pipeline=[ dict(type='LoadImageFromFile'), dict( type='RandomResizedCrop', scale=448, backend='pillow', interpolation='bicubic'), dict(type='RandomFlip', prob=0.5, direction='horizontal'), dict(type='PackInputs') ], with_label=True, classes=['0-11', '12-24', '25-29', '30-40', '41-64', '65+']), sampler=dict(type='DefaultSampler', shuffle=True)) val_dataloader = dict( pin_memory=True, persistent_workers=True, collate_fn=dict(type='default_collate'), batch_size=10, num_workers=5, dataset=dict( type='CustomDataset', data_root='../data-raw/external/UTKFace/', ann_file='val/val_age.txt', data_prefix='val', pipeline=[ dict(type='LoadImageFromFile'), dict( _scope_='mmpretrain', type='ResizeEdge', scale=448, edge='short', backend='pillow', interpolation='bicubic'), dict(type='CenterCrop', crop_size=448), dict(type='PackInputs') ], with_label=True, classes=['0-11', '12-24', '25-29', '30-40', '41-64', '65+']), sampler=dict(type='DefaultSampler', shuffle=False)) val_evaluator = dict(type='Accuracy', topk=(1, 2)) test_dataloader = dict( pin_memory=True, persistent_workers=True, collate_fn=dict(type='default_collate'), batch_size=10, num_workers=5, dataset=dict( type='CustomDataset', data_root='../data-raw/external/UTKFace/', ann_file='test/test_age.txt', data_prefix='test', pipeline=[ dict(type='LoadImageFromFile'), dict( _scope_='mmpretrain', type='ResizeEdge', scale=448, edge='short', backend='pillow', interpolation='bicubic'), dict(type='CenterCrop', crop_size=448), dict(type='PackInputs') ], with_label=True, classes=['0-11', '12-24', '25-29', '30-40', '41-64', '65+']), sampler=dict(type='DefaultSampler', shuffle=False)) test_evaluator = dict(type='Accuracy', topk=(1, 2)) optim_wrapper = dict( optimizer=dict(type='AdamW', lr=1.5e-07, weight_decay=0.3), paramwise_cfg=dict( custom_keys=dict({ '.cls_token': dict(decay_mult=0.0), '.pos_embed': dict(decay_mult=0.0) }))) warmup_epochs = 15 param_scheduler = [ dict( type='LinearLR', start_factor=0.001, by_epoch=True, end=15, convert_to_iter_based=True), dict(type='CosineAnnealingLR', eta_min=1e-05, by_epoch=True, begin=15), dict( type='MultiStepLR', by_epoch=True, begin=0, end=41, milestones=[15, 40], gamma=0.1) ] train_cfg = dict(by_epoch=True, max_epochs=100, val_interval=1) val_cfg = dict() test_cfg = dict() auto_scale_lr = dict(base_batch_size=2048) default_scope = 'mmpretrain' default_hooks = dict( timer=dict(type='IterTimerHook'), logger=dict(type='LoggerHook', interval=100), param_scheduler=dict(type='ParamSchedulerHook'), checkpoint=dict(type='CheckpointHook', interval=1), sampler_seed=dict(type='DistSamplerSeedHook'), visualization=dict(type='VisualizationHook', enable=False)) custom_hooks = [ dict( type='EarlyStoppingHook', monitor='accuracy/top1', patience=100, stopping_threshold=85.0 )] env_cfg = dict( cudnn_benchmark=False, mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), dist_cfg=dict(backend='nccl')) vis_backends = [dict(type='LocalVisBackend')] visualizer = dict( type='UniversalVisualizer', vis_backends=[ dict(type='TensorboardVisBackend'), dict( type='WandbVisBackend', init_kwargs=dict(project='age_estimation'), define_metric_cfg=[ dict(name='accuracy/top1', step_metric='epoch'), dict(name='accuracy/top2', step_metric='epoch'), ] )]) log_level = 'INFO' load_from = None resume = False randomness = dict(seed=None, deterministic=False) model = dict( type='ImageClassifier', backbone=dict( type='ViTEVA02', arch='b', img_size=448, patch_size=14, sub_ln=True, final_norm=False, out_type='avg_featmap', init_cfg=dict( type='Pretrained', checkpoint= '../pre-trained-models/eva02-base-p14_in21k-pre_in21k-medft_3rdparty_in1k-448px_20230505-5cd4d87f.pth', prefix='backbone')), neck=None, head=dict( type='LinearClsHead', num_classes=6, in_channels=768, loss=dict( type='LabelSmoothLoss', label_smooth_val=0.1, mode='original')), init_cfg=[ dict(type='TruncNormal', layer='Linear', std=0.02), dict(type='Constant', layer='LayerNorm', val=1.0, bias=0.0) ], train_cfg=dict(augments=[ dict(type='Mixup', alpha=0.8), dict(type='CutMix', alpha=1.0) ])) launcher = 'pytorch' work_dir = './work_dirs/eva02-base-p14_in1k'