class_docstr: MaskHead of SOLOv2.
  The code of this function is based on:
      https://github.com/WXinlong/SOLO/blob/master/mmdet/models/mask_heads/mask_feat_head.py
  
  Args:
      in_channels (int): The channel number of input Tensor.
      out_channels (int): The channel number of output Tensor.
      start_level (int): The position where the input starts.
      end_level (int): The position where the input ends.
      use_dcn_in_tower (bool): Whether to use dcn in tower or not.
class_docstr_tok: ["MaskHead","of","SOLOv2",".","The","code","of","this","function","is","based","on",":","https",":","\/\/github.com\/WXinlong\/SOLO\/blob\/master\/mmdet\/models\/mask_heads\/mask_feat_head.py","Args",":","in_channels","(","int",")",":","The","channel","number","of","input","Tensor",".","out_channels","(","int",")",":","The","channel","number","of","output","Tensor",".","start_level","(","int",")",":","The","position","where","the","input","starts",".","end_level","(","int",")",":","The","position","where","the","input","ends",".","use_dcn_in_tower","(","bool",")",":","Whether","to","use","dcn","in","tower","or","not","."]
docstr: Get SOLOv2MaskHead output.
  
  Args:
      inputs(list[Tensor]): feature map from each necks with shape of [N, C, H, W]
  Returns:
      ins_pred(Tensor): Output of SOLOv2MaskHead head
docstr_tok: ["Get","SOLOv2MaskHead","output",".","Args",":","inputs","(","list","[","Tensor","]",")",":","feature","map","from","each","necks","with","shape","of","[","N",",","C",",","H",",","W","]","Returns",":","ins_pred","(","Tensor",")",":","Output","of","SOLOv2MaskHead","head"]
code: def forward(self, inputs):
      """
      Get SOLOv2MaskHead output.
  
      Args:
          inputs(list[Tensor]): feature map from each necks with shape of [N, C, H, W]
      Returns:
          ins_pred(Tensor): Output of SOLOv2MaskHead head
      """
      feat_all_level = F.relu(self.convs_all_levels[0](inputs[0]))
      for i in range(1, self.range_level):
          input_p = inputs[i]
          if i == (self.range_level - 1):
              input_feat = input_p
              x_range = paddle.linspace(
                  -1, 1, paddle.shape(input_feat)[-1], dtype="float32"
              )
              y_range = paddle.linspace(
                  -1, 1, paddle.shape(input_feat)[-2], dtype="float32"
              )
              y, x = paddle.meshgrid([y_range, x_range])
              x = paddle.unsqueeze(x, [0, 1])
              y = paddle.unsqueeze(y, [0, 1])
              y = paddle.expand(
                  y, shape=[paddle.shape(input_feat)[0], 1, -1, -1]
              )
              x = paddle.expand(
                  x, shape=[paddle.shape(input_feat)[0], 1, -1, -1]
              )
              coord_feat = paddle.concat([x, y], axis=1)
              input_p = paddle.concat([input_p, coord_feat], axis=1)
          feat_all_level = paddle.add(
              feat_all_level, self.convs_all_levels[i](input_p)
          )
      ins_pred = F.relu(self.conv_pred(feat_all_level))
  
      return ins_pred
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import ParamAttr
  import paddle.nn
  import paddle.nn.functional
  from paddle.nn.initializer import Normal, Constant
  from ppdet.modeling.layers import ConvNormLayer, MaskMatrixNMS, DropBlock
  from ppdet.core.workspace import register
  from six.moves import zip
  import numpy
label_desc: Use image node_id 2 for calling the SOLOv2MaskHead obj's underlying member method code with example usage: obj.forward(inputs) and returns: ins_pred