code: def forward(self, x1, x2, x3):
      _, _, h, w = x1.size()
  
      edge1_fea = self.conv1(x1)
      edge1 = self.conv4(edge1_fea)
      edge2_fea = self.conv2(x2)
      edge2 = self.conv4(edge2_fea)
      edge3_fea = self.conv3(x3)
      edge3 = self.conv4(edge3_fea)
  
      edge2_fea = F.interpolate(
          edge2_fea, size=(h, w), mode="bilinear", align_corners=True
      )
      edge3_fea = F.interpolate(
          edge3_fea, size=(h, w), mode="bilinear", align_corners=True
      )
      edge2 = F.interpolate(
          edge2, size=(h, w), mode="bilinear", align_corners=True
      )
      edge3 = F.interpolate(
          edge3, size=(h, w), mode="bilinear", align_corners=True
      )
  
      edge = torch.cat([edge1, edge2, edge3], dim=1)
      edge_fea = torch.cat([edge1_fea, edge2_fea, edge3_fea], dim=1)
      semantic_edge = self.conv5(edge)
      binary_edge = self.conv5_b(edge)
  
      return binary_edge, semantic_edge, edge_fea
  
file_path: insightface/parsing/dml_csr/networks/modules/edges.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import torch
  import torch.nn.functional
  import torch.nn
  from inplace_abn import InPlaceABNSync
label_desc: Use image node_id 2 for calling the Edges obj's underlying member method code with example usage: obj.forward(x1, x2, x3) and returns: binary_edge,  semantic_edge,  edge_fea