加州大学与微软提出MicroNet,比MobileNetv3更小更快的网络

共 3814字,需浏览 8分钟

 ·

2021-09-11 18:19

点击左上方蓝字关注我们



一个专注于目标检测与深度学习知识分享的公众号

编者荐语
今天跟大家分享的论文是MicroNet,它是一种高效的卷积神经网络具有极低的计算成本。在边缘设备上非常需要这样的低成本网络,但是通常会遭受明显的性能下降。
转载自 |  迈微AI研习社


  • 论文地址:https://arxiv.org/pdf/2108.05894.pdf

  • 开源代码:GitHub目前未开放


MicroNet基于2个设计原则来处理极低的FLOPs:

  • 1、降低网络节点(神经元)之间的连通性不降低网络的宽度

  • 2、使用更复杂的非线性激活函数来弥补通性网络深度的减少所带来的精度损失


设计方法简述

本文设计的MicroNet主要是在MobileNet系列上进行改进和对比,提出了两项改进方法:

  • Micro-Factorized convolution 将MobileNet中的point-wise卷积以及depth-wise卷积分解为低秩矩阵,从而使得通道数目输入输出的连通性得到一个良好的平衡。
  • Dynamic Shift-Max 使用一种新的激活函数,通过最大化输入特征图与其循环通道偏移之间的多重动态融合,来增强非线性特征。之所以称之为动态是因为,融合过程的参数依赖于输入特征图


作者使用Micro-Factorized convolutionDynamic Shift-Max建立了MicroNets家族,最终实现了低FLOPs的STOA表现。MicroNet-M1在ImageNet分类任务上仅仅用12 MFLOPs的计算量,就实现了61.1%的top1准确度,比MobileNetV3要强11.3% .


详细解读

1. 设计原理

要想实现低FLOPs,主要是要限制网络宽度(通道数)和网络深度(网络层数)。如果把一个卷积层抽象为一个图,那么该层输入和输出中间的连接边,可以用卷积核的参数量来衡量。因此作者定义了卷积层连通性(connectivity)的概念,即每个输出节点所连接的边数。如果我们把一个卷积层的计算量设为固定值,那么更多的网络通道数就意味着更低的连通性(比如深度可分离卷积,具有较多的通道数但是有很弱的连通性)。作者认为平衡好通道数目和连通性之间的关系,避免减少通道数,可以有效地提升网络的容量。除此之外,当网络的深度(层数)大大减少时,其非线性性质会受到限制,从而导致明显的性能下降。因此,作者提出以下两个设计原则:

  • 1. 通过降低节点连接性来避免网络宽度的减小

作者是通过分解points-wise卷积以及depth-wise卷积来实现如上原则。

  • 2. 增强每一层的非线性性质来弥补网络深度减少所带来的损失

作者是通过设计了一个全新的激活函数来实现如上原则,称为Dynamic Shift-Max


2. Micro-Factorized 卷积

作者将pointwise卷积和depthwise卷积分解为更为合适的尺度,用来平衡通道数目和输入输出连通性。

  • Micro-Factorized Point-wise Convolution

将point-wise卷积进行分解,原文给出的公式较为复杂,我这里直接对图进行讲解。假设输出和输出通道数都为C。对于常规的点卷积,其实就是一个C*C的实矩阵W(C维到C维的线性变换)。

但是这样的点卷积是一种稠密的全连接,在这就带来巨大的计算负担。为了进一步减少计算量,提升网络的稀疏性(降低连通性),作者将原始的稠密矩阵W分解为3个更加稀疏的矩阵。

如上图所示,W为  矩阵,P为一个  的矩阵,  为一个   的矩阵,Q也是一个  的矩阵。其中P和Q都为对角块矩阵,  为置换矩阵R为压缩率,另外分组数G代表P和Q中矩阵块的数目(G自适应为  )。听起来很抽象,我们直接看下面的图示。


微分解点卷积网络拓扑图

