Skip to content

Commit 990412e

Browse files
authored
Refactor (training cfgs): change default training settings for better… (open-mmlab#2410)
* Refactor (training cfgs): change default training settings for better performance * Change RoIAlign sample num & caffe img norm * Refactor (LR): change 1/1000 to 0.001
1 parent e33ecfe commit 990412e

26 files changed

+131
-45
lines changed

configs/_base_/default_runtime.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# dict(type='TensorboardLoggerHook')
88
])
99
# yapf:enable
10-
dist_params = dict(backend='nccl')
10+
dist_params = dict(backend='nccl', port=29510)
1111
log_level = 'INFO'
1212
load_from = None
1313
resume_from = None

configs/_base_/models/cascade_mask_rcnn_r50_fpn.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
stage_loss_weights=[1, 0.5, 0.25],
3535
bbox_roi_extractor=dict(
3636
type='SingleRoIExtractor',
37-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
37+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
3838
out_channels=256,
3939
featmap_strides=[4, 8, 16, 32]),
4040
bbox_head=[
@@ -85,7 +85,7 @@
8585
],
8686
mask_roi_extractor=dict(
8787
type='SingleRoIExtractor',
88-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
88+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
8989
out_channels=256,
9090
featmap_strides=[4, 8, 16, 32]),
9191
mask_head=dict(

configs/_base_/models/cascade_rcnn_r50_fpn.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
stage_loss_weights=[1, 0.5, 0.25],
3535
bbox_roi_extractor=dict(
3636
type='SingleRoIExtractor',
37-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
37+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
3838
out_channels=256,
3939
featmap_strides=[4, 8, 16, 32]),
4040
bbox_head=[

configs/_base_/models/fast_rcnn_r50_fpn.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
type='StandardRoIHead',
2121
bbox_roi_extractor=dict(
2222
type='SingleRoIExtractor',
23-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
23+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
2424
out_channels=256,
2525
featmap_strides=[4, 8, 16, 32]),
2626
bbox_head=dict(
@@ -34,7 +34,7 @@
3434
reg_class_agnostic=False,
3535
loss_cls=dict(
3636
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
37-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))))
37+
loss_bbox=dict(type='L1Loss', loss_weight=1.0))))
3838
# model training and testing settings
3939
train_cfg = dict(
4040
rcnn=dict(

configs/_base_/models/faster_rcnn_r50_caffe_c4.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
target_stds=[1.0, 1.0, 1.0, 1.0],
2626
loss_cls=dict(
2727
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
28-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0)),
28+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
2929
roi_head=dict(
3030
type='StandardRoIHead',
3131
shared_head=dict(
@@ -39,7 +39,7 @@
3939
norm_eval=True),
4040
bbox_roi_extractor=dict(
4141
type='SingleRoIExtractor',
42-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
42+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
4343
out_channels=1024,
4444
featmap_strides=[16]),
4545
bbox_head=dict(
@@ -53,7 +53,7 @@
5353
reg_class_agnostic=False,
5454
loss_cls=dict(
5555
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
56-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))))
56+
loss_bbox=dict(type='L1Loss', loss_weight=1.0))))
5757
# model training and testing settings
5858
train_cfg = dict(
5959
rpn=dict(

configs/_base_/models/faster_rcnn_r50_fpn.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@
2626
target_stds=[1.0, 1.0, 1.0, 1.0],
2727
loss_cls=dict(
2828
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
29-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0)),
29+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
3030
roi_head=dict(
3131
type='StandardRoIHead',
3232
bbox_roi_extractor=dict(
3333
type='SingleRoIExtractor',
34-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
34+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
3535
out_channels=256,
3636
featmap_strides=[4, 8, 16, 32]),
3737
bbox_head=dict(
@@ -45,7 +45,7 @@
4545
reg_class_agnostic=False,
4646
loss_cls=dict(
4747
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
48-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))))
48+
loss_bbox=dict(type='L1Loss', loss_weight=1.0))))
4949
# model training and testing settings
5050
train_cfg = dict(
5151
rpn=dict(
@@ -68,8 +68,8 @@
6868
rpn_proposal=dict(
6969
nms_across_levels=False,
7070
nms_pre=2000,
71-
nms_post=2000,
72-
max_num=2000,
71+
nms_post=1000,
72+
max_num=1000,
7373
nms_thr=0.7,
7474
min_bbox_size=0),
7575
rcnn=dict(

configs/_base_/models/mask_rcnn_r50_caffe_c4.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
target_stds=[1.0, 1.0, 1.0, 1.0],
2626
loss_cls=dict(
2727
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
28-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0)),
28+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
2929
roi_head=dict(
3030
type='StandardRoIHead',
3131
shared_head=dict(
@@ -39,7 +39,7 @@
3939
norm_eval=True),
4040
bbox_roi_extractor=dict(
4141
type='SingleRoIExtractor',
42-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
42+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
4343
out_channels=1024,
4444
featmap_strides=[16]),
4545
bbox_head=dict(
@@ -53,7 +53,7 @@
5353
reg_class_agnostic=False,
5454
loss_cls=dict(
5555
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
56-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0)),
56+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
5757
mask_roi_extractor=None,
5858
mask_head=dict(
5959
type='FCNMaskHead',

configs/_base_/models/mask_rcnn_r50_fpn.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
target_stds=[1.0, 1.0, 1.0, 1.0],
2828
loss_cls=dict(
2929
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
30-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0 / 9.0, loss_weight=1.0)),
30+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
3131
roi_head=dict(
3232
type='StandardRoIHead',
3333
bbox_roi_extractor=dict(
3434
type='SingleRoIExtractor',
35-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
35+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
3636
out_channels=256,
3737
featmap_strides=[4, 8, 16, 32]),
3838
bbox_head=dict(
@@ -46,10 +46,10 @@
4646
reg_class_agnostic=False,
4747
loss_cls=dict(
4848
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
49-
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0)),
49+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
5050
mask_roi_extractor=dict(
5151
type='SingleRoIExtractor',
52-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
52+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
5353
out_channels=256,
5454
featmap_strides=[4, 8, 16, 32]),
5555
mask_head=dict(
@@ -82,8 +82,8 @@
8282
rpn_proposal=dict(
8383
nms_across_levels=False,
8484
nms_pre=2000,
85-
nms_post=2000,
86-
max_num=2000,
85+
nms_post=1000,
86+
max_num=1000,
8787
nms_thr=0.7,
8888
min_bbox_size=0),
8989
rcnn=dict(
@@ -92,7 +92,7 @@
9292
pos_iou_thr=0.5,
9393
neg_iou_thr=0.5,
9494
min_pos_iou=0.5,
95-
match_low_quality=False,
95+
match_low_quality=True,
9696
ignore_iof_thr=-1),
9797
sampler=dict(
9898
type='RandomSampler',
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# optimizer
22
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
3-
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
3+
optimizer_config = dict(grad_clip=None)
44
# learning policy
55
lr_config = dict(
66
policy='step',
77
warmup='linear',
88
warmup_iters=500,
9-
warmup_ratio=1.0 / 3,
9+
warmup_ratio=0.001,
1010
step=[8, 11])
1111
total_epochs = 12

configs/cityscapes/faster_rcnn_r50_fpn_1x_cityscapes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
# optimizer
2222
# lr is set for a batch size of 8
2323
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
24-
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
24+
optimizer_config = dict(grad_clip=None)
2525
# learning policy
2626
lr_config = dict(
2727
policy='step',
2828
warmup='linear',
2929
warmup_iters=500,
30-
warmup_ratio=1.0 / 3,
30+
warmup_ratio=0.001,
3131
# [7] yields higher performance than [6]
3232
step=[7])
3333
total_epochs = 8 # actual epoch = 8 * 8 = 64

configs/cityscapes/mask_rcnn_r50_fpn_1x_cityscapes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
# optimizer
2929
# lr is set for a batch size of 8
3030
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
31-
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
31+
optimizer_config = dict(grad_clip=None)
3232
# learning policy
3333
lr_config = dict(
3434
policy='step',
3535
warmup='linear',
3636
warmup_iters=500,
37-
warmup_ratio=1.0 / 3,
37+
warmup_ratio=0.001,
3838
# [7] yields higher performance than [6]
3939
step=[7])
4040
total_epochs = 8 # actual epoch = 8 * 8 = 64

configs/faster_rcnn/faster_rcnn_r50_caffe_c4_1x_coco.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
]
66
# use caffe img_norm
77
img_norm_cfg = dict(
8-
mean=[102.9801, 115.9465, 122.7717], std=[1.0, 1.0, 1.0], to_rgb=False)
8+
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
99
train_pipeline = [
1010
dict(type='LoadImageFromFile'),
1111
dict(type='LoadAnnotations', with_bbox=True),

configs/faster_rcnn/faster_rcnn_r50_caffe_fpn_1x_coco.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
norm_cfg=dict(requires_grad=False), norm_eval=True, style='caffe'))
66
# use caffe img_norm
77
img_norm_cfg = dict(
8-
mean=[102.9801, 115.9465, 122.7717], std=[1.0, 1.0, 1.0], to_rgb=False)
8+
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
99
train_pipeline = [
1010
dict(type='LoadImageFromFile'),
1111
dict(type='LoadAnnotations', with_bbox=True),

configs/grid_rcnn/grid_rcnn_r50_fpn_gn-head_2x_coco.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
type='GridRoIHead',
3636
bbox_roi_extractor=dict(
3737
type='SingleRoIExtractor',
38-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
38+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
3939
out_channels=256,
4040
featmap_strides=[4, 8, 16, 32]),
4141
bbox_head=dict(
@@ -50,7 +50,7 @@
5050
reg_class_agnostic=False),
5151
grid_roi_extractor=dict(
5252
type='SingleRoIExtractor',
53-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
53+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
5454
out_channels=256,
5555
featmap_strides=[4, 8, 16, 32]),
5656
grid_head=dict(

configs/htc/htc_r50_fpn_1x_coco.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
roi_head=dict(
44
semantic_roi_extractor=dict(
55
type='SingleRoIExtractor',
6-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
6+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
77
out_channels=256,
88
featmap_strides=[8]),
99
semantic_head=dict(

configs/htc/htc_without_semantic_r50_fpn_1x_coco.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
stage_loss_weights=[1, 0.5, 0.25],
4141
bbox_roi_extractor=dict(
4242
type='SingleRoIExtractor',
43-
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
43+
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
4444
out_channels=256,
4545
featmap_strides=[4, 8, 16, 32]),
4646
bbox_head=[
@@ -91,7 +91,7 @@
9191
],
9292
mask_roi_extractor=dict(
9393
type='SingleRoIExtractor',
94-
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
94+
roi_layer=dict(type='RoIAlign', out_size=14, sample_num=0),
9595
out_channels=256,
9696
featmap_strides=[4, 8, 16, 32]),
9797
mask_head=[

configs/mask_rcnn/mask_rcnn_r50_caffe_c4_1x_coco.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
]
66
# use caffe img_norm
77
img_norm_cfg = dict(
8-
mean=[102.9801, 115.9465, 122.7717], std=[1.0, 1.0, 1.0], to_rgb=False)
8+
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
99
train_pipeline = [
1010
dict(type='LoadImageFromFile'),
1111
dict(type='LoadAnnotations', with_bbox=True, with_mask=True),

configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_1x_coco.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
backbone=dict(norm_cfg=dict(requires_grad=False), style='caffe'))
55
# use caffe img_norm
66
img_norm_cfg = dict(
7-
mean=[102.9801, 115.9465, 122.7717], std=[1.0, 1.0, 1.0], to_rgb=False)
7+
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
88
train_pipeline = [
99
dict(type='LoadImageFromFile'),
1010
dict(type='LoadAnnotations', with_bbox=True, with_mask=True),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
_base_ = './mask_rcnn_r50_fpn_1x_coco.py'
2+
model = dict(
3+
pretrained='open-mmlab://resnet50_caffe',
4+
backbone=dict(norm_cfg=dict(requires_grad=False), style='caffe'))
5+
# use caffe img_norm
6+
img_norm_cfg = dict(
7+
mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
8+
train_pipeline = [
9+
dict(type='LoadImageFromFile'),
10+
dict(
11+
type='LoadAnnotations',
12+
with_bbox=True,
13+
with_mask=True,
14+
poly2mask=False),
15+
dict(
16+
type='Resize',
17+
img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),
18+
(1333, 768), (1333, 800)],
19+
multiscale_mode="value",
20+
keep_ratio=True),
21+
dict(type='RandomFlip', flip_ratio=0.5),
22+
dict(type='Normalize', **img_norm_cfg),
23+
dict(type='Pad', size_divisor=32),
24+
dict(type='DefaultFormatBundle'),
25+
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks']),
26+
]
27+
test_pipeline = [
28+
dict(type='LoadImageFromFile'),
29+
dict(
30+
type='MultiScaleFlipAug',
31+
img_scale=(1333, 800),
32+
flip=False,
33+
transforms=[
34+
dict(type='Resize', keep_ratio=True),
35+
dict(type='RandomFlip'),
36+
dict(type='Normalize', **img_norm_cfg),
37+
dict(type='Pad', size_divisor=32),
38+
dict(type='ImageToTensor', keys=['img']),
39+
dict(type='Collect', keys=['img']),
40+
])
41+
]
42+
data = dict(
43+
train=dict(pipeline=train_pipeline),
44+
val=dict(pipeline=test_pipeline),
45+
test=dict(pipeline=test_pipeline))

0 commit comments

Comments
 (0)