class_docstr: Inspired by: Multi-Scale Progressive Fusion Learning for Depth Map Super-Resolution
  https://arxiv.org/pdf/2011.11865v1.pdf
code: def __init__(self, upsample_factor):
      super().__init__()
      self.scale = int(upsample_factor)
      print("self.scale", self.scale)
      activation = "relu"
      batch_norm = None
      self.output_channels = [16, 32, 32, 64, 64, 128]
  
      self.conv_layers1 = nn.Sequential(
          Conv2D(
              1,
              self.output_channels[0],
              kernel_size=3,
              activation=activation,
              padding=1,
              batch_norm=batch_norm,
          ),
          Conv2D(
              self.output_channels[0],
              self.output_channels[0],
              kernel_size=3,
              activation=activation,
              padding=1,
              batch_norm=batch_norm,
          ),
      )
  
      self.encoder_conv_blocks = []
  
      for i in range(1, 6):
          conv_block = nn.Sequential(
              Conv2D(
                  self.output_channels[i - 1],
                  self.output_channels[i],
                  kernel_size=3,
                  activation=activation,
                  padding=1,
                  batch_norm=batch_norm,
              ),
              Conv2D(
                  self.output_channels[i],
                  self.output_channels[i],
                  kernel_size=2,
                  activation=activation,
                  stride=2,
                  padding=0,
                  batch_norm=batch_norm,
              ),
          )
  
          setattr(self, f"conv_block_{i}", conv_block)
          self.encoder_conv_blocks.append(conv_block)
  
imports: import torch.nn.functional
  from torch import nn
  from models.mspf.blocks.multi_scale_depth import Conv2D
label_desc: Use image node_id 1 to create a new MultiscaleConvDepthEncoder object from inherited base classes: nn with example: obj = MultiscaleConvDepthEncoder(upsample_factor)