如上图所示,我们把一个特征图(通道)当作一个节点,输入和输出都是C=18个节点, 压缩率 R=2, 分组数 G=3。原始点卷积就需要一个18*18的实矩阵实现变换。作者将原始的点卷积操作分为3步:

  1. 将18个节点映射到9个节点(压缩率为2),分三组卷积,因此每组需要一个6*3的矩阵。

  2. 将9个节点使用置换矩阵,进行重新排序。

  3. 将9个节点分三组,映射回18个节点,每组需要一个3*6的矩阵。


微分解点卷积矩阵分解图


如上图所示,上图即为计算过程中矩阵的形态,其中P和Q为对角块矩阵,  为置换(排序)矩阵。分解后的3个矩阵的效果,相当于将原始W矩阵分成G*G个块,每个块的秩都为1。从节点的拓扑图可以看出网络是十分稀疏的(非全连接),从上面的矩阵计算图示可以看出计算量会降低。

  • Micro-Factorized Depth-wise Convolution

对于depth-wise卷积的分解,就是常规的空间可分离卷积,即将一个K*K的卷积核分解为两个K*1和1*K的向量。


微分解深度卷积


将Micro-Factorized Pointwise Convolution和Depth-wise Convolution结合起来,得到Lite Combination。其并非是简单地将depthwise和pontwise卷积拼在一起,而是先用depthwise进行expand(通道数增加),再使用pointwise进行squeeze(通道压缩),这样可以节省更多的计算资源用到depthwise上,而非通道融合的pointwise上。

3. Dynamic Shift-Max

假设  为输入的第i个通道的特征图,则定义第i个通道在第j个组上的组循环偏移函数如下:(C为输入通道数,G为分组数)


组循环偏移函数


则引入动态最大偏移函数(Dynamic Shift-Max)如下:

Dynamic Shift-Max 激活函数

其中  是可学习参数,并且是依赖于输入样本x的动态参数,类似于SE-Net中的动态通道加权。动态参数可以简单地通过两个全连接层后加平均池化层实现。J和K为手工设置的超参数,一般设置J=K=2。特别地,ReLU激活函数可以看作Dynamic Shift-Max的一种特例,即每个通道单独激活。


使用dynamic Shift-Max激活函数的微分解点卷积


如上图所示,使用Dynamic Shift-Max改装后的Micro-Factorized Pointwise Convolution(K=1,J=2),在置换矩阵之后又添加了Group Shift映射,实现2个通道的信息融合(每个节点都来自两个不同组节点的映射)。通过添加Dynamic Shift-Max激活函数,卷积矩阵W中9个子矩阵块的秩从1上升到了2,提高了连通性。

4. Micro-Net Architecture

作者介绍了3种不同MicroNet模型,其计算量FLOPs从6M到44M.它们都是由 Micro-Factorized Pointwise Convolution 和 Micro-Factorized Depth-wise Convolution以不同的形式组合而来,并且它们都使用Dynamic Shift-Max作为激活函数。


四种不同形态的MicroNet


总结

这篇论文主要的创新点:

  1. 通过分解卷积核,进一步压缩网络的连接性,使得网络更加稀疏化,提高计算性能。

  2. 设计了全新的动态激活函数,引入更多的非线性特征,增强模型表现力。


我在GitHub上开源了一个加法网络硬件加速开源项目,欢迎大家加入,一起完善。



GitHub链接 https://github.com/Charmve/AccANN


更多模型压缩、剪枝的内容,可以参考CSDN付费专栏:


专栏链接 https://blog.csdn.net/charmve/category_10101246.html



参考资料

[1] 知乎@有童心的老王 链接:https://zhuanlan.zhihu.com/p/337107958

[2] Micro-Net: Towards Image Recognition with Extremely Low FLOPs

[3] Mobile-Nets: Efficient Convolutional Neural Networks for Mobile Vision Applications

[4] Shuffle-Net: An Extremely Efficient Convolutional Neural Network for Mobile Devices

[5] Squeeze-and-Excitation Networks


END



双一流大学研究生团队创建,专注于目标检测与深度学习,希望可以将分享变成一种习惯!

点赞三连,支持一下吧↓

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报