docstr: Base network 
docstr_tok: ["Base","network"]
code: def forward(self, x):
      """Base network"""
      if self.amp:
          with torch.cuda.amp.autocast():
              sources = self.basenet(x)
  
              """ U network """
              y = torch.cat([sources[0], sources[1]], dim=1)
              y = self.upconv1(y)
  
              y = F.interpolate(
                  y,
                  size=sources[2].size()[2:],
                  mode="bilinear",
                  align_corners=False,
              )
              y = torch.cat([y, sources[2]], dim=1)
              y = self.upconv2(y)
  
              y = F.interpolate(
                  y,
                  size=sources[3].size()[2:],
                  mode="bilinear",
                  align_corners=False,
              )
              y = torch.cat([y, sources[3]], dim=1)
              y = self.upconv3(y)
  
              y = F.interpolate(
                  y,
                  size=sources[4].size()[2:],
                  mode="bilinear",
                  align_corners=False,
              )
              y = torch.cat([y, sources[4]], dim=1)
              feature = self.upconv4(y)
  
              y = self.conv_cls(feature)
  
              return y.permute(0, 2, 3, 1), feature
      else:
          sources = self.basenet(x)
  
          """ U network """
          y = torch.cat([sources[0], sources[1]], dim=1)
          y = self.upconv1(y)
  
          y = F.interpolate(
              y,
              size=sources[2].size()[2:],
              mode="bilinear",
              align_corners=False,
          )
          y = torch.cat([y, sources[2]], dim=1)
          y = self.upconv2(y)
  
          y = F.interpolate(
              y,
              size=sources[3].size()[2:],
              mode="bilinear",
              align_corners=False,
          )
          y = torch.cat([y, sources[3]], dim=1)
          y = self.upconv3(y)
  
          y = F.interpolate(
              y,
              size=sources[4].size()[2:],
              mode="bilinear",
              align_corners=False,
          )
          y = torch.cat([y, sources[4]], dim=1)
          feature = self.upconv4(y)
  
          y = self.conv_cls(feature)
  
          return y.permute(0, 2, 3, 1), feature
  
file_path: EasyOCR/trainer/craft/model/craft.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from model.vgg16_bn import vgg16_bn, init_weights
label_desc: Use image node_id 2 for calling the CRAFT obj's underlying member method code with example usage: obj.forward(x) and returns: y,  feature, y,  feature