未验证 提交 82fa5276 编写于 作者: J jerrywgz 提交者: GitHub

fix feed list in inference (#1789)

上级 79d2ee93
......@@ -55,7 +55,7 @@ def eval():
add_conv_body_func=resnet.add_ResNet50_conv4_body,
add_roi_box_head_func=resnet.add_ResNet_roi_conv5_head,
use_pyreader=False,
is_train=False)
mode='val')
model.build_model(image_shape)
pred_boxes = model.eval_bbox_out()
if cfg.MASK_ON:
......
......@@ -35,7 +35,7 @@ def infer():
add_conv_body_func=resnet.add_ResNet50_conv4_body,
add_roi_box_head_func=resnet.add_ResNet_roi_conv5_head,
use_pyreader=False,
is_train=False)
mode='infer')
model.build_model(image_shape)
pred_boxes = model.eval_bbox_out()
if cfg.MASK_ON:
......
......@@ -25,12 +25,12 @@ class RCNN(object):
def __init__(self,
add_conv_body_func=None,
add_roi_box_head_func=None,
is_train=True,
mode='train',
use_pyreader=True,
use_random=True):
self.add_conv_body_func = add_conv_body_func
self.add_roi_box_head_func = add_roi_box_head_func
self.is_train = is_train
self.mode = mode
self.use_pyreader = use_pyreader
self.use_random = use_random
......@@ -41,7 +41,7 @@ class RCNN(object):
self.rpn_heads(body_conv)
# Fast RCNN
self.fast_rcnn_heads(body_conv)
if not self.is_train:
if self.mode != 'train':
self.eval_bbox()
# Mask RCNN
if cfg.MASK_ON:
......@@ -115,7 +115,9 @@ class RCNN(object):
name='gt_masks', shape=[2], dtype='float32', lod_level=3)
def feeds(self):
if not self.is_train:
if self.mode == 'infer':
return [self.image, self.im_info]
if self.mode == 'val':
return [self.image, self.im_info, self.im_id]
if not cfg.MASK_ON:
return [
......@@ -213,7 +215,7 @@ class RCNN(object):
rpn_cls_score_prob = fluid.layers.sigmoid(
self.rpn_cls_score, name='rpn_cls_score_prob')
param_obj = cfg.TRAIN if self.is_train else cfg.TEST
param_obj = cfg.TRAIN if self.mode == 'train' else cfg.TEST
pre_nms_top_n = param_obj.rpn_pre_nms_top_n
post_nms_top_n = param_obj.rpn_post_nms_top_n
nms_thresh = param_obj.rpn_nms_thresh
......@@ -230,7 +232,7 @@ class RCNN(object):
nms_thresh=nms_thresh,
min_size=min_size,
eta=eta)
if self.is_train:
if self.mode == 'train':
outs = fluid.layers.generate_proposal_labels(
rpn_rois=self.rpn_rois,
gt_classes=self.gt_label,
......@@ -267,7 +269,7 @@ class RCNN(object):
self.mask_int32 = mask_out[2]
def fast_rcnn_heads(self, roi_input):
if self.is_train:
if self.mode == 'train':
pool_rois = self.rois
else:
pool_rois = self.rpn_rois
......@@ -311,7 +313,7 @@ class RCNN(object):
bias_attr=ParamAttr(
name='conv5_mask_b', learning_rate=2., regularizer=L2Decay(0.)))
act_func = None
if not self.is_train:
if self.mode != 'train':
act_func = 'sigmoid'
mask_fcn_logits = fluid.layers.conv2d(
input=mask_out,
......@@ -325,13 +327,13 @@ class RCNN(object):
learning_rate=2.,
regularizer=L2Decay(0.)))
if not self.is_train:
if self.mode != 'train':
mask_fcn_logits = fluid.layers.lod_reset(mask_fcn_logits,
self.pred_result)
return mask_fcn_logits
def mask_rcnn_heads(self, mask_input):
if self.is_train:
if self.mode == 'train':
conv5 = fluid.layers.gather(self.res5_2_sum,
self.roi_has_mask_int32)
self.mask_fcn_logits = self.SuffixNet(conv5)
......
......@@ -36,7 +36,9 @@ def roidb_reader(roidb, mode):
im_height = np.round(roidb['height'] * im_scales)
im_width = np.round(roidb['width'] * im_scales)
im_info = np.array([im_height, im_width, im_scales], dtype=np.float32)
if mode == 'val' or mode == 'infer':
if mode == 'infer':
return im, im_info
if mode == 'val':
return im, im_info, im_id
gt_boxes = roidb['gt_boxes'].astype('float32')
......@@ -162,8 +164,8 @@ def coco(mode,
for roidb in roidbs:
if cfg.image_name not in roidb['image']:
continue
im, im_info, im_id = roidb_reader(roidb, mode)
batch_out = [(im, im_info, im_id)]
im, im_info = roidb_reader(roidb, mode)
batch_out = [(im, im_info)]
yield batch_out
return reader
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册