Segmentation

fully convolutional network

A fully convolutional network (FCN) was the breakthrough that turned a classification CNN into a pixel labeler, end to end. The trick is simple but profound. A classifier like VGG ends with fully connected layers that crush the spatial feature map into one vector and one label — losing all location information. The FCN, introduced by Long, Shelhamer, and Darrell in 2015, reinterprets those fully connected layers as 1×1 convolutions. Because every layer is now convolutional, the network accepts any input size and produces a spatial grid of class scores instead of a single label.

That grid, however, is coarse — repeated pooling has shrunk it (typically by 32×). To recover full resolution, the FCN appends learned upsampling layers (transposed convolutions, sometimes loosely called deconvolutions) that enlarge the score map back to the input size. A naive upsample by 32× gives blurry, blob-like masks, so the FCN adds skip connections: it combines the coarse, semantically rich predictions from deep layers with finer, higher-resolution predictions from earlier layers. The variants FCN-32s, FCN-16s, and FCN-8s differ by how many skip connections they fuse; FCN-8s, fusing the most fine detail, gives the sharpest output.

Conceptually, an FCN slides a classifier across the image and reads off a class at every position, but it does so efficiently in one forward pass by sharing computation. This single idea — replace dense layers with convolutions, then upsample — is the foundation underneath essentially every later segmentation architecture, including U-Net, SegNet, and the DeepLab family. Mask R-CNN even uses a tiny FCN as its per-region mask head.

"Deconvolution" is a misnomer borrowed from signal processing; the FCN's upsampling layer does not invert a convolution, it is a learned transposed convolution. Modern code often replaces it with bilinear upsampling plus a regular convolution to avoid checkerboard artifacts.

Also called
FCN