Inception网络是Google公司研发的,迄今为止有V1,V2,V3,V4四代,在V4这一代引入了残差网络的模型,本次主要介绍第三代-InceptionV3网络。
1. InceptionV3网络简介
Inception第一次亮相是在 2014 年的 ILSVRC 比赛中,并且以 top-5 错误率(为 6.67% )略低于 VGGNet 的优势取得了第一名,这一代的Inception网络通常称为GoogleNet,也叫InceptionV1网络。InceptionV2与InceptionV3网络出现在同一篇论文中,二者的差异不大。InceptionV4引入了残差网络的模型。Inception网络采用不同大小的卷积核,使得存在不同大小的感受野,最后实现拼接达到不同尺度特征的融合。
2.网络结构
图片来源
其中主要包括三种Block:
Block1:
Block2:
Block3:
3.创新点
① 首次提出使用BN(BatchNormalization)层,之前AlexNet实现中,我使用了BN层,但是那并不是AlexNet提出来的,AlexNet提出的是LRN层,但是LRN层所实现功能与BN层类似,而且效果还不如BN层,所以就采用BN层了。
② 使用一个较大的二维卷积代替两个较小的一维卷积。例如:7× 7 卷积可以拆成 1×7 卷积和7 × 1卷积,3x3 卷积也可以拆成 1x3 卷积和 3 × 1卷积。非对称的卷积结构拆分在处理更多、更丰富的空间特征以及增加特征多样性等方面的效果能够比对称的卷积结构拆分更好,同时能减少计算量。
③ 使用并行结构来优化Pooling,使用两个并行的支路,一路1x1卷积,由于特征维度没有加倍计算量相比之前减少了一倍,一路是Pooling,最后再在特征维度拼合到一起。
4.网络实现
def conv2d_bn(x,filters,num_row,num_col,padding = 'same',strides=(1,1)):
x = Conv2D(filters,kernel_size=(num_row,num_col),strides=strides,padding=padding,use_bias=False)(x)
x = BatchNormalization(scale=False)(x)
x = Activation(activation='relu')(x)
return x
def InceptionV3(nb_class,input_shape):
input_ten = Input(shape=input_shape)
x = conv2d_bn(input_ten,32,3,3,strides=(2,2),padding = 'valid')
x = conv2d_bn(x,32,3,3,padding = 'valid')
x = conv2d_bn(x,64,3,3)
x = MaxPooling2D(pool_size=(3,3),strides=(2,2))(x)
#block1 35*35
branch1x1 = conv2d_bn(x,64,1,1)
branch5x5 = conv2d_bn(x,48,1,1)
branch5x5 = conv2d_bn(branch5x5,64,5,5)
branch3x3dbl = conv2d_bn(x,64,1,1)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch_pool = AveragePooling2D((3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,32,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch5x5,branch3x3dbl,branch_pool],axis=3)
#block1 part2
#35x35x256 -> 35x35x288
branch1x1 = conv2d_bn(x,64,1,1)
branch5x5 = conv2d_bn(x,48,1,1)
branch5x5 = conv2d_bn(branch5x5,64,5,5)
branch3x3dbl = conv2d_bn(x,64,1,1)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch_pool = AveragePooling2D((3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,64,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch5x5,branch3x3dbl,branch_pool],axis=3)
#block1 part3
#35x35x288 -> 35x35x288
branch1x1 = conv2d_bn(x,64,1,1)
branch5x5 = conv2d_bn(x,48,1,1)
branch5x5 = conv2d_bn(branch5x5,64,5,5)
branch3x3dbl = conv2d_bn(x,64,1,1)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch_pool = AveragePooling2D((3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,64,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch5x5,branch3x3dbl,branch_pool],axis=3)
#block2 part1
#35x35x288->17x17x768
branch3x3 = conv2d_bn(x,384,3,3,strides=(2,2),padding='valid')
branch3x3dbl = conv2d_bn(x,64,1,1)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3)
branch3x3dbl = conv2d_bn(branch3x3dbl,96,3,3,strides=(2,2),padding='valid')
branch_pool = MaxPooling2D((3,3),strides=(2,2))(x)
x = tf.keras.layers.concatenate([branch3x3,branch3x3dbl,branch_pool],axis=3)
#block2 part2
#17x17x768->17x17x768
branch1x1 = conv2d_bn(x,192,1,1)
branch7x7 = conv2d_bn(x,128,1,1)
branch7x7 = conv2d_bn(branch7x7,128,1,7)
branch7x7 = conv2d_bn(branch7x7,192,7,1)
branch7x7dbl = conv2d_bn(x,128,1,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,128,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,128,1,7)
branch7x7dbl = conv2d_bn(branch7x7dbl,128,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,1,7)
branch_pool = AveragePooling2D(pool_size=(3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,192,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch7x7,branch7x7dbl,branch_pool],axis=3)
#block2 part3&&4
#17x17x768->17x17x768->17x17x768
for i in range(2):
branch1x1 = conv2d_bn(x,192,1,1)
branch7x7 = conv2d_bn(x,160,1,1)
branch7x7 = conv2d_bn(branch7x7,160,1,7)
branch7x7 = conv2d_bn(branch7x7,160,7,1)
branch7x7dbl = conv2d_bn(x,160,1,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,160,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,160,1,7)
branch7x7dbl = conv2d_bn(branch7x7dbl,160,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,1,7)
branch_pool = AveragePooling2D(pool_size=(3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,192,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch7x7,branch7x7dbl,branch_pool],axis=3)
#block2 part5
#17x17x768->17x17x768
branch1x1 = conv2d_bn(x,192,1,1)
branch7x7 = conv2d_bn(x,192,1,1)
branch7x7 = conv2d_bn(branch7x7,192,1,7)
branch7x7 = conv2d_bn(branch7x7,192,7,1)
branch7x7dbl = conv2d_bn(x,192,1,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,1,7)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,7,1)
branch7x7dbl = conv2d_bn(branch7x7dbl,192,1,7)
branch_pool = AveragePooling2D(pool_size=(3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,192,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch7x7,branch7x7dbl,branch_pool],axis=3)
#block3
#17x17x768->8x8x1280
branch3x3 = conv2d_bn(x,192,1,1)
branch3x3 = conv2d_bn(branch3x3,320,3,3,strides=(2,2),padding='valid')
branch7x7x3 = conv2d_bn(x,192,1,1)
branch7x7x3 = conv2d_bn(branch7x7x3,192,1,7)
branch7x7x3 = conv2d_bn(branch7x7x3,192,7,1)
branch7x7x3 = conv2d_bn(branch7x7x3,192,3,3,strides=(2,2),padding='valid')
branch_pool = MaxPooling2D((3,3),strides=(2,2))(x)
x = tf.keras.layers.concatenate([branch3x3,branch7x7x3,branch_pool],axis=3)
#block3 2&&3
#8x8x1280->8x8x2048->8x8x2048
for i in range(2):
branch1x1 = conv2d_bn(x,320,1,1)
branch3x3 = conv2d_bn(x,384,1,1)
branch3x3_1 = conv2d_bn(branch3x3,384,1,3)
branch3x3_2 = conv2d_bn(branch3x3,384,3,1)
branch3x3 = tf.keras.layers.concatenate([branch3x3_1,branch3x3_2],axis=3)
branch3x3dbl = conv2d_bn(x,448,1,1)
branch3x3dbl = conv2d_bn(branch3x3dbl,384,3,3)
branch3x3dbl_1 = conv2d_bn(branch3x3dbl,384,1,3)
branch3x3dbl_2 = conv2d_bn(branch3x3dbl,384,3,1)
branch3x3dbl = tf.keras.layers.concatenate([branch3x3_1,branch3x3_2],axis=3)
branch_pool = AveragePooling2D((3,3),strides=(1,1),padding='same')(x)
branch_pool = conv2d_bn(branch_pool,192,1,1)
x = tf.keras.layers.concatenate([branch1x1,branch3x3,branch3x3dbl,branch_pool],axis=3)
x = GlobalAveragePooling2D()(x)
output_ten = Dense(nb_class,activation='softmax')(x)
model = Model(input_ten,output_ten)
return model
model_InceptionV3 = InceptionV3(len(all_labels_names),(img_height,img_width,3))
model_InceptionV3.summary()
Model: "model"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_1 (InputLayer) [(None, 224, 224, 3) 0
__________________________________________________________________________________________________
conv2d (Conv2D) (None, 111, 111, 32) 864 input_1[0][0]
__________________________________________________________________________________________________
batch_normalization (BatchNorma (None, 111, 111, 32) 96 conv2d[0][0]
__________________________________________________________________________________________________
activation (Activation) (None, 111, 111, 32) 0 batch_normalization[0][0]
__________________________________________________________________________________________________
conv2d_1 (Conv2D) (None, 109, 109, 32) 9216 activation[0][0]
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 109, 109, 32) 96 conv2d_1[0][0]
__________________________________________________________________________________________________
activation_1 (Activation) (None, 109, 109, 32) 0 batch_normalization_1[0][0]
__________________________________________________________________________________________________
conv2d_2 (Conv2D) (None, 109, 109, 64) 18432 activation_1[0][0]
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 109, 109, 64) 192 conv2d_2[0][0]
__________________________________________________________________________________________________
activation_2 (Activation) (None, 109, 109, 64) 0 batch_normalization_2[0][0]
__________________________________________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 54, 54, 64) 0 activation_2[0][0]
__________________________________________________________________________________________________
conv2d_6 (Conv2D) (None, 54, 54, 64) 4096 max_pooling2d[0][0]
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 54, 54, 64) 192 conv2d_6[0][0]
__________________________________________________________________________________________________
activation_6 (Activation) (None, 54, 54, 64) 0 batch_normalization_6[0][0]
__________________________________________________________________________________________________
conv2d_4 (Conv2D) (None, 54, 54, 48) 3072 max_pooling2d[0][0]
__________________________________________________________________________________________________
conv2d_7 (Conv2D) (None, 54, 54, 96) 55296 activation_6[0][0]
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 54, 54, 48) 144 conv2d_4[0][0]
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 54, 54, 96) 288 conv2d_7[0][0]
__________________________________________________________________________________________________
activation_4 (Activation) (None, 54, 54, 48) 0 batch_normalization_4[0][0]
__________________________________________________________________________________________________
activation_7 (Activation) (None, 54, 54, 96) 0 batch_normalization_7[0][0]
__________________________________________________________________________________________________
average_pooling2d (AveragePooli (None, 54, 54, 64) 0 max_pooling2d[0][0]
__________________________________________________________________________________________________
conv2d_3 (Conv2D) (None, 54, 54, 64) 4096 max_pooling2d[0][0]
__________________________________________________________________________________________________
conv2d_5 (Conv2D) (None, 54, 54, 64) 76800 activation_4[0][0]
__________________________________________________________________________________________________
conv2d_8 (Conv2D) (None, 54, 54, 96) 82944 activation_7[0][0]
__________________________________________________________________________________________________
conv2d_9 (Conv2D) (None, 54, 54, 32) 2048 average_pooling2d[0][0]
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 54, 54, 64) 192 conv2d_3[0][0]
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 54, 54, 64) 192 conv2d_5[0][0]
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 54, 54, 96) 288 conv2d_8[0][0]
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 54, 54, 32) 96 conv2d_9[0][0]
__________________________________________________________________________________________________
activation_3 (Activation) (None, 54, 54, 64) 0 batch_normalization_3[0][0]
__________________________________________________________________________________________________
activation_5 (Activation) (None, 54, 54, 64) 0 batch_normalization_5[0][0]
__________________________________________________________________________________________________
activation_8 (Activation) (None, 54, 54, 96) 0 batch_normalization_8[0][0]
__________________________________________________________________________________________________
activation_9 (Activation) (None, 54, 54, 32) 0 batch_normalization_9[0][0]
__________________________________________________________________________________________________
concatenate (Concatenate) (None, 54, 54, 256) 0 activation_3[0][0]
activation_5[0][0]
activation_8[0][0]
activation_9[0][0]
__________________________________________________________________________________________________
conv2d_13 (Conv2D) (None, 54, 54, 64) 16384 concatenate[0][0]
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 54, 54, 64) 192 conv2d_13[0][0]
__________________________________________________________________________________________________
activation_13 (Activation) (None, 54, 54, 64) 0 batch_normalization_13[0][0]
__________________________________________________________________________________________________
conv2d_11 (Conv2D) (None, 54, 54, 48) 12288 concatenate[0][0]
__________________________________________________________________________________________________
conv2d_14 (Conv2D) (None, 54, 54, 96) 55296 activation_13[0][0]
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 54, 54, 48) 144 conv2d_11[0][0]
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 54, 54, 96) 288 conv2d_14[0][0]
__________________________________________________________________________________________________
activation_11 (Activation) (None, 54, 54, 48) 0 batch_normalization_11[0][0]
__________________________________________________________________________________________________
activation_14 (Activation) (None, 54, 54, 96) 0 batch_normalization_14[0][0]
__________________________________________________________________________________________________
average_pooling2d_1 (AveragePoo (None, 54, 54, 256) 0 concatenate[0][0]
__________________________________________________________________________________________________
conv2d_10 (Conv2D) (None, 54, 54, 64) 16384 concatenate[0][0]
__________________________________________________________________________________________________
conv2d_12 (Conv2D) (None, 54, 54, 64) 76800 activation_11[0][0]
__________________________________________________________________________________________________
conv2d_15 (Conv2D) (None, 54, 54, 96) 82944 activation_14[0][0]
__________________________________________________________________________________________________
conv2d_16 (Conv2D) (None, 54, 54, 64) 16384 average_pooling2d_1[0][0]
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 54, 54, 64) 192 conv2d_10[0][0]
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 54, 54, 64) 192 conv2d_12[0][0]
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 54, 54, 96) 288 conv2d_15[0][0]
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 54, 54, 64) 192 conv2d_16[0][0]
__________________________________________________________________________________________________
activation_10 (Activation) (None, 54, 54, 64) 0 batch_normalization_10[0][0]
__________________________________________________________________________________________________
activation_12 (Activation) (None, 54, 54, 64) 0 batch_normalization_12[0][0]
__________________________________________________________________________________________________
activation_15 (Activation) (None, 54, 54, 96) 0 batch_normalization_15[0][0]
__________________________________________________________________________________________________
activation_16 (Activation) (None, 54, 54, 64) 0 batch_normalization_16[0][0]
__________________________________________________________________________________________________
concatenate_1 (Concatenate) (None, 54, 54, 288) 0 activation_10[0][0]
activation_12[0][0]
activation_15[0][0]
activation_16[0][0]
__________________________________________________________________________________________________
conv2d_20 (Conv2D) (None, 54, 54, 64) 18432 concatenate_1[0][0]
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 54, 54, 64) 192 conv2d_20[0][0]
__________________________________________________________________________________________________
activation_20 (Activation) (None, 54, 54, 64) 0 batch_normalization_20[0][0]
__________________________________________________________________________________________________
conv2d_18 (Conv2D) (None, 54, 54, 48) 13824 concatenate_1[0][0]
__________________________________________________________________________________________________
conv2d_21 (Conv2D) (None, 54, 54, 96) 55296 activation_20[0][0]
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 54, 54, 48) 144 conv2d_18[0][0]
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 54, 54, 96) 288 conv2d_21[0][0]
__________________________________________________________________________________________________
activation_18 (Activation) (None, 54, 54, 48) 0 batch_normalization_18[0][0]
__________________________________________________________________________________________________
activation_21 (Activation) (None, 54, 54, 96) 0 batch_normalization_21[0][0]
__________________________________________________________________________________________________
average_pooling2d_2 (AveragePoo (None, 54, 54, 288) 0 concatenate_1[0][0]
__________________________________________________________________________________________________
conv2d_17 (Conv2D) (None, 54, 54, 64) 18432 concatenate_1[0][0]
__________________________________________________________________________________________________
conv2d_19 (Conv2D) (None, 54, 54, 64) 76800 activation_18[0][0]
__________________________________________________________________________________________________
conv2d_22 (Conv2D) (None, 54, 54, 96) 82944 activation_21[0][0]
__________________________________________________________________________________________________
conv2d_23 (Conv2D) (None, 54, 54, 64) 18432 average_pooling2d_2[0][0]
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 54, 54, 64) 192 conv2d_17[0][0]
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 54, 54, 64) 192 conv2d_19[0][0]
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 54, 54, 96) 288 conv2d_22[0][0]
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 54, 54, 64) 192 conv2d_23[0][0]
__________________________________________________________________________________________________
activation_17 (Activation) (None, 54, 54, 64) 0 batch_normalization_17[0][0]
__________________________________________________________________________________________________
activation_19 (Activation) (None, 54, 54, 64) 0 batch_normalization_19[0][0]
__________________________________________________________________________________________________
activation_22 (Activation) (None, 54, 54, 96) 0 batch_normalization_22[0][0]
__________________________________________________________________________________________________
activation_23 (Activation) (None, 54, 54, 64) 0 batch_normalization_23[0][0]
__________________________________________________________________________________________________
concatenate_2 (Concatenate) (None, 54, 54, 288) 0 activation_17[0][0]
activation_19[0][0]
activation_22[0][0]
activation_23[0][0]
__________________________________________________________________________________________________
conv2d_25 (Conv2D) (None, 54, 54, 64) 18432 concatenate_2[0][0]
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 54, 54, 64) 192 conv2d_25[0][0]
__________________________________________________________________________________________________
activation_25 (Activation) (None, 54, 54, 64) 0 batch_normalization_25[0][0]
__________________________________________________________________________________________________
conv2d_26 (Conv2D) (None, 54, 54, 96) 55296 activation_25[0][0]
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 54, 54, 96) 288 conv2d_26[0][0]
__________________________________________________________________________________________________
activation_26 (Activation) (None, 54, 54, 96) 0 batch_normalization_26[0][0]
__________________________________________________________________________________________________
conv2d_24 (Conv2D) (None, 26, 26, 384) 995328 concatenate_2[0][0]
__________________________________________________________________________________________________
conv2d_27 (Conv2D) (None, 26, 26, 96) 82944 activation_26[0][0]
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 26, 26, 384) 1152 conv2d_24[0][0]
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 26, 26, 96) 288 conv2d_27[0][0]
__________________________________________________________________________________________________
activation_24 (Activation) (None, 26, 26, 384) 0 batch_normalization_24[0][0]
__________________________________________________________________________________________________
activation_27 (Activation) (None, 26, 26, 96) 0 batch_normalization_27[0][0]
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D) (None, 26, 26, 288) 0 concatenate_2[0][0]
__________________________________________________________________________________________________
concatenate_3 (Concatenate) (None, 26, 26, 768) 0 activation_24[0][0]
activation_27[0][0]
max_pooling2d_1[0][0]
__________________________________________________________________________________________________
conv2d_32 (Conv2D) (None, 26, 26, 128) 98304 concatenate_3[0][0]
__________________________________________________________________________________________________
batch_normalization_32 (BatchNo (None, 26, 26, 128) 384 conv2d_32[0][0]
__________________________________________________________________________________________________
activation_32 (Activation) (None, 26, 26, 128) 0 batch_normalization_32[0][0]
__________________________________________________________________________________________________
conv2d_33 (Conv2D) (None, 26, 26, 128) 114688 activation_32[0][0]
__________________________________________________________________________________________________
batch_normalization_33 (BatchNo (None, 26, 26, 128) 384 conv2d_33[0][0]
__________________________________________________________________________________________________
activation_33 (Activation) (None, 26, 26, 128) 0 batch_normalization_33[0][0]
__________________________________________________________________________________________________
conv2d_29 (Conv2D) (None, 26, 26, 128) 98304 concatenate_3[0][0]
__________________________________________________________________________________________________
conv2d_34 (Conv2D) (None, 26, 26, 128) 114688 activation_33[0][0]
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 26, 26, 128) 384 conv2d_29[0][0]
__________________________________________________________________________________________________
batch_normalization_34 (BatchNo (None, 26, 26, 128) 384 conv2d_34[0][0]
__________________________________________________________________________________________________
activation_29 (Activation) (None, 26, 26, 128) 0 batch_normalization_29[0][0]
__________________________________________________________________________________________________
activation_34 (Activation) (None, 26, 26, 128) 0 batch_normalization_34[0][0]
__________________________________________________________________________________________________
conv2d_30 (Conv2D) (None, 26, 26, 128) 114688 activation_29[0][0]
__________________________________________________________________________________________________
conv2d_35 (Conv2D) (None, 26, 26, 128) 114688 activation_34[0][0]
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 26, 26, 128) 384 conv2d_30[0][0]
__________________________________________________________________________________________________
batch_normalization_35 (BatchNo (None, 26, 26, 128) 384 conv2d_35[0][0]
__________________________________________________________________________________________________
activation_30 (Activation) (None, 26, 26, 128) 0 batch_normalization_30[0][0]
__________________________________________________________________________________________________
activation_35 (Activation) (None, 26, 26, 128) 0 batch_normalization_35[0][0]
__________________________________________________________________________________________________
average_pooling2d_3 (AveragePoo (None, 26, 26, 768) 0 concatenate_3[0][0]
__________________________________________________________________________________________________
conv2d_28 (Conv2D) (None, 26, 26, 192) 147456 concatenate_3[0][0]
__________________________________________________________________________________________________
conv2d_31 (Conv2D) (None, 26, 26, 192) 172032 activation_30[0][0]
__________________________________________________________________________________________________
conv2d_36 (Conv2D) (None, 26, 26, 192) 172032 activation_35[0][0]
__________________________________________________________________________________________________
conv2d_37 (Conv2D) (None, 26, 26, 192) 147456 average_pooling2d_3[0][0]
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 26, 26, 192) 576 conv2d_28[0][0]
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 26, 26, 192) 576 conv2d_31[0][0]
__________________________________________________________________________________________________
batch_normalization_36 (BatchNo (None, 26, 26, 192) 576 conv2d_36[0][0]
__________________________________________________________________________________________________
batch_normalization_37 (BatchNo (None, 26, 26, 192) 576 conv2d_37[0][0]
__________________________________________________________________________________________________
activation_28 (Activation) (None, 26, 26, 192) 0 batch_normalization_28[0][0]
__________________________________________________________________________________________________
activation_31 (Activation) (None, 26, 26, 192) 0 batch_normalization_31[0][0]
__________________________________________________________________________________________________
activation_36 (Activation) (None, 26, 26, 192) 0 batch_normalization_36[0][0]
__________________________________________________________________________________________________
activation_37 (Activation) (None, 26, 26, 192) 0 batch_normalization_37[0][0]
__________________________________________________________________________________________________
concatenate_4 (Concatenate) (None, 26, 26, 768) 0 activation_28[0][0]
activation_31[0][0]
activation_36[0][0]
activation_37[0][0]
__________________________________________________________________________________________________
conv2d_42 (Conv2D) (None, 26, 26, 160) 122880 concatenate_4[0][0]
__________________________________________________________________________________________________
batch_normalization_42 (BatchNo (None, 26, 26, 160) 480 conv2d_42[0][0]
__________________________________________________________________________________________________
activation_42 (Activation) (None, 26, 26, 160) 0 batch_normalization_42[0][0]
__________________________________________________________________________________________________
conv2d_43 (Conv2D) (None, 26, 26, 160) 179200 activation_42[0][0]
__________________________________________________________________________________________________
batch_normalization_43 (BatchNo (None, 26, 26, 160) 480 conv2d_43[0][0]
__________________________________________________________________________________________________
activation_43 (Activation) (None, 26, 26, 160) 0 batch_normalization_43[0][0]
__________________________________________________________________________________________________
conv2d_39 (Conv2D) (None, 26, 26, 160) 122880 concatenate_4[0][0]
__________________________________________________________________________________________________
conv2d_44 (Conv2D) (None, 26, 26, 160) 179200 activation_43[0][0]
__________________________________________________________________________________________________
batch_normalization_39 (BatchNo (None, 26, 26, 160) 480 conv2d_39[0][0]
__________________________________________________________________________________________________
batch_normalization_44 (BatchNo (None, 26, 26, 160) 480 conv2d_44[0][0]
__________________________________________________________________________________________________
activation_39 (Activation) (None, 26, 26, 160) 0 batch_normalization_39[0][0]
__________________________________________________________________________________________________
activation_44 (Activation) (None, 26, 26, 160) 0 batch_normalization_44[0][0]
__________________________________________________________________________________________________
conv2d_40 (Conv2D) (None, 26, 26, 160) 179200 activation_39[0][0]
__________________________________________________________________________________________________
conv2d_45 (Conv2D) (None, 26, 26, 160) 179200 activation_44[0][0]
__________________________________________________________________________________________________
batch_normalization_40 (BatchNo (None, 26, 26, 160) 480 conv2d_40[0][0]
__________________________________________________________________________________________________
batch_normalization_45 (BatchNo (None, 26, 26, 160) 480 conv2d_45[0][0]
__________________________________________________________________________________________________
activation_40 (Activation) (None, 26, 26, 160) 0 batch_normalization_40[0][0]
__________________________________________________________________________________________________
activation_45 (Activation) (None, 26, 26, 160) 0 batch_normalization_45[0][0]
__________________________________________________________________________________________________
average_pooling2d_4 (AveragePoo (None, 26, 26, 768) 0 concatenate_4[0][0]
__________________________________________________________________________________________________
conv2d_38 (Conv2D) (None, 26, 26, 192) 147456 concatenate_4[0][0]
__________________________________________________________________________________________________
conv2d_41 (Conv2D) (None, 26, 26, 160) 179200 activation_40[0][0]
__________________________________________________________________________________________________
conv2d_46 (Conv2D) (None, 26, 26, 192) 215040 activation_45[0][0]
__________________________________________________________________________________________________
conv2d_47 (Conv2D) (None, 26, 26, 192) 147456 average_pooling2d_4[0][0]
__________________________________________________________________________________________________
batch_normalization_38 (BatchNo (None, 26, 26, 192) 576 conv2d_38[0][0]
__________________________________________________________________________________________________
batch_normalization_41 (BatchNo (None, 26, 26, 160) 480 conv2d_41[0][0]
__________________________________________________________________________________________________
batch_normalization_46 (BatchNo (None, 26, 26, 192) 576 conv2d_46[0][0]
__________________________________________________________________________________________________
batch_normalization_47 (BatchNo (None, 26, 26, 192) 576 conv2d_47[0][0]
__________________________________________________________________________________________________
activation_38 (Activation) (None, 26, 26, 192) 0 batch_normalization_38[0][0]
__________________________________________________________________________________________________
activation_41 (Activation) (None, 26, 26, 160) 0 batch_normalization_41[0][0]
__________________________________________________________________________________________________
activation_46 (Activation) (None, 26, 26, 192) 0 batch_normalization_46[0][0]
__________________________________________________________________________________________________
activation_47 (Activation) (None, 26, 26, 192) 0 batch_normalization_47[0][0]
__________________________________________________________________________________________________
concatenate_5 (Concatenate) (None, 26, 26, 736) 0 activation_38[0][0]
activation_41[0][0]
activation_46[0][0]
activation_47[0][0]
__________________________________________________________________________________________________
conv2d_52 (Conv2D) (None, 26, 26, 160) 117760 concatenate_5[0][0]
__________________________________________________________________________________________________
batch_normalization_52 (BatchNo (None, 26, 26, 160) 480 conv2d_52[0][0]
__________________________________________________________________________________________________
activation_52 (Activation) (None, 26, 26, 160) 0 batch_normalization_52[0][0]
__________________________________________________________________________________________________
conv2d_53 (Conv2D) (None, 26, 26, 160) 179200 activation_52[0][0]
__________________________________________________________________________________________________
batch_normalization_53 (BatchNo (None, 26, 26, 160) 480 conv2d_53[0][0]
__________________________________________________________________________________________________
activation_53 (Activation) (None, 26, 26, 160) 0 batch_normalization_53[0][0]
__________________________________________________________________________________________________
conv2d_49 (Conv2D) (None, 26, 26, 160) 117760 concatenate_5[0][0]
__________________________________________________________________________________________________
conv2d_54 (Conv2D) (None, 26, 26, 160) 179200 activation_53[0][0]
__________________________________________________________________________________________________
batch_normalization_49 (BatchNo (None, 26, 26, 160) 480 conv2d_49[0][0]
__________________________________________________________________________________________________
batch_normalization_54 (BatchNo (None, 26, 26, 160) 480 conv2d_54[0][0]
__________________________________________________________________________________________________
activation_49 (Activation) (None, 26, 26, 160) 0 batch_normalization_49[0][0]
__________________________________________________________________________________________________
activation_54 (Activation) (None, 26, 26, 160) 0 batch_normalization_54[0][0]
__________________________________________________________________________________________________
conv2d_50 (Conv2D) (None, 26, 26, 160) 179200 activation_49[0][0]
__________________________________________________________________________________________________
conv2d_55 (Conv2D) (None, 26, 26, 160) 179200 activation_54[0][0]
__________________________________________________________________________________________________
batch_normalization_50 (BatchNo (None, 26, 26, 160) 480 conv2d_50[0][0]
__________________________________________________________________________________________________
batch_normalization_55 (BatchNo (None, 26, 26, 160) 480 conv2d_55[0][0]
__________________________________________________________________________________________________
activation_50 (Activation) (None, 26, 26, 160) 0 batch_normalization_50[0][0]
__________________________________________________________________________________________________
activation_55 (Activation) (None, 26, 26, 160) 0 batch_normalization_55[0][0]
__________________________________________________________________________________________________
average_pooling2d_5 (AveragePoo (None, 26, 26, 736) 0 concatenate_5[0][0]
__________________________________________________________________________________________________
conv2d_48 (Conv2D) (None, 26, 26, 192) 141312 concatenate_5[0][0]
__________________________________________________________________________________________________
conv2d_51 (Conv2D) (None, 26, 26, 160) 179200 activation_50[0][0]
__________________________________________________________________________________________________
conv2d_56 (Conv2D) (None, 26, 26, 192) 215040 activation_55[0][0]
__________________________________________________________________________________________________
conv2d_57 (Conv2D) (None, 26, 26, 192) 141312 average_pooling2d_5[0][0]
__________________________________________________________________________________________________
batch_normalization_48 (BatchNo (None, 26, 26, 192) 576 conv2d_48[0][0]
__________________________________________________________________________________________________
batch_normalization_51 (BatchNo (None, 26, 26, 160) 480 conv2d_51[0][0]
__________________________________________________________________________________________________
batch_normalization_56 (BatchNo (None, 26, 26, 192) 576 conv2d_56[0][0]
__________________________________________________________________________________________________
batch_normalization_57 (BatchNo (None, 26, 26, 192) 576 conv2d_57[0][0]
__________________________________________________________________________________________________
activation_48 (Activation) (None, 26, 26, 192) 0 batch_normalization_48[0][0]
__________________________________________________________________________________________________
activation_51 (Activation) (None, 26, 26, 160) 0 batch_normalization_51[0][0]
__________________________________________________________________________________________________
activation_56 (Activation) (None, 26, 26, 192) 0 batch_normalization_56[0][0]
__________________________________________________________________________________________________
activation_57 (Activation) (None, 26, 26, 192) 0 batch_normalization_57[0][0]
__________________________________________________________________________________________________
concatenate_6 (Concatenate) (None, 26, 26, 736) 0 activation_48[0][0]
activation_51[0][0]
activation_56[0][0]
activation_57[0][0]
__________________________________________________________________________________________________
conv2d_62 (Conv2D) (None, 26, 26, 192) 141312 concatenate_6[0][0]
__________________________________________________________________________________________________
batch_normalization_62 (BatchNo (None, 26, 26, 192) 576 conv2d_62[0][0]
__________________________________________________________________________________________________
activation_62 (Activation) (None, 26, 26, 192) 0 batch_normalization_62[0][0]
__________________________________________________________________________________________________
conv2d_63 (Conv2D) (None, 26, 26, 192) 258048 activation_62[0][0]
__________________________________________________________________________________________________
batch_normalization_63 (BatchNo (None, 26, 26, 192) 576 conv2d_63[0][0]
__________________________________________________________________________________________________
activation_63 (Activation) (None, 26, 26, 192) 0 batch_normalization_63[0][0]
__________________________________________________________________________________________________
conv2d_59 (Conv2D) (None, 26, 26, 192) 141312 concatenate_6[0][0]
__________________________________________________________________________________________________
conv2d_64 (Conv2D) (None, 26, 26, 192) 258048 activation_63[0][0]
__________________________________________________________________________________________________
batch_normalization_59 (BatchNo (None, 26, 26, 192) 576 conv2d_59[0][0]
__________________________________________________________________________________________________
batch_normalization_64 (BatchNo (None, 26, 26, 192) 576 conv2d_64[0][0]
__________________________________________________________________________________________________
activation_59 (Activation) (None, 26, 26, 192) 0 batch_normalization_59[0][0]
__________________________________________________________________________________________________
activation_64 (Activation) (None, 26, 26, 192) 0 batch_normalization_64[0][0]
__________________________________________________________________________________________________
conv2d_60 (Conv2D) (None, 26, 26, 192) 258048 activation_59[0][0]
__________________________________________________________________________________________________
conv2d_65 (Conv2D) (None, 26, 26, 192) 258048 activation_64[0][0]
__________________________________________________________________________________________________
batch_normalization_60 (BatchNo (None, 26, 26, 192) 576 conv2d_60[0][0]
__________________________________________________________________________________________________
batch_normalization_65 (BatchNo (None, 26, 26, 192) 576 conv2d_65[0][0]
__________________________________________________________________________________________________
activation_60 (Activation) (None, 26, 26, 192) 0 batch_normalization_60[0][0]
__________________________________________________________________________________________________
activation_65 (Activation) (None, 26, 26, 192) 0 batch_normalization_65[0][0]
__________________________________________________________________________________________________
average_pooling2d_6 (AveragePoo (None, 26, 26, 736) 0 concatenate_6[0][0]
__________________________________________________________________________________________________
conv2d_58 (Conv2D) (None, 26, 26, 192) 141312 concatenate_6[0][0]
__________________________________________________________________________________________________
conv2d_61 (Conv2D) (None, 26, 26, 192) 258048 activation_60[0][0]
__________________________________________________________________________________________________
conv2d_66 (Conv2D) (None, 26, 26, 192) 258048 activation_65[0][0]
__________________________________________________________________________________________________
conv2d_67 (Conv2D) (None, 26, 26, 192) 141312 average_pooling2d_6[0][0]
__________________________________________________________________________________________________
batch_normalization_58 (BatchNo (None, 26, 26, 192) 576 conv2d_58[0][0]
__________________________________________________________________________________________________
batch_normalization_61 (BatchNo (None, 26, 26, 192) 576 conv2d_61[0][0]
__________________________________________________________________________________________________
batch_normalization_66 (BatchNo (None, 26, 26, 192) 576 conv2d_66[0][0]
__________________________________________________________________________________________________
batch_normalization_67 (BatchNo (None, 26, 26, 192) 576 conv2d_67[0][0]
__________________________________________________________________________________________________
activation_58 (Activation) (None, 26, 26, 192) 0 batch_normalization_58[0][0]
__________________________________________________________________________________________________
activation_61 (Activation) (None, 26, 26, 192) 0 batch_normalization_61[0][0]
__________________________________________________________________________________________________
activation_66 (Activation) (None, 26, 26, 192) 0 batch_normalization_66[0][0]
__________________________________________________________________________________________________
activation_67 (Activation) (None, 26, 26, 192) 0 batch_normalization_67[0][0]
__________________________________________________________________________________________________
concatenate_7 (Concatenate) (None, 26, 26, 768) 0 activation_58[0][0]
activation_61[0][0]
activation_66[0][0]
activation_67[0][0]
__________________________________________________________________________________________________
conv2d_70 (Conv2D) (None, 26, 26, 192) 147456 concatenate_7[0][0]
__________________________________________________________________________________________________
batch_normalization_70 (BatchNo (None, 26, 26, 192) 576 conv2d_70[0][0]
__________________________________________________________________________________________________
activation_70 (Activation) (None, 26, 26, 192) 0 batch_normalization_70[0][0]
__________________________________________________________________________________________________
conv2d_71 (Conv2D) (None, 26, 26, 192) 258048 activation_70[0][0]
__________________________________________________________________________________________________
batch_normalization_71 (BatchNo (None, 26, 26, 192) 576 conv2d_71[0][0]
__________________________________________________________________________________________________
activation_71 (Activation) (None, 26, 26, 192) 0 batch_normalization_71[0][0]
__________________________________________________________________________________________________
conv2d_68 (Conv2D) (None, 26, 26, 192) 147456 concatenate_7[0][0]
__________________________________________________________________________________________________
conv2d_72 (Conv2D) (None, 26, 26, 192) 258048 activation_71[0][0]
__________________________________________________________________________________________________
batch_normalization_68 (BatchNo (None, 26, 26, 192) 576 conv2d_68[0][0]
__________________________________________________________________________________________________
batch_normalization_72 (BatchNo (None, 26, 26, 192) 576 conv2d_72[0][0]
__________________________________________________________________________________________________
activation_68 (Activation) (None, 26, 26, 192) 0 batch_normalization_68[0][0]
__________________________________________________________________________________________________
activation_72 (Activation) (None, 26, 26, 192) 0 batch_normalization_72[0][0]
__________________________________________________________________________________________________
conv2d_69 (Conv2D) (None, 12, 12, 320) 552960 activation_68[0][0]
__________________________________________________________________________________________________
conv2d_73 (Conv2D) (None, 12, 12, 192) 331776 activation_72[0][0]
__________________________________________________________________________________________________
batch_normalization_69 (BatchNo (None, 12, 12, 320) 960 conv2d_69[0][0]
__________________________________________________________________________________________________
batch_normalization_73 (BatchNo (None, 12, 12, 192) 576 conv2d_73[0][0]
__________________________________________________________________________________________________
activation_69 (Activation) (None, 12, 12, 320) 0 batch_normalization_69[0][0]
__________________________________________________________________________________________________
activation_73 (Activation) (None, 12, 12, 192) 0 batch_normalization_73[0][0]
__________________________________________________________________________________________________
max_pooling2d_2 (MaxPooling2D) (None, 12, 12, 768) 0 concatenate_7[0][0]
__________________________________________________________________________________________________
concatenate_8 (Concatenate) (None, 12, 12, 1280) 0 activation_69[0][0]
activation_73[0][0]
max_pooling2d_2[0][0]
__________________________________________________________________________________________________
conv2d_75 (Conv2D) (None, 12, 12, 384) 491520 concatenate_8[0][0]
__________________________________________________________________________________________________
batch_normalization_75 (BatchNo (None, 12, 12, 384) 1152 conv2d_75[0][0]
__________________________________________________________________________________________________
activation_75 (Activation) (None, 12, 12, 384) 0 batch_normalization_75[0][0]
__________________________________________________________________________________________________
conv2d_76 (Conv2D) (None, 12, 12, 384) 442368 activation_75[0][0]
__________________________________________________________________________________________________
conv2d_77 (Conv2D) (None, 12, 12, 384) 442368 activation_75[0][0]
__________________________________________________________________________________________________
average_pooling2d_7 (AveragePoo (None, 12, 12, 1280) 0 concatenate_8[0][0]
__________________________________________________________________________________________________
conv2d_74 (Conv2D) (None, 12, 12, 320) 409600 concatenate_8[0][0]
__________________________________________________________________________________________________
batch_normalization_76 (BatchNo (None, 12, 12, 384) 1152 conv2d_76[0][0]
__________________________________________________________________________________________________
batch_normalization_77 (BatchNo (None, 12, 12, 384) 1152 conv2d_77[0][0]
__________________________________________________________________________________________________
conv2d_82 (Conv2D) (None, 12, 12, 192) 245760 average_pooling2d_7[0][0]
__________________________________________________________________________________________________
batch_normalization_74 (BatchNo (None, 12, 12, 320) 960 conv2d_74[0][0]
__________________________________________________________________________________________________
activation_76 (Activation) (None, 12, 12, 384) 0 batch_normalization_76[0][0]
__________________________________________________________________________________________________
activation_77 (Activation) (None, 12, 12, 384) 0 batch_normalization_77[0][0]
__________________________________________________________________________________________________
batch_normalization_82 (BatchNo (None, 12, 12, 192) 576 conv2d_82[0][0]
__________________________________________________________________________________________________
activation_74 (Activation) (None, 12, 12, 320) 0 batch_normalization_74[0][0]
__________________________________________________________________________________________________
concatenate_9 (Concatenate) (None, 12, 12, 768) 0 activation_76[0][0]
activation_77[0][0]
__________________________________________________________________________________________________
concatenate_10 (Concatenate) (None, 12, 12, 768) 0 activation_76[0][0]
activation_77[0][0]
__________________________________________________________________________________________________
activation_82 (Activation) (None, 12, 12, 192) 0 batch_normalization_82[0][0]
__________________________________________________________________________________________________
concatenate_11 (Concatenate) (None, 12, 12, 2048) 0 activation_74[0][0]
concatenate_9[0][0]
concatenate_10[0][0]
activation_82[0][0]
__________________________________________________________________________________________________
conv2d_84 (Conv2D) (None, 12, 12, 384) 786432 concatenate_11[0][0]
__________________________________________________________________________________________________
batch_normalization_84 (BatchNo (None, 12, 12, 384) 1152 conv2d_84[0][0]
__________________________________________________________________________________________________
activation_84 (Activation) (None, 12, 12, 384) 0 batch_normalization_84[0][0]
__________________________________________________________________________________________________
conv2d_85 (Conv2D) (None, 12, 12, 384) 442368 activation_84[0][0]
__________________________________________________________________________________________________
conv2d_86 (Conv2D) (None, 12, 12, 384) 442368 activation_84[0][0]
__________________________________________________________________________________________________
average_pooling2d_8 (AveragePoo (None, 12, 12, 2048) 0 concatenate_11[0][0]
__________________________________________________________________________________________________
conv2d_83 (Conv2D) (None, 12, 12, 320) 655360 concatenate_11[0][0]
__________________________________________________________________________________________________
batch_normalization_85 (BatchNo (None, 12, 12, 384) 1152 conv2d_85[0][0]
__________________________________________________________________________________________________
batch_normalization_86 (BatchNo (None, 12, 12, 384) 1152 conv2d_86[0][0]
__________________________________________________________________________________________________
conv2d_91 (Conv2D) (None, 12, 12, 192) 393216 average_pooling2d_8[0][0]
__________________________________________________________________________________________________
batch_normalization_83 (BatchNo (None, 12, 12, 320) 960 conv2d_83[0][0]
__________________________________________________________________________________________________
activation_85 (Activation) (None, 12, 12, 384) 0 batch_normalization_85[0][0]
__________________________________________________________________________________________________
activation_86 (Activation) (None, 12, 12, 384) 0 batch_normalization_86[0][0]
__________________________________________________________________________________________________
batch_normalization_91 (BatchNo (None, 12, 12, 192) 576 conv2d_91[0][0]
__________________________________________________________________________________________________
activation_83 (Activation) (None, 12, 12, 320) 0 batch_normalization_83[0][0]
__________________________________________________________________________________________________
concatenate_12 (Concatenate) (None, 12, 12, 768) 0 activation_85[0][0]
activation_86[0][0]
__________________________________________________________________________________________________
concatenate_13 (Concatenate) (None, 12, 12, 768) 0 activation_85[0][0]
activation_86[0][0]
__________________________________________________________________________________________________
activation_91 (Activation) (None, 12, 12, 192) 0 batch_normalization_91[0][0]
__________________________________________________________________________________________________
concatenate_14 (Concatenate) (None, 12, 12, 2048) 0 activation_83[0][0]
concatenate_12[0][0]
concatenate_13[0][0]
activation_91[0][0]
__________________________________________________________________________________________________
global_average_pooling2d (Globa (None, 2048) 0 concatenate_14[0][0]
__________________________________________________________________________________________________
dense (Dense) (None, 24) 49176 global_average_pooling2d[0][0]
==================================================================================================
Total params: 15,195,592
Trainable params: 15,168,232
Non-trainable params: 27,360
__________________________________________________________________________________________________
网络层数相比于之前的网络都有提升,但是训练的参数却很少,相比于ResNet于VGG网络,参数已经很少了。
努力加油a啊