alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【658】DeepLabV3+ 详解说明

[1] Keras 搭建自己的DeeplabV3+语义分割平台(Bubbliiiing 深度学习 教程)

[2] 憨批的语义分割重制版8——Keras 搭建自己的DeeplabV3+语义分割平台

[3] github - bubbliiiing/deeplabv3-plus-keras

[4] FCN、Unet、deeplabv1、deeplabv2、deeplabv3、deeplabv3+的网络

[5] Deeplabv3+网络结构详解与模型的搭建

  结构图

   

 

  相关说明:

  • 左边低级特征提供细节信息:下采样 2 次,也就是 2^2=4 倍
  • 右上空洞卷积:下采样 4 次,也就是 2^4=16 倍
  • 右上 5 层得到的是相同长宽

 

  代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
from keras.activations import relu
from keras.layers import (Activation, Add, BatchNormalization, Conv2D,
                          DepthwiseConv2D)
 
 
def _make_divisible(v, divisor, min_value=None):
    if min_value is None:
        min_value = divisor
    new_v = max(min_value, int(v + divisor / 2) // divisor * divisor)
    if new_v < 0.9 * v:
        new_v += divisor
    return new_v
 
def relu6(x):
    return relu(x, max_value=6)
 
def _inverted_res_block(inputs, expansion, stride, alpha, filters, block_id, skip_connection, rate=1):
    in_channels = inputs.shape[-1]
    pointwise_filters = _make_divisible(int(filters * alpha), 8)
    prefix = 'expanded_conv_{}_'.format(block_id)
 
    x = inputs
    #----------------------------------------------------#
    #   利用1x1卷积根据输入进来的通道数进行通道数上升
    #----------------------------------------------------#
    if block_id:
        x = Conv2D(expansion * in_channels, kernel_size=1, padding='same',
                   use_bias=False, activation=None,
                   name=prefix + 'expand')(x)
        x = BatchNormalization(epsilon=1e-3, momentum=0.999,
                               name=prefix + 'expand_BN')(x)
        x = Activation(relu6, name=prefix + 'expand_relu')(x)
    else:
        prefix = 'expanded_conv_'
 
    #----------------------------------------------------#
    #   利用深度可分离卷积进行特征提取
    #----------------------------------------------------#
    x = DepthwiseConv2D(kernel_size=3, strides=stride, activation=None,
                        use_bias=False, padding='same', dilation_rate=(rate, rate),
                        name=prefix + 'depthwise')(x)
    x = BatchNormalization(epsilon=1e-3, momentum=0.999,
                           name=prefix + 'depthwise_BN')(x)
 
    x = Activation(relu6, name=prefix + 'depthwise_relu')(x)
 
    #----------------------------------------------------#
    #   利用1x1的卷积进行通道数的下降
    #----------------------------------------------------#
    x = Conv2D(pointwise_filters,
               kernel_size=1, padding='same', use_bias=False, activation=None,
               name=prefix + 'project')(x)
    x = BatchNormalization(epsilon=1e-3, momentum=0.999,
                           name=prefix + 'project_BN')(x)
 
    #----------------------------------------------------#
    #   添加残差边
    #----------------------------------------------------#
    if skip_connection:
        return Add(name=prefix + 'add')([inputs, x])
    return x
 
def mobilenetV2(inputs, alpha=1, downsample_factor=8):
    if downsample_factor == 8:
        block4_dilation = 2
        block5_dilation = 4
        block4_stride = 1
        atrous_rates = (12, 24, 36)
    elif downsample_factor == 16:
        block4_dilation = 1
        block5_dilation = 2
        block4_stride = 2
        atrous_rates = (6, 12, 18)
    else:
        raise ValueError('Unsupported factor - `{}`, Use 8 or 16.'.format(downsample_factor))
     
    first_block_filters = _make_divisible(32 * alpha, 8)
    # 512,512,3 -> 256,256,32
    x = Conv2D(first_block_filters,
                kernel_size=3,
                strides=(2, 2), padding='same',
                use_bias=False, name='Conv')(inputs)
    x = BatchNormalization(
        epsilon=1e-3, momentum=0.999, name='Conv_BN')(x)
    x = Activation(relu6, name='Conv_Relu6')(x)
 
    # 256,256,32 -> 256,256,16
    x = _inverted_res_block(x, filters=16, alpha=alpha, stride=1,
                            expansion=1, block_id=0, skip_connection=False)
 
    #---------------------------------------------------------------#
    # 256,256,16 -> 128,128,24
    x = _inverted_res_block(x, filters=24, alpha=alpha, stride=2,
                            expansion=6, block_id=1, skip_connection=False)
    x = _inverted_res_block(x, filters=24, alpha=alpha, stride=1,
                            expansion=6, block_id=2, skip_connection=True)
    skip1 = x
    #---------------------------------------------------------------#
    # 128,128,24 -> 64,64.32
    x = _inverted_res_block(x, filters=32, alpha=alpha, stride=2,
                            expansion=6, block_id=3, skip_connection=False)
    x = _inverted_res_block(x, filters=32, alpha=alpha, stride=1,
                            expansion=6, block_id=4, skip_connection=True)
    x = _inverted_res_block(x, filters=32, alpha=alpha, stride=1,
                            expansion=6, block_id=5, skip_connection=True)
    #---------------------------------------------------------------#
    # 64,64,32 -> 32,32.64
    x = _inverted_res_block(x, filters=64, alpha=alpha, stride=block4_stride,
                            expansion=6, block_id=6, skip_connection=False)
    x = _inverted_res_block(x, filters=64, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=7, skip_connection=True)
    x = _inverted_res_block(x, filters=64, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=8, skip_connection=True)
    x = _inverted_res_block(x, filters=64, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=9, skip_connection=True)
 
    # 32,32.64 -> 32,32.96
    x = _inverted_res_block(x, filters=96, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=10, skip_connection=False)
    x = _inverted_res_block(x, filters=96, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=11, skip_connection=True)
    x = _inverted_res_block(x, filters=96, alpha=alpha, stride=1, rate=block4_dilation,
                            expansion=6, block_id=12, skip_connection=True)
 
    #---------------------------------------------------------------#
    # 32,32.96 -> 32,32,160 -> 32,32,320
    x = _inverted_res_block(x, filters=160, alpha=alpha, stride=1, rate=block4_dilation,  # 1!
                            expansion=6, block_id=13, skip_connection=False)
    x = _inverted_res_block(x, filters=160, alpha=alpha, stride=1, rate=block5_dilation,
                            expansion=6, block_id=14, skip_connection=True)
    x = _inverted_res_block(x, filters=160, alpha=alpha, stride=1, rate=block5_dilation,
                            expansion=6, block_id=15, skip_connection=True)
 
    x = _inverted_res_block(x, filters=320, alpha=alpha, stride=1, rate=block5_dilation,
                            expansion=6, block_id=16, skip_connection=False)
    return x,atrous_rates,skip1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import tensorflow as tf
from keras import backend as K
from keras.layers import (Activation, BatchNormalization, Concatenate, Conv2D,
                          DepthwiseConv2D, Dropout, GlobalAveragePooling2D,
                          Input, Lambda, Softmax, ZeroPadding2D)
from keras.models import Model
 
#from nets.mobilenet import mobilenetV2
#from nets.Xception import Xception
 
 
def SepConv_BN(x, filters, prefix, stride=1, kernel_size=3, rate=1, depth_activation=False, epsilon=1e-3):
    # 计算padding的数量,hw是否需要收缩
    if stride == 1:
        depth_padding = 'same'
    else:
        kernel_size_effective = kernel_size + (kernel_size - 1) * (rate - 1)
        pad_total = kernel_size_effective - 1
        pad_beg = pad_total // 2
        pad_end = pad_total - pad_beg
        x = ZeroPadding2D((pad_beg, pad_end))(x)
        depth_padding = 'valid'
     
    # 如果需要激活函数
    if not depth_activation:
        x = Activation('relu')(x)
 
    # 分离卷积,首先3x3分离卷积,再1x1卷积
    # 3x3采用膨胀卷积
    x = DepthwiseConv2D((kernel_size, kernel_size), strides=(stride, stride), dilation_rate=(rate, rate),
                        padding=depth_padding, use_bias=False, name=prefix + '_depthwise')(x)
    x = BatchNormalization(name=prefix + '_depthwise_BN', epsilon=epsilon)(x)
    if depth_activation:
        x = Activation('relu')(x)
 
    # 1x1卷积,进行压缩
    x = Conv2D(filters, (1, 1), padding='same',
               use_bias=False, name=prefix + '_pointwise')(x)
    x = BatchNormalization(name=prefix + '_pointwise_BN', epsilon=epsilon)(x)
    if depth_activation:
        x = Activation('relu')(x)
 
    return x
 
def Deeplabv3(n_classes, inputs_size, alpha=1., backbone="mobilenet", downsample_factor=16):
    img_input = Input(shape=inputs_size)
 
    if backbone=="xception":
        #----------------------------------#
        #   获得两个特征层
        #   浅层特征skip1   [128,128,256]
        #   主干部分x       [30,30,2048]
        #----------------------------------#
        x, atrous_rates, skip1 = Xception(img_input,alpha, downsample_factor=downsample_factor)
    elif backbone=="mobilenet":
        #----------------------------------#
        #   获得两个特征层
        #   浅层特征skip1   [128,128,24]
        #   主干部分x       [30,30,320]
        #----------------------------------#
        x, atrous_rates, skip1 = mobilenetV2(img_input,alpha, downsample_factor=downsample_factor)
    else:
        raise ValueError('Unsupported backbone - `{}`, Use mobilenet, xception.'.format(backbone))
 
    size_before = tf.keras.backend.int_shape(x)
 
    #-----------------------------------------#
    #   一共五个分支
    #   ASPP特征提取模块
    #   利用不同膨胀率的膨胀卷积进行特征提取
    #-----------------------------------------#
    # 分支0
    b0 = Conv2D(256, (1, 1), padding='same', use_bias=False, name='aspp0')(x)
    b0 = BatchNormalization(name='aspp0_BN', epsilon=1e-5)(b0)
    b0 = Activation('relu', name='aspp0_activation')(b0)
 
    # 分支1 rate = 6 (12)
    b1 = SepConv_BN(x, 256, 'aspp1',
                    rate=atrous_rates[0], depth_activation=True, epsilon=1e-5)
    # 分支2 rate = 12 (24)
    b2 = SepConv_BN(x, 256, 'aspp2',
                    rate=atrous_rates[1], depth_activation=True, epsilon=1e-5)
    # 分支3 rate = 18 (36)
    b3 = SepConv_BN(x, 256, 'aspp3',
                    rate=atrous_rates[2], depth_activation=True, epsilon=1e-5)
                     
    # 分支4 全部求平均后,再利用expand_dims扩充维度,之后利用1x1卷积调整通道
    b4 = GlobalAveragePooling2D()(x)
    b4 = Lambda(lambda x: K.expand_dims(x, 1))(b4)
    b4 = Lambda(lambda x: K.expand_dims(x, 1))(b4)
    b4 = Conv2D(256, (1, 1), padding='same', use_bias=False, name='image_pooling')(b4)
    b4 = BatchNormalization(name='image_pooling_BN', epsilon=1e-5)(b4)
    b4 = Activation('relu')(b4)
    # 直接利用resize_images扩充hw
    b4 = Lambda(lambda x: tf.compat.v1.image.resize_images(x, size_before[1:3], align_corners=True))(b4)
 
    #-----------------------------------------#
    #   将五个分支的内容堆叠起来
    #   然后1x1卷积整合特征。
    #-----------------------------------------#
    x = Concatenate()([b4, b0, b1, b2, b3])
    # 利用conv2d压缩 32,32,256
    x = Conv2D(256, (1, 1), padding='same', use_bias=False, name='concat_projection')(x)
    x = BatchNormalization(name='concat_projection_BN', epsilon=1e-5)(x)
    x = Activation('relu')(x)
    x = Dropout(0.1)(x)
 
    skip_size = tf.keras.backend.int_shape(skip1)
    #-----------------------------------------#
    #   将加强特征边上采样
    #-----------------------------------------#
    x = Lambda(lambda xx: tf.compat.v1.image.resize_images(xx, skip_size[1:3], align_corners=True))(x)
    #----------------------------------#
    #   浅层特征边
    #----------------------------------#
    dec_skip1 = Conv2D(48, (1, 1), padding='same',use_bias=False, name='feature_projection0')(skip1)
    dec_skip1 = BatchNormalization(name='feature_projection0_BN', epsilon=1e-5)(dec_skip1)
    dec_skip1 = Activation(tf.nn.relu)(dec_skip1)
 
    #-----------------------------------------#
    #   与浅层特征堆叠后利用卷积进行特征提取
    #-----------------------------------------#
    x = Concatenate()([x, dec_skip1])
    x = SepConv_BN(x, 256, 'decoder_conv0',
                    depth_activation=True, epsilon=1e-5)
    x = SepConv_BN(x, 256, 'decoder_conv1',
                    depth_activation=True, epsilon=1e-5)
 
    #-----------------------------------------#
    #   获得每个像素点的分类
    #-----------------------------------------#
    # 512,512
    size_before3 = tf.keras.backend.int_shape(img_input)
    # 512,512,21
    x = Conv2D(n_classes, (1, 1), padding='same')(x)
    x = Lambda(lambda xx:tf.compat.v1.image.resize_images(xx,size_before3[1:3], align_corners=True))(x)
    x = Softmax()(x)
 
    model = Model(img_input, x, name='deeplabv3plus')
    return model
 
model = Deeplabv3(2, (512, 512, 3))
model.summary()
 
# 结构图显示
from keras.utils.vis_utils import plot_model
plot_model(model, to_file='Flatten.png', show_shapes=True)

  结构图:

Model: "deeplabv3plus"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_8 (InputLayer) [(None, 512, 512, 3) 0
__________________________________________________________________________________________________
Conv (Conv2D) (None, 256, 256, 32) 864 input_8[0][0]
__________________________________________________________________________________________________
Conv_BN (BatchNormalization) (None, 256, 256, 32) 128 Conv[0][0]
__________________________________________________________________________________________________
Conv_Relu6 (Activation) (None, 256, 256, 32) 0 Conv_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_depthwise (Depthw (None, 256, 256, 32) 288 Conv_Relu6[0][0]
__________________________________________________________________________________________________
expanded_conv_depthwise_BN (Bat (None, 256, 256, 32) 128 expanded_conv_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_depthwise_relu (A (None, 256, 256, 32) 0 expanded_conv_depthwise_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_project (Conv2D) (None, 256, 256, 16) 512 expanded_conv_depthwise_relu[0][0
__________________________________________________________________________________________________
expanded_conv_project_BN (Batch (None, 256, 256, 16) 64 expanded_conv_project[0][0]
__________________________________________________________________________________________________
expanded_conv_1_expand (Conv2D) (None, 256, 256, 96) 1536 expanded_conv_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_1_expand_BN (Batc (None, 256, 256, 96) 384 expanded_conv_1_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_1_expand_relu (Ac (None, 256, 256, 96) 0 expanded_conv_1_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_1_depthwise (Dept (None, 128, 128, 96) 864 expanded_conv_1_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_1_depthwise_BN (B (None, 128, 128, 96) 384 expanded_conv_1_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_1_depthwise_relu (None, 128, 128, 96) 0 expanded_conv_1_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_1_project (Conv2D (None, 128, 128, 24) 2304 expanded_conv_1_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_1_project_BN (Bat (None, 128, 128, 24) 96 expanded_conv_1_project[0][0]
__________________________________________________________________________________________________
expanded_conv_2_expand (Conv2D) (None, 128, 128, 144 3456 expanded_conv_1_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_2_expand_BN (Batc (None, 128, 128, 144 576 expanded_conv_2_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_2_expand_relu (Ac (None, 128, 128, 144 0 expanded_conv_2_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_2_depthwise (Dept (None, 128, 128, 144 1296 expanded_conv_2_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_2_depthwise_BN (B (None, 128, 128, 144 576 expanded_conv_2_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_2_depthwise_relu (None, 128, 128, 144 0 expanded_conv_2_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_2_project (Conv2D (None, 128, 128, 24) 3456 expanded_conv_2_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_2_project_BN (Bat (None, 128, 128, 24) 96 expanded_conv_2_project[0][0]
__________________________________________________________________________________________________
expanded_conv_2_add (Add) (None, 128, 128, 24) 0 expanded_conv_1_project_BN[0][0]
expanded_conv_2_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_3_expand (Conv2D) (None, 128, 128, 144 3456 expanded_conv_2_add[0][0]
__________________________________________________________________________________________________
expanded_conv_3_expand_BN (Batc (None, 128, 128, 144 576 expanded_conv_3_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_3_expand_relu (Ac (None, 128, 128, 144 0 expanded_conv_3_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_3_depthwise (Dept (None, 64, 64, 144) 1296 expanded_conv_3_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_3_depthwise_BN (B (None, 64, 64, 144) 576 expanded_conv_3_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_3_depthwise_relu (None, 64, 64, 144) 0 expanded_conv_3_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_3_project (Conv2D (None, 64, 64, 32) 4608 expanded_conv_3_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_3_project_BN (Bat (None, 64, 64, 32) 128 expanded_conv_3_project[0][0]
__________________________________________________________________________________________________
expanded_conv_4_expand (Conv2D) (None, 64, 64, 192) 6144 expanded_conv_3_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_4_expand_BN (Batc (None, 64, 64, 192) 768 expanded_conv_4_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_4_expand_relu (Ac (None, 64, 64, 192) 0 expanded_conv_4_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_4_depthwise (Dept (None, 64, 64, 192) 1728 expanded_conv_4_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_4_depthwise_BN (B (None, 64, 64, 192) 768 expanded_conv_4_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_4_depthwise_relu (None, 64, 64, 192) 0 expanded_conv_4_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_4_project (Conv2D (None, 64, 64, 32) 6144 expanded_conv_4_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_4_project_BN (Bat (None, 64, 64, 32) 128 expanded_conv_4_project[0][0]
__________________________________________________________________________________________________
expanded_conv_4_add (Add) (None, 64, 64, 32) 0 expanded_conv_3_project_BN[0][0]
expanded_conv_4_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_5_expand (Conv2D) (None, 64, 64, 192) 6144 expanded_conv_4_add[0][0]
__________________________________________________________________________________________________
expanded_conv_5_expand_BN (Batc (None, 64, 64, 192) 768 expanded_conv_5_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_5_expand_relu (Ac (None, 64, 64, 192) 0 expanded_conv_5_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_5_depthwise (Dept (None, 64, 64, 192) 1728 expanded_conv_5_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_5_depthwise_BN (B (None, 64, 64, 192) 768 expanded_conv_5_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_5_depthwise_relu (None, 64, 64, 192) 0 expanded_conv_5_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_5_project (Conv2D (None, 64, 64, 32) 6144 expanded_conv_5_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_5_project_BN (Bat (None, 64, 64, 32) 128 expanded_conv_5_project[0][0]
__________________________________________________________________________________________________
expanded_conv_5_add (Add) (None, 64, 64, 32) 0 expanded_conv_4_add[0][0]
expanded_conv_5_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_6_expand (Conv2D) (None, 64, 64, 192) 6144 expanded_conv_5_add[0][0]
__________________________________________________________________________________________________
expanded_conv_6_expand_BN (Batc (None, 64, 64, 192) 768 expanded_conv_6_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_6_expand_relu (Ac (None, 64, 64, 192) 0 expanded_conv_6_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_6_depthwise (Dept (None, 32, 32, 192) 1728 expanded_conv_6_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_6_depthwise_BN (B (None, 32, 32, 192) 768 expanded_conv_6_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_6_depthwise_relu (None, 32, 32, 192) 0 expanded_conv_6_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_6_project (Conv2D (None, 32, 32, 64) 12288 expanded_conv_6_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_6_project_BN (Bat (None, 32, 32, 64) 256 expanded_conv_6_project[0][0]
__________________________________________________________________________________________________
expanded_conv_7_expand (Conv2D) (None, 32, 32, 384) 24576 expanded_conv_6_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_7_expand_BN (Batc (None, 32, 32, 384) 1536 expanded_conv_7_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_7_expand_relu (Ac (None, 32, 32, 384) 0 expanded_conv_7_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_7_depthwise (Dept (None, 32, 32, 384) 3456 expanded_conv_7_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_7_depthwise_BN (B (None, 32, 32, 384) 1536 expanded_conv_7_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_7_depthwise_relu (None, 32, 32, 384) 0 expanded_conv_7_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_7_project (Conv2D (None, 32, 32, 64) 24576 expanded_conv_7_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_7_project_BN (Bat (None, 32, 32, 64) 256 expanded_conv_7_project[0][0]
__________________________________________________________________________________________________
expanded_conv_7_add (Add) (None, 32, 32, 64) 0 expanded_conv_6_project_BN[0][0]
expanded_conv_7_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_8_expand (Conv2D) (None, 32, 32, 384) 24576 expanded_conv_7_add[0][0]
__________________________________________________________________________________________________
expanded_conv_8_expand_BN (Batc (None, 32, 32, 384) 1536 expanded_conv_8_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_8_expand_relu (Ac (None, 32, 32, 384) 0 expanded_conv_8_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_8_depthwise (Dept (None, 32, 32, 384) 3456 expanded_conv_8_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_8_depthwise_BN (B (None, 32, 32, 384) 1536 expanded_conv_8_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_8_depthwise_relu (None, 32, 32, 384) 0 expanded_conv_8_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_8_project (Conv2D (None, 32, 32, 64) 24576 expanded_conv_8_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_8_project_BN (Bat (None, 32, 32, 64) 256 expanded_conv_8_project[0][0]
__________________________________________________________________________________________________
expanded_conv_8_add (Add) (None, 32, 32, 64) 0 expanded_conv_7_add[0][0]
expanded_conv_8_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_9_expand (Conv2D) (None, 32, 32, 384) 24576 expanded_conv_8_add[0][0]
__________________________________________________________________________________________________
expanded_conv_9_expand_BN (Batc (None, 32, 32, 384) 1536 expanded_conv_9_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_9_expand_relu (Ac (None, 32, 32, 384) 0 expanded_conv_9_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_9_depthwise (Dept (None, 32, 32, 384) 3456 expanded_conv_9_expand_relu[0][0]
__________________________________________________________________________________________________
expanded_conv_9_depthwise_BN (B (None, 32, 32, 384) 1536 expanded_conv_9_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_9_depthwise_relu (None, 32, 32, 384) 0 expanded_conv_9_depthwise_BN[0][0
__________________________________________________________________________________________________
expanded_conv_9_project (Conv2D (None, 32, 32, 64) 24576 expanded_conv_9_depthwise_relu[0]
__________________________________________________________________________________________________
expanded_conv_9_project_BN (Bat (None, 32, 32, 64) 256 expanded_conv_9_project[0][0]
__________________________________________________________________________________________________
expanded_conv_9_add (Add) (None, 32, 32, 64) 0 expanded_conv_8_add[0][0]
expanded_conv_9_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_10_expand (Conv2D (None, 32, 32, 384) 24576 expanded_conv_9_add[0][0]
__________________________________________________________________________________________________
expanded_conv_10_expand_BN (Bat (None, 32, 32, 384) 1536 expanded_conv_10_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_10_expand_relu (A (None, 32, 32, 384) 0 expanded_conv_10_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_10_depthwise (Dep (None, 32, 32, 384) 3456 expanded_conv_10_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_10_depthwise_BN ( (None, 32, 32, 384) 1536 expanded_conv_10_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_10_depthwise_relu (None, 32, 32, 384) 0 expanded_conv_10_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_10_project (Conv2 (None, 32, 32, 96) 36864 expanded_conv_10_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_10_project_BN (Ba (None, 32, 32, 96) 384 expanded_conv_10_project[0][0]
__________________________________________________________________________________________________
expanded_conv_11_expand (Conv2D (None, 32, 32, 576) 55296 expanded_conv_10_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_11_expand_BN (Bat (None, 32, 32, 576) 2304 expanded_conv_11_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_11_expand_relu (A (None, 32, 32, 576) 0 expanded_conv_11_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_11_depthwise (Dep (None, 32, 32, 576) 5184 expanded_conv_11_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_11_depthwise_BN ( (None, 32, 32, 576) 2304 expanded_conv_11_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_11_depthwise_relu (None, 32, 32, 576) 0 expanded_conv_11_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_11_project (Conv2 (None, 32, 32, 96) 55296 expanded_conv_11_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_11_project_BN (Ba (None, 32, 32, 96) 384 expanded_conv_11_project[0][0]
__________________________________________________________________________________________________
expanded_conv_11_add (Add) (None, 32, 32, 96) 0 expanded_conv_10_project_BN[0][0]
expanded_conv_11_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_12_expand (Conv2D (None, 32, 32, 576) 55296 expanded_conv_11_add[0][0]
__________________________________________________________________________________________________
expanded_conv_12_expand_BN (Bat (None, 32, 32, 576) 2304 expanded_conv_12_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_12_expand_relu (A (None, 32, 32, 576) 0 expanded_conv_12_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_12_depthwise (Dep (None, 32, 32, 576) 5184 expanded_conv_12_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_12_depthwise_BN ( (None, 32, 32, 576) 2304 expanded_conv_12_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_12_depthwise_relu (None, 32, 32, 576) 0 expanded_conv_12_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_12_project (Conv2 (None, 32, 32, 96) 55296 expanded_conv_12_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_12_project_BN (Ba (None, 32, 32, 96) 384 expanded_conv_12_project[0][0]
__________________________________________________________________________________________________
expanded_conv_12_add (Add) (None, 32, 32, 96) 0 expanded_conv_11_add[0][0]
expanded_conv_12_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_13_expand (Conv2D (None, 32, 32, 576) 55296 expanded_conv_12_add[0][0]
__________________________________________________________________________________________________
expanded_conv_13_expand_BN (Bat (None, 32, 32, 576) 2304 expanded_conv_13_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_13_expand_relu (A (None, 32, 32, 576) 0 expanded_conv_13_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_13_depthwise (Dep (None, 32, 32, 576) 5184 expanded_conv_13_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_13_depthwise_BN ( (None, 32, 32, 576) 2304 expanded_conv_13_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_13_depthwise_relu (None, 32, 32, 576) 0 expanded_conv_13_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_13_project (Conv2 (None, 32, 32, 160) 92160 expanded_conv_13_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_13_project_BN (Ba (None, 32, 32, 160) 640 expanded_conv_13_project[0][0]
__________________________________________________________________________________________________
expanded_conv_14_expand (Conv2D (None, 32, 32, 960) 153600 expanded_conv_13_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_14_expand_BN (Bat (None, 32, 32, 960) 3840 expanded_conv_14_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_14_expand_relu (A (None, 32, 32, 960) 0 expanded_conv_14_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_14_depthwise (Dep (None, 32, 32, 960) 8640 expanded_conv_14_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_14_depthwise_BN ( (None, 32, 32, 960) 3840 expanded_conv_14_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_14_depthwise_relu (None, 32, 32, 960) 0 expanded_conv_14_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_14_project (Conv2 (None, 32, 32, 160) 153600 expanded_conv_14_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_14_project_BN (Ba (None, 32, 32, 160) 640 expanded_conv_14_project[0][0]
__________________________________________________________________________________________________
expanded_conv_14_add (Add) (None, 32, 32, 160) 0 expanded_conv_13_project_BN[0][0]
expanded_conv_14_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_15_expand (Conv2D (None, 32, 32, 960) 153600 expanded_conv_14_add[0][0]
__________________________________________________________________________________________________
expanded_conv_15_expand_BN (Bat (None, 32, 32, 960) 3840 expanded_conv_15_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_15_expand_relu (A (None, 32, 32, 960) 0 expanded_conv_15_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_15_depthwise (Dep (None, 32, 32, 960) 8640 expanded_conv_15_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_15_depthwise_BN ( (None, 32, 32, 960) 3840 expanded_conv_15_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_15_depthwise_relu (None, 32, 32, 960) 0 expanded_conv_15_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_15_project (Conv2 (None, 32, 32, 160) 153600 expanded_conv_15_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_15_project_BN (Ba (None, 32, 32, 160) 640 expanded_conv_15_project[0][0]
__________________________________________________________________________________________________
expanded_conv_15_add (Add) (None, 32, 32, 160) 0 expanded_conv_14_add[0][0]
expanded_conv_15_project_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_16_expand (Conv2D (None, 32, 32, 960) 153600 expanded_conv_15_add[0][0]
__________________________________________________________________________________________________
expanded_conv_16_expand_BN (Bat (None, 32, 32, 960) 3840 expanded_conv_16_expand[0][0]
__________________________________________________________________________________________________
expanded_conv_16_expand_relu (A (None, 32, 32, 960) 0 expanded_conv_16_expand_BN[0][0]
__________________________________________________________________________________________________
expanded_conv_16_depthwise (Dep (None, 32, 32, 960) 8640 expanded_conv_16_expand_relu[0][0
__________________________________________________________________________________________________
expanded_conv_16_depthwise_BN ( (None, 32, 32, 960) 3840 expanded_conv_16_depthwise[0][0]
__________________________________________________________________________________________________
expanded_conv_16_depthwise_relu (None, 32, 32, 960) 0 expanded_conv_16_depthwise_BN[0][
__________________________________________________________________________________________________
expanded_conv_16_project (Conv2 (None, 32, 32, 320) 307200 expanded_conv_16_depthwise_relu[0
__________________________________________________________________________________________________
expanded_conv_16_project_BN (Ba (None, 32, 32, 320) 1280 expanded_conv_16_project[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_6 (Glo (None, 320) 0 expanded_conv_16_project_BN[0][0]
__________________________________________________________________________________________________
lambda_25 (Lambda) (None, 1, 320) 0 global_average_pooling2d_6[0][0]
__________________________________________________________________________________________________
aspp1_depthwise (DepthwiseConv2 (None, 32, 32, 320) 2880 expanded_conv_16_project_BN[0][0]
__________________________________________________________________________________________________
aspp2_depthwise (DepthwiseConv2 (None, 32, 32, 320) 2880 expanded_conv_16_project_BN[0][0]
__________________________________________________________________________________________________
aspp3_depthwise (DepthwiseConv2 (None, 32, 32, 320) 2880 expanded_conv_16_project_BN[0][0]
__________________________________________________________________________________________________
lambda_26 (Lambda) (None, 1, 1, 320) 0 lambda_25[0][0]
__________________________________________________________________________________________________
aspp1_depthwise_BN (BatchNormal (None, 32, 32, 320) 1280 aspp1_depthwise[0][0]
__________________________________________________________________________________________________
aspp2_depthwise_BN (BatchNormal (None, 32, 32, 320) 1280 aspp2_depthwise[0][0]
__________________________________________________________________________________________________
aspp3_depthwise_BN (BatchNormal (None, 32, 32, 320) 1280 aspp3_depthwise[0][0]
__________________________________________________________________________________________________
image_pooling (Conv2D) (None, 1, 1, 256) 81920 lambda_26[0][0]
__________________________________________________________________________________________________
activation_61 (Activation) (None, 32, 32, 320) 0 aspp1_depthwise_BN[0][0]
__________________________________________________________________________________________________
activation_63 (Activation) (None, 32, 32, 320) 0 aspp2_depthwise_BN[0][0]
__________________________________________________________________________________________________
activation_65 (Activation) (None, 32, 32, 320) 0 aspp3_depthwise_BN[0][0]
__________________________________________________________________________________________________
image_pooling_BN (BatchNormaliz (None, 1, 1, 256) 1024 image_pooling[0][0]
__________________________________________________________________________________________________
aspp0 (Conv2D) (None, 32, 32, 256) 81920 expanded_conv_16_project_BN[0][0]
__________________________________________________________________________________________________
aspp1_pointwise (Conv2D) (None, 32, 32, 256) 81920 activation_61[0][0]
__________________________________________________________________________________________________
aspp2_pointwise (Conv2D) (None, 32, 32, 256) 81920 activation_63[0][0]
__________________________________________________________________________________________________
aspp3_pointwise (Conv2D) (None, 32, 32, 256) 81920 activation_65[0][0]
__________________________________________________________________________________________________
activation_67 (Activation) (None, 1, 1, 256) 0 image_pooling_BN[0][0]
__________________________________________________________________________________________________
aspp0_BN (BatchNormalization) (None, 32, 32, 256) 1024 aspp0[0][0]
__________________________________________________________________________________________________
aspp1_pointwise_BN (BatchNormal (None, 32, 32, 256) 1024 aspp1_pointwise[0][0]
__________________________________________________________________________________________________
aspp2_pointwise_BN (BatchNormal (None, 32, 32, 256) 1024 aspp2_pointwise[0][0]
__________________________________________________________________________________________________
aspp3_pointwise_BN (BatchNormal (None, 32, 32, 256) 1024 aspp3_pointwise[0][0]
__________________________________________________________________________________________________
lambda_27 (Lambda) (None, 32, 32, 256) 0 activation_67[0][0]
__________________________________________________________________________________________________
aspp0_activation (Activation) (None, 32, 32, 256) 0 aspp0_BN[0][0]
__________________________________________________________________________________________________
activation_62 (Activation) (None, 32, 32, 256) 0 aspp1_pointwise_BN[0][0]
__________________________________________________________________________________________________
activation_64 (Activation) (None, 32, 32, 256) 0 aspp2_pointwise_BN[0][0]
__________________________________________________________________________________________________
activation_66 (Activation) (None, 32, 32, 256) 0 aspp3_pointwise_BN[0][0]
__________________________________________________________________________________________________
concatenate_7 (Concatenate) (None, 32, 32, 1280) 0 lambda_27[0][0]
aspp0_activation[0][0]
activation_62[0][0]
activation_64[0][0]
activation_66[0][0]
__________________________________________________________________________________________________
concat_projection (Conv2D) (None, 32, 32, 256) 327680 concatenate_7[0][0]
__________________________________________________________________________________________________
concat_projection_BN (BatchNorm (None, 32, 32, 256) 1024 concat_projection[0][0]
__________________________________________________________________________________________________
activation_68 (Activation) (None, 32, 32, 256) 0 concat_projection_BN[0][0]
__________________________________________________________________________________________________
feature_projection0 (Conv2D) (None, 128, 128, 48) 1152 expanded_conv_2_add[0][0]
__________________________________________________________________________________________________
dropout_4 (Dropout) (None, 32, 32, 256) 0 activation_68[0][0]
__________________________________________________________________________________________________
feature_projection0_BN (BatchNo (None, 128, 128, 48) 192 feature_projection0[0][0]
__________________________________________________________________________________________________
lambda_28 (Lambda) (None, 128, 128, 256 0 dropout_4[0][0]
__________________________________________________________________________________________________
activation_69 (Activation) (None, 128, 128, 48) 0 feature_projection0_BN[0][0]
__________________________________________________________________________________________________
concatenate_8 (Concatenate) (None, 128, 128, 304 0 lambda_28[0][0]
activation_69[0][0]
__________________________________________________________________________________________________
decoder_conv0_depthwise (Depthw (None, 128, 128, 304 2736 concatenate_8[0][0]
__________________________________________________________________________________________________
decoder_conv0_depthwise_BN (Bat (None, 128, 128, 304 1216 decoder_conv0_depthwise[0][0]
__________________________________________________________________________________________________
activation_70 (Activation) (None, 128, 128, 304 0 decoder_conv0_depthwise_BN[0][0]
__________________________________________________________________________________________________
decoder_conv0_pointwise (Conv2D (None, 128, 128, 256 77824 activation_70[0][0]
__________________________________________________________________________________________________
decoder_conv0_pointwise_BN (Bat (None, 128, 128, 256 1024 decoder_conv0_pointwise[0][0]
__________________________________________________________________________________________________
activation_71 (Activation) (None, 128, 128, 256 0 decoder_conv0_pointwise_BN[0][0]
__________________________________________________________________________________________________
decoder_conv1_depthwise (Depthw (None, 128, 128, 256 2304 activation_71[0][0]
__________________________________________________________________________________________________
decoder_conv1_depthwise_BN (Bat (None, 128, 128, 256 1024 decoder_conv1_depthwise[0][0]
__________________________________________________________________________________________________
activation_72 (Activation) (None, 128, 128, 256 0 decoder_conv1_depthwise_BN[0][0]
__________________________________________________________________________________________________
decoder_conv1_pointwise (Conv2D (None, 128, 128, 256 65536 activation_72[0][0]
__________________________________________________________________________________________________
decoder_conv1_pointwise_BN (Bat (None, 128, 128, 256 1024 decoder_conv1_pointwise[0][0]
__________________________________________________________________________________________________
activation_73 (Activation) (None, 128, 128, 256 0 decoder_conv1_pointwise_BN[0][0]
__________________________________________________________________________________________________
conv2d_3 (Conv2D) (None, 128, 128, 2) 514 activation_73[0][0]
__________________________________________________________________________________________________
lambda_29 (Lambda) (None, 512, 512, 2) 0 conv2d_3[0][0]
__________________________________________________________________________________________________
softmax_1 (Softmax) (None, 512, 512, 2) 0 lambda_29[0][0]
==================================================================================================
Total params: 2,753,714
Trainable params: 2,714,930
Non-trainable params: 38,784
__________________________________________________________________________________________________

 

 

posted on   McDelfino  阅读(1701)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-09-06 【268】TC
点击右上角即可分享
微信分享提示