专栏感知【模型轻量化专题】从标准卷积到轻量化卷积

【模型轻量化专题】从标准卷积到轻量化卷积

YCJ2026-05-22
12
0

从标准卷积到轻量化卷积

1. 引言

在前两篇文章中,我们已经分别讨论了神经网络模型为什么需要轻量化,以及如何从参数量、模型大小、FLOPs 和推理时延等指标去衡量一个模型是否轻量。沿着这条思路继续往下分析,一个很自然的问题就是:模型为什么会重?

对于卷积神经网络而言,这个问题的答案往往首先指向卷积层。卷积层是 CNN 中最核心的计算单元,它承担了绝大多数特征提取任务,也通常贡献了模型中相当一部分参数量和计算量。换句话说,如果不先分析卷积本身的复杂度来源,就很难真正理解模型为什么会重,也很难理解轻量化设计到底在优化什么。

标准卷积之所以能够成为深度学习中的基础操作,是因为它在局部感受野、权值共享和空间特征提取等方面具有非常强的表达能力。然而,标准卷积的表达能力并不是无代价获得的。随着输入通道数、输出通道数和特征图分辨率不断增大,标准卷积的参数量和 FLOPs 都会迅速增长,从而成为模型复杂度的重要来源。也正因为如此,许多轻量化网络的设计,实际上并不是绕开卷积,而是在思考如何用更低的代价去重新组织卷积。


2. 卷积在神经网络中的作用

卷积层是卷积神经网络中的核心组成部分,其主要作用是从输入数据中提取具有判别性的局部特征。与全连接层相比,卷积层利用局部感受野和权值共享机制,使网络能够在参数可控的前提下有效建模图像中的空间结构信息。这也是卷积神经网络能够广泛应用于图像分类、目标检测、语义分割等视觉任务的根本原因之一。

从浅层到深层,卷积层逐步完成从低级特征到高级语义特征的提取过程。在网络前部,卷积层往往学习到边缘、纹理和颜色变化等局部模式;在网络后部,卷积层则进一步组合这些低级特征,形成形状、部件乃至目标语义层面的表示。可以说,在典型 CNN 中,卷积层承担了绝大多数表征学习任务,是整个网络的主体计算单元。

也正因为卷积层被大量重复使用,它通常也是模型复杂度的主要来源。一个卷积神经网络可能包含几十层甚至上百层卷积层,而这些卷积层在通道数、特征图尺寸和卷积核大小共同作用下,会产生大量参数和计算。对于轻量化设计而言,卷积层不是可有可无的细节,而是必须重点优化的对象。模型为什么重,很多时候本质上就是卷积为什么重;模型如何变轻,很多时候本质上也是卷积如何变轻。

因此,要理解轻量化卷积,首先就必须从标准卷积的计算机制入手,看看它的参数量和计算量究竟是如何产生的。


3. 标准卷积的计算机制

3.1 标准卷积的基本形式

设输入特征图大小为:

H × W × C_in

其中,H 和 W 分别表示输入特征图的空间高度和宽度,C_in 表示输入通道数。设卷积层输出特征图的通道数为 C_out,卷积核大小为:

K × K

那么,一个标准卷积层的基本形式可以理解为:每一个输出通道都由所有输入通道共同参与计算得到
更具体地说,对于标准卷积中的某一个输出通道,它并不是只看某一个输入通道,而是要对全部 C_in 个输入通道分别进行卷积,再将结果累加,最终得到该输出通道上的响应。由于共有 C_out 个输出通道,因此整个卷积层就需要构造 C_out 组这样的卷积核。

从张量形状上看,标准卷积层的卷积核可以表示为:

C_out × C_in × K × K

这意味着:

  • 每个输出通道对应一组大小为 C_in × K × K 的卷积核
  • 每组卷积核都会同时作用于全部输入通道

  • 所有输出通道共同构成整个卷积层的输出

标准卷积的这个“全连接式通道耦合”是其表达能力强的重要原因。因为每个输出通道都可以综合全部输入通道的信息,所以它能够同时完成空间特征提取和通道信息融合。但也正是这种全连接方式,使得卷积层在参数量和计算量上都较为昂贵。

