A down block is a contracting-path component of a U-Net that extracts increasingly abstract features while reducing spatial resolution. It combines convolutional processing with pooling; up blocks perform the complementary upsampling operation. section 6.2.3 section 6.3.1
Trace a down block from input to output:
- Apply convolutional layers or residual convolutional blocks to detect spatial patterns and produce feature maps. section 6.2.3 section 6.3.1
- Apply 2D max pooling with a 2 × 2 window to halve image width and height while retaining the largest value from each window. section 6.2.3 section 6.3.1
- Pass the reduced feature representation toward the bottleneck block, while preserving down-path features for later U-Net processing. section 6.3.1
A minimal PyTorch down block
The UnetDown class places a ResidualConvBlock before nn.MaxPool2d(2). The convolutional block transforms channels and features; the pooling layer reduces both spatial dimensions by half. section 6.3.1
Figure 6.5 A numerical example of how max pooling works, with a kernel size of 2 × 2 and a stride equal to 2
A numerical 2 × 2, stride-2 max-pooling example makes the downsampling rule concrete: each output value is the maximum in its input window. section 6.2.3
