Ghost Module and Ghost Bottleneck: Cheap Features for Mobile CNNs

· 2 min read · 391 words

Authors

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 mm intrinsic maps produces ss outputs: one identity copy and s1s-1 cheaply transformed maps. The total output width is therefore

n=ms.n = m s.

The key saving is that only the mm 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.

Loading diagram…

Ghost bottleneck

A Ghost bottleneck follows the inverted-residual pattern:

  1. A Ghost module expands the channel width.
  2. For stride 2, a depthwise convolution downsamples the feature map.
  3. An optional squeeze-and-excitation block recalibrates channels.
  4. A second Ghost module projects back to the output width without an activation after projection.
  5. 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