Spaces:
Runtime error
Runtime error
_base_ = [ | |
'../_base_/default_runtime_det.py', '../_base_/schedules/schedule_1x.py', | |
'../_base_/datasets/coco_detection.py', './rtmdet_tta.py' | |
] | |
model = dict( | |
type='RTMDet', | |
data_preprocessor=dict( | |
type='DetDataPreprocessor', | |
mean=[103.53, 116.28, 123.675], | |
std=[57.375, 57.12, 58.395], | |
bgr_to_rgb=False, | |
batch_augments=None), | |
backbone=dict( | |
type='CSPNeXt', | |
arch='P5', | |
expand_ratio=0.5, | |
deepen_factor=1, | |
widen_factor=1, | |
channel_attention=True, | |
norm_cfg=dict(type='SyncBN'), | |
act_cfg=dict(type='SiLU', inplace=True)), | |
neck=dict( | |
type='CSPNeXtPAFPN', | |
in_channels=[256, 512, 1024], | |
out_channels=256, | |
num_csp_blocks=3, | |
expand_ratio=0.5, | |
norm_cfg=dict(type='SyncBN'), | |
act_cfg=dict(type='SiLU', inplace=True)), | |
bbox_head=dict( | |
type='RTMDetSepBNHead', | |
num_classes=80, | |
in_channels=256, | |
stacked_convs=2, | |
feat_channels=256, | |
anchor_generator=dict( | |
type='MlvlPointGenerator', offset=0, strides=[8, 16, 32]), | |
bbox_coder=dict(type='DistancePointBBoxCoder'), | |
loss_cls=dict( | |
type='QualityFocalLoss', | |
use_sigmoid=True, | |
beta=2.0, | |
loss_weight=1.0), | |
loss_bbox=dict(type='GIoULoss', loss_weight=2.0), | |
with_objectness=False, | |
exp_on_reg=True, | |
share_conv=True, | |
pred_kernel_size=1, | |
norm_cfg=dict(type='SyncBN'), | |
act_cfg=dict(type='SiLU', inplace=True)), | |
train_cfg=dict( | |
assigner=dict(type='DynamicSoftLabelAssigner', topk=13), | |
allowed_border=-1, | |
pos_weight=-1, | |
debug=False), | |
test_cfg=dict( | |
nms_pre=30000, | |
min_bbox_size=0, | |
score_thr=0.001, | |
nms=dict(type='nms', iou_threshold=0.65), | |
max_per_img=300), | |
) | |
train_pipeline = [ | |
dict( | |
type='LoadImageFromFile', | |
file_client_args={{_base_.file_client_args}}), | |
dict(type='LoadAnnotations', with_bbox=True), | |
dict(type='CachedMosaic', img_scale=(640, 640), pad_val=114.0), | |
dict( | |
type='RandomResize', | |
scale=(1280, 1280), | |
ratio_range=(0.1, 2.0), | |
keep_ratio=True), | |
dict(type='RandomCrop', crop_size=(640, 640)), | |
dict(type='YOLOXHSVRandomAug'), | |
dict(type='RandomFlip', prob=0.5), | |
dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))), | |
dict( | |
type='CachedMixUp', | |
img_scale=(640, 640), | |
ratio_range=(1.0, 1.0), | |
max_cached_images=20, | |
pad_val=(114, 114, 114)), | |
dict(type='PackDetInputs') | |
] | |
train_pipeline_stage2 = [ | |
dict( | |
type='LoadImageFromFile', | |
file_client_args={{_base_.file_client_args}}), | |
dict(type='LoadAnnotations', with_bbox=True), | |
dict( | |
type='RandomResize', | |
scale=(640, 640), | |
ratio_range=(0.1, 2.0), | |
keep_ratio=True), | |
dict(type='RandomCrop', crop_size=(640, 640)), | |
dict(type='YOLOXHSVRandomAug'), | |
dict(type='RandomFlip', prob=0.5), | |
dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))), | |
dict(type='PackDetInputs') | |
] | |
test_pipeline = [ | |
dict( | |
type='LoadImageFromFile', | |
file_client_args={{_base_.file_client_args}}), | |
dict(type='Resize', scale=(640, 640), keep_ratio=True), | |
dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))), | |
dict( | |
type='PackDetInputs', | |
meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', | |
'scale_factor')) | |
] | |
train_dataloader = dict( | |
batch_size=32, | |
num_workers=10, | |
batch_sampler=None, | |
pin_memory=True, | |
dataset=dict(pipeline=train_pipeline)) | |
val_dataloader = dict( | |
batch_size=5, num_workers=10, dataset=dict(pipeline=test_pipeline)) | |
test_dataloader = val_dataloader | |
max_epochs = 300 | |
stage2_num_epochs = 20 | |
base_lr = 0.004 | |
interval = 10 | |
train_cfg = dict( | |
max_epochs=max_epochs, | |
val_interval=interval, | |
dynamic_intervals=[(max_epochs - stage2_num_epochs, 1)]) | |
val_evaluator = dict(proposal_nums=(100, 1, 10)) | |
test_evaluator = val_evaluator | |
# optimizer | |
optim_wrapper = dict( | |
_delete_=True, | |
type='OptimWrapper', | |
optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), | |
paramwise_cfg=dict( | |
norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) | |
# learning rate | |
param_scheduler = [ | |
dict( | |
type='LinearLR', | |
start_factor=1.0e-5, | |
by_epoch=False, | |
begin=0, | |
end=1000), | |
dict( | |
# use cosine lr from 150 to 300 epoch | |
type='CosineAnnealingLR', | |
eta_min=base_lr * 0.05, | |
begin=max_epochs // 2, | |
end=max_epochs, | |
T_max=max_epochs // 2, | |
by_epoch=True, | |
convert_to_iter_based=True), | |
] | |
# hooks | |
default_hooks = dict( | |
checkpoint=dict( | |
interval=interval, | |
max_keep_ckpts=3 # only keep latest 3 checkpoints | |
)) | |
custom_hooks = [ | |
dict( | |
type='EMAHook', | |
ema_type='ExpMomentumEMA', | |
momentum=0.0002, | |
update_buffers=True, | |
priority=49), | |
dict( | |
type='PipelineSwitchHook', | |
switch_epoch=max_epochs - stage2_num_epochs, | |
switch_pipeline=train_pipeline_stage2) | |
] | |