alt text

3.2 标准卷积的参数量

标准卷积的参数量可以直接从卷积核张量的形状得到。由于卷积核大小为 K × K,输入通道数为 C_in,输出通道数为 C_out,因此整个卷积层的参数量为:

Params = C_in × C_out × K × K

如果考虑偏置项,那么还可以再加上 C_out 个偏置参数。不过在大多数分析中,偏置项相对主参数量较小,通常可以忽略不计,因此更常见的形式就是上式。

从这个公式可以看出,标准卷积的参数量受四个因素共同影响:

  1. 输入通道数 C_in
  2. 输出通道数 C_out
  3. 卷积核大小 K × K
  4. 是否需要为每个输出通道单独配置一整组卷积核

其中最关键的一点是,输入通道数和输出通道数之间是乘法关系。这意味着,随着网络层数加深、通道数增大,参数量会迅速膨胀。例如,当 C_in 和 C_out 都较大时,即使卷积核大小不变,卷积层的参数量也可能非常可观。

举一个简单例子。若某卷积层满足:

C_in = 64, C_out = 128, K = 3

则其参数量为:

64 × 128 × 3 × 3 = 73728

如果进一步增大通道数,例如:

C_in = 256, C_out = 512, K = 3

则参数量变为:

256 × 512 × 3 × 3 = 1179648

可以看到,标准卷积的参数量会随着通道数扩大而快速上升。这也是为什么在深层网络中,卷积层往往是模型参数规模的重要来源。

3.3 标准卷积的计算量

除了参数量,标准卷积的另一个重要复杂度指标是计算量,也就是 FLOPs。为了便于分析,设输出特征图的空间尺寸为:

H_out × W_out

则标准卷积的大致计算量可以写为:

FLOPs ≈ H_out × W_out × C_in × C_out × K × K

如果更严格地把乘法和加法都计入,那么有些文献会写成两倍形式,但在模型复杂度分析中,上述表达已经足够说明问题。

这个公式的含义是:

  • 输出特征图上的每一个空间位置,都需要进行一次局部卷积计算

  • 每个输出通道都要遍历全部输入通道

  • 每个输入通道上还要执行一个 K × K 的卷积核运算
  • 因此,空间尺寸、输入通道数、输出通道数和卷积核大小都会共同决定计算量

从中可以看出,标准卷积的计算复杂度不仅来自通道之间的全连接关系,也来自卷积核在整张特征图上的反复滑动计算。即使卷积核本身不大,只要特征图尺寸较大、通道数较多,FLOPs 也会非常可观。

举一个简单例子。若某卷积层输出特征图大小为:

56 × 56

同时满足:

C_in = 64, C_out = 128, K = 3

则计算量约为:

56 × 56 × 64 × 128 × 3 × 3

这个数值已经非常大。由此可见,标准卷积的“重”并不是一个抽象概念,而是会直接体现在每一层巨大的计算开销中。

alt text

4. 标准卷积的复杂度来源

有了参数量和 FLOPs 的公式之后,可以进一步追问:标准卷积为什么会这么重?从本质上看,其复杂度主要来自两个方面:一是通道间的全连接耦合,二是空间位置上的重复计算。

4.1 通道间全连接带来的高参数量

标准卷积中,每个输出通道都依赖全部输入通道。这意味着,一个输出通道不是由某个单独输入通道生成的,而是要综合所有输入通道的信息。为了实现这一点,卷积层必须为每一个输出通道配置一组完整的、覆盖全部输入通道的卷积核。

这种设计带来的直接后果,就是参数量随着 C_in 和 C_out 呈乘法增长:

Params = C_in × C_out × K × K

当输入通道数和输出通道数都比较大时,这种乘法关系会迅速放大卷积层的参数规模。也就是说,标准卷积参数量高的根本原因,不是单纯因为卷积核是 3 × 3 或 5 × 5,而是因为它采用了全输入通道到全输出通道的耦合方式

从表达能力角度看,这种全连接耦合是有价值的,因为它允许每个输出通道学习来自所有输入通道的综合表示。但从复杂度角度看,它也是参数膨胀的根源。轻量化卷积设计的许多方法,本质上都是在思考:这种全通道耦合是否必须保持不变,能否适度稀疏化、拆分或分解。

