code: def forward(self, x):
      c0, c1, c2, c3, c4, c5, c6 = x
      # FPN_Down_Fusion
      f = [c0, c1, c2]
      g = [None, None, None]
      h = [None, None, None]
      h[0] = self.conv_bn_layer_1(f[0])
      h[1] = self.conv_bn_layer_2(f[1])
      h[2] = self.conv_bn_layer_3(f[2])
  
      g[0] = self.conv_bn_layer_4(h[0])
      g[1] = paddle.add(g[0], h[1])
      g[1] = F.relu(g[1])
      g[1] = self.conv_bn_layer_5(g[1])
      g[1] = self.conv_bn_layer_6(g[1])
  
      g[2] = paddle.add(g[1], h[2])
      g[2] = F.relu(g[2])
      g[2] = self.conv_bn_layer_7(g[2])
      f_down = self.conv_bn_layer_8(g[2])
  
      # FPN UP Fusion
      f1 = [c6, c5, c4, c3, c2]
      g = [None, None, None, None, None]
      h = [None, None, None, None, None]
      h[0] = self.conv_h0(f1[0])
      h[1] = self.conv_h1(f1[1])
      h[2] = self.conv_h2(f1[2])
      h[3] = self.conv_h3(f1[3])
      h[4] = self.conv_h4(f1[4])
  
      g[0] = self.dconv0(h[0])
      g[1] = paddle.add(g[0], h[1])
      g[1] = F.relu(g[1])
      g[1] = self.conv_g1(g[1])
      g[1] = self.dconv1(g[1])
  
      g[2] = paddle.add(g[1], h[2])
      g[2] = F.relu(g[2])
      g[2] = self.conv_g2(g[2])
      g[2] = self.dconv2(g[2])
  
      g[3] = paddle.add(g[2], h[3])
      g[3] = F.relu(g[3])
      g[3] = self.conv_g3(g[3])
      g[3] = self.dconv3(g[3])
  
      g[4] = paddle.add(x=g[3], y=h[4])
      g[4] = F.relu(g[4])
      g[4] = self.conv_g4(g[4])
      f_up = self.convf(g[4])
      f_common = paddle.add(f_down, f_up)
      f_common = F.relu(f_common)
      return f_common
  
file_path: PaddleOCR/ppocr/modeling/necks/pg_fpn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import nn
  import paddle.nn.functional
  from paddle import ParamAttr
label_desc: Use image node_id 2 for calling the PGFPN obj's underlying member method code with example usage: obj.forward(x) and returns: f_common