Skip to content
This repository was archived by the owner on Jan 26, 2022. It is now read-only.

Commit 4705009

Browse files
committed
Add group norm mask-rcnn baselines
1 parent 2a5facd commit 4705009

15 files changed

+829
-109
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet101_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
NUM_GPUS: 8
7+
SOLVER:
8+
WEIGHT_DECAY: 0.0001
9+
LR_POLICY: steps_with_decay
10+
BASE_LR: 0.02
11+
GAMMA: 0.1
12+
MAX_ITER: 180000
13+
STEPS: [0, 120000, 160000]
14+
FPN:
15+
FPN_ON: True
16+
MULTILEVEL_ROIS: True
17+
MULTILEVEL_RPN: True
18+
USE_GN: True # Note: use GN on the FPN-specific layers
19+
RESNETS:
20+
IMAGENET_PRETRAINED_WEIGHTS: 'data/pretrained_model/R-101-GN.pkl'
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet101_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
NUM_GPUS: 8
7+
SOLVER:
8+
WEIGHT_DECAY: 0.0001
9+
LR_POLICY: steps_with_decay
10+
BASE_LR: 0.02
11+
GAMMA: 0.1
12+
MAX_ITER: 270000
13+
STEPS: [0, 210000, 250000]
14+
FPN:
15+
FPN_ON: True
16+
MULTILEVEL_ROIS: True
17+
MULTILEVEL_RPN: True
18+
USE_GN: True # Note: use GN on the FPN-specific layers
19+
RESNETS:
20+
IMAGENET_PRETRAINED_WEIGHTS: 'data/pretrained_model/R-101-GN.pkl'
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet50_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
NUM_GPUS: 8
7+
SOLVER:
8+
WEIGHT_DECAY: 0.0001
9+
LR_POLICY: steps_with_decay
10+
BASE_LR: 0.02
11+
GAMMA: 0.1
12+
MAX_ITER: 180000
13+
STEPS: [0, 120000, 160000]
14+
FPN:
15+
FPN_ON: True
16+
MULTILEVEL_ROIS: True
17+
MULTILEVEL_RPN: True
18+
USE_GN: True # Note: use GN on the FPN-specific layers
19+
RESNETS:
20+
IMAGENET_PRETRAINED_WEIGHTS: 'data/pretrained_model/R-50-GN.pkl'
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet50_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
NUM_GPUS: 8
7+
SOLVER:
8+
WEIGHT_DECAY: 0.0001
9+
LR_POLICY: steps_with_decay
10+
BASE_LR: 0.02
11+
GAMMA: 0.1
12+
MAX_ITER: 270000
13+
STEPS: [0, 210000, 250000]
14+
FPN:
15+
FPN_ON: True
16+
MULTILEVEL_ROIS: True
17+
MULTILEVEL_RPN: True
18+
USE_GN: True # Note: use GN on the FPN-specific layers
19+
RESNETS:
20+
IMAGENET_PRETRAINED_WEIGHTS: 'data/pretrained_model/R-50-GN.pkl'
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet101_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
LOAD_IMAGENET_PRETRAINED_WEIGHTS: False
7+
NUM_GPUS: 8
8+
SOLVER:
9+
WEIGHT_DECAY: 0.0001
10+
LR_POLICY: steps_with_decay
11+
BASE_LR: 0.02
12+
GAMMA: 0.1
13+
MAX_ITER: 270000
14+
STEPS: [0, 210000, 250000]
15+
FPN:
16+
FPN_ON: True
17+
MULTILEVEL_ROIS: True
18+
MULTILEVEL_RPN: True
19+
USE_GN: True # Note: use GN on the FPN-specific layers
20+
RESNETS:
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
MODEL:
2+
TYPE: generalized_rcnn
3+
CONV_BODY: FPN.fpn_ResNet50_conv5_body
4+
FASTER_RCNN: True
5+
MASK_ON: True
6+
LOAD_IMAGENET_PRETRAINED_WEIGHTS: False
7+
NUM_GPUS: 8
8+
SOLVER:
9+
WEIGHT_DECAY: 0.0001
10+
LR_POLICY: steps_with_decay
11+
BASE_LR: 0.02
12+
GAMMA: 0.1
13+
MAX_ITER: 270000
14+
STEPS: [0, 210000, 250000]
15+
FPN:
16+
FPN_ON: True
17+
MULTILEVEL_ROIS: True
18+
MULTILEVEL_RPN: True
19+
USE_GN: True # Note: use GN on the FPN-specific layers
20+
RESNETS:
21+
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
22+
TRANS_FUNC: bottleneck_gn_transformation # Note: this is a GN bottleneck transform
23+
STEM_FUNC: basic_gn_stem # Note: this is a GN stem
24+
SHORTCUT_FUNC: basic_gn_shortcut # Note: this is a GN shortcut
25+
USE_GN: True
26+
FAST_RCNN:
27+
ROI_BOX_HEAD: fast_rcnn_heads.roi_Xconv1fc_gn_head # Note: this is a Conv GN head
28+
ROI_XFORM_METHOD: RoIAlign
29+
ROI_XFORM_RESOLUTION: 7
30+
ROI_XFORM_SAMPLING_RATIO: 2
31+
MRCNN:
32+
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs_gn # Note: this is a GN mask head
33+
RESOLUTION: 28 # (output mask resolution) default 14
34+
ROI_XFORM_METHOD: RoIAlign
35+
ROI_XFORM_RESOLUTION: 14 # default 7
36+
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
37+
DILATION: 1 # default 2
38+
CONV_INIT: MSRAFill # default GaussianFill
39+
TRAIN:
40+
SCALES: (800,)
41+
MAX_SIZE: 1333
42+
BATCH_SIZE_PER_IM: 512
43+
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
44+
TEST:
45+
SCALE: 800
46+
MAX_SIZE: 1333
47+
NMS: 0.5
48+
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
49+
RPN_POST_NMS_TOP_N: 1000

