class_docstr: Feature Pyramid Network, see https://arxiv.org/abs/1612.03144
  
  Args:
      num_chan (int): number of feature channels
      min_level (int): lowest level of the backbone feature map to use
      max_level (int): highest level of the backbone feature map to use
      spatial_scale (list): feature map scaling factor
      has_extra_convs (bool): whether has extral convolutions in higher levels
      norm_type (str|None): normalization type, 'bn'/'sync_bn'/'affine_channel'
class_docstr_tok: ["Feature","Pyramid","Network",",","see","https",":","\/\/arxiv.org\/abs\/1612.03144","Args",":","num_chan","(","int",")",":","number","of","feature","channels","min_level","(","int",")",":","lowest","level","of","the","backbone","feature","map","to","use","max_level","(","int",")",":","highest","level","of","the","backbone","feature","map","to","use","spatial_scale","(","list",")",":","feature","map","scaling","factor","has_extra_convs","(","bool",")",":","whether","has","extral","convolutions","in","higher","levels","norm_type","(","str|None",")",":","normalization","type",",","'bn'\/'sync_bn'\/'affine_channel","'"]
code: def _add_topdown_lateral(self, body_name, body_input, upper_output):
      lateral_name = "fpn_inner_" + body_name + "_lateral"
      topdown_name = "fpn_topdown_" + body_name
      fan = body_input.shape[1]
      if self.norm_type:
          initializer = Xavier(fan_out=fan)
          lateral = ConvNorm(
              body_input,
              self.num_chan,
              1,
              initializer=initializer,
              norm_type=self.norm_type,
              freeze_norm=self.freeze_norm,
              name=lateral_name,
              norm_name=lateral_name,
          )
      else:
          lateral = fluid.layers.conv2d(
              body_input,
              self.num_chan,
              1,
              param_attr=ParamAttr(
                  name=lateral_name + "_w",
                  initializer=Xavier(fan_out=fan),
              ),
              bias_attr=ParamAttr(
                  name=lateral_name + "_b",
                  learning_rate=2.0,
                  regularizer=L2Decay(0.0),
              ),
              name=lateral_name,
          )
      topdown = fluid.layers.resize_nearest(
          upper_output, scale=2.0, name=topdown_name
      )
      return lateral + topdown
  
file_path: PaddleHub/modules/image/object_detection/faster_rcnn_resnet50_fpn_venus/fpn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  from collections import OrderedDict
  from paddle import fluid
  from paddle.fluid.param_attr import ParamAttr
  from paddle.fluid.initializer import Xavier
  from paddle.fluid.regularizer import L2Decay
label_desc: Use image node_id 2 for calling the FPN obj's underlying member method code with example usage: obj._add_topdown_lateral(body_name, body_input, upper_output) and returns: unknown