【DL笔记】神经网络轻量化(CV方向)的一些论文记录
现在大模型爆火,但俺这种组里只有10系显卡的下水道科研老鼠也要混毕业的,于是选择做小模型(x)。本人纯科研飞舞一个,刚入学有段时间爱看论文,今天有空把那会看到论文总结下。
轻量化,相关文章的关键字可能是lightweight/compact/efficient,比较老生常谈的就是蒸馏、剪枝、量化,其实从模型本身出发也有不少方向可以看看(guan shui)。
Compact Design
做神经元轻量化基本上就是低秩分解(也就是拆算子)或特征复用.
-
SqueezeNet系列:常规卷积分解得到Fire Module
- SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size (2016)
- SqueezeNext: Hardware-Aware Neural Network Design (2018)
-
MobileNet系列:经典的深度可分离卷积
- Mobilenets: Efficient convolutional neural networks for mobile vision applications(2017)
- MobileNetV2: Inverted Residuals and Linear Bottlenecks (2019)
- Searching for mobilenetv3(2019)
-
Shufflenets系列:通道维度的分组运算,v2提出了一系列设计原则很有参考价值
- ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices (2017)
- ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design (2018)
-
GhostNet系列:
- Ghostnet: More features from cheap operations (2020) :深度NN特征图存在很多冗余,某些feature map可以通过其他feature map线性变换得到(特征复用)。
- GhostNetV2: Enhance Cheap Operation with Long-Range Attention (2022):提出dubbed DFC attention捕获长距离的空间信息,对计算attention的全连接层再做低秩分解
-
残差结构加
concat
也算一种特征复用 -
Micronet: Improving image recognition with extremely low flops (2021): 也是继续拆卷积
20年后VIT开始刷榜,也有很多Transformer和CNN的混合模型开始考虑轻量化方向:
- Mobile-former: bridging mobilenet and transformer (2022):Dynamic ReLU的团队,提出一种Mobilenet跟Transformer并行的架构,FLOPS确实低
- Mobilevit: light-weight, general-purpose, and mobile-friendly vision transformer (2021):Apple做的混合模型,大概就是Mobilenet某个stage插几个Transformer
- Separable self-attention for mobile vision transformers:还是Mobilevit的作者,拆了self-attention的算子,减少注意力的运算成本
Dynamic Design
除了对模型本身算子进行轻量化外,也有些神经网络会采用动态的结构,比如推理时动态选择算子,来实现更高效的运算:
- Blockdrop: Dynamic inference paths in residual networks (2018):强化学习方法(single step),根据输入图像输出后验概率,决定ResNet等深层网络中各个Block是否drop(复杂、遮挡多的图片用的block多)
这类只是做推理时的轻量化,整体仍是训练一个较大的模型,如果只是想节省算力做这个方向建议别考虑了,类似的还有:
- Skipnet: Learning dynamic routing in convolutional networks (2018)
- Condconv: Conditionally parameterized convolutions for efficient inference (2019)
- Dynamicvit: Efficient vision transformers with dynamic token sparsification (2021)
Efficient Design
如果对于轻量化的目的时efficient,那可以考虑一些涨点plugins
-
Squeeze-and-Excitation Networks (2018):channel attention的破圈作,那几年的灌水涨点神器,哪怕近些年的很多模型也在用
-
魔改及应有也有很多,比如:
- ECA-Net: Efficient channel attention for deep convolutional neural networks (2020):一维卷积代替SE Module里的两个全连接,参数量大大降低
- Dynamic convolution: Attention over convolution kernels (2020): 通道注意力得到多个并行卷积核的权重后加权得到最终的卷积核
- Fcanet: Frequency channel attention networks (2021): 利用DCT代替Global Average Pooling
此外,也可以选择合适的激活函数,在参数量接近的情况下涨点:
- Searching for activation functions (2018):NAS搜出来个swish,大部分视觉任务都会比ReLU好些
- Dynamic relu (2020):可以看作SE Module的段maxout版本,确实work但对显存很不友好,train的很慢
- Funnel activation for visual recognition (2020):Funnel ReLU,在激活函数阶段引入视觉感知,其实就是卷积完的特征做一次maxout,显存比Dynamic ReLU少占点
别的想起来再加。。。