Hello all,
I am implementing a fully CNN for image processing and I am stuck at one point:
When I want my down sampling layers for a constant resolution I reach the point where max pooling results in a number of pixels that is not divisible by 2. So it is rounded off. What is the correct way to up sample at this point and reach the original resolution again?
Greetings Florian
===================================================================================================================
Layer (type:depth-idx)                   Input Shape               Output Shape              Param #
===================================================================================================================
├─Down1: 1-1                             [-1, 3, 1080, 1920]       [-1, 16, 540, 960]        --
|    └─Conv2d: 2-1                       [-1, 3, 1080, 1920]       [-1, 8, 1080, 1920]       224
|    └─ReLU: 2-2                         [-1, 8, 1080, 1920]       [-1, 8, 1080, 1920]       --
|    └─Conv2d: 2-3                       [-1, 8, 1080, 1920]       [-1, 16, 1080, 1920]      1,168
|    └─ReLU: 2-4                         [-1, 16, 1080, 1920]      [-1, 16, 1080, 1920]      --
|    └─MaxPool2d: 2-5                    [-1, 16, 1080, 1920]      [-1, 16, 540, 960]        --
├─Down2: 1-2                             [-1, 16, 540, 960]        [-1, 32, 270, 480]        --
|    └─Conv2d: 2-6                       [-1, 16, 540, 960]        [-1, 16, 540, 960]        6,416
|    └─ReLU: 2-7                         [-1, 16, 540, 960]        [-1, 16, 540, 960]        --
|    └─Dropout2d: 2-8                    [-1, 16, 540, 960]        [-1, 16, 540, 960]        --
|    └─Conv2d: 2-9                       [-1, 16, 540, 960]        [-1, 32, 540, 960]        4,640
|    └─ReLU: 2-10                        [-1, 32, 540, 960]        [-1, 32, 540, 960]        --
|    └─Dropout2d: 2-11                   [-1, 32, 540, 960]        [-1, 32, 540, 960]        --
|    └─Conv2d: 2-12                      [-1, 32, 540, 960]        [-1, 32, 540, 960]        25,632
|    └─ReLU: 2-13                        [-1, 32, 540, 960]        [-1, 32, 540, 960]        --
|    └─Dropout2d: 2-14                   [-1, 32, 540, 960]        [-1, 32, 540, 960]        --
|    └─MaxPool2d: 2-15                   [-1, 32, 540, 960]        [-1, 32, 270, 480]        --
├─Down3: 1-3                             [-1, 32, 270, 480]        [-1, 64, 135, 240]        --
|    └─Conv2d: 2-16                      [-1, 32, 270, 480]        [-1, 64, 270, 480]        18,496
|    └─ReLU: 2-17                        [-1, 64, 270, 480]        [-1, 64, 270, 480]        --
|    └─Dropout2d: 2-18                   [-1, 64, 270, 480]        [-1, 64, 270, 480]        --
|    └─Conv2d: 2-19                      [-1, 64, 270, 480]        [-1, 64, 270, 480]        102,464
|    └─ReLU: 2-20                        [-1, 64, 270, 480]        [-1, 64, 270, 480]        --
|    └─Dropout2d: 2-21                   [-1, 64, 270, 480]        [-1, 64, 270, 480]        --
|    └─MaxPool2d: 2-22                   [-1, 64, 270, 480]        [-1, 64, 135, 240]        --
├─Down4: 1-4                             [-1, 64, 135, 240]        [-1, 64, 67, 120]         --
|    └─Conv2d: 2-23                      [-1, 64, 135, 240]        [-1, 64, 135, 240]        36,928
|    └─ReLU: 2-24                        [-1, 64, 135, 240]        [-1, 64, 135, 240]        --
|    └─Dropout2d: 2-25                   [-1, 64, 135, 240]        [-1, 64, 135, 240]        --
|    └─Conv2d: 2-26                      [-1, 64, 135, 240]        [-1, 64, 135, 240]        102,464
|    └─ReLU: 2-27                        [-1, 64, 135, 240]        [-1, 64, 135, 240]        --
|    └─Dropout2d: 2-28                   [-1, 64, 135, 240]        [-1, 64, 135, 240]        --
|    └─MaxPool2d: 2-29                   [-1, 64, 135, 240]        [-1, 64, 67, 120]         --
├─Up1: 1-5                               [-1, 64, 67, 120]         [-1, 64, 134, 240]        --
|    └─Upsample: 2-30                    [-1, 64, 67, 120]         [-1, 64, 134, 240]        --
|    └─Conv2d: 2-31                      [-1, 64, 134, 240]        [-1, 64, 134, 240]        102,464
|    └─ReLU: 2-32                        [-1, 64, 134, 240]        [-1, 64, 134, 240]        --
|    └─Dropout2d: 2-33                   [-1, 64, 134, 240]        [-1, 64, 134, 240]        --
|    └─Conv2d: 2-34                      [-1, 64, 134, 240]        [-1, 64, 134, 240]        36,928
|    └─ReLU: 2-35                        [-1, 64, 134, 240]        [-1, 64, 134, 240]        --
|    └─Dropout2d: 2-36                   [-1, 64, 134, 240]        [-1, 64, 134, 240]        --
├─Up2: 1-6                               [-1, 64, 134, 240]        [-1, 64, 268, 480]        --
|    └─Upsample: 2-37                    [-1, 64, 134, 240]        [-1, 64, 268, 480]        --
|    └─Conv2d: 2-38                      [-1, 64, 268, 480]        [-1, 64, 268, 480]        102,464
|    └─ReLU: 2-39                        [-1, 64, 268, 480]        [-1, 64, 268, 480]        --
|    └─Dropout2d: 2-40                   [-1, 64, 268, 480]        [-1, 64, 268, 480]        --
|    └─Conv2d: 2-41                      [-1, 64, 268, 480]        [-1, 64, 268, 480]        36,928
|    └─ReLU: 2-42                        [-1, 64, 268, 480]        [-1, 64, 268, 480]        --
|    └─Dropout2d: 2-43                   [-1, 64, 268, 480]        [-1, 64, 268, 480]        --
├─Up3: 1-7                               [-1, 64, 268, 480]        [-1, 16, 536, 960]        --
|    └─Upsample: 2-44                    [-1, 64, 268, 480]        [-1, 64, 536, 960]        --
|    └─Conv2d: 2-45                      [-1, 64, 536, 960]        [-1, 32, 536, 960]        51,232
|    └─ReLU: 2-46                        [-1, 32, 536, 960]        [-1, 32, 536, 960]        --
|    └─Dropout2d: 2-47                   [-1, 32, 536, 960]        [-1, 32, 536, 960]        --
|    └─Conv2d: 2-48                      [-1, 32, 536, 960]        [-1, 32, 536, 960]        9,248
|    └─ReLU: 2-49                        [-1, 32, 536, 960]        [-1, 32, 536, 960]        --
|    └─Dropout2d: 2-50                   [-1, 32, 536, 960]        [-1, 32, 536, 960]        --
|    └─Conv2d: 2-51                      [-1, 32, 536, 960]        [-1, 16, 536, 960]        12,816
|    └─ReLU: 2-52                        [-1, 16, 536, 960]        [-1, 16, 536, 960]        --
|    └─Dropout2d: 2-53                   [-1, 16, 536, 960]        [-1, 16, 536, 960]        --
├─Up4: 1-8                               [-1, 16, 536, 960]        [-1, 1, 1072, 1920]       --
|    └─Upsample: 2-54                    [-1, 16, 536, 960]        [-1, 16, 1072, 1920]      --
|    └─Conv2d: 2-55                      [-1, 16, 1072, 1920]      [-1, 16, 1072, 1920]      2,320
|    └─ReLU: 2-56                        [-1, 16, 1072, 1920]      [-1, 16, 1072, 1920]      --
|    └─Conv2d: 2-57                      [-1, 16, 1072, 1920]      [-1, 1, 1072, 1920]       145
|    └─ReLU: 2-58                        [-1, 1, 1072, 1920]       [-1, 1, 1072, 1920]       --
===================================================================================================================
Total params: 652,977
Trainable params: 652,977
Non-trainable params: 0
Total mult-adds (G): 107.09
===================================================================================================================
Input size (MB): 23.73
Forward/backward pass size (MB): 1592.34
Params size (MB): 2.49
Estimated Total Size (MB): 1618.57
===================================================================================================================

Process finished with exit code 0


Edit: Architecture