CNN模型之MobileNet

引言

MobileNet–2017年谷歌提出的专注于移动端和嵌入式设备的轻量级cnn架构。
随着人工智能的发展,cnn架构已经在计算机视觉领域取得了长足的进步。例如在每年的imagenet分类问题上,可以看到为了追求更高的精准度,研究者们提出的模型越来越深,也越来越复杂,例如残差神经网络–ResNet的层数已经达到了152层。
在这里插入图片描述

  1. 但是在某些情境下,例如嵌入式和移动端设备下,这样庞大的复杂模型是难以落到实际应用的。模型过于庞大,内存要求就非常高,移动端和嵌入式设备明显无法满足。其次,在这些设备场景要求下的延迟要低,反应速度要快,因此过大过复杂的cnn模型显然无法复用。
  2. 尽管未来的硬件速度会越来越快。但是数据处模型本身的轻量化研究也是必不可少的。因此,目前小而高效且适用于嵌入式和移动端环境的cnn架构研究至关重要。
  3. 目前,轻量化的cnn模型研究主要分为两个方向,一个是将训练好的模型压缩得到小模型。二是直接设计小模型并进行训练。但无论何种设计思路,其基本目标都是在保证模型性能的前提下降低模型的大小,同时提高模型的反应速度。
  4. MobileNet就是goole研发的一种小而巧的cnn模型,他属于两个研究方向的后者,其在accuracy和latency之间做了折中。

深度可分离卷积(Depthwise separable convolution–DSC)

MobileNet的基本单元是深度级可分离卷积,顾名思义,他是一种可分解卷积,主要包括两个部分的操作–深度卷积和节点卷积(depthwise convolution和pointwise convolution)
1,深度卷积:如图1所示,深度卷积和标准卷积不同,标准卷积的卷积核是用在所有的输入通道上,而深度卷积每个输入通道对应一个卷积核,每个书输入通道采用的卷积核是独立的,不相互影响。
2,节点卷积:节点卷积和普通的卷积核没什么差别,只不过其采用了1 * 1的卷积核而已,图2清晰的展示了两种操作。
3,对于dsc,其工作过程是首先是深度卷积对每一个输入通道进行卷积,然后采用节点卷积对上面的结果进行结合。这样其实整体效果和一个标准卷积是差不多的,但是会大大减少计算量和模型参数量。
在这里插入图片描述
在这里插入图片描述
4.dsc和标准卷积的差别
假定输入特征图大小: D(k)*D(k)*M
假定输出特征图大小:D(F)*D(F)*N
M , N是指通道数, 我们假定输入和输出的宽和高是一致的,所以有
标准卷积的计算量:D(F)*D(F)*M *D(F)*D(F)*N
depthwise convolution其计算量为: D(K)、D(K)、M、D(F)、D(F)
对于 pointwise convolution计算量是:M、N、D(F)、D(F)
所以depthwise separable convolution总计算量是:

D(K)、D(K)、M、D(F)、D(F) + M、N、D(F)、D(F)

可以比较depthwise separable convolution和标准卷积如下:
在这里插入图片描述
一般情况下比较大,那么如果采用3x3卷积核的话,depthwise separable convolution相较标准卷积可以降低大约9倍的计算量。其实,后面会有对比,参数量也会减少很多。

MobileNet的一般结构

上面讲到,dsc是mobile的基本组件,但在实际的应用中会加入batchnorm,并使用relu去线性。所以其基本结构如下
在这里插入图片描述
在这里插入图片描述
mobilnet的结构图如上图所示:
1,首先是一个标准的3 * 3 卷积,然后后面就是堆积dsc,可以看到其中部分深度级卷积会通过stride =2来进行downsampling.
2,然后采用average pooling将feature map 大小改为1,然后进入全连接层,最后softmax
3,如果单独只算深度卷积和节点卷积, 那么整个网络有28层(这里Avg Pool和Softmax不计算在内)
4,我们还可以分析整个网络的参数和计算量分布,如表2所示。可以看到整个计算量基本集中在1x1卷积上
在这里插入图片描述

MobileNet 瘦身:降低通道和每个特征图的大小

mobilenet基础之上我们如何进行进一步模型轻量化呢,那就是引入两个超参数,第一个参数就是width multiplier,主要是按比例减少通道数,记为α,其取值范围为(0,1],那么输入和输出的通道数将变成系数和,因此dsc的计算量(参数量)为:在这里插入图片描述
第二个参数 是resolution multiplier,主要是按比例降低特征图的大小,记为p,加上resolution multiplier,dsc的计算量为:
在这里插入图片描述
引入超参数p只会影响计算量,不会改变参数量。但是瘦身肯定会带来mobile整体性能的下降,但总体结果往往都是在精确度,模型大小,计算量之间折中。

