Yolov3 模型结构

4 篇文章 0 订阅
4 篇文章 0 订阅

0. 模型总体结构

Yolov3可以看作有三部分:Darknet53, FPN, Yolo Head.

Darknet53是Yolov3的主干网络,用来提取图像特征。共提取了三个特征层进行下一步网络的构建,这三个特征层即为“有效特征层”。

FPN 从backbone获取三个有效特征层后,进一步提取特征,进行特征融合,其目的是结合不同尺度的特征信息。

Yolo Head是YoloV3的分类器与回归器。 通过Darknet53与FPN, 可以获得三个加强过的特征层。他们的shape分别是:(52,52,128), (26,26,256), (13,13,512).

1. 结构分析:

1.1:backbone:

YoloV3的主干网络是Darknet53. 它使用残差网络Residual.

主干部分是一次1x1 conv和一次3x3 conv. 残差shortcut部分不做任何处理,直接将主干和的输出和从shortcut过来的输入结合。

如上图所示,共有5个残差模块。后面的xN,表示这个残差模块包含N个残差块。

Darknet53的每一个darknetConv2D后都紧跟BatchNormalization标准化与LeakyReLU部分。

摒弃了POOLing,用conv的stride来实现降采样。在这个网络结构中,使用的是步长为2的卷积来进行降采样。

例子代码:

import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.models import Sequential
import tensorflow.keras.layers as layers





#filters_shape: kernel_Size_H, kernel_Size_W, Input_Channel,filter_count
def convolutional(input_layer, filters_shape, downsample=False, activate=True, bn=True, activate_type='leaky'):
    if downsample:
        input_layer = tf.keras.layers.ZeroPadding2D(((1, 0), (1, 0)))(input_layer)
        padding = 'valid'
        strides = 2
    else:
        strides = 1
        padding = 'same'

    conv = tf.keras.layers.Conv2D(filters=filters_shape[-1], kernel_size = filters_shape[0], strides=strides, padding=padding,
                                  use_bias=not bn, kernel_regularizer=tf.keras.regularizers.l2(0.0005),
                                  kernel_initializer=tf.random_normal_initializer(stddev=0.01),
                                  bias_initializer=tf.constant_initializer(0.))(input_layer)

    if bn:
        conv =layers.BatchNormalization()(conv)
    if activate == True:
        if activate_type == "leaky":
            conv = tf.nn.leaky_relu(conv, alpha=0.1)
        elif activate_type == "mish":
            conv = mish(conv)
    return conv

def residual_block(input_layer, input_channel, filter_num1, filter_num2, activate_type='leaky'):
    short_cut = input_layer
    conv = convolutional(input_layer, filters_shape=(1, 1, input_channel, filter_num1), activate_type=activate_type)
    conv = convolutional(conv       , filters_shape=(3, 3, filter_num1,   filter_num2), activate_type=activate_type)

    residual_output = short_cut + conv
    return residual_output



def darknet53(input_layer):
    conv = convolutional(input_layer, (3, 3, 3, 32))
    conv = convolutional(conv, (3,3, 32, 64), downsample=True)

    for i in range(1):
        input_data = residual_block(conv,  64,  32, 64)

    input_data = convolutional(input_data, (3, 3,  64, 128), downsample=True)

    for i in range(2):
        input_data = residual_block(input_data, 128,  64, 128)

    input_data = convolutional(input_data, (3, 3, 128, 256), downsample=True)

    for i in range(8):
        input_data = residual_block(input_data, 256, 128, 256)

    route_1 = input_data
    input_data = convolutional(input_data, (3, 3, 256, 512), downsample=True)

    for i in range(8):
        input_data = residual_block(input_data, 512, 256, 512)

    route_2 = input_data
    input_data = convolutional(input_data, (3, 3, 512, 1024), downsample=True)

    for i in range(4):
        input_data = residual_block(input_data, 1024, 512, 1024)


    route_3 = input_data

    return route_1, route_2, route_3

def main():
    # 定义模型输入
    input_layer = tf.keras.layers.Input([416, 416, 3])
    conv = darknet53(input_layer)
    Output_Layer = conv
    # 创建模型
    model = keras.Model(inputs=input_layer, outputs=Output_Layer, name="Yolov3 Model")

    X = tf.random.uniform([1, 416, 416, 3])
    model.summary()


