class_docstr: The SINet implementation based on PaddlePaddle.
  
  The original article refers to
  Hyojin Park, Lars Lowe Sjösund, YoungJoon Yoo, Nicolas Monet, Jihwan Bang, Nojun Kwak
  "SINet: Extreme Lightweight Portrait Segmentation Networks with Spatial Squeeze Modules
  and Information Blocking Decoder", (https://arxiv.org/abs/1911.09099).
  
  Args:
      num_classes (int): The unique number of target classes.
      config (List, optional): The config for SINet. Defualt use the CFG.
      stage2_blocks (int, optional): The num of blocks in stage2. Default: 2.
      stage3_blocks (int, optional): The num of blocks in stage3. Default: 8.
      in_channels (int, optional): The channels of input image. Default: 3.
      pretrained (str, optional): The path or url of pretrained model. Default: None.
class_docstr_tok: ["The","SINet","implementation","based","on","PaddlePaddle",".","The","original","article","refers","to","Hyojin","Park",",","Lars","Lowe","Sj\u00f6sund",",","YoungJoon","Yoo",",","Nicolas","Monet",",","Jihwan","Bang",",","Nojun","Kwak","''","SINet",":","Extreme","Lightweight","Portrait","Segmentation","Networks","with","Spatial","Squeeze","Modules","and","Information","Blocking","Decoder","''",",","(","https",":","\/\/arxiv.org\/abs\/1911.09099",")",".","Args",":","num_classes","(","int",")",":","The","unique","number","of","target","classes",".","config","(","List",",","optional",")",":","The","config","for","SINet",".","Defualt","use","the","CFG",".","stage2_blocks","(","int",",","optional",")",":","The","num","of","blocks","in","stage2",".","Default",":","2.","stage3_blocks","(","int",",","optional",")",":","The","num","of","blocks","in","stage3",".","Default",":","8.","in_channels","(","int",",","optional",")",":","The","channels","of","input","image",".","Default",":","3.","pretrained","(","str",",","optional",")",":","The","path","or","url","of","pretrained","model",".","Default",":","None","."]
code: def __init__(
      self,
      num_classes=2,
      config=CFG,
      stage2_blocks=2,
      stage3_blocks=8,
      in_channels=3,
      pretrained=None,
  ):
      super().__init__()
      dim1 = 16
      dim2 = 48
      dim3 = 96
  
      self.encoder = SINetEncoder(
          config, in_channels, num_classes, stage2_blocks, stage3_blocks
      )
  
      self.up = nn.UpsamplingBilinear2D(scale_factor=2)
      self.bn_3 = nn.BatchNorm(num_classes)
  
      self.level2_C = CBR(dim2, num_classes, 1, 1)
      self.bn_2 = nn.BatchNorm(num_classes)
  
      self.classifier = nn.Sequential(
          nn.UpsamplingBilinear2D(scale_factor=2),
          nn.Conv2D(num_classes, num_classes, 3, 1, 1, bias_attr=False),
      )
  
      self.pretrained = pretrained
      self.init_weight()
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.models import layers
  from paddleseg.cvlibs import manager
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new SINet object from inherited base classes: nn with example: obj = SINet(num_classes, config, stage2_blocks, stage3_blocks, in_channels, pretrained)