标准回答
深度可分离卷积的拆分
标准卷积同时在空间维和通道维做加权求和。深度可分离卷积把它拆成两步:先用 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 降幅。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。