norm_cfg = dict(type='BN', requires_grad=False) model = dict( type='FasterRCNNVMRN', backbone=dict( type='mmdet.ResNet', depth=101, num_stages=3, strides=(1, 2, 2), dilations=(1, 1, 1), out_indices=(2, ), 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/resnet101_caffe')), rpn_head=dict( type='mmdet.RPNHead', in_channels=1024, feat_channels=1024, anchor_generator=dict( type='AnchorGenerator', scales=[8, 16, 32], ratios=[0.33, 0.5, 1.0, 2.0, 3.0], strides=[16]), bbox_coder=dict( type='DeltaXYWHBBoxCoder', target_means=[0.0, 0.0, 0.0, 0.0], target_stds=[1.0, 1.0, 1.0, 1.0]), loss_cls=dict( type='mmdet.CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0), loss_bbox=dict(type='mmdet.L1Loss', loss_weight=1.0)), roi_head=dict( type='mmdet.StandardRoIHead', shared_head=dict( type='mmdet.ResLayer', depth=50, stage=3, stride=1, style='caffe', norm_cfg=dict(type='BN', requires_grad=False), norm_eval=True), bbox_roi_extractor=dict( type='mmdet.SingleRoIExtractor', roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0), out_channels=1024, featmap_strides=[16]), bbox_head=dict( type='mmdet.BBoxHead', with_avg_pool=True, roi_feat_size=7, in_channels=2048, num_classes=31, bbox_coder=dict( type='DeltaXYWHBBoxCoder', target_means=[0.0, 0.0, 0.0, 0.0], target_stds=[0.1, 0.1, 0.2, 0.2]), reg_class_agnostic=False, loss_cls=dict( type='mmdet.CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0), loss_bbox=dict(type='mmdet.L1Loss', loss_weight=1.0))), vmrn_head=dict( type='invigorate.PairedRoIHead', shared_head=dict( type='invigorate.PairedResLayer', depth=50, stage=3, stride=1, style='caffe', norm_eval=False, share_weights=False), paired_roi_extractor=dict( type='invigorate.VMRNPairedRoIExtractor', roi_layer=dict(type='RoIPool', output_size=7), out_channels=1024, featmap_strides=[16]), relation_head=dict( type='invigorate.BBoxPairHead', with_avg_pool=True, roi_feat_size=7, in_channels=2048, num_relations=2, loss_cls=dict( type='mmdet.CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0))), train_cfg=dict( rpn=dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.7, neg_iou_thr=0.3, min_pos_iou=0.3, match_low_quality=True, ignore_iof_thr=-1), sampler=dict( type='RandomSampler', num=256, pos_fraction=0.5, neg_pos_ub=-1, add_gt_as_proposals=False), allowed_border=0, pos_weight=-1, debug=False), rpn_proposal=dict( nms_pre=12000, max_per_img=2000, nms=dict(type='nms', iou_threshold=0.7), min_bbox_size=0), rcnn=dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.5, neg_iou_thr=0.5, min_pos_iou=0.5, match_low_quality=False, ignore_iof_thr=-1), sampler=dict( type='RandomSampler', num=256, pos_fraction=0.25, neg_pos_ub=-1, add_gt_as_proposals=True), pos_weight=-1, debug=False), vmrn=dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.7, neg_iou_thr=0.5, min_pos_iou=0.7, match_low_quality=False, ignore_iof_thr=-1), relation_sampler=dict( type='RandomRelationSampler', num=32, pos_fraction=0.5, cls_ratio_ub=-1, add_gt_as_proposals=True, num_relation_cls=2), pos_weight=-1, online_data=True, online_start_iteration=0)), test_cfg=dict( rpn=dict( nms_pre=6000, max_per_img=300, nms=dict(type='nms', iou_threshold=0.7), min_bbox_size=0), rcnn=dict( score_thr=0.05, nms=dict(type='nms', iou_threshold=0.3), max_per_img=100), vmrn=dict( bbox_score_thr=0.5, verbose_relation=False, average_scores=False))) dataset_type = 'VMRDDataset' data_root = 'data/vmrd/' img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile', to_float32=True), dict( type='LoadAnnotationsCustom', keys=['gt_bboxes', 'gt_labels', 'gt_relmats']), dict(type='RandomFlip', flip_ratio=0.5), dict(type='PhotoMetricDistortion'), dict(type='Expand', mean=[123.675, 116.28, 103.53]), dict(type='Resize', img_scale=(1000, 600), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True), dict(type='Pad', size_divisor=32), dict( type='DefaultFormatBundleCustom', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_relmats']), dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_relmats']) ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(1000, 600), flip=False, transforms=[ dict(type='Resize', keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ] data = dict( samples_per_gpu=8, workers_per_gpu=8, train=dict( type='RepeatDataset', times=3, dataset=dict( type='VMRDDataset', ann_file='data/vmrd/ImageSets/Main/trainval.txt', img_prefix='data/vmrd/', pipeline=[ dict(type='LoadImageFromFile', to_float32=True), dict( type='LoadAnnotationsCustom', keys=['gt_bboxes', 'gt_labels', 'gt_relmats']), dict(type='RandomFlip', flip_ratio=0.5), dict(type='PhotoMetricDistortion'), dict(type='Expand', mean=[123.675, 116.28, 103.53]), dict(type='Resize', img_scale=(1000, 600), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True), dict(type='Pad', size_divisor=32), dict( type='DefaultFormatBundleCustom', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_relmats']), dict( type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_relmats']) ])), val=dict( type='VMRDDataset', ann_file='data/vmrd/ImageSets/Main/test.txt', img_prefix='data/vmrd/', pipeline=[ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(1000, 600), flip=False, transforms=[ dict(type='Resize', keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ]), test=dict( type='VMRDDataset', ann_file='data/vmrd/ImageSets/Main/test.txt', img_prefix='data/vmrd/', pipeline=[ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(1000, 600), flip=False, transforms=[ dict(type='Resize', keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[1.0, 1.0, 1.0], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ])) evaluation = dict(interval=1, metric=['mAP', 'ImgAcc']) optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001) optimizer_config = dict(grad_clip=dict(max_norm=100, norm_type=2)) lr_config = dict( policy='step', warmup='linear', warmup_iters=500, warmup_ratio=0.001, step=[8]) runner = dict(type='EpochBasedRunner', max_epochs=20) checkpoint_config = dict(interval=1, max_keep_ckpts=3) log_config = dict(interval=50, hooks=[dict(type='TextLoggerHook')]) custom_hooks = [dict(type='NumClassCheckHook')] dist_params = dict(backend='nccl') log_level = 'INFO' load_from = None resume_from = None workflow = [('train', 1)] opencv_num_threads = 0 mp_start_method = 'fork' auto_scale_lr = dict(enable=False, base_batch_size=16) mmdet = None mmdet_root = '/data/home/hanbo/projects/alpha_vision/mmdetection/mmdet' work_dir = './work_dirs/faster_rcnn_vmrn_r101_caffe_c4_1x_vmrd4683' gpu_ids = range(0, 2)