class_docstr: Feature Pyramid Network as described in `"Feature Pyramid Networks for Object Detection"
  <https://arxiv.org/pdf/1612.03144.pdf>`_.
  
  Args:
  ----
      channels: number of channel to output
docstr: Module which performs a 3x3 convolution followed by up-sampling
  
  Args:
  ----
      channels: number of output channels
      dilation_factor (int): dilation factor to scale the convolution output before concatenation
  
  Returns:
  -------
      a keras.layers.Layer object, wrapping these operations in a sequential module
docstr_tok: ["Module","which","performs","a","3x3","convolution","followed","by","up-sampling","Args",":","--","--","channels",":","number","of","output","channels","dilation_factor","(","int",")",":","dilation","factor","to","scale","the","convolution","output","before","concatenation","Returns",":","--","--","--","-","a","keras.layers.Layer","object",",","wrapping","these","operations","in","a","sequential","module"]
code: def build_upsampling(
      channels: int,
      dilation_factor: int = 1,
  ) -> layers.Layer:
      """Module which performs a 3x3 convolution followed by up-sampling
  
      Args:
      ----
          channels: number of output channels
          dilation_factor (int): dilation factor to scale the convolution output before concatenation
  
      Returns:
      -------
          a keras.layers.Layer object, wrapping these operations in a sequential module
  
      """
      _layers = conv_sequence(channels, "relu", True, kernel_size=3)
  
      if dilation_factor > 1:
          _layers.append(
              layers.UpSampling2D(
                  size=(dilation_factor, dilation_factor),
                  interpolation="nearest",
              )
          )
  
      module = keras.Sequential(_layers)
  
      return module
  
imports: from copy import deepcopy
  from typing import Any, Dict, List, Optional, Tuple
  import numpy
  import tensorflow
  from tensorflow import keras
  from tensorflow.keras import layers
  from tensorflow.keras.applications import ResNet50
  from doctr.file_utils import CLASS_NAME
  from doctr.models.utils import IntermediateLayerGetter, _bf16_to_float32, conv_sequence, load_pretrained_params
  from doctr.utils.repr import NestedObject
  from ...classification import mobilenet_v3_large
  from .base import DBPostProcessor, _DBNet
label_desc: Use image node_id 2 for calling the FeaturePyramidNetwork obj's underlying member method code with example usage: obj.build_upsampling(channels, dilation_factor) and returns: module