首页 > 其他分享 >MobileNetv1网络详解

MobileNetv1网络详解

时间:2024-10-29 10:46:03浏览次数:6  
标签:卷积 MobileNetv1 矩阵 网络 特征 详解 输入 深度 channel

背景:

传统卷积网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行

MobileNet网络是由Google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少了模型参数与运算量。(相比于VGG16准确率减少了0.9%,但模型参数只有VGG的1/32)

网络亮点:

Depthwise Convolution(DW卷积,大大减少运算量和参数数量)

增加了两个超参数\alpha(控制卷积核个数),\beta(控制输入图像的大小)

DW卷积:

传统卷积:

对于输入特征矩阵深度为3的特征矩阵,使用4个卷积核卷积,每个卷积核的深度都与输入特征矩阵的深度相同(输入特征矩阵的深度为3,卷积核的深度也为3),输入特征矩阵的深度由卷积核个数决定,为4

总结:

卷积核channel=输入特征矩阵channel

输出特征矩阵channel=卷积核个数

DW卷积:

每一个卷积核的深度为1,并不像传统卷积中卷积核的深度为特征矩阵的深度;每一个卷积核只负责与输入特征矩阵的一个channel进行卷积运算,得到相应的输出矩阵的channel;

每一个卷积核只负责一个channel,因此采用的卷积核个数应与卷积核深度相同;每一个卷积核与输入特征矩阵的一个channel进行卷积之后得到一个输出矩阵的channel,那么输出矩阵的深度与卷积核的个数相同,也与输入矩阵的channel相同。

总结:

卷积核的深度(channel)=1,一个卷积核只负责输入特征矩阵的一个channel维度

输入特征矩阵的channel=卷积核个数=输出特征矩阵channel

Depthwise Separable Conv:

深度可分的卷积操作

由两部分组成,DW卷积和PW卷积

Pointwise conv:

PW卷积就是普通卷积,卷积核大小为1;每个卷积核的深度为输入矩阵的深度相同,输出矩阵深度与卷积核个数相同

深度可分卷积相比普通卷积节省了多少参数:

普通卷积:

通过普通卷积得到的深度为4的特征矩阵

D_{F}:输入矩阵的高和宽

D_{K}:卷积核的大小

M:输入特征矩阵的深度

N:输出特征矩阵的深度,对应卷积核的个数

计算公式:

G:K卷积核i j位置下的第m个通道

n:有n个卷积核

ij:像素的位置

计算量:

普通卷积一共有N\cdot D_{F}\cdot D_{F}个像素,每一个像素都要计算D_{K}\cdot D_{K}\cdot M次,也就是对应原图感受野的大小

D_{K}\cdot D_{K}\cdot M\cdot N\cdot D_{F}\cdot D_{F}

DW操作和PW操作:

通过DW、PW操作得到深度为4的特征矩阵

计算公式:

计算量:

将改变大小和改变深度两件事分离开

D_{K}\cdot D_{K}\cdot M\cdot D_{F}\cdot D_{F}+M\cdot N\cdot D_{F}\cdot D_{F}

对比计算量:

\frac{1}{N}+\frac{1}{D_{K}^{2}},一般都为3*3的卷积核,化简得到\frac{1}{N}+\frac{1}{9}

在理论上普通卷积得计算量是深度可分卷积计算量的8~9倍

MobileNet v1网络模型结构:

1个标准卷积层

13个深度可分离卷积(每层包含两个卷积操作:一个 3x3 深度卷积 和一个 1x1 逐点卷积)

1个全局平均池化层

1个全连接层

1个softmax层

卷积块特点:

引入深度可分离卷积,将普通卷积替换为深度卷积和点卷积

除第一个卷积层和最后全连接层之外,所有卷积层后都有BN,ReLU相连

降采样方式:

方法:

步长设置:在某些卷积层中,设置步长为 2。在卷积操作时,输入特征图的每个位置会跳过 1 个像素,从而在特征图的空间维度上减少输出的尺寸(即降采样)。

