In the first two blocks, the convolutional kernels are relatively small compared to the size of the input. Accordingly, the first two blocks mainly preserve the detailed features of the original image. However, unlike the early CNNs aiming at small-size images as \(28 \times 28\)  in the Modified NIST dataset [1]}, the current deep learning approaches are designed to segment images with a size of at least hundreds by hundreds. Hence, the basic kernel in \(3 \times 3\)  is insufficient for abstraction, and as such, two convolutional layers are combined to stimulate the receptive field of a \(5 \times 5\)  kernel but with fewer parameters involved. The outputs from the third block are equal or less than the 1/16 size of the original image. Therefore, the receptive field of those blocks should be extended for preserving features. Consequently, an additional convolutional layer is added in each of those blocks. Here, a feature preserving branch is augmented at the output of the convolutional blocks in the encoder to adjust the level of abstraction from upper-layers by concatenation with the downsampling layer. Here, unlike the pipeline of the DeepCrack [2]}, which inherits the auto-encoder structure of SegNet [3]}, the proposed preserving branch is to maintain the image features by alleviating nonlinear redundancy, as explained at the end of this Section.