MobileNet的TF实现:

可参考git文章详情

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用TensorFlow来训练MobileNet模型,可以使用Keras API或者TensorFlow的低级API,但需要指定网络的结构。相比CNN模型MobileNet模型有以下优点:1. 具有更小的模型参数,可以更快地训练和部署;2. 可以在不同移动设备和计算机平台上运行;3. 具有较低的计算复杂度,可以提高深度学习模型的推理速度。但是,MobileNet模型的精确度可能会低于CNN模型。 ### 回答2: TensorFlow 是一个强大的开源机器学习框架,可以用于训练和部署深度学习模型。下面是使用 TensorFlow 训练 MobileNet 模型的步骤: 1. 准备数据集:首先,需要准备用于训练的数据集。数据集应包含不同类别的图像,并进行分割,一部分用于训练,一部分用于验证。 2. 定义模型:在 TensorFlow 中,可以使用 tf.keras 库来定义模型MobileNet 是一种轻量级卷积神经网络模型,可以用于图像分类任务。使用 TensorFlow 的 API,可以轻松地定义和构建 MobileNet 模型。 3. 编译模型:在编译模型之前,需要选择适当的损失函数和优化器。对于图像分类任务,常用的损失函数是交叉熵损失函数,优化器可以选择 Adam 或 RMSProp。 4. 训练模型:使用准备好的数据集来训练模型。可以通过调整批处理大小、迭代次数和学习率等超参数来优化模型的训练效果。训练过程中,可以使用 TensorFlow 的自动微分功能来计算梯度并更新模型参数。 5. 评估模型:在训练过程中,可以使用验证集来评估模型在未见过的数据上的性能。通常使用准确率来评估模型的分类性能。 MobileNet 模型与传统的卷积神经网络 (CNN) 模型相比,具有以下优点和缺点: 优点: 1. 轻量级:MobileNet 模型是一种轻量级模型,具有较少的参数和计算负载,适合移动设备或资源受限的环境中使用。 2. 高效:MobileNet 使用了深度可分离卷积 (Depthwise Separable Convolution) 技术,将卷积操作分解为两个步骤,从而减少了计算量。 3. 准确性高:尽管 MobileNet 是一种轻量级模型,但在图像分类任务中仍能取得较高的准确率。 缺点: 1. 相对于一些更复杂的卷积神经网络模型,如 ResNet 或 Inception,MobileNet 的准确率可能稍低。 2. 由于模型轻量化的特性,MobileNet 对于一些具有细致纹理或结构复杂的图像可能并不适合,这些图像可能需要更复杂的网络结构来进行分类。 综上所述,MobileNet 模型是一种轻量级、高效且准确的卷积神经网络模型,适用于资源受限的环境中进行图像分类任务。 ### 回答3: 要使用TensorFlow训练MobileNet模型,首先需要确保已经安装了TensorFlow库。接下来,可以按照以下步骤进行训练: 1. 准备数据集:首先需要准备用于训练的数据集。可以使用已经标注好的图像数据集,保证训练数据集包含预期的分类标签。 2. 构建模型:使用TensorFlow构建MobileNet模型MobileNet是一种轻量级的卷积神经网络模型,适用于移动设备和嵌入式系统等资源受限环境。 3. 配置训练参数:设置训练的超参数,例如学习率、批次大小和训练步数等。这些参数的设置会对模型的训练效果产生影响。 4. 训练模型:通过对准备好的训练数据集进行迭代训练,不断调整模型参数以优化预测效果。 5. 评估和调优:使用测试数据集对训练好的模型进行评估,计算模型的准确率、召回率等指标,进一步调整模型参数以获得更好的性能。 MobileNet与传统的CNN模型相比具有以下优点和缺点: 优点: 1. 轻量级:MobileNet模型相较于传统的CNN模型模型尺寸更小,占用更少的存储和计算资源,适用于移动设备等资源受限的场景。 2. 高效率:MobileNet模型在保持较高准确率的同时,有更快的推理速度,能够更快地对输入进行预测。 3. 可扩展性:MobileNet模型易于扩展和迁移,可以根据具体需求对网络结构进行修改和调整,适应不同的应用场景。 缺点: 1. 准确性相对低:相较于某些更复杂的CNN模型MobileNet模型可能在某些特定任务上的准确率相对较低,对于一些要求更高准确率的场景可能不够适用。 2. 轻量化特点的局限性:由于MobileNet模型的轻量化特点,模型的参数数量较少,可能导致其在一些复杂任务上的表现不如传统的CNN模型。 总体而言,MobileNet模型适用于资源受限环境下对模型大小和推理速度要求较高的场景,但在准确性上可能相对较低。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值