Skip to content

Commit

Permalink
CBNet modification
Browse files Browse the repository at this point in the history
  • Loading branch information
PKUbahuangliuhe committed Sep 9, 2019
1 parent 1680db8 commit 10117e7
Show file tree
Hide file tree
Showing 6 changed files with 374 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
MODEL:
TYPE: generalized_rcnn
CONV_BODY: FPN.add_fpn_ResNet152_conv5_body
NUM_CLASSES: 81
FASTER_RCNN: True
MASK_ON: True
CASCADE_ON: True
CLS_AGNOSTIC_BBOX_REG: True # default: False
NUM_GPUS: 8
SOLVER:
WEIGHT_DECAY: 0.0001
LR_POLICY: steps_with_decay
# 1.44x schedule (note TRAIN.IMS_PER_BATCH: 1)
BASE_LR: 0.005
GAMMA: 0.1
MAX_ITER: 260000
STEPS: [0, 200000, 240000]
FPN:
FPN_ON: True
MULTILEVEL_ROIS: True
MULTILEVEL_RPN: True
RESNETS:
STRIDE_1X1: False # default True for MSRA; False for C2 or Torch models
TRANS_FUNC: bottleneck_transformation
NUM_GROUPS: 32
WIDTH_PER_GROUP: 8
FAST_RCNN:
ROI_BOX_HEAD: fast_rcnn_heads.add_roi_2mlp_head
ROI_XFORM_METHOD: RoIAlign
ROI_XFORM_RESOLUTION: 7
ROI_XFORM_SAMPLING_RATIO: 2
MRCNN:
ROI_MASK_HEAD: mask_rcnn_heads.mask_rcnn_fcn_head_v1up4convs
RESOLUTION: 28 # (output mask resolution) default 14
ROI_XFORM_METHOD: RoIAlign
ROI_XFORM_RESOLUTION: 14 # default 7
ROI_XFORM_SAMPLING_RATIO: 2 # default 0
DILATION: 1 # default 2
CONV_INIT: MSRAFill # default GaussianFill
AT_STAGE: 3
CASCADE_RCNN:
ROI_BOX_HEAD: cascade_rcnn_heads.add_roi_2mlp_head
NUM_STAGE: 3
TEST_STAGE: 3
TEST_ENSEMBLE: True
TRAIN:
WEIGHTS: https://s3-us-west-2.amazonaws.com/detectron/ImageNetPretrained/25093814/X-152-32x8d-IN5k.pkl
DATASETS: ('coco_2014_train', 'coco_2014_valminusminival')
SCALES: (640, 672, 704, 736, 768, 800) # Scale jitter
MAX_SIZE: 1333
IMS_PER_BATCH: 1
BATCH_SIZE_PER_IM: 512
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
TEST:
DATASETS: ('coco_2015_test-dev',)
#DATASETS: ('coco_2014_minival',)
SCALE: 800
MAX_SIZE: 1333
NMS: 0.5
#BBOX_VOTE:
# ENABLED: True
# VOTE_TH: 0.9
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
RPN_POST_NMS_TOP_N: 1000
#BBOX_AUG:
# ENABLED: True
# SCORE_HEUR: UNION
# COORD_HEUR: UNION
# H_FLIP: True
#SCALES: (400, 500, 600, 700, 900, 1000, 1100, 1200)
#MAX_SIZE: 2000
# SCALES: (400, 500, 600, 700, 900, 1000, 1100)
# MAX_SIZE: 1500
# SCALE_H_FLIP: False #True
# SCALE_SIZE_DEP: False
# ASPECT_RATIOS: ()
# ASPECT_RATIO_H_FLIP: False
#MASK_AUG:
# ENABLED: True
# HEUR: SOFT_AVG
# H_FLIP: True
# SCALES: (400, 500, 600, 700, 900, 1000)
# MAX_SIZE: 1500
# SCALE_H_FLIP: True
# SCALE_SIZE_DEP: False
# ASPECT_RATIOS: ()
# ASPECT_RATIO_H_FLIP: False
OUTPUT_DIR: .
64 changes: 60 additions & 4 deletions detectron/modeling/FPN.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ def add_fpn_ResNet50_conv5_P2only_body(model):

def add_fpn_ResNet101_conv5_body(model):
return add_fpn_onto_conv_body(
model, ResNet.add_ResNet101_conv5_body, fpn_level_info_ResNet101_conv5
model, ResNet.add_ResNet101_conv5_body, ResNet.add_ResNet101_conv5_body_old,
fpn_level_info_ResNet101_conv5, fpn_level_info_ResNet101_conv5_old
)


