code: def __init__(
      self,
      head,
      features=256,
      backbone="vitb_rn50_384",
      readout="project",
      channels_last=False,
      use_bn=False,
  ):
      super(DPT, self).__init__()
  
      self.channels_last = channels_last
  
      hooks = {
          "vitb_rn50_384": [0, 1, 8, 11],
          "vitb16_384": [2, 5, 8, 11],
          "vitl16_384": [5, 11, 17, 23],
      }
  
      # Instantiate backbone and reassemble blocks
      self.pretrained, self.scratch = _make_encoder(
          backbone,
          features,
          False,  # Set to true of you want to train from scratch, uses ImageNet weights
          groups=1,
          expand=False,
          exportable=False,
          hooks=hooks[backbone],
          use_readout=readout,
      )
  
      self.scratch.refinenet1 = _make_fusion_block(features, use_bn)
      self.scratch.refinenet2 = _make_fusion_block(features, use_bn)
      self.scratch.refinenet3 = _make_fusion_block(features, use_bn)
      self.scratch.refinenet4 = _make_fusion_block(features, use_bn)
  
      self.scratch.output_conv = head
  
file_path: ColossalAI/examples/images/diffusion/ldm/modules/midas/midas/dpt_depth.py
imports: import torch
  import torch.nn
  from .base_model import BaseModel
  from .blocks import FeatureFusionBlock_custom, Interpolate, _make_encoder, forward_vit
label_desc: Use image node_id 1 to create a new DPT object from inherited base classes: BaseModel with example: obj = DPT(head, features, backbone, readout, channels_last, use_bn)