MCPcopy Index your code
hub / github.com/tensorpack/tensorpack / ResNetFPNModel

Class ResNetFPNModel

examples/FasterRCNN/modeling/generalized_rcnn.py:199–325  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

197
198
199class ResNetFPNModel(GeneralizedRCNN):
200
201 def inputs(self):
202 ret = [
203 tf.TensorSpec((None, None, 3), tf.float32, 'image')]
204 num_anchors = len(cfg.RPN.ANCHOR_RATIOS)
205 for k in range(len(cfg.FPN.ANCHOR_STRIDES)):
206 ret.extend([
207 tf.TensorSpec((None, None, num_anchors), tf.int32,
208 'anchor_labels_lvl{}'.format(k + 2)),
209 tf.TensorSpec((None, None, num_anchors, 4), tf.float32,
210 'anchor_boxes_lvl{}'.format(k + 2))])
211 ret.extend([
212 tf.TensorSpec((None, 4), tf.float32, 'gt_boxes'),
213 tf.TensorSpec((None,), tf.int64, 'gt_labels')]) # all > 0
214 if cfg.MODE_MASK:
215 ret.append(
216 tf.TensorSpec((None, None, None), tf.uint8, 'gt_masks_packed')
217 )
218 return ret
219
220 def slice_feature_and_anchors(self, p23456, anchors):
221 for i in range(len(cfg.FPN.ANCHOR_STRIDES)):
222 with tf.name_scope('FPN_slice_lvl{}'.format(i)):
223 anchors[i] = anchors[i].narrow_to(p23456[i])
224
225 def backbone(self, image):
226 c2345 = resnet_fpn_backbone(image, cfg.BACKBONE.RESNET_NUM_BLOCKS)
227 p23456 = fpn_model('fpn', c2345)
228 return p23456
229
230 def rpn(self, image, features, inputs):
231 assert len(cfg.RPN.ANCHOR_SIZES) == len(cfg.FPN.ANCHOR_STRIDES)
232
233 image_shape2d = tf.shape(image)[2:] # h,w
234 all_anchors_fpn = get_all_anchors_fpn(
235 strides=cfg.FPN.ANCHOR_STRIDES,
236 sizes=cfg.RPN.ANCHOR_SIZES,
237 ratios=cfg.RPN.ANCHOR_RATIOS,
238 max_size=cfg.PREPROC.MAX_SIZE)
239 multilevel_anchors = [RPNAnchors(
240 all_anchors_fpn[i],
241 inputs['anchor_labels_lvl{}'.format(i + 2)],
242 inputs['anchor_boxes_lvl{}'.format(i + 2)]) for i in range(len(all_anchors_fpn))]
243 self.slice_feature_and_anchors(features, multilevel_anchors)
244
245 # Multi-Level RPN Proposals
246 rpn_outputs = [rpn_head('rpn', pi, cfg.FPN.NUM_CHANNEL, len(cfg.RPN.ANCHOR_RATIOS))
247 for pi in features]
248 multilevel_label_logits = [k[0] for k in rpn_outputs]
249 multilevel_box_logits = [k[1] for k in rpn_outputs]
250 multilevel_pred_boxes = [anchor.decode_logits(logits)
251 for anchor, logits in zip(multilevel_anchors, multilevel_box_logits)]
252
253 proposal_boxes, proposal_scores = generate_fpn_proposals(
254 multilevel_pred_boxes, multilevel_label_logits, image_shape2d)
255
256 if self.training:

Callers 3

evaluate_rcnnFunction · 0.90
predict.pyFile · 0.90
train.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…