if __name__ == "__main__":
    main()

结果如下:

可以看到,共有51个卷积。

Model: "Yolov3 Model"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_1 (InputLayer)           [(None, 416, 416, 3  0           []                               
                                )]                                                                
                                                                                                  
 conv2d (Conv2D)                (None, 416, 416, 32  864         ['input_1[0][0]']                
                                )                                                                 
                                                                                                  
 batch_normalization (BatchNorm  (None, 416, 416, 32  128        ['conv2d[0][0]']                 
 alization)                     )                                                                 
                                                                                                  
 tf.nn.leaky_relu (TFOpLambda)  (None, 416, 416, 32  0           ['batch_normalization[0][0]']    
                                )                                                                 
                                                                                                  
 zero_padding2d (ZeroPadding2D)  (None, 417, 417, 32  0          ['tf.nn.leaky_relu[0][0]']       
                                )                                                                 
                                                                                                  
 conv2d_1 (Conv2D)              (None, 208, 208, 64  18432       ['zero_padding2d[0][0]']         
                                )                                                                 
                                                                                                  
 batch_normalization_1 (BatchNo  (None, 208, 208, 64  256        ['conv2d_1[0][0]']               
 rmalization)                   )                                                                 
                                                                                                  
 tf.nn.leaky_relu_1 (TFOpLambda  (None, 208, 208, 64  0          ['batch_normalization_1[0][0]']  
 )                              )                                                                 
                                                                                                  
 conv2d_2 (Conv2D)              (None, 208, 208, 32  2048        ['tf.nn.leaky_relu_1[0][0]']     
                                )                                                                 
                                                                                                  
 batch_normalization_2 (BatchNo  (None, 208, 208, 32  128        ['conv2d_2[0][0]']               
 rmalization)                   )                                                                 
                                                                                                  
 tf.nn.leaky_relu_2 (TFOpLambda  (None, 208, 208, 32  0          ['batch_normalization_2[0][0]']  
 )                              )                                                                 
                                                                                                  
 conv2d_3 (Conv2D)              (None, 208, 208, 64  18432       ['tf.nn.leaky_relu_2[0][0]']     
                                )                                                                 
                                                                                                  
 batch_normalization_3 (BatchNo  (None, 208, 208, 64  256        ['conv2d_3[0][0]']               
 rmalization)                   )                                                                 
                                                                                                  
 tf.nn.leaky_relu_3 (TFOpLambda  (None, 208, 208, 64  0          ['batch_normalization_3[0][0]']  
 )                              )                                                                 
                                                                                                  
 tf.__operators__.add (TFOpLamb  (None, 208, 208, 64  0          ['tf.nn.leaky_relu_1[0][0]',     
 da)                            )                                 'tf.nn.leaky_relu_3[0][0]']     
                                                                                                  
 zero_padding2d_1 (ZeroPadding2  (None, 209, 209, 64  0          ['tf.__operators__.add[0][0]']   
 D)                             )                                                                 
                                                                                                  
 conv2d_4 (Conv2D)              (None, 104, 104, 12  73728       ['zero_padding2d_1[0][0]']       
                                8)                                                                
                                                                                                  
 batch_normalization_4 (BatchNo  (None, 104, 104, 12  512        ['conv2d_4[0][0]']               
 rmalization)                   8)                                                                
                                                                                                  
 tf.nn.leaky_relu_4 (TFOpLambda  (None, 104, 104, 12  0          ['batch_normalization_4[0][0]']  
 )                              8)                                                                
                                                                                                  
 conv2d_5 (Conv2D)              (None, 104, 104, 64  8192        ['tf.nn.leaky_relu_4[0][0]']     
                                )                                                                 
                                                                                                  
 batch_normalization_5 (BatchNo  (None, 104, 104, 64  256        ['conv2d_5[0][0]']               
 rmalization)                   )                                                                 
                                                                                                  
 tf.nn.leaky_relu_5 (TFOpLambda  (None, 104, 104, 64  0          ['batch_normalization_5[0][0]']  
 )                              )                                                                 
                                                                                                  
 conv2d_6 (Conv2D)              (None, 104, 104, 12  73728       ['tf.nn.leaky_relu_5[0][0]']     
                                8)                                                                
                                                                                                  
 batch_normalization_6 (BatchNo  (None, 104, 104, 12  512        ['conv2d_6[0][0]']               
 rmalization)                   8)                                                                
                                                                                                  
 tf.nn.leaky_relu_6 (TFOpLambda  (None, 104, 104, 12  0          ['batch_normalization_6[0][0]']  
 )                              8)                                                                
                                                                                                  
 tf.__operators__.add_1 (TFOpLa  (None, 104, 104, 12  0          ['tf.nn.leaky_relu_4[0][0]',     
 mbda)                          8)                                'tf.nn.leaky_relu_6[0][0]']     
                                                                                                  
 conv2d_7 (Conv2D)              (None, 104, 104, 64  8192        ['tf.__operators__.add_1[0][0]'] 
                                )                                                                 
                                                                                                  
 batch_normalization_7 (BatchNo  (None, 104, 104, 64  256        ['conv2d_7[0][0]']               
 rmalization)                   )                                                                 
                                                                                                  
 tf.nn.leaky_relu_7 (TFOpLambda  (None, 104, 104, 64  0          ['batch_normalization_7[0][0]']  
 )                              )                                                                 
                                                                                                  
 conv2d_8 (Conv2D)              (None, 104, 104, 12  73728       ['tf.nn.leaky_relu_7[0][0]']     
                                8)                                                                
                                                                                                  
 batch_normalization_8 (BatchNo  (None, 104, 104, 12  512        ['conv2d_8[0][0]']               
 rmalization)                   8)                                                                
                                                                                                  
 tf.nn.leaky_relu_8 (TFOpLambda  (None, 104, 104, 12  0          ['batch_normalization_8[0][0]']  
 )                              8)                                                                
                                                                                                  
 tf.__operators__.add_2 (TFOpLa  (None, 104, 104, 12  0          ['tf.__operators__.add_1[0][0]', 
 mbda)                          8)                                'tf.nn.leaky_relu_8[0][0]']     
                                                                                                  
 zero_padding2d_2 (ZeroPadding2  (None, 105, 105, 12  0          ['tf.__operators__.add_2[0][0]'] 
 D)                             8)                                                                
                                                                                                  
 conv2d_9 (Conv2D)              (None, 52, 52, 256)  294912      ['zero_padding2d_2[0][0]']       
                                                                                                  
 batch_normalization_9 (BatchNo  (None, 52, 52, 256)  1024       ['conv2d_9[0][0]']               
 rmalization)                                                                                     
                                                                                                  
 tf.nn.leaky_relu_9 (TFOpLambda  (None, 52, 52, 256)  0          ['batch_normalization_9[0][0]']  
 )                                                                                                
                                                                                                  
 conv2d_10 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.nn.leaky_relu_9[0][0]']     
                                                                                                  
 batch_normalization_10 (BatchN  (None, 52, 52, 128)  512        ['conv2d_10[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_10 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_10[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_11 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_10[0][0]']    
                                                                                                  
 batch_normalization_11 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_11[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_11 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_11[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_3 (TFOpLa  (None, 52, 52, 256)  0          ['tf.nn.leaky_relu_9[0][0]',     
 mbda)                                                            'tf.nn.leaky_relu_11[0][0]']    
                                                                                                  
 conv2d_12 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_3[0][0]'] 
                                                                                                  
 batch_normalization_12 (BatchN  (None, 52, 52, 128)  512        ['conv2d_12[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_12 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_12[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_13 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_12[0][0]']    
                                                                                                  
 batch_normalization_13 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_13[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_13 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_13[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_4 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_3[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_13[0][0]']    
                                                                                                  
 conv2d_14 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_4[0][0]'] 
                                                                                                  
 batch_normalization_14 (BatchN  (None, 52, 52, 128)  512        ['conv2d_14[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_14 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_14[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_15 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_14[0][0]']    
                                                                                                  
 batch_normalization_15 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_15[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_15 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_15[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_5 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_4[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_15[0][0]']    
                                                                                                  
 conv2d_16 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_5[0][0]'] 
                                                                                                  
 batch_normalization_16 (BatchN  (None, 52, 52, 128)  512        ['conv2d_16[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_16 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_16[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_17 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_16[0][0]']    
                                                                                                  
 batch_normalization_17 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_17[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_17 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_17[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_6 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_5[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_17[0][0]']    
                                                                                                  
 conv2d_18 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_6[0][0]'] 
                                                                                                  
 batch_normalization_18 (BatchN  (None, 52, 52, 128)  512        ['conv2d_18[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_18 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_18[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_19 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_18[0][0]']    
                                                                                                  
 batch_normalization_19 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_19[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_19 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_19[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_7 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_6[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_19[0][0]']    
                                                                                                  
 conv2d_20 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_7[0][0]'] 
                                                                                                  
 batch_normalization_20 (BatchN  (None, 52, 52, 128)  512        ['conv2d_20[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_20 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_20[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_21 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_20[0][0]']    
                                                                                                  
 batch_normalization_21 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_21[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_21 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_21[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_8 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_7[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_21[0][0]']    
                                                                                                  
 conv2d_22 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_8[0][0]'] 
                                                                                                  
 batch_normalization_22 (BatchN  (None, 52, 52, 128)  512        ['conv2d_22[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_22 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_22[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_23 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_22[0][0]']    
                                                                                                  
 batch_normalization_23 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_23[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_23 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_23[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_9 (TFOpLa  (None, 52, 52, 256)  0          ['tf.__operators__.add_8[0][0]', 
 mbda)                                                            'tf.nn.leaky_relu_23[0][0]']    
                                                                                                  
 conv2d_24 (Conv2D)             (None, 52, 52, 128)  32768       ['tf.__operators__.add_9[0][0]'] 
                                                                                                  
 batch_normalization_24 (BatchN  (None, 52, 52, 128)  512        ['conv2d_24[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_24 (TFOpLambd  (None, 52, 52, 128)  0          ['batch_normalization_24[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_25 (Conv2D)             (None, 52, 52, 256)  294912      ['tf.nn.leaky_relu_24[0][0]']    
                                                                                                  
 batch_normalization_25 (BatchN  (None, 52, 52, 256)  1024       ['conv2d_25[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_25 (TFOpLambd  (None, 52, 52, 256)  0          ['batch_normalization_25[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_10 (TFOpL  (None, 52, 52, 256)  0          ['tf.__operators__.add_9[0][0]', 
 ambda)                                                           'tf.nn.leaky_relu_25[0][0]']    
                                                                                                  
 zero_padding2d_3 (ZeroPadding2  (None, 53, 53, 256)  0          ['tf.__operators__.add_10[0][0]']
 D)                                                                                               
                                                                                                  
 conv2d_26 (Conv2D)             (None, 26, 26, 512)  1179648     ['zero_padding2d_3[0][0]']       
                                                                                                  
 batch_normalization_26 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_26[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_26 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_26[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_27 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.nn.leaky_relu_26[0][0]']    
                                                                                                  
 batch_normalization_27 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_27[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_27 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_27[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_28 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_27[0][0]']    
                                                                                                  
 batch_normalization_28 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_28[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_28 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_28[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_11 (TFOpL  (None, 26, 26, 512)  0          ['tf.nn.leaky_relu_26[0][0]',    
 ambda)                                                           'tf.nn.leaky_relu_28[0][0]']    
                                                                                                  
 conv2d_29 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_11[0][0]']
                                                                                                  
 batch_normalization_29 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_29[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_29 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_29[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_30 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_29[0][0]']    
                                                                                                  
 batch_normalization_30 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_30[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_30 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_30[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_12 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_11[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_30[0][0]']    
                                                                                                  
 conv2d_31 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_12[0][0]']
                                                                                                  
 batch_normalization_31 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_31[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_31 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_31[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_32 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_31[0][0]']    
                                                                                                  
 batch_normalization_32 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_32[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_32 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_32[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_13 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_12[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_32[0][0]']    
                                                                                                  
 conv2d_33 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_13[0][0]']
                                                                                                  
 batch_normalization_33 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_33[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_33 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_33[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_34 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_33[0][0]']    
                                                                                                  
 batch_normalization_34 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_34[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_34 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_34[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_14 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_13[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_34[0][0]']    
                                                                                                  
 conv2d_35 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_14[0][0]']
                                                                                                  
 batch_normalization_35 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_35[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_35 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_35[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_36 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_35[0][0]']    
                                                                                                  
 batch_normalization_36 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_36[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_36 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_36[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_15 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_14[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_36[0][0]']    
                                                                                                  
 conv2d_37 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_15[0][0]']
                                                                                                  
 batch_normalization_37 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_37[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_37 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_37[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_38 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_37[0][0]']    
                                                                                                  
 batch_normalization_38 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_38[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_38 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_38[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_16 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_15[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_38[0][0]']    
                                                                                                  
 conv2d_39 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_16[0][0]']
                                                                                                  
 batch_normalization_39 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_39[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_39 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_39[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_40 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_39[0][0]']    
                                                                                                  
 batch_normalization_40 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_40[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_40 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_40[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_17 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_16[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_40[0][0]']    
                                                                                                  
 conv2d_41 (Conv2D)             (None, 26, 26, 256)  131072      ['tf.__operators__.add_17[0][0]']
                                                                                                  
 batch_normalization_41 (BatchN  (None, 26, 26, 256)  1024       ['conv2d_41[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_41 (TFOpLambd  (None, 26, 26, 256)  0          ['batch_normalization_41[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_42 (Conv2D)             (None, 26, 26, 512)  1179648     ['tf.nn.leaky_relu_41[0][0]']    
                                                                                                  
 batch_normalization_42 (BatchN  (None, 26, 26, 512)  2048       ['conv2d_42[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_42 (TFOpLambd  (None, 26, 26, 512)  0          ['batch_normalization_42[0][0]'] 
 a)                                                                                               
                                                                                                  
 tf.__operators__.add_18 (TFOpL  (None, 26, 26, 512)  0          ['tf.__operators__.add_17[0][0]',
 ambda)                                                           'tf.nn.leaky_relu_42[0][0]']    
                                                                                                  
 zero_padding2d_4 (ZeroPadding2  (None, 27, 27, 512)  0          ['tf.__operators__.add_18[0][0]']
 D)                                                                                               
                                                                                                  
 conv2d_43 (Conv2D)             (None, 13, 13, 1024  4718592     ['zero_padding2d_4[0][0]']       
                                )                                                                 
                                                                                                  
 batch_normalization_43 (BatchN  (None, 13, 13, 1024  4096       ['conv2d_43[0][0]']              
 ormalization)                  )                                                                 
                                                                                                  
 tf.nn.leaky_relu_43 (TFOpLambd  (None, 13, 13, 1024  0          ['batch_normalization_43[0][0]'] 
 a)                             )                                                                 
                                                                                                  
 conv2d_44 (Conv2D)             (None, 13, 13, 512)  524288      ['tf.nn.leaky_relu_43[0][0]']    
                                                                                                  
 batch_normalization_44 (BatchN  (None, 13, 13, 512)  2048       ['conv2d_44[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_44 (TFOpLambd  (None, 13, 13, 512)  0          ['batch_normalization_44[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_45 (Conv2D)             (None, 13, 13, 1024  4718592     ['tf.nn.leaky_relu_44[0][0]']    
                                )                                                                 
                                                                                                  
 batch_normalization_45 (BatchN  (None, 13, 13, 1024  4096       ['conv2d_45[0][0]']              
 ormalization)                  )                                                                 
                                                                                                  
 tf.nn.leaky_relu_45 (TFOpLambd  (None, 13, 13, 1024  0          ['batch_normalization_45[0][0]'] 
 a)                             )                                                                 
                                                                                                  
 tf.__operators__.add_19 (TFOpL  (None, 13, 13, 1024  0          ['tf.nn.leaky_relu_43[0][0]',    
 ambda)                         )                                 'tf.nn.leaky_relu_45[0][0]']    
                                                                                                  
 conv2d_46 (Conv2D)             (None, 13, 13, 512)  524288      ['tf.__operators__.add_19[0][0]']
                                                                                                  
 batch_normalization_46 (BatchN  (None, 13, 13, 512)  2048       ['conv2d_46[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_46 (TFOpLambd  (None, 13, 13, 512)  0          ['batch_normalization_46[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_47 (Conv2D)             (None, 13, 13, 1024  4718592     ['tf.nn.leaky_relu_46[0][0]']    
                                )                                                                 
                                                                                                  
 batch_normalization_47 (BatchN  (None, 13, 13, 1024  4096       ['conv2d_47[0][0]']              
 ormalization)                  )                                                                 
                                                                                                  
 tf.nn.leaky_relu_47 (TFOpLambd  (None, 13, 13, 1024  0          ['batch_normalization_47[0][0]'] 
 a)                             )                                                                 
                                                                                                  
 tf.__operators__.add_20 (TFOpL  (None, 13, 13, 1024  0          ['tf.__operators__.add_19[0][0]',
 ambda)                         )                                 'tf.nn.leaky_relu_47[0][0]']    
                                                                                                  
 conv2d_48 (Conv2D)             (None, 13, 13, 512)  524288      ['tf.__operators__.add_20[0][0]']
                                                                                                  
 batch_normalization_48 (BatchN  (None, 13, 13, 512)  2048       ['conv2d_48[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_48 (TFOpLambd  (None, 13, 13, 512)  0          ['batch_normalization_48[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_49 (Conv2D)             (None, 13, 13, 1024  4718592     ['tf.nn.leaky_relu_48[0][0]']    
                                )                                                                 
                                                                                                  
 batch_normalization_49 (BatchN  (None, 13, 13, 1024  4096       ['conv2d_49[0][0]']              
 ormalization)                  )                                                                 
                                                                                                  
 tf.nn.leaky_relu_49 (TFOpLambd  (None, 13, 13, 1024  0          ['batch_normalization_49[0][0]'] 
 a)                             )                                                                 
                                                                                                  
 tf.__operators__.add_21 (TFOpL  (None, 13, 13, 1024  0          ['tf.__operators__.add_20[0][0]',
 ambda)                         )                                 'tf.nn.leaky_relu_49[0][0]']    
                                                                                                  
 conv2d_50 (Conv2D)             (None, 13, 13, 512)  524288      ['tf.__operators__.add_21[0][0]']
                                                                                                  
 batch_normalization_50 (BatchN  (None, 13, 13, 512)  2048       ['conv2d_50[0][0]']              
 ormalization)                                                                                    
                                                                                                  
 tf.nn.leaky_relu_50 (TFOpLambd  (None, 13, 13, 512)  0          ['batch_normalization_50[0][0]'] 
 a)                                                                                               
                                                                                                  
 conv2d_51 (Conv2D)             (None, 13, 13, 1024  4718592     ['tf.nn.leaky_relu_50[0][0]']    
                                )                                                                 
                                                                                                  
 batch_normalization_51 (BatchN  (None, 13, 13, 1024  4096       ['conv2d_51[0][0]']              
 ormalization)                  )                                                                 
                                                                                                  
 tf.nn.leaky_relu_51 (TFOpLambd  (None, 13, 13, 1024  0          ['batch_normalization_51[0][0]'] 
 a)                             )                                                                 
                                                                                                  
 tf.__operators__.add_22 (TFOpL  (None, 13, 13, 1024  0          ['tf.__operators__.add_21[0][0]',
 ambda)                         )                                 'tf.nn.leaky_relu_51[0][0]']    
                                                                                                  
==================================================================================================
Total params: 40,620,640
Trainable params: 40,584,928
Non-trainable params: 35,712
__________________________________________________________________________________________________

1.2:FPN:

为了加强算法对小目标检测的精确度,YOLO v3中采用类似FPN的upsample和融合做法(最后融合了3个scale,其他两个scale的大小分别是26×26和52×52),在多个scale的feature map上做检测。

concat: 张量拼接。 将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作不同。拼接会扩充张量的维度。而add只是直接相加,不会导致张量位的的改变。

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值