A standard convolution layer slides a K×K×Cin filter across the feature map, and does this once per output channel — every output pixel mixes all input channels and all kernel taps in one step:
FLOPs_std = N·N · K·K · C_in · C_out
Params_std = K·K · C_in · C_out
MobileNet's depthwise separable convolution factors that into two cheaper stages:
1) Depthwise: one K×K filter PER channel, no channel mixing
FLOPs_dw = N·N · K·K · C_in
2) Pointwise: a 1×1 convolution that mixes channels
FLOPs_pw = N·N · C_in · C_out
FLOPs_ds = FLOPs_dw + FLOPs_pw
Speedup = FLOPs_std / FLOPs_ds ≈ 1 / (1/C_out + 1/K²)
- Kernel size K — a larger receptive field makes the standard filter's cost grow with K², while only the depthwise stage feels that cost.
- Cin / Cout — the pointwise 1×1 stage carries all the channel-mixing cost; more output channels widen the gap to standard convolution.
- Spatial size N — both approaches scale the same way with resolution (N²), so it cancels out of the speedup ratio.
- The sliding wireframe box shows the same K×K window mechanic both approaches share — the difference is purely in how many multiply-accumulates happen at each window position.
Real-world relevance: this factoring is the core trick behind MobileNet, EfficientNet and most on-device vision models — it typically cuts compute by 8–9× with only a small accuracy cost, which is why phones can run real-time image classification.