atrous spatial pyramid pooling
Atrous Spatial Pyramid Pooling (ASPP) is the module that lets a single layer in DeepLab perceive objects at many sizes at once. The problem it solves: a car that is close fills the frame, a car far away is a few pixels, yet both should be labeled "car". A fixed receptive field is wrong for one of them. ASPP's answer is to look at the same feature map through several windows of different widths simultaneously, then merge what each sees.
Mechanically, ASPP applies several atrous (dilated) convolutions in parallel to the same input, each with a different dilation rate — for example rates 6, 12, and 18 at output stride 16. A small rate sees fine, local structure; a large rate spans a wide context with the same number of weights, because the kernel is spread out with gaps. DeepLabv3 augments this pyramid with a plain 1×1 convolution (rate 1) and an image-level global average pooling branch that injects whole-scene context. All branches are concatenated and fused by a final 1×1 convolution into the output features.
The name decomposes its lineage: "atrous" (French à trous, "with holes") is the dilated convolution; "spatial pyramid pooling" is the idea, borrowed from earlier recognition work, of probing a representation at multiple scales and pooling the results. ASPP marries the two so the multi-scale probing happens densely, at every spatial location, which is exactly what dense per-pixel prediction requires.
A 3×3 kernel at dilation rate 6 covers a 13×13 region (effective size = 3 + 2×(6−1)) but still uses only 9 weights — wide context, no extra parameters.