MobileNetV3架构解析与代码复现

简介: MobileNet模型基于深度可分离卷积,这是一种分解卷积的形式,将标准卷积分解为深度卷积和`1*1`的点卷积。对于MobileNet,深度卷积将单个滤波器应用于每个输入通道,然后,逐点卷积应用`1*1`卷积将输出与深度卷积相结合。

@toc

参考论文:Searching for MobileNetV3

作者:Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, Quoc V. Le, Hartwig Adam;

前置知识:MobileNetV1架构解析

MobileNetV2架构解析

SENet架构-通道注意力机制

1、MobileNetV3改进

  • 更新了MobileNetV2中的倒残差结构
  • 使用NAS搜索参数
  • 重新设计耗时层结构
  • 重新设计激活函数。

2、 MobileNetV1

img

2.1 Depthwise Separable Convolution

  MobileNet模型基于深度可分离卷积,这是一种分解卷积的形式,将标准卷积分解为深度卷积和1*1的点卷积。对于MobileNet,深度卷积将单个滤波器应用于每个输入通道,然后,逐点卷积应用1*1卷积将输出与深度卷积相结合。

  标准卷积在一个步骤中将输入滤波并组合成一组新的输出。深度可分离卷积将标准的卷积层分解为两层来做:

  首先是各个通道单独做卷积运算,称之为Depthwise Convolution
然后用一个1*1的标准卷积层进行各个通道间的合并,称之为Pointwise Convolution
  论文中原图如下所示:

    ![image-20220803201346429](https://ucc.alicdn.com/images/user-upload-01/img_convert/d330d69c69e613c60d605b95a19c1707.png#pic_center)

2.2 Depthwise卷积

在这里插入图片描述

  • 卷积核channel=1
  • 输入特征矩阵channel=卷积核个数=输出特征矩阵channel
  DW卷积中的每一个卷积核只会和输入特征矩阵的一个channel进行卷积计算,所以输出的特征矩阵就等于输入的特征矩阵。

2.3 Pointwise卷积

  Pointwise卷积和普通的卷积一样,只不过使用了1*1卷积核。

在这里插入图片描述

3、MobileNetV2

3.1 MobileNetV1与MobileNetV2架构对比

  MobileNetV1先使用3*3深度卷积,再使用1*1逐点卷积,全部采用ReLU6激活函数

  MobileNetV2先使用1*1卷积升维,在高维空间下使用3*3的深度卷积,在使用1*1卷积降维,在降维时采用线性激活函数。当步长为1时,使用残差连接输入和输出;当步长为2时,不适用残差连接,因为此时的输入特征矩阵和输出特征矩阵的shape不相等。

image-20220804170325471

img

3.2 普通残差块与逆残差块对比

image-20220804161835593

  普通残差是先使用1*1卷积降维,再进行3*3卷积,最后使用1*1卷积升维(两边厚,中间薄)

  逆残差块是先使用1*1卷积进行升维,然后使用3*3深度可分离卷积,最后使用1*1卷积进行降维(两边薄,中间厚)

img

img

3.3 ReLU6激活函数

image-20220804162651537

   relu6函数在低精度浮点数下有比较好的表示性能

3.4 MobileNetV2的卷积块

image-20220804162735742

  ==注意:这里只有当stride=1且输入特征矩阵与输出特征矩阵的shape相同时才能进行shortcut连接。==

4、MobileNetV3

4.1 SENet注意力机制

image-20220816114225350

具体实现如下:

  • 对输入进来的特征层进行全局平均池化。
  • 然后进行两次全连接(这两个全连接可用1*1卷积代替),第一次全连接神经元个数较少,第二次全连接神经元个数和输入特征层个数相同。
  • 在完成两次全连接之后,再取一次sigmoid讲值固定到0-1之间,此时我们获得了输入特征层每一个通道的权值(0-1之间)。
  • 在获得这个权值之后,讲这个权值与原输入特征层相乘即可。

4.2 bneck结构

  bneck结构如下所示:

image-20220826172511468

它综合了以下四个特点:

  • MobileNetV2的逆残差结构
  • MobileNetV1的深度可分离卷积(depthwise separable convolutions)
  • SENet注意力机制模型
  • 用h-swish代替swish激活函数,也可以说是用h-sigmoid代替sigmoid激活函数。

4.3 网络改进

4.3.1 重新设计耗时层的结构

image-20220826173339788

  图 5. 原始最后阶段与有效最后阶段的比较。这个更有效的最后阶段能够在网络末端丢弃三个昂贵的层,而不会损失准确性。

  当前基于 MobileNetV2 的倒置瓶颈结构和变体的模型使用 1x1 卷积作为最后一层,以便扩展到更高维的特征空间。该层对于具有丰富的预测特征至关重要。然而,这是以额外的延迟为代价的。为了减少延迟并保留高维特征,我们将这一层移到最终的平均池化之后。最后一组特征现在以 1x1 空间分辨率而不是 7x7 空间分辨率计算。

  (1)减少第一个卷积层的卷积核个数。将卷积核个数从32个降低到16个之后,同时使用ReLU或swish保持与32个卷积核相同的精度。这额外节省了2毫秒时间和1000万个乘加量。

  (2)简化最后的输出层。删除多余的卷积层,将延迟减少了 7 毫秒,这是运行时间的 11%,并且减少了 3000 万次 MAdd 的操作次数,几乎没有损失准确性。

4.3.2 重新设计激活函数

  引入了一种称为 swish 的非线性,当用作 ReLU 的替代品时,它显着提高了神经网络的准确性。非线性定义为:

$$ swishx=x\cdot \sigma (x) $$

  虽然这种非线性提高了准确性,但它在嵌入式环境中具有非零成本,因为在移动设备上计算 sigmoid 函数的成本要高得多。

  将sigmoid替换为h-sigmoid激活函数:

$$ h-sigmoid=\frac{ReLU6(x+3)}{6} $$

  则swish硬版本变成:

$$ h-swish[x]=x\frac{ReLU6(x+3)}{6} $$

image-20220826174636058

   sigmoid 和 swish 非线性的软和硬版本的比较如图 6 所示。在我们的实验中,我们发现所有这些功能的硬版本在准确性上没有明显差异,但从部署的角度来看具有多种优势。首先,ReLU6 的优化实现几乎可以在所有软件和硬件框架上使用。其次,在量化模式下,它消除了由近似 sigmoid 的不同实现引起的潜在数值精度损失。最后,在实践中,h-swish 可以实现为分段函数,以减少内存访问次数,从而大幅降低延迟成本。

4.3.3 Large squeeze-and-excite

  在“MnasNet: Platform-Aware Neural Architecture Search for Mobile”论文中,squeeze-and-excite 瓶颈的大小是相对于卷积瓶颈的大小。相反,我们将它们==全部替换为固定为扩展层通道数的 1/4==。我们发现这样做可以提高准确性,同时适度增加参数数量,并且没有明显的延迟成本。

4.4 网络结构

  MobileNetV3 定义为两个模型:MobileNetV3Large 和 MobileNetV3-Small。这些模型分别针对高资源和低资源用例。

image-20220826175028770

image-20220826175038368

表1为MobileNetV3-Large模型,表2为MobileNetV3-Small模型。

SE 表示该块中是否存在 Squeeze-And-Excite。

NL 表示使用的非线性类型。这里,HS 表示 h-swish,RE 表示 ReLU。

NBN 表示没有批量标准化。

s 表示步幅。

exp size表示第一个1*1升维的卷积核个数

#out表示1*1降维的卷积核个数。

==注意:第一个bneck的input_channel和exp size的channel的大小一致,所以第一个bneck中没有1*1升维的卷积核。==

5、Tensorflow代码复现MobileNetV3结构。

import tensorflow as tf
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
from typing import Union

5.1 channel个数调整

# 将传递进来的channel个数调整为离他最近的8的整数倍的一个数字
def _make_divisible(v, divisor=8, min_value=None):
  if min_value is None:
    min_value = divisor
  new_v = max(min_value, int(v + divisor / 2) // divisor * divisor)
  # Make sure that round down does not go down by more than 10%.
  if new_v < 0.9 * v:
    new_v += divisor
  return new_v

5.2 计算步长为2的padding

# 当卷积的stride=2的时候,计算一个合适的padding进行填充
def correct_pad(input_size: Union[int, tuple], kernel_size: int):
    """Returns a tuple for zero-padding for 2D convolution with downsampling.

    Arguments:
      input_size: Input tensor size.
      kernel_size: An integer or tuple/list of 2 integers.

    Returns:
      A tuple.
    """

    if isinstance(input_size, int):
        input_size = (input_size, input_size)

    kernel_size = (kernel_size, kernel_size)

    adjust = (1 - input_size[0] % 2, 1 - input_size[1] % 2)
    correct = (kernel_size[0] // 2, kernel_size[1] // 2)
    return ((correct[0] - adjust[0], correct[0]),
            (correct[1] - adjust[1], correct[1]))

5.3 h-sigmoid和h-swish激活函数

# hard_sigmoid 激活函数
def hard_sigmoid(x):
    x=layers.Activation('hard_sigmoid')(x)
    return x

# hard_swish激活函数
def hard_swish(x):
    x=layers.Multiply()([hard_sigmoid(x),x]);
    return x

5.4 SENet注意力机制模块

# SENet注意力机制模块
def _se_block(inputs, filters, prefix, se_ratio=1 / 4.):
    # [batch, height, width, channel] -> [batch, channel]
    x = layers.GlobalAveragePooling2D(name=prefix + 'squeeze_excite/AvgPool')(inputs)

    # Target shape. Tuple of integers, does not include the samples dimension (batch size).
    # [batch, channel] -> [batch, 1, 1, channel]
    x = layers.Reshape((1, 1, filters))(x)

    # fc1
    x = layers.Conv2D(filters=_make_divisible(filters * se_ratio),
                      kernel_size=1,
                      padding='same',
                      name=prefix + 'squeeze_excite/Conv')(x)
    x = layers.ReLU(name=prefix + 'squeeze_excite/Relu')(x)

    # fc2
    x = layers.Conv2D(filters=filters,
                      kernel_size=1,
                      padding='same',
                      name=prefix + 'squeeze_excite/Conv_1')(x)
    # hard sigmoid激活函数
    x = hard_sigmoid(x)

    x = layers.Multiply(name=prefix + 'squeeze_excite/Mul')([inputs, x])
    return x

5.5 倒残差结构

# 倒残差结构
def _inverted_res_block(x,
                        input_c: int,  # input channel
                        kernel_size: int,  # kennel size(DW卷积对应的kernel_size)
                        exp_c: int,  # expanded channel
                        out_c: int,  # out channel
                        use_se: bool,  # 是否使用SE注意力机制模块
                        activation: str,  # ReLU or HardSwish
                        stride: int,
                        block_id: int,
                        alpha: float = 1.0):
    shortcut=x
    prefix='expanded_conv'
    input_c=_make_divisible(input_c*alpha)
    exp_c=_make_divisible(exp_c*alpha)
    out_c=_make_divisible(out_c*alpha)
    
    if activation=='RE':
        act=layers.ReLU()
    elif activation=='HS':
        act=hard_swish
    
    # 当block=0的时候(第一个bneck结构)没有1*1升维卷积。
    if block_id:
         # expand channel
        prefix = 'expanded_conv_{}/'.format(block_id)
        # 1*1卷积升维
        x=layers.Conv2D(exp_c,
                        kernel_size=1,
                        padding='same',
                        use_bias=False,
                        name=prefix+'expand')(x)
        # BN
        x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name=prefix+'expamd/BatchNorm')(x)
        x=act(x)
    # stride=2的时候先进行padding
    if stride==2:
        input_size=(x.shape[1],x.shape[2]) # height,width
        x=layers.ZeroPadding2D(padding=correct_pad(input_size,kernel_size),
                                     name=prefix + 'depthwise/pad')(x)
    # DW卷积
    x=layers.DepthwiseConv2D(kernel_size=kernel_size,
                            strides=stride,
                            padding='same' if stride==1 else 'valid',
                            use_bias=False,
                            name=prefix+'depthwise')(x)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name=prefix+'depthwise/BatchNorm')(x)
    x=act(x)
        
    # 是否需要注意力机制模块
    if use_se:
        x=_se_block(x,filters=exp_c,prefix=prefix)
    # 1*1卷积降维
    x=layers.Conv2D(filters=out_c,
                    kernel_size=1,
                    padding='same',
                    use_bias=False,
                    name=prefix+'project')(x)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name=prefix+'project/BatchNorm')(x)
        
    # 只有stride==1且input_channel==output_channel的时候,才有shortcut连接
    if stride==1 and input_c==out_c:
        x=layers.Add(name=prefix+'Add')([shortcut,x])
    return x

