auto_scale_lr = dict(base_batch_size=16, enable=False) backend_args = None base_lr = 0.002 custom_hooks = [ dict( ema_type='ExpMomentumEMA', momentum=0.0002, priority=49, type='EMAHook', update_buffers=True), dict( switch_epoch=280, switch_pipeline=[ dict(backend_args=None, type='LoadImageFromFile'), dict( poly2mask=False, type='LoadAnnotations', with_bbox=True, with_mask=True), dict( keep_ratio=True, ratio_range=( 0.1, 2.0, ), scale=( 640, 640, ), type='RandomResize'), dict( allow_negative_crop=True, crop_size=( 640, 640, ), recompute_bbox=True, type='RandomCrop'), dict(min_gt_bbox_wh=( 1, 1, ), type='FilterAnnotations'), dict(type='YOLOXHSVRandomAug'), dict(prob=0.5, type='RandomFlip'), dict( pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict(type='PackDetInputs'), ], type='PipelineSwitchHook'), ] data_root = '/kfs2/projects/pvfleets24/repos/cv-dl-framework' dataset_type = 'CocoDataset' default_hooks = dict( checkpoint=dict( rule='greater', save_best='coco/bbox_mAP_50', type='CheckpointHook'), logger=dict(interval=50, type='LoggerHook'), param_scheduler=dict(type='ParamSchedulerHook'), sampler_seed=dict(type='DistSamplerSeedHook'), timer=dict(type='IterTimerHook'), visualization=dict(type='DetVisualizationHook')) default_scope = 'mmdet' env_cfg = dict( cudnn_benchmark=False, dist_cfg=dict(backend='nccl'), mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0)) img_scales = [ ( 640, 640, ), ( 320, 320, ), ( 960, 960, ), ] interval = 10 launcher = 'none' load_from = 'best_coco_bbox_mAP_50_epoch_291.pth' log_level = 'INFO' log_processor = dict(by_epoch=True, type='LogProcessor', window_size=50) max_epochs = 300 metainfo = dict( classes=( 'carport-fixed-tilt', 'ground-dual-axis-tracker', 'ground-fixed-tilt', 'ground-single-axis-tracker', 'rooftop-fixed-tilt', )) model = dict( backbone=dict( act_cfg=dict(inplace=True, type='SiLU'), arch='P5', channel_attention=True, deepen_factor=1.33, expand_ratio=0.5, norm_cfg=dict(type='SyncBN'), type='CSPNeXt', widen_factor=1.25), bbox_head=dict( act_cfg=dict(inplace=True, type='SiLU'), anchor_generator=dict( offset=0, strides=[ 8, 16, 32, ], type='MlvlPointGenerator'), bbox_coder=dict(type='DistancePointBBoxCoder'), feat_channels=320, in_channels=320, loss_bbox=dict(loss_weight=2.0, type='GIoULoss'), loss_cls=dict( beta=2.0, loss_weight=1.0, type='QualityFocalLoss', use_sigmoid=True), loss_mask=dict( eps=5e-06, loss_weight=2.0, reduction='mean', type='DiceLoss'), norm_cfg=dict(requires_grad=True, type='SyncBN'), num_classes=5, pred_kernel_size=1, share_conv=True, stacked_convs=2, test_cfg=dict( mask_thr_binary=0.5, max_per_img=100, min_bbox_size=0, nms=dict(iou_threshold=0.6, type='nms'), nms_pre=1000, score_thr=0.05), train_cfg=dict( allowed_border=-1, assigner=dict(topk=13, type='DynamicSoftLabelAssigner'), debug=False, pos_weight=-1), type='RTMDetInsSepBNHead'), data_preprocessor=dict( batch_augments=None, bgr_to_rgb=False, mean=[ 103.53, 116.28, 123.675, ], std=[ 57.375, 57.12, 58.395, ], type='DetDataPreprocessor'), neck=dict( act_cfg=dict(inplace=True, type='SiLU'), expand_ratio=0.5, in_channels=[ 320, 640, 1280, ], norm_cfg=dict(type='SyncBN'), num_csp_blocks=4, out_channels=320, type='CSPNeXtPAFPN'), test_cfg=dict( mask_thr_binary=0.5, max_per_img=100, min_bbox_size=0, nms=dict(iou_threshold=0.6, type='nms'), nms_pre=1000, score_thr=0.05), train_cfg=dict( allowed_border=-1, assigner=dict(topk=13, type='DynamicSoftLabelAssigner'), debug=False, pos_weight=-1), type='RTMDet') optim_wrapper = dict( optimizer=dict(lr=0.001, type='AdamW', weight_decay=0.05), paramwise_cfg=dict( bias_decay_mult=0, bypass_duplicate=True, norm_decay_mult=0), type='OptimWrapper') param_scheduler = [ dict( begin=0, by_epoch=False, end=1000, start_factor=1e-05, type='LinearLR'), dict( T_max=150, begin=150, by_epoch=True, convert_to_iter_based=True, end=300, eta_min=0.0001, type='CosineAnnealingLR'), ] resume = False stage2_num_epochs = 20 test_cfg = dict(type='TestLoop') test_dataloader = dict( batch_size=5, dataset=dict( ann_file='/cv-dl-framework/test/label_json.json', backend_args=None, data_prefix=dict( img='/kfs2/projects/pvfleets24/repos/cv-dl-framework/test/images/' ), data_root='/kfs2/projects/pvfleets24/repos/cv-dl-framework', metainfo=dict( classes=( 'carport-fixed-tilt', 'ground-dual-axis-tracker', 'ground-fixed-tilt', 'ground-single-axis-tracker', 'rooftop-fixed-tilt', )), pipeline=[ dict(backend_args=None, type='LoadImageFromFile'), dict(keep_ratio=True, scale=( 640, 640, ), type='Resize'), dict( pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict(type='LoadAnnotations', with_bbox=True), dict( meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', ), type='PackDetInputs'), ], test_mode=True, type='CocoDataset'), drop_last=False, num_workers=10, persistent_workers=True, sampler=dict(shuffle=False, type='DefaultSampler')) test_evaluator = dict( ann_file='/cv-dl-framework/test/label_json.json', backend_args=None, format_only=False, metric=[ 'bbox', 'segm', ], proposal_nums=( 100, 1, 10, ), type='CocoMetric') test_pipeline = [ dict(backend_args=None, type='LoadImageFromFile'), dict(keep_ratio=True, scale=( 640, 640, ), type='Resize'), dict(pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict(type='LoadAnnotations', with_bbox=True), dict( meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', ), type='PackDetInputs'), ] train_cfg = dict( dynamic_intervals=[ ( 280, 1, ), ], max_epochs=300, type='EpochBasedTrainLoop', val_interval=3) train_dataloader = dict( batch_sampler=None, batch_size=4, dataset=dict( ann_file='/cv-dl-framework/train/label_json.json', backend_args=None, data_prefix=dict( img='/kfs2/projects/pvfleets24/repos/cv-dl-framework/train/images/' ), data_root='/kfs2/projects/pvfleets24/repos/cv-dl-framework', filter_cfg=dict(filter_empty_gt=True, min_size=32), metainfo=dict( classes=( 'carport-fixed-tilt', 'ground-dual-axis-tracker', 'ground-fixed-tilt', 'ground-single-axis-tracker', 'rooftop-fixed-tilt', )), pipeline=[ dict(backend_args=None, type='LoadImageFromFile'), dict( poly2mask=False, type='LoadAnnotations', with_bbox=True, with_mask=True), dict(img_scale=( 640, 640, ), pad_val=114.0, type='CachedMosaic'), dict( keep_ratio=True, ratio_range=( 0.1, 2.0, ), scale=( 1280, 1280, ), type='RandomResize'), dict( allow_negative_crop=True, crop_size=( 640, 640, ), recompute_bbox=True, type='RandomCrop'), dict(type='YOLOXHSVRandomAug'), dict(prob=0.5, type='RandomFlip'), dict( pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict( img_scale=( 640, 640, ), max_cached_images=20, pad_val=( 114, 114, 114, ), ratio_range=( 1.0, 1.0, ), type='CachedMixUp'), dict(min_gt_bbox_wh=( 1, 1, ), type='FilterAnnotations'), dict(type='PackDetInputs'), ], type='CocoDataset'), num_workers=10, persistent_workers=True, pin_memory=True, sampler=dict(shuffle=True, type='DefaultSampler')) train_pipeline = [ dict(backend_args=None, type='LoadImageFromFile'), dict( poly2mask=False, type='LoadAnnotations', with_bbox=True, with_mask=True), dict(img_scale=( 640, 640, ), pad_val=114.0, type='CachedMosaic'), dict( keep_ratio=True, ratio_range=( 0.1, 2.0, ), scale=( 1280, 1280, ), type='RandomResize'), dict( allow_negative_crop=True, crop_size=( 640, 640, ), recompute_bbox=True, type='RandomCrop'), dict(type='YOLOXHSVRandomAug'), dict(prob=0.5, type='RandomFlip'), dict(pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict( img_scale=( 640, 640, ), max_cached_images=20, pad_val=( 114, 114, 114, ), ratio_range=( 1.0, 1.0, ), type='CachedMixUp'), dict(min_gt_bbox_wh=( 1, 1, ), type='FilterAnnotations'), dict(type='PackDetInputs'), ] train_pipeline_stage2 = [ dict(backend_args=None, type='LoadImageFromFile'), dict( poly2mask=False, type='LoadAnnotations', with_bbox=True, with_mask=True), dict( keep_ratio=True, ratio_range=( 0.1, 2.0, ), scale=( 640, 640, ), type='RandomResize'), dict( allow_negative_crop=True, crop_size=( 640, 640, ), recompute_bbox=True, type='RandomCrop'), dict(min_gt_bbox_wh=( 1, 1, ), type='FilterAnnotations'), dict(type='YOLOXHSVRandomAug'), dict(prob=0.5, type='RandomFlip'), dict(pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict(type='PackDetInputs'), ] tta_model = dict( tta_cfg=dict(max_per_img=100, nms=dict(iou_threshold=0.6, type='nms')), type='DetTTAModel') tta_pipeline = [ dict(backend_args=None, type='LoadImageFromFile'), dict( transforms=[ [ dict(keep_ratio=True, scale=( 640, 640, ), type='Resize'), dict(keep_ratio=True, scale=( 320, 320, ), type='Resize'), dict(keep_ratio=True, scale=( 960, 960, ), type='Resize'), ], [ dict(prob=1.0, type='RandomFlip'), dict(prob=0.0, type='RandomFlip'), ], [ dict( pad_val=dict(img=( 114, 114, 114, )), size=( 960, 960, ), type='Pad'), ], [ dict(type='LoadAnnotations', with_bbox=True), ], [ dict( meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', 'flip', 'flip_direction', ), type='PackDetInputs'), ], ], type='TestTimeAug'), ] val_cfg = dict(type='ValLoop') val_dataloader = dict( batch_size=5, dataset=dict( ann_file='/cv-dl-framework/test/label_json.json', backend_args=None, data_prefix=dict( img='/kfs2/projects/pvfleets24/repos/cv-dl-framework/test/images/' ), data_root='/kfs2/projects/pvfleets24/repos/cv-dl-framework', metainfo=dict( classes=( 'carport-fixed-tilt', 'ground-dual-axis-tracker', 'ground-fixed-tilt', 'ground-single-axis-tracker', 'rooftop-fixed-tilt', )), pipeline=[ dict(backend_args=None, type='LoadImageFromFile'), dict(keep_ratio=True, scale=( 640, 640, ), type='Resize'), dict( pad_val=dict(img=( 114, 114, 114, )), size=( 640, 640, ), type='Pad'), dict(type='LoadAnnotations', with_bbox=True), dict( meta_keys=( 'img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', ), type='PackDetInputs'), ], test_mode=True, type='CocoDataset'), drop_last=False, num_workers=10, persistent_workers=True, sampler=dict(shuffle=False, type='DefaultSampler')) val_evaluator = dict( ann_file='/cv-dl-framework/test/label_json.json', backend_args=None, format_only=False, metric=[ 'bbox', 'segm', ], proposal_nums=( 100, 1, 10, ), type='CocoMetric') vis_backends = [ dict(type='LocalVisBackend'), ] visualizer = dict( name='visualizer', type='DetLocalVisualizer', vis_backends=[ dict( save_dir='/12_03_2026_12_24_40', type='LocalVisBackend'), ]) work_dir = '/12_03_2026_12_24_40'