class_docstr: ROIGather module for gather global information
  Args: 
      in_channels: prior feature channels
      num_priors: prior numbers we predefined
      sample_points: the number of sampled points when we extract feature from line
      fc_hidden_dim: the fc output channel
      refine_layers: the total number of layers to build refine
class_docstr_tok: ["ROIGather","module","for","gather","global","information","Args",":","in_channels",":","prior","feature","channels","num_priors",":","prior","numbers","we","predefined","sample_points",":","the","number","of","sampled","points","when","we","extract","feature","from","line","fc_hidden_dim",":","the","fc","output","channel","refine_layers",":","the","total","number","of","layers","to","build","refine"]
code: def __init__(
      self,
      in_channels,
      num_priors,
      sample_points,
      fc_hidden_dim,
      refine_layers,
      mid_channels=48,
  ):
      super(ROIGather, self).__init__()
      self.in_channels = in_channels
      self.num_priors = num_priors
      self.f_key = ConvModule(
          in_channels=self.in_channels,
          out_channels=self.in_channels,
          kernel_size=1,
          stride=1,
          padding=0,
          norm_type="bn",
      )
  
      self.f_query = nn.Sequential(
          nn.Conv1D(
              in_channels=num_priors,
              out_channels=num_priors,
              kernel_size=1,
              stride=1,
              padding=0,
              groups=num_priors,
          ),
          nn.ReLU(),
      )
      self.f_value = nn.Conv2D(
          in_channels=self.in_channels,
          out_channels=self.in_channels,
          kernel_size=1,
          stride=1,
          padding=0,
      )
      self.W = nn.Conv1D(
          in_channels=num_priors,
          out_channels=num_priors,
          kernel_size=1,
          stride=1,
          padding=0,
          groups=num_priors,
      )
  
      self.resize = FeatureResize()
      constant_(self.W.weight, 0)
      constant_(self.W.bias, 0)
  
      self.convs = nn.LayerList()
      self.catconv = nn.LayerList()
      for i in range(refine_layers):
          self.convs.append(
              ConvModule(
                  in_channels,
                  mid_channels,
                  (9, 1),
                  padding=(4, 0),
                  bias=False,
                  norm_type="bn",
              )
          )
  
          self.catconv.append(
              ConvModule(
                  mid_channels * (i + 1),
                  in_channels,
                  (9, 1),
                  padding=(4, 0),
                  bias=False,
                  norm_type="bn",
              )
          )
  
      self.fc = nn.Linear(
          sample_points * fc_hidden_dim, fc_hidden_dim, bias_attr=True
      )
  
      self.fc_norm = nn.LayerNorm(fc_hidden_dim)
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from ppdet.modeling.initializer import constant_
  from paddle.nn.initializer import KaimingNormal
  import paddle.nn
label_desc: Use image node_id 1 to create a new ROIGather object from inherited base classes: nn with example: obj = ROIGather(in_channels, num_priors, sample_points, fc_hidden_dim, refine_layers, mid_channels)