Ghost Module and Ghost Bottleneck: Cheap Features for Mobile CNNs
· 2 min read · 391 words
A Ghost module replaces one expensive convolution with two stages: generate a smaller set of intrinsic feature maps using a normal convolution, then derive additional maps from them using cheap linear operations, usually depthwise convolutions.
The design starts from an empirical observation: many channels in a trained CNN are similar or can be approximated by inexpensive transformations of other channels. Paying for a full convolution to produce every output channel may therefore be wasteful.
Ghost module
In the paper's idealized description, each of intrinsic maps produces outputs: one identity copy and cheaply transformed maps. The total output width is therefore
The key saving is that only the intrinsic maps require the primary convolution. The other maps come from cheaper channel-wise linear operations. Depthwise convolutions are a common choice, but the Ghost-module definition is broader than one particular operation.
Ghost bottleneck
A Ghost bottleneck follows the inverted-residual pattern:
- A Ghost module expands the channel width.
- For stride 2, a depthwise convolution downsamples the feature map.
- An optional squeeze-and-excitation block recalibrates channels.
- A second Ghost module projects back to the output width without an activation after projection.
- A shortcut is added, using a projection when shape or stride changes.
Deployment reality
Lower FLOP counts do not guarantee lower latency. Depthwise kernels, concatenation, memory movement, and backend fusion differ substantially across mobile GPUs, DSPs, NPUs, and CPUs. Benchmark the exported model on the actual runtime and hardware. Ghost modules are most useful when the target backend executes their cheap operations efficiently.
Primary source
- Kai Han et al., GhostNet: More Features from Cheap Operations, CVPR 2020.
