class_docstr: BlazeFace, see https://arxiv.org/abs/1907.05047
  
  Args:
      blaze_filters (list): number of filter for each blaze block.
      double_blaze_filters (list): number of filter for each double_blaze block.
      use_5x5kernel (bool): whether or not filter size is 5x5 in depth-wise conv.
class_docstr_tok: ["BlazeFace",",","see","https",":","\/\/arxiv.org\/abs\/1907.05047","Args",":","blaze_filters","(","list",")",":","number","of","filter","for","each","blaze","block",".","double_blaze_filters","(","list",")",":","number","of","filter","for","each","double_blaze","block",".","use_5x5kernel","(","bool",")",":","whether","or","not","filter","size","is","5x5","in","depth-wise","conv","."]
code: def __init__(
      self,
      blaze_filters=[
          [24, 24],
          [24, 24],
          [24, 48, 2],
          [48, 48],
          [48, 48],
      ],
      double_blaze_filters=[
          [48, 24, 96, 2],
          [96, 24, 96],
          [96, 24, 96],
          [96, 24, 96, 2],
          [96, 24, 96],
          [96, 24, 96],
      ],
      use_5x5kernel=True,
      act=None,
  ):
      super(BlazeNet, self).__init__()
      conv1_num_filters = blaze_filters[0][0]
      self.conv1 = ConvBNLayer(
          in_channels=3,
          out_channels=conv1_num_filters,
          kernel_size=3,
          stride=2,
          padding=1,
          name="conv1",
      )
      in_channels = conv1_num_filters
      self.blaze_block = []
      self._out_channels = []
      for k, v in enumerate(blaze_filters):
          assert len(v) in [2, 3], "blaze_filters {} not in [2, 3]"
          if len(v) == 2:
              self.blaze_block.append(
                  self.add_sublayer(
                      "blaze_{}".format(k),
                      BlazeBlock(
                          in_channels,
                          v[0],
                          v[1],
                          use_5x5kernel=use_5x5kernel,
                          act=act,
                          name="blaze_{}".format(k),
                      ),
                  )
              )
          elif len(v) == 3:
              self.blaze_block.append(
                  self.add_sublayer(
                      "blaze_{}".format(k),
                      BlazeBlock(
                          in_channels,
                          v[0],
                          v[1],
                          stride=v[2],
                          use_5x5kernel=use_5x5kernel,
                          act=act,
                          name="blaze_{}".format(k),
                      ),
                  )
              )
          in_channels = v[1]
  
      for k, v in enumerate(double_blaze_filters):
          assert len(v) in [3, 4], "blaze_filters {} not in [3, 4]"
          if len(v) == 3:
              self.blaze_block.append(
                  self.add_sublayer(
                      "double_blaze_{}".format(k),
                      BlazeBlock(
                          in_channels,
                          v[0],
                          v[1],
                          double_channels=v[2],
                          use_5x5kernel=use_5x5kernel,
                          act=act,
                          name="double_blaze_{}".format(k),
                      ),
                  )
              )
          elif len(v) == 4:
              self.blaze_block.append(
                  self.add_sublayer(
                      "double_blaze_{}".format(k),
                      BlazeBlock(
                          in_channels,
                          v[0],
                          v[1],
                          double_channels=v[2],
                          stride=v[3],
                          use_5x5kernel=use_5x5kernel,
                          act=act,
                          name="double_blaze_{}".format(k),
                      ),
                  )
              )
          in_channels = v[2]
          self._out_channels.append(in_channels)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.nn.initializer import KaimingNormal
  from ppdet.core.workspace import register, serializable
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new BlazeNet object from inherited base classes: nn with example: obj = BlazeNet(blaze_filters, double_blaze_filters, use_5x5kernel, act)