r50_fpn_rpn_1x.py 2.88 KB
Newer Older
pangjm's avatar
pangjm committed
1
2
# model settings
model = dict(
Kai Chen's avatar
Kai Chen committed
3
4
    type='RPN',
    pretrained='modelzoo://resnet50',
pangjm's avatar
pangjm committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    backbone=dict(
        type='resnet',
        depth=50,
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        style='fb'),
    neck=dict(
        type='FPN',
        in_channels=[256, 512, 1024, 2048],
        out_channels=256,
        num_outs=5),
    rpn_head=dict(
        type='RPNHead',
        in_channels=256,
        feat_channels=256,
        coarsest_stride=32,
        anchor_scales=[8],
        anchor_ratios=[0.5, 1.0, 2.0],
        anchor_strides=[4, 8, 16, 32, 64],
        target_means=[.0, .0, .0, .0],
        target_stds=[1.0, 1.0, 1.0, 1.0],
        use_sigmoid_cls=True))
Kai Chen's avatar
Kai Chen committed
28
29
30
# model training and testing settings
train_cfg = dict(
    rpn=dict(
pangjm's avatar
pangjm committed
31
32
33
34
35
36
37
38
39
40
41
        pos_fraction=0.5,
        pos_balance_sampling=False,
        neg_pos_ub=256,
        allowed_border=0,
        anchor_batch_size=256,
        pos_iou_thr=0.7,
        neg_iou_thr=0.3,
        neg_balance_thr=0,
        min_pos_iou=1e-3,
        pos_weight=-1,
        smoothl1_beta=1 / 9.0,
Kai Chen's avatar
Kai Chen committed
42
43
44
        debug=False))
test_cfg = dict(
    rpn=dict(
pangjm's avatar
pangjm committed
45
46
47
48
49
50
51
        nms_across_levels=False,
        nms_pre=2000,
        nms_post=2000,
        max_num=2000,
        nms_thr=0.7,
        min_bbox_size=0))
# dataset settings
Kai Chen's avatar
Kai Chen committed
52
53
dataset_type = 'CocoDataset'
data_root = '../data/coco/'
pangjm's avatar
pangjm committed
54
55
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
Kai Chen's avatar
Kai Chen committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
data = dict(
    imgs_per_gpu=2,
    workers_per_gpu=2,
    train=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_train2017.json',
        img_prefix=data_root + 'train2017/',
        img_scale=(1333, 800),
        img_norm_cfg=img_norm_cfg,
        size_divisor=32,
        flip_ratio=0.5,
        with_mask=False,
        with_crowd=False,
        with_label=False,
        test_mode=False),
    test=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_val2017.json',
        img_prefix=data_root + 'val2017/',
        img_scale=(1333, 800),
        flip_ratio=0,
        img_norm_cfg=img_norm_cfg,
        size_divisor=32,
        with_mask=False,
        with_label=False,
        test_mode=True))
pangjm's avatar
pangjm committed
82
83
# optimizer
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
Kai Chen's avatar
Kai Chen committed
84
85
86
# runner configs
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
lr_config = dict(
pangjm's avatar
pangjm committed
87
88
89
    policy='step',
    warmup='linear',
    warmup_iters=500,
Kai Chen's avatar
Kai Chen committed
90
    warmup_ratio=1.0 / 3,
pangjm's avatar
pangjm committed
91
92
93
94
95
96
97
    step=[8, 11])
checkpoint_config = dict(interval=1)
# yapf:disable
log_config = dict(
    interval=50,
    hooks=[
        dict(type='TextLoggerHook'),
Kai Chen's avatar
Kai Chen committed
98
        # dict(type='TensorboardLoggerHook', log_dir=work_dir + '/log')
pangjm's avatar
pangjm committed
99
100
    ])
# yapf:enable
Kai Chen's avatar
Kai Chen committed
101
102
# runtime settings
total_epochs = 12
103
dist_params = dict(backend='gloo')
Kai Chen's avatar
Kai Chen committed
104
105
log_level = 'INFO'
work_dir = './work_dirs/fpn_rpn_r50_1x'
pangjm's avatar
pangjm committed
106
107
108
load_from = None
resume_from = None
workflow = [('train', 1)]