4.2 空间位置重复计算带来的高 FLOPs

如果说通道全连接是参数量高的根源,那么空间位置上的重复计算就是 FLOPs 高的根源。卷积操作并不是只在某一个局部位置上执行一次,而是要在整张特征图上进行滑动。输出特征图上的每一个空间位置,都对应一次局部卷积运算。

因此,卷积层的计算量不仅与通道数有关,还与输出特征图的空间尺寸直接相关:

FLOPs ≈ H_out × W_out × C_in × C_out × K × K

从这个公式可以看出,特征图越大,卷积操作重复执行的次数就越多。尤其是在网络前部,输入图像尺寸较大时,即使通道数还没有特别高,卷积层的 FLOPs 也可能已经非常显著。这也是为什么许多网络在高分辨率输入条件下,前几层卷积的计算量并不低。

因此,标准卷积之所以“重”,本质上可以总结为一句话:

它既在通道维度上进行了全面耦合,又在空间维度上进行了大规模重复计算。

这两点共同作用,构成了标准卷积高复杂度的根本来源。

alt text

5. 轻量化卷积的基本思想

理解了标准卷积的复杂度来源之后,轻量化卷积的设计思路也就更容易把握了。轻量化卷积并不是否定卷积本身,而是在尽量保持特征表达能力的前提下,重新组织卷积的计算过程,以减少参数量和 FLOPs。

从整体上看,轻量化卷积主要有以下几条基本思路。

5.1 减少通道之间的连接数量

标准卷积中,每个输出通道都连接全部输入通道,这种全连接式耦合虽然表达能力强,但代价也很高。轻量化卷积的第一条思路,就是减少这种连接数量,不再让每个输出通道都依赖所有输入通道,而是通过分组、拆分等方式降低通道之间的耦合密度。

这种做法的核心在于把“全连接”变为“部分连接”,从而直接减少参数量和计算量。只要通道连接数下降,卷积核总数和对应的运算量就会同步下降。这也是分组卷积等方法的基本出发点。

5.2 分解空间建模与通道建模

标准卷积在一次操作中同时完成两件事:一是利用 K × K 卷积核提取空间特征,二是通过跨通道加权完成通道信息融合。也就是说,它把空间建模和通道建模绑在了一起做。

轻量化卷积的第二条核心思路,就是将这两个过程拆开。先用一种较低成本的方式完成空间特征提取,再用另一种更便宜的方式完成通道融合。这样做的好处在于,可以避免在每一次空间卷积中都同时承担高昂的跨通道计算开销。

深度可分离卷积正是这一思想的典型体现:先做 depthwise convolution 进行空间建模,再做 pointwise convolution 进行通道融合。

5.3 用更低成本的运算近似标准卷积

轻量化卷积并不要求完全保留标准卷积的原始形式。只要能够以更低参数量和更低 FLOPs 达到接近的表征效果,就可以被视为有效的轻量化设计。因此,轻量化卷积的第三条思路,就是通过结构重组、维度压缩或运算近似,用更低成本的计算方式来替代原本昂贵的标准卷积。

这种思想在很多轻量化网络中都很常见。例如,通过 1 × 1 卷积先压缩通道数,再执行空间卷积,就能够以更小代价完成近似的特征提取过程。其本质并不是简单删减,而是对卷积计算流程进行重新设计。
alt text

6. 典型轻量化卷积方法

6.1 分组卷积

分组卷积(Group Convolution)的基本思想,是将输入通道和输出通道按组划分,每一组内部独立执行卷积运算,而不同组之间不直接连接。这样一来,每个输出通道只与部分输入通道相连,而不再依赖全部输入通道。

假设将输入通道和输出通道均分为 G 组,则每组输入通道数为:

C_in / G

每组输出通道数为:

C_out / G

那么分组卷积的参数量为:

Params = G × (C_in / G) × (C_out / G) × K × K

整理后可得:

Params = (C_in × C_out × K × K) / G

对应的 FLOPs 也会近似下降为标准卷积的:

1 / G