Expand All @@ -72,12 +73,17 @@ def add_fpn_ResNet101_conv5_P2only_body(model):
P2only=True
)

def add_fpn_ResNet152_conv5_body(model):
return add_fpn_onto_conv_body(
model, ResNet.add_ResNet152_conv5_body, ResNet.add_ResNet152_conv5_body_old, fpn_level_info_ResNet152_conv5,fpn_level_info_ResNet152_conv5_old
)

'''
def add_fpn_ResNet152_conv5_body(model):
return add_fpn_onto_conv_body(
model, ResNet.add_ResNet152_conv5_body, fpn_level_info_ResNet152_conv5
)

'''

def add_fpn_ResNet152_conv5_P2only_body(model):
return add_fpn_onto_conv_body(
Expand All @@ -93,15 +99,17 @@ def add_fpn_ResNet152_conv5_P2only_body(model):
# ---------------------------------------------------------------------------- #

def add_fpn_onto_conv_body(
model, conv_body_func, fpn_level_info_func, P2only=False
model, conv_body_func_now, conv_body_func_old, fpn_level_info_func,
fpn_level_info_func_old, P2only=False
):
"""Add the specified conv body to the model and then add FPN levels to it.
"""
# Note: blobs_conv is in revsersed order: [fpn5, fpn4, fpn3, fpn2]
# similarly for dims_conv: [2048, 1024, 512, 256]
# similarly for spatial_scales_fpn: [1/32, 1/16, 1/8, 1/4]

conv_body_func(model)
conv_body_func_old(model)
conv_body_func_now(model)
blobs_fpn, dim_fpn, spatial_scales_fpn = add_fpn(
model, fpn_level_info_func()
)
Expand Down Expand Up @@ -278,6 +286,38 @@ def add_topdown_lateral_module(
bias_init=const_fill(0.0)
)
else:
'''
tmp1 = model.Conv(#########reduce channel /2
fpn_lataral_old,
fpn_bottom + '_mid1',
dim_in = dim_lateral * 2,
dim_out = dim_lateral,
kernel=1,
pad=0,
stride=1,
weight_init=(
const_fill(0.0)
if cfg.FPN.ZERO_INIT_LATERAL else ('XavierFill', {})
),
bias_init=const_fill(0.0)
)
tmp2 = model.net.UpsampleNearest(tmp1, fpn_bottom + '_mid2', scale=2)##upsample
tmp3 = model.net.Sum([tmp2, fpn_lateral], fpn_bottom + '_mid3')##### add
lat = model.Conv(
tmp3,
fpn_bottom + '_lateral',
dim_in=dim_lateral,
dim_out=dim_top,
kernel=1,
pad=0,
stride=1,
weight_init=(
const_fill(0.0)
if cfg.FPN.ZERO_INIT_LATERAL else ('XavierFill', {})
),
bias_init=const_fill(0.0)
)
'''
lat = model.Conv(
fpn_lateral,
fpn_bottom + '_lateral',
Expand All @@ -292,6 +332,7 @@ def add_topdown_lateral_module(
),
bias_init=const_fill(0.0)
)

# Top-down 2x upsampling
td = model.net.UpsampleNearest(fpn_top, fpn_bottom + '_topdown', scale=2)
# Sum lateral and top-down
Expand Down Expand Up @@ -559,10 +600,25 @@ def fpn_level_info_ResNet101_conv5():
spatial_scales=(1. / 32., 1. / 16., 1. / 8., 1. / 4.)
)

def fpn_level_info_ResNet101_conv5_old():
return FpnLevelInfo(
blobs=('old_res5_2_sum', 'old_res4_22_sum', 'old_res3_3_sum', 'old_res2_2_sum'),
dims=(2048, 1024, 512, 256),
spatial_scales=(1. / 32., 1. / 16., 1. / 8., 1. / 4.)
)


def fpn_level_info_ResNet152_conv5():
return FpnLevelInfo(
blobs=('res5_2_sum', 'res4_35_sum', 'res3_7_sum', 'res2_2_sum'),
dims=(2048, 1024, 512, 256),
spatial_scales=(1. / 32., 1. / 16., 1. / 8., 1. / 4.)
)

def fpn_level_info_ResNet152_conv5_old():
return FpnLevelInfo(
blobs=('old_res5_2_sum', 'old_res4_35_sum', 'old_res3_7_sum', 'old_res2_2_sum'),
dims=(2048, 1024, 512, 256),
spatial_scales=(1. / 32., 1. / 16., 1. / 8., 1. / 4.)
)

Loading

0 comments on commit 10117e7

Please sign in to comment.