Fully Convolutional Networks have achieved state of the art results in computer vision tasks, such as semantic segmentation. FCNs take advantage of three special techniques; one, replace fully connected layers with one by one convolutional layers, two, up-sampling through the use of transposed convolutional layers, three, skip connections. These skip connections allow the network to use information from multiple resolution scales. As a result the network is able to make more precise segmentation decisions. We will discuss these techniques in greater detail shortly. Structurally an FCN is usually comprised of two parts; encoder and decoder. The encoder is a series of convolutional layers like VGG and ResNet. The goal of the encoder is to extract features from the image. The decoder up-scales the output of the encoder such that it’s the same size as the original image. Thus, it results in segmentation or prediction of each individual pixel in the original image.