5.6 MobileNetV3-Large模型

def mobilenet_v3_large(input_shape=(224,224,3),
                       num_class=1000,
                       alpha=1.0,
                       include_top=True):  #是否需要包含最后的全连接层
    input=layers.Input(shape=input_shape)
    
    x=layers.Conv2D(filters=16,kernel_size=3,strides=(2,2),padding='same',
                   use_bias=False,name='Conv')(input)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name='Conv/BatchNorm')(x)
    x=hard_swish(x)
    
    #15个bneck
    # input, input_c, k_size, expand_c,out_c, use_se, activation, stride, block_id
    x = _inverted_res_block(x, 16, 3, 16, 16, False, "RE", 1, 0 ,alpha)
    x = _inverted_res_block(x, 16, 3, 64, 24, False, "RE", 2, 1 ,alpha)
    x = _inverted_res_block(x, 24, 3, 72, 24, False, "RE", 1, 2 ,alpha)
    x = _inverted_res_block(x, 24, 5, 72, 40, True, "RE", 2, 3 ,alpha)
    x = _inverted_res_block(x, 40, 5, 120, 40, True, "RE", 1, 4 ,alpha)
    x = _inverted_res_block(x, 40, 5, 120, 40, True, "RE", 1, 5 ,alpha) 
    x = _inverted_res_block(x, 40, 3, 240, 80, False, "HS", 2, 6 ,alpha)
    x = _inverted_res_block(x, 80, 3, 200, 80, False, "HS", 1, 7 ,alpha)
    x = _inverted_res_block(x, 80, 3, 184, 80, False, "HS", 1, 8 ,alpha)
    x = _inverted_res_block(x, 80, 3, 184, 80, False, "HS", 1, 9 ,alpha)
    x = _inverted_res_block(x, 80, 3, 480, 112, True, "HS", 1, 10 ,alpha)
    x = _inverted_res_block(x, 112, 3, 672, 112, True, "HS", 1, 11 ,alpha)
    x = _inverted_res_block(x, 112, 5, 672, 160, True, "HS", 2, 12 ,alpha)
    x = _inverted_res_block(x, 160, 5, 960, 160, True, "HS", 1, 13 ,alpha)
    x = _inverted_res_block(x, 160, 5, 960, 160, True, "HS", 1, 14 ,alpha)
    
    last_c=_make_divisible(160*6*alpha)
    last_point_c=_make_divisible(1280*alpha)
    
    x=layers.Conv2D(filters=last_c,
                   kernel_size=1,
                   padding='same',
                   use_bias=False,
                   name='Conv_1')(x)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name='Conv_1/BatchNorm')(x)
    x=hard_swish(x)
    
    if include_top is True:
        x=layers.GlobalAveragePooling2D()(x)
        x=layers.Reshape((1,1,last_c))(x)
        
        # fc1
        x=layers.Conv2D(filters=last_point_c,
                       kernel_size=1,
                       padding='same',
                       name='Conv_2')(x)
        x=hard_swish(x)
        
        # fc2
        x = layers.Conv2D(filters=num_class,
                          kernel_size=1,
                          padding='same',
                          name='Logits/Conv2d_1c_1x1')(x)
        x = layers.Flatten()(x)
        x = layers.Softmax(name="Predictions")(x)
    model=Model(input,x,name='MobileNetV3-Large')
    return model
