    def __init__(self,
                 ch_in,
                 channel,
                 norm_type,
                 freeze_norm=False,
                 name='',
                 data_format='NCHW'):
        """
        YOLODetBlock layer for yolov3, see https://arxiv.org/abs/1804.02767
        Args:
            ch_in (int): input channel
            channel (int): base channel
            norm_type (str): batch norm type
            freeze_norm (bool): whether to freeze norm, default False
            name (str): layer name
            data_format (str): data format, NCHW or NHWC
        """
        super(YoloDetBlock, self).__init__()
        self.ch_in = ch_in
        self.channel = channel
        assert channel % 2 == 0, \
            "channel {} cannot be divided by 2".format(channel)
        conv_def = [
            ['conv0', ch_in, channel, 1, '_0_0'],
            ['conv1', channel, channel * 2, 3, '_0_1'],
            ['conv2', channel * 2, channel, 1, '_1_0'],
            ['conv3', channel, channel * 2, 3, '_1_1'],
            ['route', channel * 2, channel, 1, '_2'],
        ]

        self.conv_module = nn.Sequential()
        for idx, (conv_name, ch_in, ch_out, filter_size,
                  post_name) in enumerate(conv_def):
            # self.conv_module.add_sublayer(
            #     conv_name,
            #     ConvBNLayer(
            #         ch_in=ch_in,
            #         ch_out=ch_out,
            #         filter_size=filter_size,
            #         padding=(filter_size - 1) // 2,
            #         norm_type=norm_type,
            #         freeze_norm=freeze_norm,
            #         data_format=data_format,
            #         name=name + post_name))
            self.conv_module.add_module(conv_name,
                                        ConvBNLayer(
                                            ch_in=ch_in,
                                            ch_out=ch_out,
                                            filter_size=filter_size,
                                            padding=(filter_size - 1) // 2,
                                            norm_type=norm_type,
                                            freeze_norm=freeze_norm,
                                            data_format=data_format,
                                            name=name + post_name)
                                        )

        self.tip = ConvBNLayer(
            ch_in=channel,
            ch_out=channel * 2,
            filter_size=3,
            padding=1,
            norm_type=norm_type,
            freeze_norm=freeze_norm,
            data_format=data_format,
            name=name + '.tip')
YOLODetBlock layer for yolov3, see https://arxiv.org/abs/1804.02767
Args:
ch_in (int): input channel
channel (int): base channel
norm_type (str): batch norm type
freeze_norm (bool): whether to freeze norm, default False
name (str): layer name
data_format (str): data format, NCHW or NHWC
ptstructure/layout/ptppyolov2/ppyolov2_yolo_fpn.py