因此,分组数 G 越大,参数量和 FLOPs 就越低。

分组卷积的优点很明确:通过减少通道连接数量,直接降低了复杂度。但它也带来一个代价,即不同组之间的信息交互被削弱。如果分组过多,可能会影响特征融合能力。因此,分组卷积本质上是在复杂度与表达能力之间做平衡。

6.2 深度可分离卷积

深度可分离卷积(Depthwise Separable Convolution)是轻量化卷积中最经典的方法之一。它的核心思想并不是仅仅减少通道连接,而是更进一步地将标准卷积拆分成两个独立步骤:空间卷积通道融合

6.2.1 Depthwise Convolution

Depthwise Convolution 的做法是:每个输入通道单独对应一个 K × K 卷积核,只在该通道内部做空间卷积,而不与其他通道发生混合。
若输入通道数为 C_in,则 depthwise convolution 的参数量为:

Params_dw = C_in × K × K

其 FLOPs 约为:

FLOPs_dw ≈ H_out × W_out × C_in × K × K

可以看到,它只完成空间特征提取,不进行通道融合,因此复杂度远低于标准卷积。

6.2.2 Pointwise Convolution

经过 depthwise convolution 之后,还需要进行通道信息融合,这一步通常由 1 × 1 卷积完成,也就是 pointwise convolution。

其参数量为:

Params_pw = C_in × C_out

其 FLOPs 约为:

FLOPs_pw ≈ H_out × W_out × C_in × C_out

虽然 pointwise convolution 仍然涉及跨通道融合,但由于卷积核大小只有 1 × 1,相比标准卷积已经便宜得多。

6.2.3 总复杂度对比

因此,深度可分离卷积的总参数量为:

Params_sep = C_in × K × K + C_in × C_out

总 FLOPs 为:

FLOPs_sep ≈ H_out × W_out × (C_in × K × K + C_in × C_out)

而标准卷积对应的参数量为:

Params_std = C_in × C_out × K × K

当 K = 3 且 C_out 较大时,深度可分离卷积相较标准卷积能够显著降低参数量和 FLOPs。
其本质在于:标准卷积把空间建模和通道融合绑在一起完成,而深度可分离卷积把这两个过程拆开,以更低成本分别完成。
alt text

6.3 逐点卷积与瓶颈结构中的卷积压缩思路

除了分组卷积和深度可分离卷积,另一个非常常见的轻量化思路,是在卷积计算前后使用 1 × 1 卷积进行通道压缩和通道恢复,也就是所谓的瓶颈结构(Bottleneck)。
1 × 1 卷积本身不负责空间特征提取,但它可以高效完成通道数变换。利用这一点,可以先通过 1 × 1 卷积将高维通道压缩到较低维度,再在较低通道数上执行昂贵的空间卷积,最后视需要再通过 1 × 1 卷积恢复到目标维度。
若先把通道从 C_in 压缩到 C_mid,再执行 K × K 卷积,则中间这一步空间卷积的参数量就从原来的:

C_in × C_out × K × K

变为:

C_mid × C_mid × K × K

只要 C_mid 远小于原始通道数,就可以显著降低主卷积层的参数量和 FLOPs。
这种压缩思路的本质是:先降维,再做主要计算。
它并不是直接改变卷积核形式,而是通过控制参与主计算的通道规模,间接达到轻量化目的。许多经典轻量化网络和残差网络变体中,都大量采用了这一思想。
alt text

7. 轻量化卷积的收益与代价

7.1 复杂度收益

轻量化卷积最直接的收益,就是降低参数量和 FLOPs。无论是分组卷积、深度可分离卷积,还是瓶颈压缩结构,它们的共同目标都是尽量减少标准卷积中高成本的部分计算。

具体来说,轻量化卷积通常能够带来以下收益:

  1. 参数量下降
    通过减少通道连接、分解卷积过程或先压缩通道数,可以显著减少卷积核总数,从而降低模型参数量。
  2. FLOPs 降低
    通过减少参与卷积计算的通道数,或将高成本卷积分解为低成本步骤,可以显著降低理论计算量。
  3. 更适合构建轻量模型
    当卷积层本身变轻后,整个网络的存储复杂度和计算复杂度也会相应下降,为后续构建移动端、边缘端模型打下基础。

