参考论文: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架构解析
1、MobileNetV3改进
- 更新了MobileNetV2中的倒残差结构
- 使用NAS搜索参数
- 重新设计耗时层结构
- 重新设计激活函数。
2、 MobileNetV1
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不相等。
3.2 普通残差块与逆残差块对比
普通残差是先使用1*1
卷积降维,再进行3*3
卷积,最后使用1*1
卷积升维(两边厚,中间薄)
逆残差块是先使用1*1
卷积进行升维,然后使用3*3
深度可分离卷积,最后使用1*1
卷积进行降维(两边薄,中间厚)
3.3 ReLU6激活函数
relu6函数在低精度浮点数下有比较好的表示性能
3.4 MobileNetV2的卷积块
==注意:这里只有当stride=1且输入特征矩阵与输出特征矩阵的shape相同时才能进行shortcut连接。==
4、MobileNetV3
4.1 SENet注意力机制
具体实现如下:
- 对输入进来的特征层进行全局平均池化。
- 然后进行两次全连接(这两个全连接可用1*1卷积代替),第一次全连接神经元个数较少,第二次全连接神经元个数和输入特征层个数相同。
- 在完成两次全连接之后,再取一次sigmoid讲值固定到0-1之间,此时我们获得了输入特征层每一个通道的权值(0-1之间)。
- 在获得这个权值之后,讲这个权值与原输入特征层相乘即可。
4.2 bneck结构
bneck结构如下所示:
它综合了以下四个特点:
- MobileNetV2的逆残差结构
- MobileNetV1的深度可分离卷积(depthwise separable convolutions)
- SENet注意力机制模型
- 用h-swish代替swish激活函数,也可以说是用h-sigmoid代替sigmoid激活函数。
4.3 网络改进
4.3.1 重新设计耗时层的结构
图 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} $$
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。这些模型分别针对高资源和低资源用例。
表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完整代码
睿智的目标检测47——Keras 利用mobilenet系列(v1,v2,v3)搭建yolov4目标检测平台