class_docstr: Inspired by: Multi-Scale Progressive Fusion Learning for Depth Map Super-Resolution
  https://arxiv.org/pdf/2011.11865v1.pdf
code: def forward(self, depth: dict, rgb_skip_connections: dict):
      depth_skip_connections = self.depth_encoder(depth)
  
      fusion_features = None
      for scale, (
          conv_layers,
          upsample,
      ) in self.upsample_blocks.items():
          if fusion_features is None:
              fusion_features = torch.cat(
                  (
                      rgb_skip_connections[scale],
                      depth_skip_connections[scale],
                  ),
                  1,
              )
          else:
              fusion_features = torch.cat(
                  (
                      rgb_skip_connections[scale],
                      depth_skip_connections[scale],
                      fusion_features,
                  ),
                  1,
              )
  
          fusion_features = conv_layers(fusion_features)
  
          if upsample is not None:
              fusion_features = upsample(fusion_features)
  
      depth = fusion_features
  
      return depth
  
file_path: ARKitScenes/depth_upsampling/models/mspf/MultiScaleDepthSR.py
imports: from typing import List
  import torch
  from torch import nn
  from models.mspf.MultiscaleConvDepthEncoder import MultiscaleConvDepthEncoder
  from models.mspf.blocks.multi_scale_depth import Upsample2D, Conv2D
label_desc: Use image node_id 2 for calling the MultiscaleDepthDecoder obj's underlying member method code with example usage: obj.forward(depth, rgb_skip_connections) and returns: depth