class_docstr: Fast-SCNN Backbone.
  
  Args:
      in_channels (int): Number of input image channels. Default: 3.
      downsample_dw_channels (tuple[int]): Number of output channels after
          the first conv layer & the second conv layer in
          Learning-To-Downsample (LTD) module.
          Default: (32, 48).
      global_in_channels (int): Number of input channels of
          Global Feature Extractor(GFE).
          Equal to number of output channels of LTD.
          Default: 64.
      global_block_channels (tuple[int]): Tuple of integers that describe
          the output channels for each of the MobileNet-v2 bottleneck
          residual blocks in GFE.
          Default: (64, 96, 128).
      global_block_strides (tuple[int]): Tuple of integers
          that describe the strides (downsampling factors) for each of the
          MobileNet-v2 bottleneck residual blocks in GFE.
          Default: (2, 2, 1).
      global_out_channels (int): Number of output channels of GFE.
          Default: 128.
      higher_in_channels (int): Number of input channels of the higher
          resolution branch in FFM.
          Equal to global_in_channels.
          Default: 64.
      lower_in_channels (int): Number of input channels of  the lower
          resolution branch in FFM.
          Equal to global_out_channels.
          Default: 128.
      fusion_out_channels (int): Number of output channels of FFM.
          Default: 128.
      out_indices (tuple): Tuple of indices of list
          [higher_res_features, lower_res_features, fusion_output].
          Often set to (0,1,2) to enable aux. heads.
          Default: (0, 1, 2).
      conv_cfg (dict | None): Config of conv layers. Default: None
      norm_cfg (dict | None): Config of norm layers. Default:
          dict(type='BN')
      act_cfg (dict): Config of activation layers. Default:
          dict(type='ReLU')
      align_corners (bool): align_corners argument of F.interpolate.
          Default: False
class_docstr_tok: ["Fast-SCNN","Backbone",".","Args",":","in_channels","(","int",")",":","Number","of","input","image","channels",".","Default",":","3.","downsample_dw_channels","(","tuple","[","int","]",")",":","Number","of","output","channels","after","the","first","conv","layer","&","the","second","conv","layer","in","Learning-To-Downsample","(","LTD",")","module",".","Default",":","(","32",",","48",")",".","global_in_channels","(","int",")",":","Number","of","input","channels","of","Global","Feature","Extractor","(","GFE",")",".","Equal","to","number","of","output","channels","of","LTD",".","Default",":","64.","global_block_channels","(","tuple","[","int","]",")",":","Tuple","of","integers","that","describe","the","output","channels","for","each","of","the","MobileNet-v2","bottleneck","residual","blocks","in","GFE",".","Default",":","(","64",",","96",",","128",")",".","global_block_strides","(","tuple","[","int","]",")",":","Tuple","of","integers","that","describe","the","strides","(","downsampling","factors",")","for","each","of","the","MobileNet-v2","bottleneck","residual","blocks","in","GFE",".","Default",":","(","2",",","2",",","1",")",".","global_out_channels","(","int",")",":","Number","of","output","channels","of","GFE",".","Default",":","128.","higher_in_channels","(","int",")",":","Number","of","input","channels","of","the","higher","resolution","branch","in","FFM",".","Equal","to","global_in_channels",".","Default",":","64.","lower_in_channels","(","int",")",":","Number","of","input","channels","of","the","lower","resolution","branch","in","FFM",".","Equal","to","global_out_channels",".","Default",":","128.","fusion_out_channels","(","int",")",":","Number","of","output","channels","of","FFM",".","Default",":","128.","out_indices","(","tuple",")",":","Tuple","of","indices","of","list","[","higher_res_features",",","lower_res_features",",","fusion_output","]",".","Often","set","to","(","0,1,2",")","to","enable","aux",".","heads",".","Default",":","(","0",",","1",",","2",")",".","conv_cfg","(","dict","|","None",")",":","Config","of","conv","layers",".","Default",":","None","norm_cfg","(","dict","|","None",")",":","Config","of","norm","layers",".","Default",":","dict","(","type='BN","'",")","act_cfg","(","dict",")",":","Config","of","activation","layers",".","Default",":","dict","(","type='ReLU","'",")","align_corners","(","bool",")",":","align_corners","argument","of","F.interpolate",".","Default",":","False"]
code: def __init__(
      self,
      in_channels=3,
      downsample_dw_channels=(32, 48),
      global_in_channels=64,
      global_block_channels=(64, 96, 128),
      global_block_strides=(2, 2, 1),
      global_out_channels=128,
      higher_in_channels=64,
      lower_in_channels=128,
      fusion_out_channels=128,
      out_indices=(0, 1, 2),
      conv_cfg=None,
      norm_cfg=dict(type="BN"),
      act_cfg=dict(type="ReLU"),
      align_corners=False,
  ):
      super(FastSCNN, self).__init__()
      if global_in_channels != higher_in_channels:
          raise AssertionError(
              "Global Input Channels must be the same \
                                   with Higher Input Channels!"
          )
      elif global_out_channels != lower_in_channels:
          raise AssertionError(
              "Global Output Channels must be the same \
                                  with Lower Input Channels!"
          )
  
      self.in_channels = in_channels
      self.downsample_dw_channels1 = downsample_dw_channels[0]
      self.downsample_dw_channels2 = downsample_dw_channels[1]
      self.global_in_channels = global_in_channels
      self.global_block_channels = global_block_channels
      self.global_block_strides = global_block_strides
      self.global_out_channels = global_out_channels
      self.higher_in_channels = higher_in_channels
      self.lower_in_channels = lower_in_channels
      self.fusion_out_channels = fusion_out_channels
      self.out_indices = out_indices
      self.conv_cfg = conv_cfg
      self.norm_cfg = norm_cfg
      self.act_cfg = act_cfg
      self.align_corners = align_corners
      self.learning_to_downsample = LearningToDownsample(
          in_channels,
          downsample_dw_channels,
          global_in_channels,
          conv_cfg=self.conv_cfg,
          norm_cfg=self.norm_cfg,
          act_cfg=self.act_cfg,
      )
      self.global_feature_extractor = GlobalFeatureExtractor(
          global_in_channels,
          global_block_channels,
          global_out_channels,
          strides=self.global_block_strides,
          conv_cfg=self.conv_cfg,
          norm_cfg=self.norm_cfg,
          act_cfg=self.act_cfg,
          align_corners=self.align_corners,
      )
      self.feature_fusion = FeatureFusionModule(
          higher_in_channels,
          lower_in_channels,
          fusion_out_channels,
          conv_cfg=self.conv_cfg,
          norm_cfg=self.norm_cfg,
          act_cfg=self.act_cfg,
          align_corners=self.align_corners,
      )
  
imports: import torch
  import torch.nn
  from annotator.uniformer.mmcv.cnn import ConvModule, DepthwiseSeparableConvModule, constant_init, kaiming_init
  from torch.nn.modules.batchnorm import _BatchNorm
  from annotator.uniformer.mmseg.models.decode_heads.psp_head import PPM
  from annotator.uniformer.mmseg.ops import resize
  from ..builder import BACKBONES
  from ..utils.inverted_residual import InvertedResidual
label_desc: Use image node_id 1 to create a new FastSCNN object from inherited base classes: nn with example: obj = FastSCNN(in_channels, downsample_dw_channels, global_in_channels, global_block_channels, global_block_strides, global_out_channels, higher_in_channels, lower_in_channels, fusion_out_channels, out_indices, conv_cfg, norm_cfg, act_cfg, align_corners)