class_docstr: Inspired by: Depth Map Super-Resolution by Deep Multi-Scale Guidance
  http://personal.ie.cuhk.edu.hk/~ccloy/files/eccv_2016_depth.pdf
code: def __init__(self, upsampling_factor):
      super().__init__()
      # initialize indexes for layers
      self.upsampling_factor = upsampling_factor
      m = int(np.log2(upsampling_factor))
  
      # RGB-branch
      self.rgb_encoder1 = nn.Sequential(
          ConvPReLu(3, 49, 7, stride=1, padding=3), ConvPReLu(49, 32)
      )
      self.rgb_encoder_blocks = nn.ModuleList()
      for i in range(m - 1):
          self.rgb_encoder_blocks.append(
              nn.Sequential(
                  ConvPReLu(32, 32), nn.MaxPool2d(3, 2, padding=1)
              )
          )
  
      # D-branch
      self.depth_decoder1 = nn.Sequential(
          ConvPReLu(1, 64, 5, stride=1, padding=2),
          DeconvPReLu(64, 32, 5, stride=2, padding=2),
      )
      self.depth_decoder_blocks = nn.ModuleList()
      for i in range(m - 1):
          self.depth_decoder_blocks.append(
              nn.Sequential(
                  ConvPReLu(64, 32, 5, stride=1, padding=2),
                  ConvPReLu(32, 32, 5, stride=1, padding=2),
                  DeconvPReLu(32, 32, 5, stride=2, padding=2),
              )
          )
  
      self.depth_decoder_n = nn.Sequential(
          ConvPReLu(64, 32, 5, stride=1, padding=2),
          ConvPReLu(32, 32, 5, stride=1, padding=2),
          ConvPReLu(32, 32, 5, stride=1, padding=2),
          ConvPReLu(32, 1, 5, stride=1, padding=2),
      )
  
file_path: ARKitScenes/depth_upsampling/models/msg/msg.py
imports: import numpy
  import torch
  import torch.nn
  from torch.nn import functional
  from .blocks import ConvPReLu, DeconvPReLu
  import dataset_keys
label_desc: Use image node_id 1 to create a new MSGNet object from inherited base classes: nn with example: obj = MSGNet(upsampling_factor)