从轻量化角度看,卷积层一旦被优化,其收益往往是全局性的。因为卷积层在 CNN 中大量重复出现,对它的每一次改进,最终都会累积到整个网络的参数量和 FLOPs 上。

7.2 表达能力代价

轻量化卷积并不是无代价的。它之所以能够降低复杂度,往往是因为牺牲了一部分原本由标准卷积提供的充分连接和完整表达能力。

主要代价包括:

  1. 通道交互减弱
    分组卷积和 depthwise convolution 都会减少跨通道信息融合的强度。如果缺少额外设计,不同通道之间的信息流动可能受到限制。
  2. 表达能力可能下降
    标准卷积本身具有较强的联合建模能力,而轻量化卷积往往通过拆分或近似来降低复杂度,这可能会在一定程度上削弱特征表示能力。
  3. 结构设计更依赖整体搭配
    轻量化卷积本身未必总是优于标准卷积,它通常需要与合适的网络结构、残差连接、通道重排或注意力机制结合,才能取得较好效果。
因此,轻量化卷积的目标从来不是“越轻越好”,而是:在复杂度下降和表达能力保持之间取得合理平衡。

8. 从标准卷积到轻量化卷积的本质变化

如果从更高层面总结,从标准卷积到轻量化卷积的演进,本质上并不是简单地“减少了一些计算”,而是卷积计算范式本身发生了变化。

标准卷积的核心特征是:

  • 通道之间全面耦合

  • 空间建模与通道融合一次完成

  • 追求表达能力的完整性

而轻量化卷积的核心特征则是:

  • 减少通道间不必要的连接

  • 将空间建模与通道融合分解为多个低成本步骤

  • 在表达能力与复杂度之间寻求平衡

因此,这种变化可以概括为:

从标准卷积到轻量化卷积,本质上是从“全连接式卷积计算”走向“结构分解式卷积计算”。

更具体地说,它体现为三个层面的变化:

  1. 从完整耦合走向稀疏连接
    不再要求每个输出通道都连接所有输入通道,而是通过分组或局部连接减少耦合密度。
  2. 从一次完成走向分步完成
    不再用一个标准卷积同时承担空间建模和通道融合,而是将两者拆开,用不同低成本操作分别完成。
  3. 从复杂度优先服从表达能力,走向复杂度与性能共同优化
    标准卷积更强调建模能力上限,而轻量化卷积更强调在有限复杂度预算下获得足够好的表示效果。

这也正是轻量化卷积真正有价值的地方。它不是简单做减法,而是在重新思考卷积究竟应该如何组织,才能以更低代价完成有效特征提取。


9. 总结

卷积层是卷积神经网络中的核心计算单元,也是模型参数量和 FLOPs 的重要来源。标准卷积之所以复杂度较高,根本原因在于两点:一是每个输出通道都与全部输入通道相连,导致参数量随着通道数呈乘法增长;二是卷积核需要在整张特征图上反复滑动,导致空间维度上的大量重复计算。这两点共同构成了标准卷积“重”的本质。

轻量化卷积的出现,并不是为了否定卷积本身,而是为了在尽量保持卷积建模能力的前提下,重新设计卷积的计算流程。无论是分组卷积、深度可分离卷积,还是瓶颈结构中的通道压缩,本质上都在回答同一个问题:如何以更少的参数和更低的 FLOPs,完成接近标准卷积的特征提取任务。

从更抽象的层面看,从标准卷积到轻量化卷积的演进,体现的是卷积计算范式的变化:从全连接式耦合走向结构分解,从一次性统一建模走向多步骤低成本建模。这种变化也为后续各类轻量化网络的设计奠定了基础。

在这些轻量化卷积方法中,深度可分离卷积无疑是最具代表性的一类。它通过将空间卷积和通道融合拆分开来,大幅降低了标准卷积的复杂度。下一篇文章,将进一步聚焦深度可分离卷积,具体分析它为什么能够成为轻量化网络设计中的经典方法。

感知
杂谈技术深度解析
评论0
0/1000