class_docstr: Path Aggregation Network with ES module.
  
  Args:
      in_channels (List[int]): Number of input channels per scale.
      out_channels (int): Number of output channels (used at each scale)
      kernel_size (int): The conv2d kernel size of this Module.
      num_features (int): Number of output features of CSPPAN module.
      num_csp_blocks (int): Number of bottlenecks in CSPLayer. Default: 1
      use_depthwise (bool): Whether to depthwise separable convolution in
          blocks. Default: True
class_docstr_tok: ["Path","Aggregation","Network","with","ES","module",".","Args",":","in_channels","(","List","[","int","]",")",":","Number","of","input","channels","per","scale",".","out_channels","(","int",")",":","Number","of","output","channels","(","used","at","each","scale",")","kernel_size","(","int",")",":","The","conv2d","kernel","size","of","this","Module",".","num_features","(","int",")",":","Number","of","output","features","of","CSPPAN","module",".","num_csp_blocks","(","int",")",":","Number","of","bottlenecks","in","CSPLayer",".","Default",":","1","use_depthwise","(","bool",")",":","Whether","to","depthwise","separable","convolution","in","blocks",".","Default",":","True"]
code: def from_config(cls, cfg, input_shape):
      return {
          "in_channels": [i.channels for i in input_shape],
      }
  
file_path: PaddleDetection/ppdet/modeling/necks/es_pan.py
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from ppdet.core.workspace import register, serializable
  from ..shape_spec import ShapeSpec
  from ..backbones.esnet import SEModule
  from .csp_pan import ConvBNLayer, Channel_T, DPModule
label_desc: Use image node_id 4 for calling the ESPAN obj's underlying member method code with example usage: obj.from_config(cls, cfg, input_shape) and returns: dict