lib/core/config.py

+28
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,8 @@
579579

580580
# L2 regularization hyperparameter
581581
__C.SOLVER.WEIGHT_DECAY = 0.0005
582+
# L2 regularization hyperparameter for GroupNorm's parameters
583+
__C.SOLVER.WEIGHT_DECAY_GN = 0.0
582584

583585
# Whether to double the learning rate for bias
584586
__C.SOLVER.BIAS_DOUBLE_LR = True
@@ -621,6 +623,11 @@
621623
# Hidden layer dimension when using an MLP for the RoI box head
622624
__C.FAST_RCNN.MLP_HEAD_DIM = 1024
623625

626+
# Hidden Conv layer dimension when using Convs for the RoI box head
627+
__C.FAST_RCNN.CONV_HEAD_DIM = 256
628+
# Number of stacked Conv layers in the RoI box head
629+
__C.FAST_RCNN.NUM_STACKED_CONVS = 4
630+
624631
# RoI transformation function (e.g., RoIPool or RoIAlign)
625632
# (RoIPoolF is the same as RoIPool; ignore the trailing 'F')
626633
__C.FAST_RCNN.ROI_XFORM_METHOD = 'RoIPoolF'
@@ -716,6 +723,8 @@
716723
__C.FPN.RPN_COLLECT_SCALE = 1
717724
# Use extra FPN levels, as done in the RetinaNet paper
718725
__C.FPN.EXTRA_CONV_LEVELS = False
726+
# Use GroupNorm in the FPN-specific layers (lateral, etc.)
727+
__C.FPN.USE_GN = False
719728

720729

721730
# ---------------------------------------------------------------------------- #
@@ -873,6 +882,10 @@
873882

874883
# Residual transformation function
875884
__C.RESNETS.TRANS_FUNC = 'bottleneck_transformation'
885+
# ResNet's stem function (conv1 and pool1)
886+
__C.RESNETS.STEM_FUNC = 'basic_bn_stem'
887+
# ResNet's shortcut function
888+
__C.RESNETS.SHORTCUT_FUNC = 'basic_bn_shortcut'
876889

877890
# Apply dilation in stage "res5"
878891
__C.RESNETS.RES5_DILATION = 1
@@ -887,6 +900,21 @@
887900
# Otherwise, treat as a relative path to __C.ROOT_DIR
888901
__C.RESNETS.IMAGENET_PRETRAINED_WEIGHTS = ''
889902

903+
# Use GroupNorm instead of BatchNorm
904+
__C.RESNETS.USE_GN = False
905+
906+
907+
# ---------------------------------------------------------------------------- #
908+
# GroupNorm options
909+
# ---------------------------------------------------------------------------- #
910+
__C.GROUP_NORM = AttrDict()
911+
# Number of dimensions per group in GroupNorm (-1 if using NUM_GROUPS)
912+
__C.GROUP_NORM.DIM_PER_GP = -1
913+
# Number of groups in GroupNorm (-1 if using DIM_PER_GP)
914+
__C.GROUP_NORM.NUM_GROUPS = 32
915+
# GroupNorm's small constant in the denominator
916+
__C.GROUP_NORM.EPSILON = 1e-5
917+
890918

891919
# ---------------------------------------------------------------------------- #
892920
# MISC options

0 commit comments

Comments
 (0)