| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> MobileNet v1&v2&v3 创新点及结构简述 -> 正文阅读 |
|
[人工智能]MobileNet v1&v2&v3 创新点及结构简述 |
目录一、背景MobileNet v1是由google团队在2017年提出的, 专注于移动端或者嵌入式设备中的轻量级CNN网络。 相比传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量。相比VGG16准确率减少了0.9%,但模型参数只有VGG的1/32。 论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet v2是由google团队在2018年提出的。 论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks MobileNet v3是由google团队在2019年提出的。 论文地址:Searching for MobileNetV3 二、MobileNet v11. 网络创新点
1.1. Depthwise Coinvolution基本思想:将标准卷积拆分为两个分卷积,构成深度可分离卷积(Depthwise Separable Coinvolution):第一层称为深度卷积(depthwise convolution),对每个输入通道应用单通道的轻量级滤波器;第二层称为逐点卷积(pointwise convolution),负责计算输入通道的线性组合构建新的特征。 传统卷积:
??????DW卷积(Depthwise Coinvolution): ?
PW卷积(Pointwise Coinvolution):
深度可分离卷积(Depthwise Separable Coinvolution):
K:卷积核尺寸,C_out:输出通道数 1.2. 超参数α、β
2. 网络结构2.1. 标准卷积层 vs?深度可分离卷积卷积层 2.2. MobileNet v1整体结构 三、MobileNet v21. 网络创新点
1.1. Inverted Residuals深度卷积本身没有改变通道的能力,如果输入通道很少,DW深度卷积只能在低维度上工作,这样效果并不会很好。而逐点卷积也就是1×1卷积可以用来升维和降维,那就可以在DW深度卷积之前使用PW卷积进行升维(升维倍数为t,t=6),再在一个更高维的空间中进行卷积操作来提取特征。 ResNet的残差结构:对于输入特征矩阵采用1x1卷积进行压缩,再通过3x3卷积核进行卷积处理,最后再采用1x1卷积核扩充通道数 1.2. Linear Bottlenecks在MobileNet v1网络的实际使用中会发现DW卷积的部分卷积核容易废掉(即卷积核参数为0),针对这个问题,原论文中作者通过实验得出:ReLU激活函数会对低维特征信息造成大量损失,对高维造成损失比较小,而在倒残差结构中的输出是一个低维特征向量,因此使用线性激活函数避免特征信息损失。因此倒残差结构的最后一个1x1卷积层,使用了线性激活函数,而不是ReLU激活函数。 2. 网络结构2.1. 倒残差结构图在普通残差结构中采用的是ReLU激活函数,在倒残差结构中采用的是ReLU6激活函数。当stride=1且输入特征矩阵与输出特征矩阵shape相同时才有shortcut连接。 2.2. MobileNet v2整体结构t是扩张倍数,即倒残差结构第一层1x1卷积核个数的扩张系数;c是输出的通道数;n是倒残差结构的重复次数;s是步长,代表每一个block所对应的第一层bottleneck的步长,其他的为1。 四、MobileNet v31. 网络创新点
1.1.?新版Block与MobileNetv2相比,Mobilenetv3的block中加入了SE模块,更换了激活函数 。更新的激活函数在图中用NL表示非线性激活函数统一表示,用到的激活函数主要有hards-wish、relu两种。最后那个1x1降维投影层用的是线性激活(f(x)=x),也可以理解为没用激活。MobileNetv3的倒残差结构: SE(Squeeze-and-Excitation) 模块类似于一个轻量级的注意力模块,注意力机制的作用方式是调整每个通道的权重,以在Mobilenetv3中的应用为例进行理解,如下图所示。 hards-wish 作者发现一种新出的激活函数swish x(如下) ,但认为这种非线性激活函数虽然提高了精度,但在嵌入式环境中,计算量太大,所以提出了h-swish。 可以用一个近似函数来逼急这个swish。作者选择的是基于ReLU6,作者认为几乎所有的软件和硬件框架上都可以使用ReLU6的优化实现。其次,它能在特定模式下消除了由于近似sigmoid的不同实现而带来的潜在的数值精度损失,在量化模式下会提高大约15%的效率。 作者认为随着网络的深入,应用非线性激活函数的成本会降低,能够更好的减少参数量。作者发现swish的大多数好处都是通过在更深的层中使用它们实现的。因此,在V3的架构中,只在模型的后半部分使用h-swish。 1.2. 使用NAS搜索参数(Neural Architecture Search)主要结合两种技术:资源受限的NAS(platform-aware NAS)与NetAdapt。资源受限的NAS,用于在计算和参数量受限的前提下搜索网络来优化各个块(block),所以称之为模块级搜索(Block-wise Search)?。NetAdapt,用于对各个模块确定之后网络层的微调每一层的卷积核数量,所以称之为层级搜索(Layer-wise Search)。一旦通过体系结构搜索找到模型,我们就会发现最后一些层以及一些早期层计算代价比较高昂。于是作者决定对这些架构进行一些修改,以减少这些慢层(slow layers)的延迟,同时保持准确性。这些修改显然超出了当前搜索的范围。 1.3. 重新设计耗时层结构精简早期层 减少第一个卷积层的卷积核个数(32减为16),原论文中作者说减少卷积核后准确率不变且能够减少计算量,节省2毫秒时间。 精简最后阶段 使用NAS搜索出来的网络结构的最后一部分为Original Last Stage,发现这一部分比较耗时,因此对其进行精简为Efficient Last Stage,精简后准确率不变,并减少10ms耗时,提速15%。 2. 网络结构MobileNetV3定义了两个模型:?MobileNet V3-Large和MobileNet V3-Small。V3-Large是针对高资源情况下的使用,相应的,V3-small就是针对低资源情况下的使用。主要的区别是通道数的变化与bneck的次数。 2.1.?V3-Large
2.2. V3-Small参考轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3https://zhuanlan.zhihu.com/p/70703846 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 3:45:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |