code: def _init_upsample(
      self, in_channels, out_channels, smooth=False, bias=False
  ):
      if smooth:
          inter_out_channels = out_channels
          if out_channels == 1:
              inter_out_channels = in_channels
          module_list = [
              nn.Upsample(scale_factor=2, mode="nearest"),
              nn.Conv2d(
                  in_channels, inter_out_channels, 3, 1, 1, bias=bias
              ),
          ]
          if out_channels == 1:
              module_list.append(
                  nn.Conv2d(
                      in_channels,
                      out_channels,
                      kernel_size=1,
                      stride=1,
                      padding=1,
                      bias=True,
                  )
              )
  
          return nn.Sequential(module_list)
      else:
          return nn.ConvTranspose2d(in_channels, out_channels, 2, 2)
  
file_path: EasyOCR/easyocr/DBNet/decoders/seg_detector_asf.py
imports: from collections import OrderedDict
  import pdb
  import torch
  import torch.nn
  from .feature_attention import ScaleFeatureSelection
label_desc: Use image node_id 4 for calling the SegSpatialScaleDetector obj's underlying member method code with example usage: obj._init_upsample(in_channels, out_channels, smooth, bias) and returns: nn, nn