_base_ = './rtmdet_l_syncbn_fast_8xb32-300e_coco.py' checkpoint = 'https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-s_imagenet_600e.pth' # noqa # ========================modified parameters====================== deepen_factor = 0.33 widen_factor = 0.5 img_scale = _base_.img_scale # ratio range for random resize random_resize_ratio_range = (0.5, 2.0) # Number of cached images in mosaic mosaic_max_cached_images = 40 # Number of cached images in mixup mixup_max_cached_images = 20 # =======================Unmodified in most cases================== model = dict( backbone=dict( deepen_factor=deepen_factor, widen_factor=widen_factor, # Since the checkpoint includes CUDA:0 data, # it must be forced to set map_location. # Once checkpoint is fixed, it can be removed. init_cfg=dict( type='Pretrained', prefix='backbone.', checkpoint=checkpoint, map_location='cpu')), neck=dict( deepen_factor=deepen_factor, widen_factor=widen_factor, ), bbox_head=dict(head_module=dict(widen_factor=widen_factor))) train_pipeline = [ dict(type='LoadImageFromFile', backend_args=_base_.backend_args), dict(type='LoadAnnotations', with_bbox=True), dict( type='Mosaic', img_scale=img_scale, use_cached=True, max_cached_images=mosaic_max_cached_images, pad_val=114.0), dict( type='mmdet.RandomResize', # img_scale is (width, height) scale=(img_scale[0] * 2, img_scale[1] * 2), ratio_range=random_resize_ratio_range, # note resize_type='mmdet.Resize', keep_ratio=True), dict(type='mmdet.RandomCrop', crop_size=img_scale), dict(type='mmdet.YOLOXHSVRandomAug'), dict(type='mmdet.RandomFlip', prob=0.5), dict(type='mmdet.Pad', size=img_scale, pad_val=dict(img=(114, 114, 114))), dict( type='YOLOv5MixUp', use_cached=True, max_cached_images=mixup_max_cached_images), dict(type='mmdet.PackDetInputs') ] train_pipeline_stage2 = [ dict(type='LoadImageFromFile', backend_args=_base_.backend_args), dict(type='LoadAnnotations', with_bbox=True), dict( type='mmdet.RandomResize', scale=img_scale, ratio_range=random_resize_ratio_range, # note resize_type='mmdet.Resize', keep_ratio=True), dict(type='mmdet.RandomCrop', crop_size=img_scale), dict(type='mmdet.YOLOXHSVRandomAug'), dict(type='mmdet.RandomFlip', prob=0.5), dict(type='mmdet.Pad', size=img_scale, pad_val=dict(img=(114, 114, 114))), dict(type='mmdet.PackDetInputs') ] train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) custom_hooks = [ dict( type='EMAHook', ema_type='ExpMomentumEMA', momentum=0.0002, update_buffers=True, strict_load=False, priority=49), dict( type='mmdet.PipelineSwitchHook', switch_epoch=_base_.max_epochs - _base_.num_epochs_stage2, switch_pipeline=train_pipeline_stage2) ]