文章目录
1.概述
轻量化网络模型:指在保持模型性能的同时,尽可能减小模型的尺寸和计算量的网络模型。这种类型的模型设计旨在在移动设备、嵌入式设备或计算资源有限的环境中实现高效的推理。
构建轻量化网络模型可以进行如下分类:
压缩已经训练好的模型:知识蒸馏、权值量化、剪枝(权重剪枝,通道剪枝)、注意力迁移
直接训练轻量化网络:Mobilenetv1\v2\v3、Shufflenetv1\v2、Squeezenet、xception、Efficentnet、Nasnet、DARTS、Flattenednet、Factorized Networks
加速卷积运算:im2col+GEMM、Winograd、低秩分解
硬件部署:TensoRT、Jetson、Tensorflow-slim、Tensorflow-lite、Openvino
关键词:参数量、计算量、内存访问量、耗时、能耗、碳排放、CUDA加速、对抗学习
发展历程:
轻量化网络模型的发展史可以追溯到对计算资源和内存消耗的关注,以及对移动设备和嵌入式系统的需求。以下是轻量化网络模型的发展历程的一些关键节点:
AlexNet和VGG:在2012年,AlexNet的出现标志着深度学习的新时代,但它的大规模卷积层结构导致了大量的参数和计算量。VGG模型在2014年进一步加深了网络结构,但也增加了模型的复杂性和计算需求。
GoogleNet和Inception系列:2014年,GoogleNet提出了Inception模块,通过不同尺度的卷积核来提取特征,减少了参数数量。这为后续轻量化网络模型的设计提供了启示。
MobileNets:在2017年,Google提出了MobileNets系列,它采用深度可分离卷积(Depthwise Separable Convolution)结构,大幅减少了参数数量和计算量,同时保持了较好的性能。MobileNets被广泛应用于移动设备和嵌入式系统中。
ShuffleNet:2018年,ShuffleNet提出了通道重排(channel shuffle)的概念,通过重新组织通道来减少计算量,提高模型的计算效率。
EfficientNet:2019年,EfficientNet提出了一种基于复合缩放(compound scaling)的方法,通过在网络深度、宽度和分辨率上进行均衡的缩放,实现了在有限的计算资源下取得更好的性能。
自适应计算模型:最近,一些研究致力于开发自适应计算模型,这些模型可以根据设备的计算资源自动调整网络结构,以平衡性能和计算开销。
总的来说,轻量化网络模型的发展历程是一个不断追求在保持性能的同时减少参数数量和计算量的过程,以适应移动设备和嵌入式系统的需求。这些创新为在资源受限的环境下部署深度学习模型提供了重要的技术支持。
2.轻量化网络模型的总结
2.1 Mobilenetv1
2.1.1 论文题目、发表日期和期刊
《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》
arXiv:1704.04861v1 [cs.CV] 17 Apr 2017
2.1.2 介绍
为了获得更高的精度,一般的趋势是构建更深更复杂的网络,但忽略了网络的规模和速度方面。比如说机器人、自动驾驶汽车和增强现实等许多现实应用中,识别任务需要在一个计算能力有限的平台上及时执行。因此Mobilenetv1网络模型应运而生。但值的注意的是,许多关于小型网络的论文只关注规模而不考虑速度。
发表年份及期刊:arXiv:1704.04861v1 [cs.CV] 17 Apr 2017
2.1.3 创新点
- 标准卷积改为深度可分离卷积(深度卷积和逐点卷积),从而降低计算量和参数量。计算量和参数量是标准卷积的8到9倍,仅在精度上略有降低。
- ReLU改为RELU6
- 引入了Witdth_Multiplier(\alpha)和Resolution_Multiplier(\rho),也就是宽度超参数和分辨率超参数,用来调节模型的宽度(卷积核个数)和图像分辨率。
2.1.4 缺点
-
没有残差连接
-
很多Depthwise卷积核训练出来是0
卷积核的权重数量和通道数量太少,太单薄 Relu激活函数 低精度
2.1.5 论文实验汇总
实验1:对比标准卷积和深度可分离卷积的效果
实验2:在计算量恒定情况下,MobileNet是选择更瘦还是更浅的网络
实验3:不同宽度的MobileNet效果对比
实验4:不同分辨率的MobileNet效果对比
实验5:精度和MAdds、参数量的关系
实验6:和先进网络模型对比
实验7:在Stanford Dogs数据集上训练MobileNet
实验8:基于以图搜地,对比不同网络结构进行对比
实验9:人脸属性分类任务
实验10:COCO数据目标检测训练
实验11:人脸识别检测
2.1.6 论文的数据集汇总
1.Stanford Dogs数据集
2.PlaNet数据集
3.与YFCC100M相似的多属性数据集
4.COCO数据集
2.1.7 模型网络结构
标准卷积和深度可分离卷积的区别:
2.2 Mobilenwtv2
2.2.1 题目、发表年份和期刊
《MobileNetV2: Inverted Residuals and Linear Bottlenecks》
This CVPR paper is the Open Access version,provided by the Computer Vision Foundation Except for this watermark,it is identical to the version available on IEEE Xplore.(2018)
2.2.2 介绍
在本文中,我们描述了一种新的移动架构MobileNetV2,该架构提高了移动模型在多个任务和多个基准数据集上以及在不同模型尺寸范围内的最佳性能。
2.2.3 创新点
- 采用线性瓶颈层:将深度可分离卷积中的1×1卷积后的ReLU替换成线性激活函数;
- 采用反向残差结构
- 引入了Expansion layer,在进行深度分离卷积之前首先使用1×1卷积进行升维;
- 引入Shortcut结构,在升维的1×1卷积之前与深度可分离卷积中的1×1卷积降维之后进行shortcut连接;
2.2.4 缺点
在最后一层使用了1×1卷积进行特征空间维度扩展。会带来额外的延迟
2.2.5 实验汇总
实验1:ImageNet Classification—ImageNet数据集分类
实验2:Object Detection—目标检测
实验3:Semantic Segmentation—语义分割
2.2.6 数据集汇总
- ImageNet数据集
- COCO数据集
- PASCAL VOC 2012数据集
2.2.7 网络模型结构
2.3 Mobilenetv3
2.3.1 论文题目、发表年份和期刊
《Searching for MobileNetV3》
arXiv:1905.02244v5 [cs.CV] 20 Nov 2019
2.3.2 介绍
我们展示了基于互补搜索技术和新颖架构设计相结合的下一代MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法对移动电话cpu进行调优,然后通过新的架构改进对其进行改进。
MobileNet V3 = MobileNet v2 + SE结构 + hard-swish activation +网络结构头尾微调。
2.3.3 创新点
- 采用增加了SE机制的Bottleneck模块结构
- 使用了一种新的激活函数h-swish(x)替代MobileNetV2中的ReLU6激活函数
- 网络结构搜索中,结合两种技术:资源受限的NAS(platform-aware NAS)与NetAdapt
- 修改了MobileNetV2网络端部最后阶段
2.3.4 缺点
架构复杂性:MobileNetV3在设计中使用了很多高级技术,例如Inverted Residuals和Linear Bottlenecks(IR-Net),以及Network Merging。这种复杂性可能会使得它比其他简单架构更难理解和实现。
2.3.5 实验汇总
2.5.6 数据集汇总
- imagenet数据集
- COCO数据集
2.5.7 网络模型结构
注意:SE模块中变换的通道数为DW卷积之后的通道数的1/4(efficientnetv1、v2则是输入通道数的1/4)
2.5.7.1 MobileNetV3-Large
2.5.7.1 MobileNetV3-Small
2.4 Shufflenetv1
2.4.1 论文题目、发表日期和期刊
《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》
CVPR(2018)
2.4.2 介绍
我们介绍了一种名为ShuffleNet的计算效率极高的CNN架构,该架构是专为计算能力非常有限(例如10-150 MFLOP)的移动设备设计的。新架构利用了两个新的操作,逐点组卷积和通道混洗,可以在保持准确性的同时大大降低计算成本。
2.4.3 创新点
- 分组逐点卷积(pointwise group convolution),降低1×1卷积的计算复杂度
- 通道重排(channel shuffle),帮助信息在特征通道间流动
2.4.4 缺点
ShuffleNetV1采用的两种技术
- pointwise group convolution
- channel shuffle
大量使用了1×1卷积。——违背了 G3。
采用了类似ResNet中的瓶颈层(bottleneck layer),输入和输出通道数不同。——违背了 G1。
使用太多分组。——违背了 G2。
短路连接中存在大量的元素级Add运算。—— 违背了G4。
2.4.5 网络模型结构
- Channel Shuffle for Group Convolutions—用于分组卷积的通道重排
2. ShuffleNet Unit—ShuffleNet单元
3.Network Architecture—网络体系结构
注意:对于基本单元来说,其中瓶颈层,就是3x3卷积层的通道数为输出通道数的1/4,这和残差单元的设计理念是一样的
2.5 Shufflenetv2
2.5.1 论文题目、发表日期和期刊
《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》
EECV(2018)
2.5.2 介绍
目前,神经网络架构设计主要由计算复杂度的间接度量FLOPs衡量。然而,直接度量(例如,速度)还取决于诸如存储访问量和硬件平台特性等其他因素。因此,本文评估目标平台上的直接度量,而不仅仅考虑FLOP。基于一系列对照实验,本文为高效的网络设计提供了几个实用指南。最终提出了称为ShuffleNet V2的新架构
2.5.3 创新点
- Practical Guidelines for Efficient Network Design—高效网络设计的实用准则(4条)
(1)Equal channel width minimizes memory access cost (MAC)—G1)相同通道宽度能够最小化MAC(内存访问成本)
(2)Excessive group convolution increases MAC—过度的组卷积会增加 MAC
(3)Network fragmentation reduces degree of parallelism—网络碎片化会降低并行程度
(4)Element-wise operations are non-negligible—Element-wise操作的影响不可忽略 - 指出过去在网络架构设计上仅注重间接指标 FLOPs 的不足,要注重模型的实际推理时间(在目标平台上)
2.5.4 缺点
2.5.5 网络模型结构
- ShuffleNet V2 的基本单元
2. ShuffleNet V2 的整体架构