class_docstr: Adds a FPN on top of a model.
  Internally, it uses torchvision.models._utils.IntermediateLayerGetter to
  extract a submodel that returns the feature maps specified in return_layers.
  The same limitations of IntermediatLayerGetter apply here.
  Arguments:
      backbone (nn.Module)
      return_layers (Dict[name, new_name]): a dict containing the names
          of the modules for which the activations will be returned as
          the key of the dict, and the value of the dict is the name
          of the returned activation (which the user can specify).
      in_channels_list (List[int]): number of channels for each feature map
          that is returned, in the order they are present in the OrderedDict
      out_channels (int): number of channels in the FPN.
      extra_blocks: ExtraFPNBlock
  Attributes:
      out_channels (int): the number of channels in the FPN
code: def __init__(
      self,
      backbone: nn.Module,
      return_layers=None,
      in_channels_list=None,
      out_channels=256,
      extra_blocks=None,
      re_getter=True,
  ):
      super().__init__()
  
      if extra_blocks is None:
          extra_blocks = LastLevelMaxPool()
  
      if re_getter is True:
          assert return_layers is not None
          self.body = IntermediateLayerGetter(
              backbone, return_layers=return_layers
          )
      else:
          self.body = backbone
  
      self.fpn = FeaturePyramidNetwork(
          in_channels_list=in_channels_list,
          out_channels=out_channels,
          extra_blocks=extra_blocks,
      )
  
      self.out_channels = out_channels
  
imports: from collections import OrderedDict
  import torch.nn
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torch.jit.annotations import Tuple, List, Dict
label_desc: Use image node_id 1 to create a new BackboneWithFPN object from inherited base classes: nn with example: obj = BackboneWithFPN(backbone, return_layers, in_channels_list, out_channels, extra_blocks, re_getter)