in lib/modeling/VGG16_rel_softmaxed_triplet.py [0:0]
def add_VGG16_roi_fc_head_rel_spo_late_fusion(
model, blob_in, dim_in, spatial_scale):
model.RoIFeatureTransform(
blob_in, 'rel_roi_pool_sbj',
blob_rois='rel_rois_sbj',
method=cfg.FAST_RCNN.ROI_XFORM_METHOD,
resolution=7,
sampling_ratio=cfg.FAST_RCNN.ROI_XFORM_SAMPLING_RATIO,
spatial_scale=spatial_scale)
model.RoIFeatureTransform(
blob_in, 'rel_roi_pool_obj',
blob_rois='rel_rois_obj',
method=cfg.FAST_RCNN.ROI_XFORM_METHOD,
resolution=7,
sampling_ratio=cfg.FAST_RCNN.ROI_XFORM_SAMPLING_RATIO,
spatial_scale=spatial_scale)
model.RoIFeatureTransform(
blob_in, 'rel_roi_pool_prd',
blob_rois='rel_rois_prd',
method=cfg.FAST_RCNN.ROI_XFORM_METHOD,
resolution=7,
sampling_ratio=cfg.FAST_RCNN.ROI_XFORM_SAMPLING_RATIO,
spatial_scale=spatial_scale)
model.add_FC_layer_with_weight_name(
'fc6', 'rel_roi_pool_sbj', 'rel_sbj_fc6', dim_in * 7 * 7, 4096)
model.Relu('rel_sbj_fc6', 'rel_sbj_fc6')
model.Dropout(
'rel_sbj_fc6', 'rel_sbj_fc6_dropout',
ratio=dropout_ratio, is_test=(not model.train))
model.add_FC_layer_with_weight_name(
'fc7', 'rel_sbj_fc6_dropout', 'rel_sbj_fc7', 4096, 4096)
model.Relu('rel_sbj_fc7', 'rel_sbj_fc7')
s_sbj = model.Dropout(
'rel_sbj_fc7', 'rel_sbj_fc7_dropout',
ratio=dropout_ratio, is_test=(not model.train))
if cfg.MODEL.SPECS.find('not_stop_gradient') < 0:
model.StopGradient(s_sbj, s_sbj) # this is to stop the gradient from p branch
model.add_FC_layer_with_weight_name(
'fc6', 'rel_roi_pool_obj', 'rel_obj_fc6', dim_in * 7 * 7, 4096)
model.Relu('rel_obj_fc6', 'rel_obj_fc6')
model.Dropout(
'rel_obj_fc6', 'rel_obj_fc6_dropout',
ratio=dropout_ratio, is_test=(not model.train))
model.add_FC_layer_with_weight_name(
'fc7', 'rel_obj_fc6_dropout', 'rel_obj_fc7', 4096, 4096)
model.Relu('rel_obj_fc7', 'rel_obj_fc7')
s_obj = model.Dropout(
'rel_obj_fc7', 'rel_obj_fc7_dropout',
ratio=dropout_ratio, is_test=(not model.train))
if cfg.MODEL.SPECS.find('not_stop_gradient') < 0:
model.StopGradient(s_obj, s_obj) # this is to stop the gradient from p branch
model.FC(
'rel_roi_pool_prd', 'rel_fc6_prd', dim_in * 7 * 7, 4096,
weight_init=('GaussianFill', {'std': 0.01}),
bias_init=('ConstantFill', {'value': 0.}))
model.Relu('rel_fc6_prd', 'rel_fc6_prd')
model.Dropout(
'rel_fc6_prd', 'rel_fc6_prd_dropout',
ratio=dropout_ratio, is_test=(not model.train))
model.FC(
'rel_fc6_prd_dropout', 'rel_fc7_prd', 4096, 4096,
weight_init=('GaussianFill', {'std': 0.01}),
bias_init=('ConstantFill', {'value': 0.}))
model.Relu('rel_fc7_prd', 'rel_fc7_prd')
s_prd = model.Dropout(
'rel_fc7_prd', 'rel_fc7_prd_dropout',
ratio=dropout_ratio, is_test=(not model.train))
if cfg.MODEL.TYPE.find('spo_for_p') >= 0:
s_rel = model.Concat([s_sbj, s_obj, s_prd], 'rel_concat')
dim_s_rel = 4096 * 3
return s_rel, dim_s_rel, s_sbj, 4096, s_obj, 4096, spatial_scale
else:
return s_prd, 4096, s_sbj, 4096, s_obj, 4096, spatial_scale