| |
|
|
开发:
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) |
|
?卷积神经网络发展????????卷积神经网络被广泛应用在图像分类、目标检测等视觉任务中,并取得了巨大的成功。然而,卷积神经网络通常需要较大的运算量和内存占用,在移动端以及嵌入式设备等资源受限的环境中受到限制,因此需要进行网络压缩。从2012年AlexNet网络提出获得image net分类任务第一名后,深度学习模型迅速发展,网络层数不断加深,2015年提出的ResNet的准确率首次超越人类,但同时网络层数也达到了152层。 ????????MobileNet系列是谷歌推出的轻量级网络模型,旨在不过多牺牲模型性能的同时大幅度减小模型的尺寸和加快模型的运算速度。 MobileNet V1????????MobileNet V1基于一种流线型结构使用深度可分离卷积来构造轻型权重深度神经网络。主要用于移动端以及嵌入式设备。模型包含两个权衡延迟和准确率的全局超参数-宽度乘法器(width multiplier)和分辨率乘法器(resolution multiplier),允许模型构造器能够根据特定问题选择合适大小的模型。
深度可分离卷积????????深度可分离卷积是一种将标准卷积分解成深度卷积以及一个1x1的卷积即逐点卷积。能够有效减少计算量以及模型的大小。如图所示,一个标准的卷积(a)被分解成深度卷积(b)以及1x1的逐点卷积(c)。?
?一个 3x3 Conv 被拆分成了 3x3 Depthwise Conv和 1x1 Conv 常规卷积操作假设输入特征图的尺寸(H, W, D)是 DF?DF?M ,可以得到: ? - 输入特征图尺寸:DF?DF?M ? - 卷积核尺寸: DK * DK * M * N ? - 输出特征图尺寸:DF?DF? N ? - 运算量为: DK?DK?M?N?DF?DF 有 N 个卷积核,每个大小为 DK?DK?M ,每个卷积核作用于 M 个通道。也就是1个 Filter 连接 3 个 input channels。
深度卷积
深度卷积每个卷积核只处理1个输入特征通道,而不是M个输入特征通道,这样大大减少了运算量。输入特征图的尺寸(H, W, D)是 DF?DF?M ,可以得到如下公式: - 输入特征图尺寸:DF?DF?M - 卷积核尺寸: DK?DK?1?M - 输出特征图尺寸:DF?DF?M - 运算量为:DK?DK?1?M?DF?DF 有M个卷积核,每个大小为DK?DK?1 ,每个卷积核作用于1个通道。也就是1个 Filter 连接1个 input channel。 ?逐点卷积
假设深度卷积层输出的特征图的尺寸(H, W, D)是DF?DF?M , - 输入特征图尺寸:DF?DF?M - 卷积核尺寸:1?1?M?N - 输出特征图尺寸:DF?DF?N - 运算量为:1?1?M?N?DF?DF 有 N 个卷积核,每个大小为1?1?M ,每个卷积核作用于M个通道。也就是1个 Filter 连接M个input channels。 ????????深度卷积每个卷积核只处理1个输入特征通道,而不是M个输入特征通道,这样大大减少了运算量。但是在这个过程中通道与通道之间的联系被切断,所以后面需要再用 1x1 大小的逐点卷积层来处理M个特征通道之间的信息。
常规卷积VS深度可分离卷积计算量? - 常规卷积运算量:
? - 深度可分离卷积运算量:
? - 运算量对比:
????????MobileNet V1使用3x3的深度可分离卷积将卷积分为滤波和组合两个过程相较于标准卷积少了8到9倍的计算量,只有极小准确率的下降。 网络结构????????MobileNet一共有28层,13组深度可分离卷积,除第一层为全卷积其他全由深度可分离卷积构成。所有的层都跟着一个BN以及ReLU非线性激活函数,除最后一层全连接层没有非线性激活函数直接送入softmax层进行分类。
????????MobileNet在1×1卷积中花费了95%的计算时间,大约占有75%的参数,几乎所有的附加参数都在全连接层中。
宽度乘法器-Width Multiplier????????宽度乘法器的作用就是对每一层均匀薄化。给定一个层以及宽度乘法器,输入通道数M变成了α* M,输出通道数N变成α* N。深度可分离卷积运算量变为:
????????其中α一般设置为1\0.75\0.5\0.25。当α=1时,是最基本的MobileNet,当时α<1时就是薄化的MobileNet。宽度乘法器对计算量和参数量的减少大约α^2倍。宽度乘法器可以合理的权衡精度和延迟的大小。 注:宽度乘法器常用来薄化一个新的需要从头开始训练的网络结构。 分辨率乘法器-Resolution Multiplier????????第二个减少神经网络计算量的超参数是ρ-分辨率乘法器。对特征图进行下采样的 Resolution Multiplier ρ(0<ρ<1):
????????其中图像分辨率一般设置为224\192\160\128等。当ρ=1时为最基本的MobileNet,当ρ<1时为薄化的MobileNet。分辨率乘法器对网络约化大约ρ^2倍。 实验对比a.深度可分离卷积与全卷积对比
??? 精度只下降1%,参数减少7倍。 b.宽度乘法器α不同系数对比 ??? 准确率直到宽度乘法器α下降到0.25才显示下降很多。 c.分辨率乘法器ρ不同参数对比
??? 准确率随着分辨率下降而平滑减小 d.MobileNet V1与其他模型对比
????????MobileNet和VGG16准确率几乎一样,但是参数量少了32倍,计算量少了27倍。相较于GoogleNet准确率更高,且参数量和计算量都少了2.5倍。 约化后MobileNet(α=0.5,分辨率为160x160)相较于这两个模型,准确率都高且计算量相较于AlexNet少了9.4倍,比SqueezeNet少了22倍。 ?MobileNet V2????????MobileNetV2网络设计基于MobileNet V1,它保留了其简单性且不需任何特殊的运算符,同时显着提高了其准确性,从而实现了针对移动应用程序的图像分类和检测任务等。网络中的亮点是 Inverted Residuals (倒残差结构 )和 Linear Bottlenecks(线性瓶颈)。 ????????模型主要贡献是提出了具有线性瓶颈的倒置残差块-Bottleneck Residual Block。该模块将低维压缩表示作为输入,首先将其扩展到高维,然后使用的深度可分离卷积进行提取特征。随后将特征投影回具有线性卷积的低维表示。
? 具有线性瓶颈的倒置残差块-Bottleneck Residual Block |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 1:40:59- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |