dataset_type = 'CocoDataset' data_root = '/home/safouane/Downloads/benchmark_aircraft/data/' # dataset root backend_args = None max_epochs = 500 metainfo = { 'classes': ('airplane', ), 'palette': [ (0, 128, 255), ] } num_classes = 1 train_pipeline = [ dict(type='LoadImageFromFile', backend_args=None), dict(type='LoadAnnotations', with_bbox=True), dict( type='RandomChoiceResize', scales=[ ( 1333, 640, ), ( 1333, 672, ), ( 1333, 704, ), ( 1333, 736, ), ( 1333, 768, ), ( 1333, 800, ), ], keep_ratio=True), dict(type='RandomFlip', prob=0.5), dict(type='PackDetInputs'), ] test_pipeline = [ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=( 1333, 800, ), keep_ratio=True), dict(type='LoadAnnotations', with_bbox=True), dict( type='PackDetInputs', meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', )), ] train_dataloader = dict( batch_size=32, num_workers=2, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=True), batch_sampler=dict(type='AspectRatioBatchSampler'), dataset=dict( type='CocoDataset', metainfo=metainfo, data_root=data_root, ann_file='train/__coco.json', data_prefix=dict(img='train/'), filter_cfg=dict(filter_empty_gt=True, min_size=32), pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='LoadAnnotations', with_bbox=True), dict( type='RandomChoiceResize', scales=[ ( 1333, 640, ), ( 1333, 672, ), ( 1333, 704, ), ( 1333, 736, ), ( 1333, 768, ), ( 1333, 800, ), ], keep_ratio=True), dict(type='RandomFlip', prob=0.5), dict(type='PackDetInputs'), ], backend_args=None)) val_dataloader = dict( batch_size=32, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', metainfo=metainfo, data_root=data_root, ann_file='val/__coco.json', data_prefix=dict(img='val/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=( 1333, 800, ), keep_ratio=True), dict(type='LoadAnnotations', with_bbox=True), dict( type='PackDetInputs', meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', )), ], backend_args=None)) test_dataloader = dict( batch_size=32, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', metainfo=metainfo, data_root=data_root, ann_file='test/__coco.json', data_prefix=dict(img='test/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=( 1333, 800, ), keep_ratio=True), dict(type='LoadAnnotations', with_bbox=True), dict( type='PackDetInputs', meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', )), ], backend_args=None)) val_evaluator = dict( type='CocoMetric', ann_file=data_root + 'val/__coco.json', metric='bbox', format_only=False, backend_args=None) test_evaluator = dict( type='CocoMetric', ann_file=data_root + 'test/__coco.json', metric='bbox', format_only=False, backend_args=None) train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=max_epochs, val_interval=10) val_cfg = dict(type='ValLoop') test_cfg = dict(type='TestLoop') param_scheduler = [ dict( type='LinearLR', start_factor=0.00025, by_epoch=False, begin=0, end=4000), dict( type='MultiStepLR', begin=0, end=12, by_epoch=True, milestones=[ 8, 11, ], gamma=0.1), ] optim_wrapper = dict( type='OptimWrapper', optimizer=dict(type='SGD', lr=0.015, momentum=0.9, weight_decay=0.0001), paramwise_cfg=dict(norm_decay_mult=0.0)) auto_scale_lr = dict(enable=False, base_batch_size=32) default_scope = 'mmdet' default_hooks = dict( timer=dict(type='IterTimerHook'), logger=dict(type='LoggerHook', interval=5), param_scheduler=dict(type='ParamSchedulerHook'), checkpoint=dict( type='CheckpointHook', interval=5, max_keep_ckpts=2, # only keep latest 2 checkpoints save_best='auto' ), sampler_seed=dict(type='DistSamplerSeedHook'), visualization=dict(type='DetVisualizationHook')) 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='DetLocalVisualizer', vis_backends=[ dict(type='LocalVisBackend'), dict(type='TensorboardVisBackend'), ], name='visualizer') log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True) log_level = 'INFO' load_from = None resume = False model = dict( type='CenterNet', data_preprocessor=dict( type='DetDataPreprocessor', mean=[ 103.53, 116.28, 123.675, ], std=[ 1.0, 1.0, 1.0, ], bgr_to_rgb=False, pad_size_divisor=32), backbone=dict( type='ResNet', depth=50, num_stages=4, out_indices=( 0, 1, 2, 3, ), frozen_stages=1, norm_cfg=dict(type='BN', requires_grad=False), norm_eval=True, style='caffe', init_cfg=dict( type='Pretrained', checkpoint='open-mmlab://detectron2/resnet50_caffe')), neck=dict( type='FPN', in_channels=[ 256, 512, 1024, 2048, ], out_channels=256, start_level=1, add_extra_convs='on_output', num_outs=5, init_cfg=dict(type='Caffe2Xavier', layer='Conv2d'), relu_before_extra_convs=True), bbox_head=dict( type='CenterNetUpdateHead', num_classes=num_classes, in_channels=256, stacked_convs=4, feat_channels=256, strides=[ 8, 16, 32, 64, 128, ], hm_min_radius=4, hm_min_overlap=0.8, more_pos_thresh=0.2, more_pos_topk=9, soft_weight_on_reg=False, loss_cls=dict( type='GaussianFocalLoss', pos_weight=0.25, neg_weight=0.75, loss_weight=1.0), loss_bbox=dict(type='GIoULoss', loss_weight=2.0)), train_cfg=None, test_cfg=dict( nms_pre=1000, min_bbox_size=0, score_thr=0.05, nms=dict(type='nms', iou_threshold=0.6), max_per_img=100))