MicroNet:以极低的 FLOP 实现图像识别
Posted AI浩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroNet:以极低的 FLOP 实现图像识别相关的知识,希望对你有一定的参考价值。
摘要
在本文中,我们介绍了 MicroNet,它是一种高效的卷积神经网络,使用极低的计算成本(例如 ImageNet 分类上的 6 个 MFLOP)。这种低成本网络在边缘设备上是非常需要的,但通常会遭受显着的性能下降。我们基于两个设计原则处理极低的 FLOP:(a)通过降低节点连接性来避免网络宽度的减少,以及(b)通过在每层引入更复杂的非线性来补偿网络深度的减少。首先,我们提出微因子卷积将逐点和深度卷积分解为低秩矩阵,以便在通道数和输入/输出连接之间取得良好的折衷。其次,我们提出了一个名为 Dynamic Shift-Max 的新激活函数,通过最大化输入特征图与其循环通道移位之间的多个动态融合来改善非线性。融合是动态的,因为它们的参数适应输入。在微因子卷积和动态 Shift-Max 的基础上,一系列 MicroNet 在低 FLOP 状态下实现了比最先进技术的显着性能提升。例如,MicroNet-M1 在具有 12 个 MFLOP 的 ImageNet 分类上实现了 61.1% 的 top-1 准确率,比 MobileNetV3 高出 11.3%。
一、简介
最近,设计高效的 CNN 架构 [15,12,26,11,42,24,29] 一直是一个活跃的研究领域。 这些工作使边缘设备上的高质量服务成为可能。 然而,当计算成本变得极低时,即使是最先进的高效 CNN(例如 MobileNetV3 [11])也会遭受显着的性能下降。 例如,当在分辨率为 224 × 224 的图像分类 [8] 上将 MobileNetV3 从 112M 限制到 12M MAdds 时,top-1 准确率从 71.7% 下降到 49.8%。 这使得它在低功耗设备(例如物联网设备)上的采用更加困难。 在本文中,我们通过削减一半的预算来解决一个更具挑战性的问题:我们能否在 6 MFLOP 下以 224 × 224 的分辨率执行超过 1,000 个类别的图像分类?
这种极低的计算成本(6M FLOPs)需要仔细重新设计每一层。 例如,即使是在 112×112 网格 (stride=2) 上包含单个 3×3 卷积和 3 个输入通道和 8 个输出通道的细茎层也需要 2.7M MAdds。 用于设计卷积层和 1000 个类别的分类器的资源太有限,无法学习良好的表示。 为了适应如此低的预算,应用现有高效 CNN(例如 MobileNet [12, 26, 11] 和 ShuffleNet [42, 24])的简单策略是显着减小网络的宽度或深度。 这导致严重的性能下降。
我们提出了一种名为 MicroNet 的新架构来处理极低的 FLOP。 它基于以下两个设计原则:
- 通过降低节点连接性来规避网络宽度的减少。
- 通过改善每层的非线性来补偿网络深度的减少。
这些原则指导我们设计更有效的卷积和激活函数。
首先,我们提出Micro-Factorized 卷积将逐点和深度卷积分解为低秩矩阵。 这在输入/输出连接和通道数量之间提供了良好的平衡。 具体来说,我们设计了组自适应卷积来分解逐点卷积。 它通过平方根关系使组数适应通道数。 堆叠两个组自适应卷积本质上是通过块矩阵来近似逐点卷积矩阵,其中每个块的秩为 1。 深度卷积的分解(rank-1)很简单,将 k × k 深度卷积分解为 1 × k 和 k × 1 深度卷积。 我们表明,在不牺牲通道数量的情况下,将这两个近似值在不同级别上的适当组合显着降低了计算成本。
其次,我们提出了一个名为 Dynamic Shift-Max 的新激活函数,以从两个方面改善非线性:(a)它最大化输入特征图与其循环通道移位之间的多个融合,以及(b)每个融合是 动态,因为它的参数适应输入。 此外,它以低计算成本在一个函数中有效地增强了节点连接性和非线性。
实验结果表明,MicroNet 大大优于最先进的技术(见图 1)。 例如,与 MobileNetV3 相比,我们的方法在 ImageNet 分类上的 top-1 准确率分别提高了 11.3% 和 7.7%,分别在 12M 和 21M FLOPs 的约束下。 在极具挑战性的 6 MFLOPs 约束下,我们的方法实现了 53.0% 的 top-1 准确率,比复杂度翻倍(12 MFLOPs)的 MobileNetV3 提高了 3.2%。此外,一系列 MicroNet 为两个像素级任务提供了强大的基线,计算成本非常低:语义分割和关键点检测。
二、相关工作
高效的 CNN:MobileNets [12, 26, 11] 将 k ×k 卷积分解为深度卷积和逐点卷积。 ShuffleNets [42, 24] 使用组卷积和通道混洗来简化逐点卷积。 [33] 使用蝶形变换来近似逐点卷积。 EfficientNet [29, 31] 找到了输入分辨率和网络宽度/深度之间的适当关系。 MixNet [30] 在一个卷积中混合了多个内核大小。 AdderNet [2] 用大量乘法换取更便宜的加法。 GhostNet [10] 应用廉价的线性变换来生成幽灵特征图。 Sandglass [43] 翻转了倒置残差块的结构以减轻信息丢失。 [39] 和 [1] 训练一个网络以支持多个子网络。
动态神经网络:动态网络通过使参数适应输入来提高表示能力。 HyperNet [9] 使用另一个网络为主网络生成参数。 SENet [13] 通过压缩全局上下文来重新加权通道。 SKNet [18] 使注意力适应不同大小的内核。 动态卷积 [37, 5] 根据注意力聚合多个卷积核。 Dynamic ReLU [6] 适应 ReLU [25, 16] 中两个线性函数的斜率和截距。 [23] 使用分组的全连接层直接生成卷积权重。 [3] 将动态卷积从空间不可知扩展到空间特定。 [27] 提出了自适应分组输入通道的动态组卷积。 [32] 将动态卷积应用于实例分割。 [19] 学习跨尺度的动态路由以进行语义分割。
三、我们的方法:MicroNet
下面我们详细介绍MicroNet的设计原理和关键组件。
3.1、设计原则
极低的 FLOPs 限制了网络宽度(通道数)和网络深度(层数),这两者分别进行分析。 如果我们将卷积层视为图,则输入和输出(节点)之间的连接(边)由内核参数加权。 在这里,我们将连通性定义为每个输出节点的连接数。 因此,连接数等于输出通道数和连通性的乘积。 当计算成本(与连接数成正比)固定时,通道数与连接性冲突。 我们认为,它们之间的良好平衡可以有效地避免通道减少并提高层的表示能力。 因此,我们的第一个设计原则是:通过降低节点连通性来规避网络宽度的减小。
我们通过在更精细的尺度上分解逐点和深度卷积来实现这一点。
当网络的深度(层数)显着减少时,其非线性(在 ReLU 中编码)受到约束,导致性能明显下降。 这激发了我们的第二个设计原则:通过改善每层的非线性来补偿网络深度的减少。 我们通过设计一个新的激活函数 Dynamic Shift-Max 来实现这一点。
3.2、Micro-Factorized 卷积
我们以更精细的尺度分解逐点和深度卷积,Micro-Factorized 卷积由此得名。 目标是在通道数量和输入/输出连接之间取得平衡。
Micro-Factorized Pointwise Convolution:我们提出组自适应卷积来分解逐点卷积。 为了简洁起见,我们假设卷积核 W 具有相同数量的输入和输出通道(
C
i
n
=
C
o
u
t
=
C
C_in = C_out = C
Cin=Cout=C)并忽略偏差。 核矩阵 W 被分解为两个组自适应卷积,其中组数 G 取决于通道数 C。在数学上,它可以表示为:
W
=
P
Φ
Q
T
(1)
\\boldsymbolW=\\boldsymbolP \\boldsymbol\\Phi \\boldsymbolQ^T \\tag1
W=PΦQT(1)
其中
W
W
W 是一个
C
×
C
C×C
C×C 矩阵。 Q 的形状为
C
×
C
R
C×\\fracCR
C×RC,按比例 R 压缩通道数。 P 的形状为
C
×
C
R
C×\\fracCR
C×RC,将通道数扩展回 C 作为输出。 P 和 Q 是有 G 个块的对角块矩阵,其中每个块对应一个组的卷积。$\\boldsymbol\\Phi $ 是一个
C
R
×
C
R
\\fracCR × \\fracCR
RC×RC 置换矩阵,类似于 [42] 中的混洗通道。 计算复杂度为
O
=
2
C
2
R
G
\\mathcalO=\\frac2 C^2R G
O=RG2C2 。 图 2-左显示了 C = 18、R = 2 和 G = 3 的示例。
请注意,组数 G 不是固定的,而是适应通道数 C 和缩减比 R 为:
G
=
C
/
R
(2)
G=\\sqrtC / R \\tag2
G=C/R(2)
这种平方根关系源自通道数量 C 和输入/输出连接性之间的平衡。 在这里,我们将连通性 E 定义为每个输出通道的输入输出连接数。 每个输出通道连接到两个组自适应卷积之间的
C
R
G
\\fracCRG
RGC 隐藏通道,每个隐藏通道连接到 CG 输入通道。 因此
E
=
C
2
R
G
2
E = \\frac C^2R G^2
E=RG2C2 。 当我们固定计算复杂度
O
=
2
C
2
R
G
\\mathcalO=\\frac2 C^2R G
O=RG2C2和缩减比 R 时,通道数
C
C
C 和连通性 $E $在
G
G
G 上沿相反方向变化:
C
=
O
R
G
2
,
E
=
O
2
G
C=\\sqrt\\frac\\mathcalO R G2, \\quad E=\\frac\\mathcalO2 G
C=2ORG,E=2GO
这如图 3 所示。随着组数 G 的增加,C 增加但 E 减少。 当 G = KaTeX parse error: \\tag works only in display equations 时,两条曲线相交
(
C
=
E
)
(C = E)
(C=E),此时每个输出通道连接到所有输入通道一次。 在数学上,得到的卷积矩阵 W 被划分为
G
×
G
G×G
G×G 块,每个块的秩为 1(见图 2-左)。
Micro-Factorized 深度卷积:如图 2-Middle 所示,我们将一个 k × k k×k k×k 深度卷积核分解为一个 k × 1 k×1 k×1 核和一个 1 × k 1×k 1×k 核。 这与Micro-Factorized逐点卷积(方程 1)具有相同的数学格式。 每个通道 W 的核矩阵的形状为 k × k k × k k×k,它被分解为一个 k × 1 k × 1 k×1 向量 P 和一个 1 × k 1 × k 1×k 向量 Q T Q^T QT 。 这里 $ \\boldsymbol\\Phi$ 是一个值为 1 的标量。这种低秩近似将计算复杂度从 O ( k 2 C ) \\mathcalO(k^2C) O(k2C)降低到 O ( k C ) \\mathcalO(kC) O(kC)。
组合Micro-Factorized 逐点和深度卷积:我们以两种不同的方式组合微因子逐点和深度卷积:(a)常规组合和(b)精简组合。 前者只是连接两个卷积。 lite 组合使用 Micro-Factorized depthwise 卷积通过在每个通道应用多个空间滤波器来扩展通道数量。 然后,它应用一个组自适应卷积来融合和压缩通道数量(如图 2-右所示)。 与常规对应物相比,精简组合在较低级别更有效,因为它节省了通道融合(逐点)的计算,以补偿学习更多空间滤波器(深度)。
3.3、动态 Shift-Max
现在我们提出动态 Shift-Max,这是一种增强非线性的新激活函数。 它将输入特征图与其循环组移位动态融合,其中一组通道被移位。 Dynamic Shift-Max 还加强了组之间的联系。 这是对关注组内连接的微因子逐点卷积的补充。
定义: 令
x
=
x
i
(
i
=
1
,
…
,
C
)
x = x_i (i = 1, \\ldots,C)
x=xi(i=1,…,C) 表示一个输入向量(或张量),其 C 个通道分为 G 个组。 每个组都有
C
G
\\fracCG
GC通道。 它的 N 通道循环移位可以表示为
x
N
(
i
)
=
x
(
i
+
N
)
m
o
d
C
x_N(i)=x_(i+N) mod C
xN(i)=x(i+N)modC。我们通过将组循环函数定义为: 以上是关于MicroNet:以极低的 FLOP 实现图像识别的主要内容,如果未能解决你的问题,请参考以下文章 加州大学与微软提出MicroNet,比MobileNetv3更小更快的网络
x
C
G
(
i
,
j
)
=
x
(
i
+
j
C
G
)
m
o
d
C
,
j
=
0
,
…
,
G
−
1
(4)
x_\\fracCG(i, j)=x_\\left(i+j \\fracCG\\right) \\bmod C, j=0, \\ldots, G-1 \\tag4
xGC(i,j)=x(i+jGC)modC,j=0,…,