核心要点

  • 能拆解结构:深度可分离卷积 = 逐通道 depthwise 卷积(只在每个通道内做空间卷积)+ 1×1 pointwise 卷积(跨通道线性组合)

  • 能算计算量:标准卷积约 D_k²·M·N,可分离后约 D_k²·M + M·N,比值约 1/N + 1/D_k²,3×3 卷积可省约 8–9 倍

  • 能讲 1×1 卷积四大用途:跨通道线性组合做通道融合、升降维(瓶颈结构)、增加非线性、显著省算力

  • 能举落地代表:MobileNet/Xception 用可分离卷积做端侧轻量骨干,ResNet/Inception 用 1×1 做 bottleneck

标准回答

深度可分离卷积的拆分

标准卷积同时在空间维和通道维做加权求和。深度可分离卷积把它拆成两步:先用 depthwise 卷积,对每个输入通道单独做一个 (D_k \times D_k) 的空间卷积(不跨通道);再用 pointwise(即 1×1)卷积,在每个空间位置做跨通道的线性组合,得到输出通道。

计算量对比

设卷积核 (D_k \times D_k)、输入通道 M、输出通道 N。标准卷积计算量正比于 (D_k^2 \cdot M \cdot N);可分离后为 (D_k^2 \cdot M + M \cdot N)。两者之比约为 (1/N + 1/D_k^2)。对 3×3 卷积、N 较大时,约能省下 8–9 倍计算量与参数量,非常适合端侧。

1×1 卷积的作用

1×1 卷积本质是在通道维做线性组合:可用于通道融合、升降维构造瓶颈(先降维省算力再升回)、配合激活增加非线性,以及在可分离卷积里承担跨通道信息交互的角色。

常见误区

⚠️ 常见踩坑

别以为可分离卷积「无损」——depthwise 阶段缺少跨通道交互,表达能力弱于标准卷积,需靠 pointwise 补回;也别忽略它访存密集、在某些硬件上加速比不及理论 FLOPs 降幅。

追问

追问 1为什么 depthwise 卷积单独用效果差,必须配 1×1?

depthwise 只在各通道内部做空间滤波,通道之间没有任何信息融合,特征表达受限。1×1 pointwise 卷积负责跨通道线性组合,把各通道信息混合起来,二者配合才能近似标准卷积的表达能力。

追问 2可分离卷积 FLOPs 降了很多,实际推理为什么没快那么多?

因为它是访存(memory-bound)密集型:计算量小但中间特征图读写多,算术强度低,GPU/CPU 利用率不高。实际加速比受硬件、算子实现和通道数影响,常低于理论 FLOPs 降幅。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。