Every feature map behind the input is a real 2D convolution of the layer before it: a small kernel slides over the grid, each output cell is the weighted sum of the pixels under it, then a ReLU keeps only positive responses, then 2×2 max-pooling keeps the strongest response in every 2×2 block.
out[i,j] = ReLU( Σ_m Σ_n I[i+m,j+n]·K[m,n] )
size_conv = W − K + 1 (valid, stride 1)
size_pool = ⌊size_conv / 2⌋ (2×2 max-pool, stride 2)
RF ← RF + (K−1)·jump (after every conv)
RF ← RF + jump ; jump ← jump·2 (after every pool)
- Input image — a 16×16 toy bitmap of a shape; the network never "sees" the label, only these pixels.
- Classify — the deepest feature map is compared (cosine similarity → softmax) against a template computed the same way for every shape; highest similarity wins, like the final fully-connected layer of a real CNN classifier.
- Detect — a YOLO/DETR-style pass: the first feature map is scanned for cells with above-average edge energy, and their bounding cells are merged into one predicted box, the same "dense grid → box" idea real detectors use.
- Segment — the deepest feature map is upsampled back to pixel resolution and thresholded, painting every input pixel it thinks belongs to the object — a tiny version of an encoder-decoder segmentation network.
- Kernel size / stages — a bigger kernel or more conv+pool stages grows the receptive field faster, exactly like stacking convolutions (CNN) vs. the global self-attention every patch gets from the first layer in a Vision Transformer (ViT).