model=mobilenet_v3_large()
model.summary()
Model: "MobileNetV3-Large"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_9 (InputLayer)            [(None, 224, 224, 3) 0                                            
__________________________________________________________________________________________________
Conv (Conv2D)                   (None, 112, 112, 16) 432         input_9[0][0]                    
__________________________________________________________________________________________________
Conv/BatchNorm (BatchNormalizat (None, 112, 112, 16) 64          Conv[0][0]                       
__________________________________________________________________________________________________
activation_98 (Activation)      (None, 112, 112, 16) 0           Conv/BatchNorm[0][0]             
__________________________________________________________________________________________________
multiply_68 (Multiply)          (None, 112, 112, 16) 0           activation_98[0][0]              
                                                                 Conv/BatchNorm[0][0]             
__________________________________________________________________________________________________
expanded_convdepthwise (Depthwi (None, 112, 112, 16) 144         multiply_68[0][0]                
__________________________________________________________________________________________________
expanded_convdepthwise/BatchNor (None, 112, 112, 16) 64          expanded_convdepthwise[0][0]     
__________________________________________________________________________________________________
re_lu_33 (ReLU)                 (None, 112, 112, 16) 0           expanded_convdepthwise/BatchNorm[
__________________________________________________________________________________________________
expanded_convproject (Conv2D)   (None, 112, 112, 16) 256         re_lu_33[0][0]                   
__________________________________________________________________________________________________
expanded_convproject/BatchNorm  (None, 112, 112, 16) 64          expanded_convproject[0][0]       
__________________________________________________________________________________________________
expanded_convAdd (Add)          (None, 112, 112, 16) 0           multiply_68[0][0]                
                                                                 expanded_convproject/BatchNorm[0]
__________________________________________________________________________________________________
expanded_conv_1/expand (Conv2D) (None, 112, 112, 64) 1024        expanded_convAdd[0][0]           
__________________________________________________________________________________________________
expanded_conv_1/expamd/BatchNor (None, 112, 112, 64) 256         expanded_conv_1/expand[0][0]     
__________________________________________________________________________________________________
re_lu_34 (ReLU)                 multiple             0           expanded_conv_1/expamd/BatchNorm[
                                                                 expanded_conv_1/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_1/depthwise/pad ( (None, 113, 113, 64) 0           re_lu_34[0][0]                   
__________________________________________________________________________________________________
expanded_conv_1/depthwise (Dept (None, 56, 56, 64)   576         expanded_conv_1/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_1/depthwise/Batch (None, 56, 56, 64)   256         expanded_conv_1/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_1/project (Conv2D (None, 56, 56, 24)   1536        re_lu_34[1][0]                   
__________________________________________________________________________________________________
expanded_conv_1/project/BatchNo (None, 56, 56, 24)   96          expanded_conv_1/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_2/expand (Conv2D) (None, 56, 56, 72)   1728        expanded_conv_1/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_2/expamd/BatchNor (None, 56, 56, 72)   288         expanded_conv_2/expand[0][0]     
__________________________________________________________________________________________________
re_lu_35 (ReLU)                 (None, 56, 56, 72)   0           expanded_conv_2/expamd/BatchNorm[
                                                                 expanded_conv_2/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_2/depthwise (Dept (None, 56, 56, 72)   648         re_lu_35[0][0]                   
__________________________________________________________________________________________________
expanded_conv_2/depthwise/Batch (None, 56, 56, 72)   288         expanded_conv_2/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_2/project (Conv2D (None, 56, 56, 24)   1728        re_lu_35[1][0]                   
__________________________________________________________________________________________________
expanded_conv_2/project/BatchNo (None, 56, 56, 24)   96          expanded_conv_2/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_2/Add (Add)       (None, 56, 56, 24)   0           expanded_conv_1/project/BatchNorm
                                                                 expanded_conv_2/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_3/expand (Conv2D) (None, 56, 56, 72)   1728        expanded_conv_2/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_3/expamd/BatchNor (None, 56, 56, 72)   288         expanded_conv_3/expand[0][0]     
__________________________________________________________________________________________________
re_lu_36 (ReLU)                 multiple             0           expanded_conv_3/expamd/BatchNorm[
                                                                 expanded_conv_3/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_3/depthwise/pad ( (None, 59, 59, 72)   0           re_lu_36[0][0]                   
__________________________________________________________________________________________________
expanded_conv_3/depthwise (Dept (None, 28, 28, 72)   1800        expanded_conv_3/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_3/depthwise/Batch (None, 28, 28, 72)   288         expanded_conv_3/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 72)           0           re_lu_36[1][0]                   
__________________________________________________________________________________________________
reshape_33 (Reshape)            (None, 1, 1, 72)     0           expanded_conv_3/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 24)     1752        reshape_33[0][0]                 
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 24)     0           expanded_conv_3/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 72)     1800        expanded_conv_3/squeeze_excite/Re
__________________________________________________________________________________________________
activation_99 (Activation)      (None, 1, 1, 72)     0           expanded_conv_3/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 28, 28, 72)   0           re_lu_36[1][0]                   
                                                                 activation_99[0][0]              
__________________________________________________________________________________________________
expanded_conv_3/project (Conv2D (None, 28, 28, 40)   2880        expanded_conv_3/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_3/project/BatchNo (None, 28, 28, 40)   160         expanded_conv_3/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_4/expand (Conv2D) (None, 28, 28, 120)  4800        expanded_conv_3/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_4/expamd/BatchNor (None, 28, 28, 120)  480         expanded_conv_4/expand[0][0]     
__________________________________________________________________________________________________
re_lu_37 (ReLU)                 (None, 28, 28, 120)  0           expanded_conv_4/expamd/BatchNorm[
                                                                 expanded_conv_4/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_4/depthwise (Dept (None, 28, 28, 120)  3000        re_lu_37[0][0]                   
__________________________________________________________________________________________________
expanded_conv_4/depthwise/Batch (None, 28, 28, 120)  480         expanded_conv_4/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 120)          0           re_lu_37[1][0]                   
__________________________________________________________________________________________________
reshape_34 (Reshape)            (None, 1, 1, 120)    0           expanded_conv_4/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 32)     3872        reshape_34[0][0]                 
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 32)     0           expanded_conv_4/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 120)    3960        expanded_conv_4/squeeze_excite/Re
__________________________________________________________________________________________________
activation_100 (Activation)     (None, 1, 1, 120)    0           expanded_conv_4/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 28, 28, 120)  0           re_lu_37[1][0]                   
                                                                 activation_100[0][0]             
__________________________________________________________________________________________________
expanded_conv_4/project (Conv2D (None, 28, 28, 40)   4800        expanded_conv_4/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_4/project/BatchNo (None, 28, 28, 40)   160         expanded_conv_4/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_4/Add (Add)       (None, 28, 28, 40)   0           expanded_conv_3/project/BatchNorm
                                                                 expanded_conv_4/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_5/expand (Conv2D) (None, 28, 28, 120)  4800        expanded_conv_4/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_5/expamd/BatchNor (None, 28, 28, 120)  480         expanded_conv_5/expand[0][0]     
__________________________________________________________________________________________________
re_lu_38 (ReLU)                 (None, 28, 28, 120)  0           expanded_conv_5/expamd/BatchNorm[
                                                                 expanded_conv_5/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_5/depthwise (Dept (None, 28, 28, 120)  3000        re_lu_38[0][0]                   
__________________________________________________________________________________________________
expanded_conv_5/depthwise/Batch (None, 28, 28, 120)  480         expanded_conv_5/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 120)          0           re_lu_38[1][0]                   
__________________________________________________________________________________________________
reshape_35 (Reshape)            (None, 1, 1, 120)    0           expanded_conv_5/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 32)     3872        reshape_35[0][0]                 
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 32)     0           expanded_conv_5/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 120)    3960        expanded_conv_5/squeeze_excite/Re
__________________________________________________________________________________________________
activation_101 (Activation)     (None, 1, 1, 120)    0           expanded_conv_5/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 28, 28, 120)  0           re_lu_38[1][0]                   
                                                                 activation_101[0][0]             
__________________________________________________________________________________________________
expanded_conv_5/project (Conv2D (None, 28, 28, 40)   4800        expanded_conv_5/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_5/project/BatchNo (None, 28, 28, 40)   160         expanded_conv_5/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_5/Add (Add)       (None, 28, 28, 40)   0           expanded_conv_4/Add[0][0]        
                                                                 expanded_conv_5/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_6/expand (Conv2D) (None, 28, 28, 240)  9600        expanded_conv_5/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_6/expamd/BatchNor (None, 28, 28, 240)  960         expanded_conv_6/expand[0][0]     
__________________________________________________________________________________________________
activation_102 (Activation)     (None, 28, 28, 240)  0           expanded_conv_6/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_69 (Multiply)          (None, 28, 28, 240)  0           activation_102[0][0]             
                                                                 expanded_conv_6/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_6/depthwise/pad ( (None, 29, 29, 240)  0           multiply_69[0][0]                
__________________________________________________________________________________________________
expanded_conv_6/depthwise (Dept (None, 14, 14, 240)  2160        expanded_conv_6/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_6/depthwise/Batch (None, 14, 14, 240)  960         expanded_conv_6/depthwise[0][0]  
__________________________________________________________________________________________________
activation_103 (Activation)     (None, 14, 14, 240)  0           expanded_conv_6/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_70 (Multiply)          (None, 14, 14, 240)  0           activation_103[0][0]             
                                                                 expanded_conv_6/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_6/project (Conv2D (None, 14, 14, 80)   19200       multiply_70[0][0]                
__________________________________________________________________________________________________
expanded_conv_6/project/BatchNo (None, 14, 14, 80)   320         expanded_conv_6/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_7/expand (Conv2D) (None, 14, 14, 200)  16000       expanded_conv_6/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_7/expamd/BatchNor (None, 14, 14, 200)  800         expanded_conv_7/expand[0][0]     
__________________________________________________________________________________________________
activation_104 (Activation)     (None, 14, 14, 200)  0           expanded_conv_7/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_71 (Multiply)          (None, 14, 14, 200)  0           activation_104[0][0]             
                                                                 expanded_conv_7/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_7/depthwise (Dept (None, 14, 14, 200)  1800        multiply_71[0][0]                
__________________________________________________________________________________________________
expanded_conv_7/depthwise/Batch (None, 14, 14, 200)  800         expanded_conv_7/depthwise[0][0]  
__________________________________________________________________________________________________
activation_105 (Activation)     (None, 14, 14, 200)  0           expanded_conv_7/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_72 (Multiply)          (None, 14, 14, 200)  0           activation_105[0][0]             
                                                                 expanded_conv_7/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_7/project (Conv2D (None, 14, 14, 80)   16000       multiply_72[0][0]                
__________________________________________________________________________________________________
expanded_conv_7/project/BatchNo (None, 14, 14, 80)   320         expanded_conv_7/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_7/Add (Add)       (None, 14, 14, 80)   0           expanded_conv_6/project/BatchNorm
                                                                 expanded_conv_7/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_8/expand (Conv2D) (None, 14, 14, 184)  14720       expanded_conv_7/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_8/expamd/BatchNor (None, 14, 14, 184)  736         expanded_conv_8/expand[0][0]     
__________________________________________________________________________________________________
activation_106 (Activation)     (None, 14, 14, 184)  0           expanded_conv_8/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_73 (Multiply)          (None, 14, 14, 184)  0           activation_106[0][0]             
                                                                 expanded_conv_8/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_8/depthwise (Dept (None, 14, 14, 184)  1656        multiply_73[0][0]                
__________________________________________________________________________________________________
expanded_conv_8/depthwise/Batch (None, 14, 14, 184)  736         expanded_conv_8/depthwise[0][0]  
__________________________________________________________________________________________________
activation_107 (Activation)     (None, 14, 14, 184)  0           expanded_conv_8/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_74 (Multiply)          (None, 14, 14, 184)  0           activation_107[0][0]             
                                                                 expanded_conv_8/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_8/project (Conv2D (None, 14, 14, 80)   14720       multiply_74[0][0]                
__________________________________________________________________________________________________
expanded_conv_8/project/BatchNo (None, 14, 14, 80)   320         expanded_conv_8/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_8/Add (Add)       (None, 14, 14, 80)   0           expanded_conv_7/Add[0][0]        
                                                                 expanded_conv_8/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_9/expand (Conv2D) (None, 14, 14, 184)  14720       expanded_conv_8/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_9/expamd/BatchNor (None, 14, 14, 184)  736         expanded_conv_9/expand[0][0]     
__________________________________________________________________________________________________
activation_108 (Activation)     (None, 14, 14, 184)  0           expanded_conv_9/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_75 (Multiply)          (None, 14, 14, 184)  0           activation_108[0][0]             
                                                                 expanded_conv_9/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_9/depthwise (Dept (None, 14, 14, 184)  1656        multiply_75[0][0]                
__________________________________________________________________________________________________
expanded_conv_9/depthwise/Batch (None, 14, 14, 184)  736         expanded_conv_9/depthwise[0][0]  
__________________________________________________________________________________________________
activation_109 (Activation)     (None, 14, 14, 184)  0           expanded_conv_9/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_76 (Multiply)          (None, 14, 14, 184)  0           activation_109[0][0]             
                                                                 expanded_conv_9/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_9/project (Conv2D (None, 14, 14, 80)   14720       multiply_76[0][0]                
__________________________________________________________________________________________________
expanded_conv_9/project/BatchNo (None, 14, 14, 80)   320         expanded_conv_9/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_9/Add (Add)       (None, 14, 14, 80)   0           expanded_conv_8/Add[0][0]        
                                                                 expanded_conv_9/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_10/expand (Conv2D (None, 14, 14, 480)  38400       expanded_conv_9/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_10/expamd/BatchNo (None, 14, 14, 480)  1920        expanded_conv_10/expand[0][0]    
__________________________________________________________________________________________________
activation_110 (Activation)     (None, 14, 14, 480)  0           expanded_conv_10/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_77 (Multiply)          (None, 14, 14, 480)  0           activation_110[0][0]             
                                                                 expanded_conv_10/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_10/depthwise (Dep (None, 14, 14, 480)  4320        multiply_77[0][0]                
__________________________________________________________________________________________________
expanded_conv_10/depthwise/Batc (None, 14, 14, 480)  1920        expanded_conv_10/depthwise[0][0] 
__________________________________________________________________________________________________
activation_111 (Activation)     (None, 14, 14, 480)  0           expanded_conv_10/depthwise/BatchN
__________________________________________________________________________________________________
multiply_78 (Multiply)          (None, 14, 14, 480)  0           activation_111[0][0]             
                                                                 expanded_conv_10/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 480)          0           multiply_78[0][0]                
__________________________________________________________________________________________________
reshape_36 (Reshape)            (None, 1, 1, 480)    0           expanded_conv_10/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 120)    57720       reshape_36[0][0]                 
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 120)    0           expanded_conv_10/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 480)    58080       expanded_conv_10/squeeze_excite/R
__________________________________________________________________________________________________
activation_112 (Activation)     (None, 1, 1, 480)    0           expanded_conv_10/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 14, 14, 480)  0           multiply_78[0][0]                
                                                                 activation_112[0][0]             
__________________________________________________________________________________________________
expanded_conv_10/project (Conv2 (None, 14, 14, 112)  53760       expanded_conv_10/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_10/project/BatchN (None, 14, 14, 112)  448         expanded_conv_10/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_11/expand (Conv2D (None, 14, 14, 672)  75264       expanded_conv_10/project/BatchNor
__________________________________________________________________________________________________
expanded_conv_11/expamd/BatchNo (None, 14, 14, 672)  2688        expanded_conv_11/expand[0][0]    
__________________________________________________________________________________________________
activation_113 (Activation)     (None, 14, 14, 672)  0           expanded_conv_11/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_79 (Multiply)          (None, 14, 14, 672)  0           activation_113[0][0]             
                                                                 expanded_conv_11/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_11/depthwise (Dep (None, 14, 14, 672)  6048        multiply_79[0][0]                
__________________________________________________________________________________________________
expanded_conv_11/depthwise/Batc (None, 14, 14, 672)  2688        expanded_conv_11/depthwise[0][0] 
__________________________________________________________________________________________________
activation_114 (Activation)     (None, 14, 14, 672)  0           expanded_conv_11/depthwise/BatchN
__________________________________________________________________________________________________
multiply_80 (Multiply)          (None, 14, 14, 672)  0           activation_114[0][0]             
                                                                 expanded_conv_11/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_11/squeeze_excite (None, 672)          0           multiply_80[0][0]                
__________________________________________________________________________________________________
reshape_37 (Reshape)            (None, 1, 1, 672)    0           expanded_conv_11/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_11/squeeze_excite (None, 1, 1, 168)    113064      reshape_37[0][0]                 
__________________________________________________________________________________________________
expanded_conv_11/squeeze_excite (None, 1, 1, 168)    0           expanded_conv_11/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_11/squeeze_excite (None, 1, 1, 672)    113568      expanded_conv_11/squeeze_excite/R
__________________________________________________________________________________________________
activation_115 (Activation)     (None, 1, 1, 672)    0           expanded_conv_11/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_11/squeeze_excite (None, 14, 14, 672)  0           multiply_80[0][0]                
                                                                 activation_115[0][0]             
__________________________________________________________________________________________________
expanded_conv_11/project (Conv2 (None, 14, 14, 112)  75264       expanded_conv_11/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_11/project/BatchN (None, 14, 14, 112)  448         expanded_conv_11/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_11/Add (Add)      (None, 14, 14, 112)  0           expanded_conv_10/project/BatchNor
                                                                 expanded_conv_11/project/BatchNor
__________________________________________________________________________________________________
expanded_conv_12/expand (Conv2D (None, 14, 14, 672)  75264       expanded_conv_11/Add[0][0]       
__________________________________________________________________________________________________
expanded_conv_12/expamd/BatchNo (None, 14, 14, 672)  2688        expanded_conv_12/expand[0][0]    
__________________________________________________________________________________________________
activation_116 (Activation)     (None, 14, 14, 672)  0           expanded_conv_12/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_81 (Multiply)          (None, 14, 14, 672)  0           activation_116[0][0]             
                                                                 expanded_conv_12/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_12/depthwise/pad  (None, 17, 17, 672)  0           multiply_81[0][0]                
__________________________________________________________________________________________________
expanded_conv_12/depthwise (Dep (None, 7, 7, 672)    16800       expanded_conv_12/depthwise/pad[0]
__________________________________________________________________________________________________
expanded_conv_12/depthwise/Batc (None, 7, 7, 672)    2688        expanded_conv_12/depthwise[0][0] 
__________________________________________________________________________________________________
activation_117 (Activation)     (None, 7, 7, 672)    0           expanded_conv_12/depthwise/BatchN
__________________________________________________________________________________________________
multiply_82 (Multiply)          (None, 7, 7, 672)    0           activation_117[0][0]             
                                                                 expanded_conv_12/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_12/squeeze_excite (None, 672)          0           multiply_82[0][0]                
__________________________________________________________________________________________________
reshape_38 (Reshape)            (None, 1, 1, 672)    0           expanded_conv_12/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_12/squeeze_excite (None, 1, 1, 168)    113064      reshape_38[0][0]                 
__________________________________________________________________________________________________
expanded_conv_12/squeeze_excite (None, 1, 1, 168)    0           expanded_conv_12/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_12/squeeze_excite (None, 1, 1, 672)    113568      expanded_conv_12/squeeze_excite/R
__________________________________________________________________________________________________
activation_118 (Activation)     (None, 1, 1, 672)    0           expanded_conv_12/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_12/squeeze_excite (None, 7, 7, 672)    0           multiply_82[0][0]                
                                                                 activation_118[0][0]             
__________________________________________________________________________________________________
expanded_conv_12/project (Conv2 (None, 7, 7, 160)    107520      expanded_conv_12/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_12/project/BatchN (None, 7, 7, 160)    640         expanded_conv_12/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_13/expand (Conv2D (None, 7, 7, 960)    153600      expanded_conv_12/project/BatchNor
__________________________________________________________________________________________________
expanded_conv_13/expamd/BatchNo (None, 7, 7, 960)    3840        expanded_conv_13/expand[0][0]    
__________________________________________________________________________________________________
activation_119 (Activation)     (None, 7, 7, 960)    0           expanded_conv_13/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_83 (Multiply)          (None, 7, 7, 960)    0           activation_119[0][0]             
                                                                 expanded_conv_13/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_13/depthwise (Dep (None, 7, 7, 960)    24000       multiply_83[0][0]                
__________________________________________________________________________________________________
expanded_conv_13/depthwise/Batc (None, 7, 7, 960)    3840        expanded_conv_13/depthwise[0][0] 
__________________________________________________________________________________________________
activation_120 (Activation)     (None, 7, 7, 960)    0           expanded_conv_13/depthwise/BatchN
__________________________________________________________________________________________________
multiply_84 (Multiply)          (None, 7, 7, 960)    0           activation_120[0][0]             
                                                                 expanded_conv_13/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_13/squeeze_excite (None, 960)          0           multiply_84[0][0]                
__________________________________________________________________________________________________
reshape_39 (Reshape)            (None, 1, 1, 960)    0           expanded_conv_13/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_13/squeeze_excite (None, 1, 1, 240)    230640      reshape_39[0][0]                 
__________________________________________________________________________________________________
expanded_conv_13/squeeze_excite (None, 1, 1, 240)    0           expanded_conv_13/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_13/squeeze_excite (None, 1, 1, 960)    231360      expanded_conv_13/squeeze_excite/R
__________________________________________________________________________________________________
activation_121 (Activation)     (None, 1, 1, 960)    0           expanded_conv_13/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_13/squeeze_excite (None, 7, 7, 960)    0           multiply_84[0][0]                
                                                                 activation_121[0][0]             
__________________________________________________________________________________________________
expanded_conv_13/project (Conv2 (None, 7, 7, 160)    153600      expanded_conv_13/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_13/project/BatchN (None, 7, 7, 160)    640         expanded_conv_13/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_13/Add (Add)      (None, 7, 7, 160)    0           expanded_conv_12/project/BatchNor
                                                                 expanded_conv_13/project/BatchNor
__________________________________________________________________________________________________
expanded_conv_14/expand (Conv2D (None, 7, 7, 960)    153600      expanded_conv_13/Add[0][0]       
__________________________________________________________________________________________________
expanded_conv_14/expamd/BatchNo (None, 7, 7, 960)    3840        expanded_conv_14/expand[0][0]    
__________________________________________________________________________________________________
activation_122 (Activation)     (None, 7, 7, 960)    0           expanded_conv_14/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_85 (Multiply)          (None, 7, 7, 960)    0           activation_122[0][0]             
                                                                 expanded_conv_14/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_14/depthwise (Dep (None, 7, 7, 960)    24000       multiply_85[0][0]                
__________________________________________________________________________________________________
expanded_conv_14/depthwise/Batc (None, 7, 7, 960)    3840        expanded_conv_14/depthwise[0][0] 
__________________________________________________________________________________________________
activation_123 (Activation)     (None, 7, 7, 960)    0           expanded_conv_14/depthwise/BatchN
__________________________________________________________________________________________________
multiply_86 (Multiply)          (None, 7, 7, 960)    0           activation_123[0][0]             
                                                                 expanded_conv_14/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_14/squeeze_excite (None, 960)          0           multiply_86[0][0]                
__________________________________________________________________________________________________
reshape_40 (Reshape)            (None, 1, 1, 960)    0           expanded_conv_14/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_14/squeeze_excite (None, 1, 1, 240)    230640      reshape_40[0][0]                 
__________________________________________________________________________________________________
expanded_conv_14/squeeze_excite (None, 1, 1, 240)    0           expanded_conv_14/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_14/squeeze_excite (None, 1, 1, 960)    231360      expanded_conv_14/squeeze_excite/R
__________________________________________________________________________________________________
activation_124 (Activation)     (None, 1, 1, 960)    0           expanded_conv_14/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_14/squeeze_excite (None, 7, 7, 960)    0           multiply_86[0][0]                
                                                                 activation_124[0][0]             
__________________________________________________________________________________________________
expanded_conv_14/project (Conv2 (None, 7, 7, 160)    153600      expanded_conv_14/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_14/project/BatchN (None, 7, 7, 160)    640         expanded_conv_14/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_14/Add (Add)      (None, 7, 7, 160)    0           expanded_conv_13/Add[0][0]       
                                                                 expanded_conv_14/project/BatchNor
__________________________________________________________________________________________________
Conv_1 (Conv2D)                 (None, 7, 7, 960)    153600      expanded_conv_14/Add[0][0]       
__________________________________________________________________________________________________
Conv_1/BatchNorm (BatchNormaliz (None, 7, 7, 960)    3840        Conv_1[0][0]                     
__________________________________________________________________________________________________
activation_125 (Activation)     (None, 7, 7, 960)    0           Conv_1/BatchNorm[0][0]           
__________________________________________________________________________________________________
multiply_87 (Multiply)          (None, 7, 7, 960)    0           activation_125[0][0]             
                                                                 Conv_1/BatchNorm[0][0]           
__________________________________________________________________________________________________
global_average_pooling2d_3 (Glo (None, 960)          0           multiply_87[0][0]                
__________________________________________________________________________________________________
reshape_41 (Reshape)            (None, 1, 1, 960)    0           global_average_pooling2d_3[0][0] 
__________________________________________________________________________________________________
Conv_2 (Conv2D)                 (None, 1, 1, 1280)   1230080     reshape_41[0][0]                 
__________________________________________________________________________________________________
activation_126 (Activation)     (None, 1, 1, 1280)   0           Conv_2[0][0]                     
__________________________________________________________________________________________________
multiply_88 (Multiply)          (None, 1, 1, 1280)   0           activation_126[0][0]             
                                                                 Conv_2[0][0]                     
__________________________________________________________________________________________________
Logits/Conv2d_1c_1x1 (Conv2D)   (None, 1, 1, 1000)   1281000     multiply_88[0][0]                
__________________________________________________________________________________________________
flatten (Flatten)               (None, 1000)         0           Logits/Conv2d_1c_1x1[0][0]       
__________________________________________________________________________________________________
Predictions (Softmax)           (None, 1000)         0           flatten[0][0]                    
==================================================================================================
Total params: 5,507,432
Trainable params: 5,483,032
Non-trainable params: 24,400

5.7 MobileNetV3-Small模型

def mobilenet_v3_small(input_shape=(224,224,3),
                       num_class=1000,
                       alpha=1.0,
                       include_top=True):  #是否需要包含最后的全连接层
    input=layers.Input(shape=input_shape)
    
    x=layers.Conv2D(filters=16,kernel_size=3,strides=(2,2),padding='same',
                   use_bias=False,name='Conv')(input)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name='Conv/BatchNorm')(x)
    x=hard_swish(x)
    
    #11个bneck
    # input, input_c, k_size, expand_c,out_c, use_se, activation, stride, block_id,alpha
    x = _inverted_res_block(x, 16, 3, 16, 16, True, "RE", 2, 0 ,alpha)
    x = _inverted_res_block(x, 16, 3, 72, 24, False, "RE", 2, 1 ,alpha)
    x = _inverted_res_block(x, 24, 3, 88, 24, False, "RE", 1, 2 ,alpha)
    x = _inverted_res_block(x, 24, 5, 96, 40, True, "HS", 2, 3 ,alpha)
    x = _inverted_res_block(x, 40, 5, 240, 40, True, "HS", 1, 4 ,alpha)
    x = _inverted_res_block(x, 40, 5, 240, 40, True, "HS", 1, 5 ,alpha)
    x = _inverted_res_block(x, 40, 5, 120, 48, True, "HS", 1, 6 ,alpha)
    x = _inverted_res_block(x, 48, 5, 144, 48, True, "HS", 1, 7 ,alpha)
    x = _inverted_res_block(x, 48, 5, 288, 96, True, "HS", 2, 8 ,alpha)
    x = _inverted_res_block(x, 96, 5, 576, 96, True, "HS", 1, 9 ,alpha)
    x = _inverted_res_block(x, 96, 5, 576, 96, True, "HS", 1, 10 ,alpha)
    
    last_c=_make_divisible(96*6*alpha)
    # 这里论文的表中给的是1280,但是谷歌官方实现源码确写的是1024,我也很疑惑啊
    last_point_c=_make_divisible(1024*alpha)
    
    x=layers.Conv2D(filters=last_c,
                   kernel_size=1,
                   padding='same',
                   use_bias=False,
                   name='Conv_1')(x)
    x=layers.BatchNormalization(epsilon=1e-3,momentum=0.999,name='Conv_1/BatchNorm')(x)
    x=hard_swish(x)
    
    if include_top is True:
        x=layers.GlobalAveragePooling2D()(x)
        x=layers.Reshape((1,1,last_c))(x)
        
        # fc1
        x=layers.Conv2D(filters=last_point_c,
                       kernel_size=1,
                       padding='same',
                       name='Conv_2')(x)
        x=hard_swish(x)
        
        # fc2
        x = layers.Conv2D(filters=num_class,
                          kernel_size=1,
                          padding='same',
                          name='Logits/Conv2d_1c_1x1')(x)
        x = layers.Flatten()(x)
        x = layers.Softmax(name="Predictions")(x)
    model=Model(input,x,name='MobileNetV3-Small')
    return model
model_small=mobilenet_v3_small()
model_small.summary()
Model: "MobileNetV3-Small"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_2 (InputLayer)            [(None, 224, 224, 3) 0                                            
__________________________________________________________________________________________________
Conv (Conv2D)                   (None, 112, 112, 16) 432         input_2[0][0]                    
__________________________________________________________________________________________________
Conv/BatchNorm (BatchNormalizat (None, 112, 112, 16) 64          Conv[0][0]                       
__________________________________________________________________________________________________
activation_29 (Activation)      (None, 112, 112, 16) 0           Conv/BatchNorm[0][0]             
__________________________________________________________________________________________________
multiply_21 (Multiply)          (None, 112, 112, 16) 0           activation_29[0][0]              
                                                                 Conv/BatchNorm[0][0]             
__________________________________________________________________________________________________
expanded_convdepthwise/pad (Zer (None, 113, 113, 16) 0           multiply_21[0][0]                
__________________________________________________________________________________________________
expanded_convdepthwise (Depthwi (None, 56, 56, 16)   144         expanded_convdepthwise/pad[0][0] 
__________________________________________________________________________________________________
expanded_convdepthwise/BatchNor (None, 56, 56, 16)   64          expanded_convdepthwise[0][0]     
__________________________________________________________________________________________________
re_lu_6 (ReLU)                  (None, 56, 56, 16)   0           expanded_convdepthwise/BatchNorm[
__________________________________________________________________________________________________
expanded_convsqueeze_excite/Avg (None, 16)           0           re_lu_6[0][0]                    
__________________________________________________________________________________________________
reshape_9 (Reshape)             (None, 1, 1, 16)     0           expanded_convsqueeze_excite/AvgPo
__________________________________________________________________________________________________
expanded_convsqueeze_excite/Con (None, 1, 1, 8)      136         reshape_9[0][0]                  
__________________________________________________________________________________________________
expanded_convsqueeze_excite/Rel (None, 1, 1, 8)      0           expanded_convsqueeze_excite/Conv[
__________________________________________________________________________________________________
expanded_convsqueeze_excite/Con (None, 1, 1, 16)     144         expanded_convsqueeze_excite/Relu[
__________________________________________________________________________________________________
activation_30 (Activation)      (None, 1, 1, 16)     0           expanded_convsqueeze_excite/Conv_
__________________________________________________________________________________________________
expanded_convsqueeze_excite/Mul (None, 56, 56, 16)   0           re_lu_6[0][0]                    
                                                                 activation_30[0][0]              
__________________________________________________________________________________________________
expanded_convproject (Conv2D)   (None, 56, 56, 16)   256         expanded_convsqueeze_excite/Mul[0
__________________________________________________________________________________________________
expanded_convproject/BatchNorm  (None, 56, 56, 16)   64          expanded_convproject[0][0]       
__________________________________________________________________________________________________
expanded_conv_1/expand (Conv2D) (None, 56, 56, 72)   1152        expanded_convproject/BatchNorm[0]
__________________________________________________________________________________________________
expanded_conv_1/expamd/BatchNor (None, 56, 56, 72)   288         expanded_conv_1/expand[0][0]     
__________________________________________________________________________________________________
re_lu_7 (ReLU)                  multiple             0           expanded_conv_1/expamd/BatchNorm[
                                                                 expanded_conv_1/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_1/depthwise/pad ( (None, 57, 57, 72)   0           re_lu_7[0][0]                    
__________________________________________________________________________________________________
expanded_conv_1/depthwise (Dept (None, 28, 28, 72)   648         expanded_conv_1/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_1/depthwise/Batch (None, 28, 28, 72)   288         expanded_conv_1/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_1/project (Conv2D (None, 28, 28, 24)   1728        re_lu_7[1][0]                    
__________________________________________________________________________________________________
expanded_conv_1/project/BatchNo (None, 28, 28, 24)   96          expanded_conv_1/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_2/expand (Conv2D) (None, 28, 28, 88)   2112        expanded_conv_1/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_2/expamd/BatchNor (None, 28, 28, 88)   352         expanded_conv_2/expand[0][0]     
__________________________________________________________________________________________________
re_lu_8 (ReLU)                  (None, 28, 28, 88)   0           expanded_conv_2/expamd/BatchNorm[
                                                                 expanded_conv_2/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_2/depthwise (Dept (None, 28, 28, 88)   792         re_lu_8[0][0]                    
__________________________________________________________________________________________________
expanded_conv_2/depthwise/Batch (None, 28, 28, 88)   352         expanded_conv_2/depthwise[0][0]  
__________________________________________________________________________________________________
expanded_conv_2/project (Conv2D (None, 28, 28, 24)   2112        re_lu_8[1][0]                    
__________________________________________________________________________________________________
expanded_conv_2/project/BatchNo (None, 28, 28, 24)   96          expanded_conv_2/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_2/Add (Add)       (None, 28, 28, 24)   0           expanded_conv_1/project/BatchNorm
                                                                 expanded_conv_2/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_3/expand (Conv2D) (None, 28, 28, 96)   2304        expanded_conv_2/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_3/expamd/BatchNor (None, 28, 28, 96)   384         expanded_conv_3/expand[0][0]     
__________________________________________________________________________________________________
activation_31 (Activation)      (None, 28, 28, 96)   0           expanded_conv_3/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_22 (Multiply)          (None, 28, 28, 96)   0           activation_31[0][0]              
                                                                 expanded_conv_3/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_3/depthwise/pad ( (None, 31, 31, 96)   0           multiply_22[0][0]                
__________________________________________________________________________________________________
expanded_conv_3/depthwise (Dept (None, 14, 14, 96)   2400        expanded_conv_3/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_3/depthwise/Batch (None, 14, 14, 96)   384         expanded_conv_3/depthwise[0][0]  
__________________________________________________________________________________________________
activation_32 (Activation)      (None, 14, 14, 96)   0           expanded_conv_3/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_23 (Multiply)          (None, 14, 14, 96)   0           activation_32[0][0]              
                                                                 expanded_conv_3/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 96)           0           multiply_23[0][0]                
__________________________________________________________________________________________________
reshape_10 (Reshape)            (None, 1, 1, 96)     0           expanded_conv_3/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 24)     2328        reshape_10[0][0]                 
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 24)     0           expanded_conv_3/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 1, 1, 96)     2400        expanded_conv_3/squeeze_excite/Re
__________________________________________________________________________________________________
activation_33 (Activation)      (None, 1, 1, 96)     0           expanded_conv_3/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_3/squeeze_excite/ (None, 14, 14, 96)   0           multiply_23[0][0]                
                                                                 activation_33[0][0]              
__________________________________________________________________________________________________
expanded_conv_3/project (Conv2D (None, 14, 14, 40)   3840        expanded_conv_3/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_3/project/BatchNo (None, 14, 14, 40)   160         expanded_conv_3/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_4/expand (Conv2D) (None, 14, 14, 240)  9600        expanded_conv_3/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_4/expamd/BatchNor (None, 14, 14, 240)  960         expanded_conv_4/expand[0][0]     
__________________________________________________________________________________________________
activation_34 (Activation)      (None, 14, 14, 240)  0           expanded_conv_4/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_24 (Multiply)          (None, 14, 14, 240)  0           activation_34[0][0]              
                                                                 expanded_conv_4/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_4/depthwise (Dept (None, 14, 14, 240)  6000        multiply_24[0][0]                
__________________________________________________________________________________________________
expanded_conv_4/depthwise/Batch (None, 14, 14, 240)  960         expanded_conv_4/depthwise[0][0]  
__________________________________________________________________________________________________
activation_35 (Activation)      (None, 14, 14, 240)  0           expanded_conv_4/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_25 (Multiply)          (None, 14, 14, 240)  0           activation_35[0][0]              
                                                                 expanded_conv_4/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 240)          0           multiply_25[0][0]                
__________________________________________________________________________________________________
reshape_11 (Reshape)            (None, 1, 1, 240)    0           expanded_conv_4/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 64)     15424       reshape_11[0][0]                 
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 64)     0           expanded_conv_4/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 1, 1, 240)    15600       expanded_conv_4/squeeze_excite/Re
__________________________________________________________________________________________________
activation_36 (Activation)      (None, 1, 1, 240)    0           expanded_conv_4/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_4/squeeze_excite/ (None, 14, 14, 240)  0           multiply_25[0][0]                
                                                                 activation_36[0][0]              
__________________________________________________________________________________________________
expanded_conv_4/project (Conv2D (None, 14, 14, 40)   9600        expanded_conv_4/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_4/project/BatchNo (None, 14, 14, 40)   160         expanded_conv_4/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_4/Add (Add)       (None, 14, 14, 40)   0           expanded_conv_3/project/BatchNorm
                                                                 expanded_conv_4/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_5/expand (Conv2D) (None, 14, 14, 240)  9600        expanded_conv_4/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_5/expamd/BatchNor (None, 14, 14, 240)  960         expanded_conv_5/expand[0][0]     
__________________________________________________________________________________________________
activation_37 (Activation)      (None, 14, 14, 240)  0           expanded_conv_5/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_26 (Multiply)          (None, 14, 14, 240)  0           activation_37[0][0]              
                                                                 expanded_conv_5/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_5/depthwise (Dept (None, 14, 14, 240)  6000        multiply_26[0][0]                
__________________________________________________________________________________________________
expanded_conv_5/depthwise/Batch (None, 14, 14, 240)  960         expanded_conv_5/depthwise[0][0]  
__________________________________________________________________________________________________
activation_38 (Activation)      (None, 14, 14, 240)  0           expanded_conv_5/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_27 (Multiply)          (None, 14, 14, 240)  0           activation_38[0][0]              
                                                                 expanded_conv_5/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 240)          0           multiply_27[0][0]                
__________________________________________________________________________________________________
reshape_12 (Reshape)            (None, 1, 1, 240)    0           expanded_conv_5/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 64)     15424       reshape_12[0][0]                 
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 64)     0           expanded_conv_5/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 1, 1, 240)    15600       expanded_conv_5/squeeze_excite/Re
__________________________________________________________________________________________________
activation_39 (Activation)      (None, 1, 1, 240)    0           expanded_conv_5/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_5/squeeze_excite/ (None, 14, 14, 240)  0           multiply_27[0][0]                
                                                                 activation_39[0][0]              
__________________________________________________________________________________________________
expanded_conv_5/project (Conv2D (None, 14, 14, 40)   9600        expanded_conv_5/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_5/project/BatchNo (None, 14, 14, 40)   160         expanded_conv_5/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_5/Add (Add)       (None, 14, 14, 40)   0           expanded_conv_4/Add[0][0]        
                                                                 expanded_conv_5/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_6/expand (Conv2D) (None, 14, 14, 120)  4800        expanded_conv_5/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_6/expamd/BatchNor (None, 14, 14, 120)  480         expanded_conv_6/expand[0][0]     
__________________________________________________________________________________________________
activation_40 (Activation)      (None, 14, 14, 120)  0           expanded_conv_6/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_28 (Multiply)          (None, 14, 14, 120)  0           activation_40[0][0]              
                                                                 expanded_conv_6/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_6/depthwise (Dept (None, 14, 14, 120)  3000        multiply_28[0][0]                
__________________________________________________________________________________________________
expanded_conv_6/depthwise/Batch (None, 14, 14, 120)  480         expanded_conv_6/depthwise[0][0]  
__________________________________________________________________________________________________
activation_41 (Activation)      (None, 14, 14, 120)  0           expanded_conv_6/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_29 (Multiply)          (None, 14, 14, 120)  0           activation_41[0][0]              
                                                                 expanded_conv_6/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_6/squeeze_excite/ (None, 120)          0           multiply_29[0][0]                
__________________________________________________________________________________________________
reshape_13 (Reshape)            (None, 1, 1, 120)    0           expanded_conv_6/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_6/squeeze_excite/ (None, 1, 1, 32)     3872        reshape_13[0][0]                 
__________________________________________________________________________________________________
expanded_conv_6/squeeze_excite/ (None, 1, 1, 32)     0           expanded_conv_6/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_6/squeeze_excite/ (None, 1, 1, 120)    3960        expanded_conv_6/squeeze_excite/Re
__________________________________________________________________________________________________
activation_42 (Activation)      (None, 1, 1, 120)    0           expanded_conv_6/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_6/squeeze_excite/ (None, 14, 14, 120)  0           multiply_29[0][0]                
                                                                 activation_42[0][0]              
__________________________________________________________________________________________________
expanded_conv_6/project (Conv2D (None, 14, 14, 48)   5760        expanded_conv_6/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_6/project/BatchNo (None, 14, 14, 48)   192         expanded_conv_6/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_7/expand (Conv2D) (None, 14, 14, 144)  6912        expanded_conv_6/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_7/expamd/BatchNor (None, 14, 14, 144)  576         expanded_conv_7/expand[0][0]     
__________________________________________________________________________________________________
activation_43 (Activation)      (None, 14, 14, 144)  0           expanded_conv_7/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_30 (Multiply)          (None, 14, 14, 144)  0           activation_43[0][0]              
                                                                 expanded_conv_7/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_7/depthwise (Dept (None, 14, 14, 144)  3600        multiply_30[0][0]                
__________________________________________________________________________________________________
expanded_conv_7/depthwise/Batch (None, 14, 14, 144)  576         expanded_conv_7/depthwise[0][0]  
__________________________________________________________________________________________________
activation_44 (Activation)      (None, 14, 14, 144)  0           expanded_conv_7/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_31 (Multiply)          (None, 14, 14, 144)  0           activation_44[0][0]              
                                                                 expanded_conv_7/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_7/squeeze_excite/ (None, 144)          0           multiply_31[0][0]                
__________________________________________________________________________________________________
reshape_14 (Reshape)            (None, 1, 1, 144)    0           expanded_conv_7/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_7/squeeze_excite/ (None, 1, 1, 40)     5800        reshape_14[0][0]                 
__________________________________________________________________________________________________
expanded_conv_7/squeeze_excite/ (None, 1, 1, 40)     0           expanded_conv_7/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_7/squeeze_excite/ (None, 1, 1, 144)    5904        expanded_conv_7/squeeze_excite/Re
__________________________________________________________________________________________________
activation_45 (Activation)      (None, 1, 1, 144)    0           expanded_conv_7/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_7/squeeze_excite/ (None, 14, 14, 144)  0           multiply_31[0][0]                
                                                                 activation_45[0][0]              
__________________________________________________________________________________________________
expanded_conv_7/project (Conv2D (None, 14, 14, 48)   6912        expanded_conv_7/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_7/project/BatchNo (None, 14, 14, 48)   192         expanded_conv_7/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_7/Add (Add)       (None, 14, 14, 48)   0           expanded_conv_6/project/BatchNorm
                                                                 expanded_conv_7/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_8/expand (Conv2D) (None, 14, 14, 288)  13824       expanded_conv_7/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_8/expamd/BatchNor (None, 14, 14, 288)  1152        expanded_conv_8/expand[0][0]     
__________________________________________________________________________________________________
activation_46 (Activation)      (None, 14, 14, 288)  0           expanded_conv_8/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_32 (Multiply)          (None, 14, 14, 288)  0           activation_46[0][0]              
                                                                 expanded_conv_8/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_8/depthwise/pad ( (None, 17, 17, 288)  0           multiply_32[0][0]                
__________________________________________________________________________________________________
expanded_conv_8/depthwise (Dept (None, 7, 7, 288)    7200        expanded_conv_8/depthwise/pad[0][
__________________________________________________________________________________________________
expanded_conv_8/depthwise/Batch (None, 7, 7, 288)    1152        expanded_conv_8/depthwise[0][0]  
__________________________________________________________________________________________________
activation_47 (Activation)      (None, 7, 7, 288)    0           expanded_conv_8/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_33 (Multiply)          (None, 7, 7, 288)    0           activation_47[0][0]              
                                                                 expanded_conv_8/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_8/squeeze_excite/ (None, 288)          0           multiply_33[0][0]                
__________________________________________________________________________________________________
reshape_15 (Reshape)            (None, 1, 1, 288)    0           expanded_conv_8/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_8/squeeze_excite/ (None, 1, 1, 72)     20808       reshape_15[0][0]                 
__________________________________________________________________________________________________
expanded_conv_8/squeeze_excite/ (None, 1, 1, 72)     0           expanded_conv_8/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_8/squeeze_excite/ (None, 1, 1, 288)    21024       expanded_conv_8/squeeze_excite/Re
__________________________________________________________________________________________________
activation_48 (Activation)      (None, 1, 1, 288)    0           expanded_conv_8/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_8/squeeze_excite/ (None, 7, 7, 288)    0           multiply_33[0][0]                
                                                                 activation_48[0][0]              
__________________________________________________________________________________________________
expanded_conv_8/project (Conv2D (None, 7, 7, 96)     27648       expanded_conv_8/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_8/project/BatchNo (None, 7, 7, 96)     384         expanded_conv_8/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_9/expand (Conv2D) (None, 7, 7, 576)    55296       expanded_conv_8/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_9/expamd/BatchNor (None, 7, 7, 576)    2304        expanded_conv_9/expand[0][0]     
__________________________________________________________________________________________________
activation_49 (Activation)      (None, 7, 7, 576)    0           expanded_conv_9/expamd/BatchNorm[
__________________________________________________________________________________________________
multiply_34 (Multiply)          (None, 7, 7, 576)    0           activation_49[0][0]              
                                                                 expanded_conv_9/expamd/BatchNorm[
__________________________________________________________________________________________________
expanded_conv_9/depthwise (Dept (None, 7, 7, 576)    14400       multiply_34[0][0]                
__________________________________________________________________________________________________
expanded_conv_9/depthwise/Batch (None, 7, 7, 576)    2304        expanded_conv_9/depthwise[0][0]  
__________________________________________________________________________________________________
activation_50 (Activation)      (None, 7, 7, 576)    0           expanded_conv_9/depthwise/BatchNo
__________________________________________________________________________________________________
multiply_35 (Multiply)          (None, 7, 7, 576)    0           activation_50[0][0]              
                                                                 expanded_conv_9/depthwise/BatchNo
__________________________________________________________________________________________________
expanded_conv_9/squeeze_excite/ (None, 576)          0           multiply_35[0][0]                
__________________________________________________________________________________________________
reshape_16 (Reshape)            (None, 1, 1, 576)    0           expanded_conv_9/squeeze_excite/Av
__________________________________________________________________________________________________
expanded_conv_9/squeeze_excite/ (None, 1, 1, 144)    83088       reshape_16[0][0]                 
__________________________________________________________________________________________________
expanded_conv_9/squeeze_excite/ (None, 1, 1, 144)    0           expanded_conv_9/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_9/squeeze_excite/ (None, 1, 1, 576)    83520       expanded_conv_9/squeeze_excite/Re
__________________________________________________________________________________________________
activation_51 (Activation)      (None, 1, 1, 576)    0           expanded_conv_9/squeeze_excite/Co
__________________________________________________________________________________________________
expanded_conv_9/squeeze_excite/ (None, 7, 7, 576)    0           multiply_35[0][0]                
                                                                 activation_51[0][0]              
__________________________________________________________________________________________________
expanded_conv_9/project (Conv2D (None, 7, 7, 96)     55296       expanded_conv_9/squeeze_excite/Mu
__________________________________________________________________________________________________
expanded_conv_9/project/BatchNo (None, 7, 7, 96)     384         expanded_conv_9/project[0][0]    
__________________________________________________________________________________________________
expanded_conv_9/Add (Add)       (None, 7, 7, 96)     0           expanded_conv_8/project/BatchNorm
                                                                 expanded_conv_9/project/BatchNorm
__________________________________________________________________________________________________
expanded_conv_10/expand (Conv2D (None, 7, 7, 576)    55296       expanded_conv_9/Add[0][0]        
__________________________________________________________________________________________________
expanded_conv_10/expamd/BatchNo (None, 7, 7, 576)    2304        expanded_conv_10/expand[0][0]    
__________________________________________________________________________________________________
activation_52 (Activation)      (None, 7, 7, 576)    0           expanded_conv_10/expamd/BatchNorm
__________________________________________________________________________________________________
multiply_36 (Multiply)          (None, 7, 7, 576)    0           activation_52[0][0]              
                                                                 expanded_conv_10/expamd/BatchNorm
__________________________________________________________________________________________________
expanded_conv_10/depthwise (Dep (None, 7, 7, 576)    14400       multiply_36[0][0]                
__________________________________________________________________________________________________
expanded_conv_10/depthwise/Batc (None, 7, 7, 576)    2304        expanded_conv_10/depthwise[0][0] 
__________________________________________________________________________________________________
activation_53 (Activation)      (None, 7, 7, 576)    0           expanded_conv_10/depthwise/BatchN
__________________________________________________________________________________________________
multiply_37 (Multiply)          (None, 7, 7, 576)    0           activation_53[0][0]              
                                                                 expanded_conv_10/depthwise/BatchN
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 576)          0           multiply_37[0][0]                
__________________________________________________________________________________________________
reshape_17 (Reshape)            (None, 1, 1, 576)    0           expanded_conv_10/squeeze_excite/A
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 144)    83088       reshape_17[0][0]                 
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 144)    0           expanded_conv_10/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 1, 1, 576)    83520       expanded_conv_10/squeeze_excite/R
__________________________________________________________________________________________________
activation_54 (Activation)      (None, 1, 1, 576)    0           expanded_conv_10/squeeze_excite/C
__________________________________________________________________________________________________
expanded_conv_10/squeeze_excite (None, 7, 7, 576)    0           multiply_37[0][0]                
                                                                 activation_54[0][0]              
__________________________________________________________________________________________________
expanded_conv_10/project (Conv2 (None, 7, 7, 96)     55296       expanded_conv_10/squeeze_excite/M
__________________________________________________________________________________________________
expanded_conv_10/project/BatchN (None, 7, 7, 96)     384         expanded_conv_10/project[0][0]   
__________________________________________________________________________________________________
expanded_conv_10/Add (Add)      (None, 7, 7, 96)     0           expanded_conv_9/Add[0][0]        
                                                                 expanded_conv_10/project/BatchNor
__________________________________________________________________________________________________
Conv_1 (Conv2D)                 (None, 7, 7, 576)    55296       expanded_conv_10/Add[0][0]       
__________________________________________________________________________________________________
Conv_1/BatchNorm (BatchNormaliz (None, 7, 7, 576)    2304        Conv_1[0][0]                     
__________________________________________________________________________________________________
activation_55 (Activation)      (None, 7, 7, 576)    0           Conv_1/BatchNorm[0][0]           
__________________________________________________________________________________________________
multiply_38 (Multiply)          (None, 7, 7, 576)    0           activation_55[0][0]              
                                                                 Conv_1/BatchNorm[0][0]           
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 576)          0           multiply_38[0][0]                
__________________________________________________________________________________________________
reshape_18 (Reshape)            (None, 1, 1, 576)    0           global_average_pooling2d_1[0][0] 
__________________________________________________________________________________________________
Conv_2 (Conv2D)                 (None, 1, 1, 1024)   590848      reshape_18[0][0]                 
__________________________________________________________________________________________________
activation_56 (Activation)      (None, 1, 1, 1024)   0           Conv_2[0][0]                     
__________________________________________________________________________________________________
multiply_39 (Multiply)          (None, 1, 1, 1024)   0           activation_56[0][0]              
                                                                 Conv_2[0][0]                     
__________________________________________________________________________________________________
Logits/Conv2d_1c_1x1 (Conv2D)   (None, 1, 1, 1000)   1025000     multiply_39[0][0]                
__________________________________________________________________________________________________
flatten_1 (Flatten)             (None, 1000)         0           Logits/Conv2d_1c_1x1[0][0]       
__________________________________________________________________________________________________
Predictions (Softmax)           (None, 1000)         0           flatten_1[0][0]                  
==================================================================================================
Total params: 2,554,968
Trainable params: 2,542,856
Non-trainable params: 12,112
__________________________________________________________________________________________________

5.8 MobileNetV3-Large模型结构图

5.9 MobileNetV3-Small模型结构图

References

Howard A, Sandler M, Chu G, et al. Searching for mobilenetv3[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2019: 1314-1324.

MobileNetV3的Tensorflow官方代码

MobileNetV3 代码复现,网络解析,附Tensorflow完整代码

睿智的目标检测47——Keras 利用mobilenet系列(v1,v2,v3)搭建yolov4目标检测平台

深度学习之图像分类(十二)--MobileNetV3 网络结构

MobileNetv3网络详解

https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/blob/master/tensorflow_classification/Test6_mobilenet/model_v3.py

目录
相关文章
|
12天前
|
C语言 C++ 开发者
深入探索C++:特性、代码实践及流程图解析
深入探索C++:特性、代码实践及流程图解析
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
|
6天前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
|
6天前
|
Serverless C++ 容器
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
|
6天前
|
C++ 芯片
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
|
6天前
|
编译器 C++
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】
|
6天前
|
C++
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P2】大二C++第2次过程考核(20道选择题&10道判断题&3道代码题)【解析,注释】
|
7天前
|
存储 数据安全/隐私保护 C++
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P1】大二C++第1次过程考核(3道简述题&7道代码题)【解析,注释】
|
7天前
|
前端开发 测试技术 数据处理
安卓开发中的MVP架构模式深度解析
【4月更文挑战第30天】在移动应用开发领域,模型-视图-呈现器(Model-View-Presenter, MVP)是一种广泛采用的架构模式。它旨在通过解耦组件间的直接交互来提高代码的可维护性和可测试性。本文将深入探讨MVP在安卓开发中的应用,揭示其如何促进代码的模块化,提升用户界面的响应性,并简化单元测试过程。我们将从理论概念出发,逐步过渡到实践案例,为读者提供一套行之有效的MVP实施策略。
|
7天前
|
前端开发 JavaScript
浏览器通过构建DOM树来解析HTML代码
【4月更文挑战第30天】浏览器通过构建DOM树来解析HTML代码
21 1

推荐镜像

更多