code: def forward(self, x):
      size = x.size()[2:]
      layer_1 = self.layer1(x)
      layer_2 = self.layer2(layer_1)
      layer_3 = self.layer3(layer_2)
      layer_4 = self.layer4(layer_3)
  
      layer_1_rn = self.layer1_rn(layer_1)
      layer_2_rn = self.layer2_rn(layer_2)
      layer_3_rn = self.layer3_rn(layer_3)
      layer_4_rn = self.layer4_rn(layer_4)
  
      path_4 = self.refinenet4(layer_4_rn)
      path_3 = self.refinenet3(path_4, layer_3_rn)
      path_2 = self.refinenet2(path_3, layer_2_rn)
      path_1 = self.refinenet1(path_2, layer_1_rn)
      out_conv = self.output_conv(path_1)
      out = F.interpolate(
          out_conv, size, mode="bilinear", align_corners=True
      )
      return out
  
file_path: pywick/pywick/models/segmentation/refinenet/refinenet.py
imports: import torch.nn
  import torchvision.models
  import torch.nn.functional
  from .blocks import RefineNetBlock, ResidualConvUnit, RefineNetBlockImprovedPooling
label_desc: Use image node_id 2 for calling the BaseRefineNet4Cascade obj's underlying member method code with example usage: obj.forward(x) and returns: out