Resolution preserving Fully Convolutional Network
I am new to ML and Pytorch and I have the following problem:

I am looking for a Fully Convolutional Network architecture in Pytorch, so that the input would be an RGB image (HxWxC or 480x640x3) and the output would be a single channel image (HxW or 480x640). In other words, I am looking for a network that will preserve the resolution of the input (HxW), and will loose the channel dimension. All of the networks that I've came across (ResNet, Densenet, ...) end with a fully connected layer (without any upsampling or deconvolution). This is problematic for two reasons:


I am restricted with the choice of the input size (HxWxC).
It has nothing to do with the output that I expect to get (a single channel image HxW).


What am I missing? Why is there even a FC layer? Why is there no up-sampling, or  some deconvolution layers after feature extraction? Is there any build-in torchvision.model that might suit my requirements? Where can I find such pytorch architecture? As I said, I am new in this field so I don't really like the idea of building such a network from scratch.

Thanks.

You probably came across the networks that are used in classification. So they end up with a pooling and a fully connected layer to produce a fixed number of categorical output.

Have a look at Unet
https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

Note: the original unet implementation use a lot of tricks.
You can simply downsample and then upsample symmetrically to do the work.