使用深度可分离卷积:能有效地进行降采样,还能提取特征,计算量相对较小,更加适合在资源有限的环境下使用。

作用:

减少信息损失

提高效率

超参数:

Width Multiplier \alpha

宽度超参数

输入维度变化:M->\alpha M

输出维度变化:N->\alpha N

将卷积核的个数减少后,准确率没有大幅下降,但对于模型参数减少了很多

Resolution Multiplier\beta

分辨率超参数

特征图尺寸: D_{F}\cdot D_{F} ->\beta D_{F}\cdot \beta D_{F}

减少输入图像的大小,可以保证在准确率降低很小的前提下,大幅减少运算量

作用:

实现准确性和延时性的平衡

缺点:

DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0”

针对此缺点,在MobileNet v2中有改善

标签:卷积,MobileNetv1,矩阵,网络,特征,详解,输入,深度,channel
From: https://blog.csdn.net/m0_61595251/article/details/143319401

相关文章

  • ArkTS 的内存空间详解:从 SemiSpace 到 HugeObjectSpace
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言ArkTS作为鸿蒙系统的开发语言,提......
  • ArkTS 编程语言中的垃圾回收模型:分代式 GC 详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言垃圾回收(GC)是现代编程语言中重要......
  • 如何用3个月零基础入门网络安全?_网络安全零基础怎么学习
    ......
  • 如何用3个月零基础入门网络安全?_网络安全零基础怎么学习
    ......
  • 十四、神经网络工具箱nn
      使用autograd可实现深度学习模型,但其抽象程度较低,如果用其来实现深度学习模型,则需要编写的代码量极大。在这种情况下,torch.nn应运而生,其是专门为深度学习而设计的模块。torch.nn的核心数据结构是Module,它是一个抽象概念,既可以表示神经网络中的某个层(layer),也可以表示一个包含很......
  • PbootCMS 模板默认Sqlite数据库转Mysql数据库教程详解
    下载数据库文件:进入程序目录的data文件夹,找到.db后缀的数据库文件,下载到本地。下载相关工具:sqlitestudio:用于打开管理Sqlite数据库,导出Sql格式文件。SQLITE转MYSQL工具:用于转换数据库。导出Sqlite数据库:打开SqliteStudio,将.db文件拖入程序中。点击左上角导航......
  • 鸿蒙网络编程系列39-Web组件打印示例
    1.web组件打印简介web组件在加载了网页以后,有两种方式可以实现打印,第一种是在网页中调用W3C标准协议接口window.print()进行打印,这种方式比较简单方便,只要网页中触发了该方法即可打印,缺点是如果网页没有地方触发则不能打印;另外一种是在应用侧实现的,通过web控制器的createW......
  • 【论文分享】HashGAT-VCA:一种结合哈希函数和图注意力网络的矢量元胞自动机模型,用于城
    本文考虑地块内部异质性,提出一个结合哈希函数和图注意力网络(GAT)的矢量元胞自动机(VCA)方法,用于研究城市土地利用变化;并将该模型应用于模拟深圳市2009年至2012年的城市土地利用变化,结果表明,HashGAT-VCA模型的模拟准确性显著优于其他VCA模型。【论文题目】HashGAT-VCA:Avecto......
  • 网络编程_day4
    目录【1】LinuxIO模型:IO多路复用场景假设二select1.特点2. 编程步骤3.函数接口4.练习5.超时检测概念必要性poll1.特点2.编程步骤3.函数接口4.练习【1】LinuxIO模型:IO多路复用场景假设二假设妈妈有三个孩子,分别不同的房间里睡觉,需要及......
  • 网络编程_day1
    目录【0】关于网编(IO)【1】认识网络【2】IP地址1.基本概念2.网络号/主机号(二级划分)3.IP地址分类整体分类4.子网掩码5.练习6.三级划分【3】socket1.socket发展2.socket介绍3. 为什么需要socket?4.socket类型5.位置【4】端口号【5】字节序端口转换......