深度学习500问——Chapter17:模型压缩及移动端部署(4)

文章目录

[17.9 常用的轻量级网络有哪些](#17.9 常用的轻量级网络有哪些)

[17.9.1 SequeezeNet](#17.9.1 SequeezeNet)

[17.9.2 MobileNet](#17.9.2 MobileNet)

[17.9.3 MobileNet-v2](#17.9.3 MobileNet-v2)

[17.9.4 Xception](#17.9.4 Xception)


17.9 常用的轻量级网络有哪些

17.9.1 SequeezeNet

SqueezeNet出自 F.N.landola, S.Han等人发表的论文《SqueezeNet:ALexNet-level accuracy with 50x fewer parameters and < 0.5MB model size》,作者在保证精度不损失的同时,将原石AlexNet压缩至原来的510倍。

1.1 设计思想

在网络结构设计方面主要采取以下三种方式:

  • 用 1*1 卷积核替换 3*3 卷积

理论上一个 1*1卷积核的参数是一个3*3卷积核的1/9,可以将模型尺寸压缩9倍。

  • 减小3*3卷积的输入通道数

根据上述公式,减少输入通道数不仅可以减少卷积的运算量,而且输入通道数与输出通道数相同时还可以减少MAC。

  • 延迟降采样

分辨率越大的输入能够提供更多特征的信息,有利于网络的训练判断,延迟降采样可以提高网络精度。

1.2 网络架构

SqueezeNet提出一种多分支结构------fire model,其中是由Sequeeze层和expand层构成。Squeeze层是由s1个1*1卷积组成,主要是通过1*1的卷积降低expand层的输入维度;expand层利用e1个1*1和e3个3*3卷积构成多分支结构的提取输入特征,以此提高网络的精度(其中e1=e3=4*s1)。

SqueezeNet整体结构如下图所示:

1.3 实验结果

不同压缩方法在ImageNet上的对比实验结果。

由实验结果可知,SqueezeNet不仅保证了精度,而且将原始ALexNet从240M压缩至4.8M,压缩50倍,说明此轻量级网络设计是可行的。

17.9.2 MobileNet

MobileNet是Google团队于CVPR-2017的论文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》中针对手机等嵌入式设备提出的一种轻量级的深层神经网络,该网络结构在VGG的基础上使用DW+PW的组合,在保证不损失太大精度的同时,降低模型参数量。

2.1 设计思想

  • 采用深度可分离卷积代替传统卷积

采用DW卷积在减少参数数量的同时提升运算速度。但是由于每个feature map只被一个卷积核卷积,因此经过DW输出的feature map不能只包含输入特征图的全部信息,而且特征之间的信息不能交流,导致"信息流通不畅"。

采用PW卷积实现通道特征信息交流,解决DW卷积导致"信息流通不畅"的问题。

  • 使用stride=2的卷积替换pooling

直接在卷积时利用stride=2完成了下采样,从而节省了需要再去用pooling再去进行一次下采样的时间,可以提升运算速度。同时,因为pooling之前需要一个stride=1的conv,而与stride=2 conv的计算量相比要高近4倍(个人理解)。

2.2 网络结构

  • DW conv和PW conv MobileNet的网络架构主要是由DW conv和PW conv组成,相比于传统卷积可以降低倍的计算量。

标准卷积与DW conv和PW conv如图所示:

网络结构:

  • MobileNets的架构:

2.3 实验结果

由上表可知,使用相同的结构,深度可分离卷积虽然准确率降低1%,但是参数量减少了6/7。

17.9.3 MobileNet-v2

MobileNet-v2是2018年1月公开在arXiv上论文《Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation》,是对MobileNet-v1的改进,同样是一个轻量化卷积神经网络。

3.1 设计思想

  • 采用Inverted residuals

为了保证网络可以提取更多的特征,在residual block中第一个1*1 Conv和3*3 DW Conv之前进行通道扩充。

  • Linear bottlenecks

为了避免Relu对特征的破坏,在residual block的Eltwise sum之前的那个1*1 Conv不再采用Relu。

  • stride=2的conv不使用shot-cot,stride=1的conv使用shot-cut

3.2 网络架构

  • Inverted residuals

ResNet中的Residuals block先经过1*1的Conv layer,把feature map的通道数降下来,再经过3*3 Conv layer,最后经过一个1*1的Conv layer,将feature map通道数再"扩张"回去。即采用先压缩,后扩张的方式。而inverted residuals采用先扩张,后压缩的方式。

MobileNet采用DW conv提取特征,由于DW conv本身提取的特征数就少,再经过传统residuals block进行"压缩",此时提取的特征数会更少,因此inverted residuals对其进行"扩张",保证网络可以提取更多的特征。

  • Linear bottlenecks

ReLu激活函数会破坏特征。ReLu对于负的输入,输出全为0,而本来DW conv特征通道已经被"压缩",再经过ReLu的话,又会损失一部分特征。采用Linear,目的是防止Relu破坏特征。

  • shortcut

stride=2的conv不使用shot-cot,stride=1的conv使用shot-cut 。

  • 网络架构

17.9.4 Xception

Xception是Google提出的,arXiv 的V1 于2016年10月公开《Xception: Deep Learning with Depthwise Separable Convolutions 》,Xception是对Inception v3的另一种改进,主要是采用depthwise separable convolution来替换原来Inception v3中的卷积操作。

4.1 设计思想

  • 采用depthwise separable convolution来替换原来Inception v3中的卷积操作
    与原版的Depth-wise convolution有两个不同之处:

第一个:原版Depth-wise convolution,先逐通道卷积,再1*1卷积; 而Xception是反过来,先1*1卷积,再逐通道卷积;

第二个:原版Depth-wise convolution的两个卷积之间是不带激活函数的,而Xception在经过1*1卷积之后会带上一个Relu的非线性激活函数;

4.2 网络架构

feature map在空间和通道上具有一定的相关性,通过Inception模块和非线性激活函数实现通道之间的解耦。增多3*3的卷积的分支的数量,使它与1*1的卷积的输出通道数相等,此时每个3*3的卷积只作用与一个通道的特征图上,作者称之为"极致的Inception(Extream Inception)"模块,这就是Xception的基本模块。

相关推荐
牧子川5 小时前
009-Transformer-Architecture
人工智能·深度学习·transformer
covco5 小时前
矩阵管理系统指南:拆解星链引擎的架构设计与全链路落地实践
大数据·人工智能·矩阵
沪漂阿龙5 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
lifewange5 小时前
AI编写测试用例工具介绍
人工智能·测试用例
陕西字符5 小时前
2026 西安 豆包获客优化技术深度解析:企来客科技 AI 全域获客系统测评
大数据·人工智能
掘金安东尼5 小时前
GGUF、GPTQ、AWQ、EXL2、MLX、VMLX...运行大模型,为什么会有这么多格式?
人工智能
新知图书5 小时前
市场分析报告自动化生成(使用千问)
人工智能·ai助手·千问·高效办公
无心水5 小时前
【Hermes:安全、权限与生产环境】38、Hermes Agent 安全四层纵深:最小权限原则从理论到落地的完全指南
人工智能·安全·mcp协议·openclaw·养龙虾·hermes·honcho
旦莫6 小时前
AI驱动的纯视觉自动化测试:知识库里应该积累什么知识内容
人工智能·python·测试开发·pytest·ai测试
dfsj660116 小时前
第四章:深度学习革命
人工智能·深度学习