Models

FCN

[3]:
from gcpds.image_segmentation.models import fcn_baseline

model_fcn = fcn_baseline(input_shape=(128,128,3),
                         name='fcn',
                        out_channels=1,
                        out_ActFunction='sigmoid')


model_fcn.summary()
2023-09-21 15:03:10.903690: I tensorflow/compiler/xla/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-09-21 15:03:10.904045: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2023-09-21 15:03:10.904144: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcublas.so.11'; dlerror: libcublas.so.11: cannot open shared object file: No such file or directory
2023-09-21 15:03:10.904217: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcublasLt.so.11'; dlerror: libcublasLt.so.11: cannot open shared object file: No such file or directory
2023-09-21 15:03:10.904291: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcufft.so.10'; dlerror: libcufft.so.10: cannot open shared object file: No such file or directory
2023-09-21 15:03:11.222559: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory
2023-09-21 15:03:11.224774: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1934] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
2023-09-21 15:03:11.231340: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
Model: "FCN"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to
==================================================================================================
 input_1 (InputLayer)           [(None, 128, 128, 3  0           []
                                )]

 Batch00 (BatchNormalization)   (None, 128, 128, 3)  12          ['input_1[0][0]']

 Conv10 (Conv2D)                (None, 128, 128, 32  896         ['Batch00[0][0]']
                                )

 Conv11 (Conv2D)                (None, 128, 128, 32  9248        ['Conv10[0][0]']
                                )

 Batch10 (BatchNormalization)   (None, 128, 128, 32  128         ['Conv11[0][0]']
                                )

 Pool10 (MaxPooling2D)          (None, 64, 64, 32)   0           ['Batch10[0][0]']

 Conv20 (Conv2D)                (None, 64, 64, 32)   9248        ['Pool10[0][0]']

 Conv21 (Conv2D)                (None, 64, 64, 32)   9248        ['Conv20[0][0]']

 Batch20 (BatchNormalization)   (None, 64, 64, 32)   128         ['Conv21[0][0]']

 Pool20 (MaxPooling2D)          (None, 32, 32, 32)   0           ['Batch20[0][0]']

 Conv30 (Conv2D)                (None, 32, 32, 64)   18496       ['Pool20[0][0]']

 Conv31 (Conv2D)                (None, 32, 32, 64)   36928       ['Conv30[0][0]']

 Batch30 (BatchNormalization)   (None, 32, 32, 64)   256         ['Conv31[0][0]']

 Pool30 (MaxPooling2D)          (None, 16, 16, 64)   0           ['Batch30[0][0]']

 Conv40 (Conv2D)                (None, 16, 16, 128)  73856       ['Pool30[0][0]']

 Conv41 (Conv2D)                (None, 16, 16, 128)  147584      ['Conv40[0][0]']

 Batch40 (BatchNormalization)   (None, 16, 16, 128)  512         ['Conv41[0][0]']

 Pool40 (MaxPooling2D)          (None, 8, 8, 128)    0           ['Batch40[0][0]']

 Conv50 (Conv2D)                (None, 8, 8, 256)    295168      ['Pool40[0][0]']

 Conv51 (Conv2D)                (None, 8, 8, 256)    590080      ['Conv50[0][0]']

 Batch50 (BatchNormalization)   (None, 8, 8, 256)    1024        ['Conv51[0][0]']

 Pool50 (MaxPooling2D)          (None, 4, 4, 256)    0           ['Batch50[0][0]']

 Conv60 (Conv2D)                (None, 8, 8, 1)      129         ['Pool40[0][0]']

 Trans60 (Conv2DTranspose)      (None, 8, 8, 1)      4096        ['Pool50[0][0]']

 Add10 (Add)                    (None, 8, 8, 1)      0           ['Conv60[0][0]',
                                                                  'Trans60[0][0]']

 Conv70 (Conv2D)                (None, 16, 16, 1)    65          ['Pool30[0][0]']

 Trans70 (Conv2DTranspose)      (None, 16, 16, 1)    16          ['Add10[0][0]']

 Add20 (Add)                    (None, 16, 16, 1)    0           ['Conv70[0][0]',
                                                                  'Trans70[0][0]']

 Trans80 (Conv2DTranspose)      (None, 128, 128, 1)  257         ['Add20[0][0]']

==================================================================================================
Total params: 1,197,375
Trainable params: 1,196,345
Non-trainable params: 1,030
__________________________________________________________________________________________________

U-Net

[4]:
from gcpds.image_segmentation.models import unet_baseline

model_unet = unet_baseline(input_shape=(128,128,3),
                            name='unet',
                            out_channels=1,
                            out_ActFunction='sigmoid')


model_unet.summary()
Model: "UNET"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to
==================================================================================================
 input_2 (InputLayer)           [(None, 128, 128, 3  0           []
                                )]

 Batch00 (BatchNormalization)   (None, 128, 128, 3)  12          ['input_2[0][0]']

 Conv10 (Conv2D)                (None, 128, 128, 8)  224         ['Batch00[0][0]']

 Batch10 (BatchNormalization)   (None, 128, 128, 8)  32          ['Conv10[0][0]']

 Conv11 (Conv2D)                (None, 128, 128, 8)  584         ['Batch10[0][0]']

 Batch11 (BatchNormalization)   (None, 128, 128, 8)  32          ['Conv11[0][0]']

 Pool10 (MaxPooling2D)          (None, 64, 64, 8)    0           ['Batch11[0][0]']

 Conv20 (Conv2D)                (None, 64, 64, 16)   1168        ['Pool10[0][0]']

 Batch20 (BatchNormalization)   (None, 64, 64, 16)   64          ['Conv20[0][0]']

 Conv21 (Conv2D)                (None, 64, 64, 16)   2320        ['Batch20[0][0]']

 Batch22 (BatchNormalization)   (None, 64, 64, 16)   64          ['Conv21[0][0]']

 Pool20 (MaxPooling2D)          (None, 32, 32, 16)   0           ['Batch22[0][0]']

 Conv30 (Conv2D)                (None, 32, 32, 32)   4640        ['Pool20[0][0]']

 Batch30 (BatchNormalization)   (None, 32, 32, 32)   128         ['Conv30[0][0]']

 Conv31 (Conv2D)                (None, 32, 32, 32)   9248        ['Batch30[0][0]']

 Batch31 (BatchNormalization)   (None, 32, 32, 32)   128         ['Conv31[0][0]']

 Pool30 (MaxPooling2D)          (None, 16, 16, 32)   0           ['Batch31[0][0]']

 Conv40 (Conv2D)                (None, 16, 16, 64)   18496       ['Pool30[0][0]']

 Batch40 (BatchNormalization)   (None, 16, 16, 64)   256         ['Conv40[0][0]']

 Conv41 (Conv2D)                (None, 16, 16, 64)   36928       ['Batch40[0][0]']

 Batch41 (BatchNormalization)   (None, 16, 16, 64)   256         ['Conv41[0][0]']

 Pool40 (MaxPooling2D)          (None, 8, 8, 64)     0           ['Batch41[0][0]']

 Conv50 (Conv2D)                (None, 8, 8, 128)    73856       ['Pool40[0][0]']

 Batch50 (BatchNormalization)   (None, 8, 8, 128)    512         ['Conv50[0][0]']

 Conv51 (Conv2D)                (None, 8, 8, 128)    147584      ['Batch50[0][0]']

 Batch51 (BatchNormalization)   (None, 8, 8, 128)    512         ['Conv51[0][0]']

 Up60 (UpSampling2D)            (None, 16, 16, 128)  0           ['Batch51[0][0]']

 Concat60 (Concatenate)         (None, 16, 16, 192)  0           ['Conv41[0][0]',
                                                                  'Up60[0][0]']

 Conv60 (Conv2D)                (None, 16, 16, 64)   110656      ['Concat60[0][0]']

 Batch60 (BatchNormalization)   (None, 16, 16, 64)   256         ['Conv60[0][0]']

 Conv61 (Conv2D)                (None, 16, 16, 64)   36928       ['Batch60[0][0]']

 Batch61 (BatchNormalization)   (None, 16, 16, 64)   256         ['Conv61[0][0]']

 Up70 (UpSampling2D)            (None, 32, 32, 64)   0           ['Batch61[0][0]']

 Concat70 (Concatenate)         (None, 32, 32, 96)   0           ['Conv31[0][0]',
                                                                  'Up70[0][0]']

 Conv70 (Conv2D)                (None, 32, 32, 32)   27680       ['Concat70[0][0]']

 Batch70 (BatchNormalization)   (None, 32, 32, 32)   128         ['Conv70[0][0]']

 Conv71 (Conv2D)                (None, 32, 32, 32)   9248        ['Batch70[0][0]']

 Batch71 (BatchNormalization)   (None, 32, 32, 32)   128         ['Conv71[0][0]']

 Up80 (UpSampling2D)            (None, 64, 64, 32)   0           ['Batch71[0][0]']

 Concat80 (Concatenate)         (None, 64, 64, 48)   0           ['Conv21[0][0]',
                                                                  'Up80[0][0]']

 Conv80 (Conv2D)                (None, 64, 64, 16)   6928        ['Concat80[0][0]']

 Batch80 (BatchNormalization)   (None, 64, 64, 16)   64          ['Conv80[0][0]']

 Conv81 (Conv2D)                (None, 64, 64, 16)   2320        ['Batch80[0][0]']

 Batch81 (BatchNormalization)   (None, 64, 64, 16)   64          ['Conv81[0][0]']

 Up90 (UpSampling2D)            (None, 128, 128, 16  0           ['Batch81[0][0]']
                                )

 Concat90 (Concatenate)         (None, 128, 128, 24  0           ['Conv11[0][0]',
                                )                                 'Up90[0][0]']

 Conv90 (Conv2D)                (None, 128, 128, 8)  1736        ['Concat90[0][0]']

 Batch90 (BatchNormalization)   (None, 128, 128, 8)  32          ['Conv90[0][0]']

 Conv91 (Conv2D)                (None, 128, 128, 8)  584         ['Batch90[0][0]']

 Batch91 (BatchNormalization)   (None, 128, 128, 8)  32          ['Conv91[0][0]']

 Conv100 (Conv2D)               (None, 128, 128, 1)  9           ['Batch91[0][0]']

==================================================================================================
Total params: 494,093
Trainable params: 492,615
Non-trainable params: 1,478
__________________________________________________________________________________________________

ResUNet

[5]:
from gcpds.image_segmentation.models import res_unet_baseline

model_res_unet = res_unet_baseline(input_shape=(128,128,3),
                            name='resunet',
                            out_channels=1,
                            out_ActFunction='sigmoid')


model_res_unet.summary()
Model: "model"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to
==================================================================================================
 input (InputLayer)             [(None, 128, 128, 3  0           []
                                )]

 batch_normalization (BatchNorm  (None, 128, 128, 3)  12         ['input[0][0]']
 alization)

 Res00_Conv00 (Conv2D)          (None, 128, 128, 8)  32          ['batch_normalization[0][0]']

 Res00_Batch00 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res00_Conv00[0][0]']
 ion)

 Res00_Act00 (Activation)       (None, 128, 128, 8)  0           ['Res00_Batch00[0][0]']

 Res00_Conv01 (Conv2D)          (None, 128, 128, 8)  584         ['Res00_Act00[0][0]']

 Res00_Conv02 (Conv2D)          (None, 128, 128, 8)  32          ['batch_normalization[0][0]']

 Res00_Batch01 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res00_Conv01[0][0]']
 ion)

 Res00_Batch02 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res00_Conv02[0][0]']
 ion)

 Res00_Add00 (Add)              (None, 128, 128, 8)  0           ['Res00_Batch01[0][0]',
                                                                  'Res00_Batch02[0][0]']

 Res00_Act01 (Activation)       (None, 128, 128, 8)  0           ['Res00_Add00[0][0]']

 Res01_Conv00 (Conv2D)          (None, 128, 128, 8)  72          ['Res00_Act01[0][0]']

 Res01_Batch00 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res01_Conv00[0][0]']
 ion)

 Res01_Act00 (Activation)       (None, 128, 128, 8)  0           ['Res01_Batch00[0][0]']

 Res01_Conv01 (Conv2D)          (None, 128, 128, 8)  584         ['Res01_Act00[0][0]']

 Res01_Conv02 (Conv2D)          (None, 128, 128, 8)  72          ['Res00_Act01[0][0]']

 Res01_Batch01 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res01_Conv01[0][0]']
 ion)

 Res01_Batch02 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res01_Conv02[0][0]']
 ion)

 Res01_Add00 (Add)              (None, 128, 128, 8)  0           ['Res01_Batch01[0][0]',
                                                                  'Res01_Batch02[0][0]']

 Res01_Act01 (Activation)       (None, 128, 128, 8)  0           ['Res01_Add00[0][0]']

 Maxp00 (MaxPooling2D)          (None, 64, 64, 8)    0           ['Res01_Act01[0][0]']

 Res02_Conv00 (Conv2D)          (None, 64, 64, 16)   144         ['Maxp00[0][0]']

 Res02_Batch00 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res02_Conv00[0][0]']
 ion)

 Res02_Act00 (Activation)       (None, 64, 64, 16)   0           ['Res02_Batch00[0][0]']

 Res02_Conv01 (Conv2D)          (None, 64, 64, 16)   2320        ['Res02_Act00[0][0]']

 Res02_Conv02 (Conv2D)          (None, 64, 64, 16)   144         ['Maxp00[0][0]']

 Res02_Batch01 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res02_Conv01[0][0]']
 ion)

 Res02_Batch02 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res02_Conv02[0][0]']
 ion)

 Res02_Add00 (Add)              (None, 64, 64, 16)   0           ['Res02_Batch01[0][0]',
                                                                  'Res02_Batch02[0][0]']

 Res02_Act01 (Activation)       (None, 64, 64, 16)   0           ['Res02_Add00[0][0]']

 Res03_Conv00 (Conv2D)          (None, 64, 64, 16)   272         ['Res02_Act01[0][0]']

 Res03_Batch00 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res03_Conv00[0][0]']
 ion)

 Res03_Act00 (Activation)       (None, 64, 64, 16)   0           ['Res03_Batch00[0][0]']

 Res03_Conv01 (Conv2D)          (None, 64, 64, 16)   2320        ['Res03_Act00[0][0]']

 Res03_Conv02 (Conv2D)          (None, 64, 64, 16)   272         ['Res02_Act01[0][0]']

 Res03_Batch01 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res03_Conv01[0][0]']
 ion)

 Res03_Batch02 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res03_Conv02[0][0]']
 ion)

 Res03_Add00 (Add)              (None, 64, 64, 16)   0           ['Res03_Batch01[0][0]',
                                                                  'Res03_Batch02[0][0]']

 Res03_Act01 (Activation)       (None, 64, 64, 16)   0           ['Res03_Add00[0][0]']

 Maxp01 (MaxPooling2D)          (None, 32, 32, 16)   0           ['Res03_Act01[0][0]']

 Res04_Conv00 (Conv2D)          (None, 32, 32, 32)   544         ['Maxp01[0][0]']

 Res04_Batch00 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res04_Conv00[0][0]']
 ion)

 Res04_Act00 (Activation)       (None, 32, 32, 32)   0           ['Res04_Batch00[0][0]']

 Res04_Conv01 (Conv2D)          (None, 32, 32, 32)   9248        ['Res04_Act00[0][0]']

 Res04_Conv02 (Conv2D)          (None, 32, 32, 32)   544         ['Maxp01[0][0]']

 Res04_Batch01 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res04_Conv01[0][0]']
 ion)

 Res04_Batch02 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res04_Conv02[0][0]']
 ion)

 Res04_Add00 (Add)              (None, 32, 32, 32)   0           ['Res04_Batch01[0][0]',
                                                                  'Res04_Batch02[0][0]']

 Res04_Act01 (Activation)       (None, 32, 32, 32)   0           ['Res04_Add00[0][0]']

 Res05_Conv00 (Conv2D)          (None, 32, 32, 32)   1056        ['Res04_Act01[0][0]']

 Res05_Batch00 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res05_Conv00[0][0]']
 ion)

 Res05_Act00 (Activation)       (None, 32, 32, 32)   0           ['Res05_Batch00[0][0]']

 Res05_Conv01 (Conv2D)          (None, 32, 32, 32)   9248        ['Res05_Act00[0][0]']

 Res05_Conv02 (Conv2D)          (None, 32, 32, 32)   1056        ['Res04_Act01[0][0]']

 Res05_Batch01 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res05_Conv01[0][0]']
 ion)

 Res05_Batch02 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res05_Conv02[0][0]']
 ion)

 Res05_Add00 (Add)              (None, 32, 32, 32)   0           ['Res05_Batch01[0][0]',
                                                                  'Res05_Batch02[0][0]']

 Res05_Act01 (Activation)       (None, 32, 32, 32)   0           ['Res05_Add00[0][0]']

 Maxp02 (MaxPooling2D)          (None, 16, 16, 32)   0           ['Res05_Act01[0][0]']

 Res06_Conv00 (Conv2D)          (None, 16, 16, 64)   2112        ['Maxp02[0][0]']

 Res06_Batch00 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res06_Conv00[0][0]']
 ion)

 Res06_Act00 (Activation)       (None, 16, 16, 64)   0           ['Res06_Batch00[0][0]']

 Res06_Conv01 (Conv2D)          (None, 16, 16, 64)   36928       ['Res06_Act00[0][0]']

 Res06_Conv02 (Conv2D)          (None, 16, 16, 64)   2112        ['Maxp02[0][0]']

 Res06_Batch01 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res06_Conv01[0][0]']
 ion)

 Res06_Batch02 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res06_Conv02[0][0]']
 ion)

 Res06_Add00 (Add)              (None, 16, 16, 64)   0           ['Res06_Batch01[0][0]',
                                                                  'Res06_Batch02[0][0]']

 Res06_Act01 (Activation)       (None, 16, 16, 64)   0           ['Res06_Add00[0][0]']

 Res07_Conv00 (Conv2D)          (None, 16, 16, 64)   4160        ['Res06_Act01[0][0]']

 Res07_Batch00 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res07_Conv00[0][0]']
 ion)

 Res07_Act00 (Activation)       (None, 16, 16, 64)   0           ['Res07_Batch00[0][0]']

 Res07_Conv01 (Conv2D)          (None, 16, 16, 64)   36928       ['Res07_Act00[0][0]']

 Res07_Conv02 (Conv2D)          (None, 16, 16, 64)   4160        ['Res06_Act01[0][0]']

 Res07_Batch01 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res07_Conv01[0][0]']
 ion)

 Res07_Batch02 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res07_Conv02[0][0]']
 ion)

 Res07_Add00 (Add)              (None, 16, 16, 64)   0           ['Res07_Batch01[0][0]',
                                                                  'Res07_Batch02[0][0]']

 Res07_Act01 (Activation)       (None, 16, 16, 64)   0           ['Res07_Add00[0][0]']

 Maxp03 (MaxPooling2D)          (None, 8, 8, 64)     0           ['Res07_Act01[0][0]']

 Res08_Conv00 (Conv2D)          (None, 8, 8, 128)    8320        ['Maxp03[0][0]']

 Res08_Batch00 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res08_Conv00[0][0]']
 ion)

 Res08_Act00 (Activation)       (None, 8, 8, 128)    0           ['Res08_Batch00[0][0]']

 Res08_Conv01 (Conv2D)          (None, 8, 8, 128)    147584      ['Res08_Act00[0][0]']

 Res08_Conv02 (Conv2D)          (None, 8, 8, 128)    8320        ['Maxp03[0][0]']

 Res08_Batch01 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res08_Conv01[0][0]']
 ion)

 Res08_Batch02 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res08_Conv02[0][0]']
 ion)

 Res08_Add00 (Add)              (None, 8, 8, 128)    0           ['Res08_Batch01[0][0]',
                                                                  'Res08_Batch02[0][0]']

 Res08_Act01 (Activation)       (None, 8, 8, 128)    0           ['Res08_Add00[0][0]']

 Res09_Conv00 (Conv2D)          (None, 8, 8, 128)    16512       ['Res08_Act01[0][0]']

 Res09_Batch00 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res09_Conv00[0][0]']
 ion)

 Res09_Act00 (Activation)       (None, 8, 8, 128)    0           ['Res09_Batch00[0][0]']

 Res09_Conv01 (Conv2D)          (None, 8, 8, 128)    147584      ['Res09_Act00[0][0]']

 Res09_Conv02 (Conv2D)          (None, 8, 8, 128)    16512       ['Res08_Act01[0][0]']

 Res09_Batch01 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res09_Conv01[0][0]']
 ion)

 Res09_Batch02 (BatchNormalizat  (None, 8, 8, 128)   512         ['Res09_Conv02[0][0]']
 ion)

 Res09_Add00 (Add)              (None, 8, 8, 128)    0           ['Res09_Batch01[0][0]',
                                                                  'Res09_Batch02[0][0]']

 Res09_Act01 (Activation)       (None, 8, 8, 128)    0           ['Res09_Add00[0][0]']

 Upsam00 (Conv2DTranspose)      (None, 16, 16, 64)   32832       ['Res09_Act01[0][0]']

 Concat00 (Concatenate)         (None, 16, 16, 128)  0           ['Upsam00[0][0]',
                                                                  'Res07_Act01[0][0]']

 Res10_Conv00 (Conv2D)          (None, 16, 16, 64)   8256        ['Concat00[0][0]']

 Res10_Batch00 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res10_Conv00[0][0]']
 ion)

 Res10_Act00 (Activation)       (None, 16, 16, 64)   0           ['Res10_Batch00[0][0]']

 Res10_Conv01 (Conv2D)          (None, 16, 16, 64)   36928       ['Res10_Act00[0][0]']

 Res10_Conv02 (Conv2D)          (None, 16, 16, 64)   8256        ['Concat00[0][0]']

 Res10_Batch01 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res10_Conv01[0][0]']
 ion)

 Res10_Batch02 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res10_Conv02[0][0]']
 ion)

 Res10_Add00 (Add)              (None, 16, 16, 64)   0           ['Res10_Batch01[0][0]',
                                                                  'Res10_Batch02[0][0]']

 Res10_Act01 (Activation)       (None, 16, 16, 64)   0           ['Res10_Add00[0][0]']

 Res11_Conv00 (Conv2D)          (None, 16, 16, 64)   4160        ['Res10_Act01[0][0]']

 Res11_Batch00 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res11_Conv00[0][0]']
 ion)

 Res11_Act00 (Activation)       (None, 16, 16, 64)   0           ['Res11_Batch00[0][0]']

 Res11_Conv01 (Conv2D)          (None, 16, 16, 64)   36928       ['Res11_Act00[0][0]']

 Res11_Conv02 (Conv2D)          (None, 16, 16, 64)   4160        ['Res10_Act01[0][0]']

 Res11_Batch01 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res11_Conv01[0][0]']
 ion)

 Res11_Batch02 (BatchNormalizat  (None, 16, 16, 64)  256         ['Res11_Conv02[0][0]']
 ion)

 Res11_Add00 (Add)              (None, 16, 16, 64)   0           ['Res11_Batch01[0][0]',
                                                                  'Res11_Batch02[0][0]']

 Res11_Act01 (Activation)       (None, 16, 16, 64)   0           ['Res11_Add00[0][0]']

 Upsam01 (Conv2DTranspose)      (None, 32, 32, 32)   8224        ['Res11_Act01[0][0]']

 Concat01 (Concatenate)         (None, 32, 32, 64)   0           ['Upsam01[0][0]',
                                                                  'Res05_Act01[0][0]']

 Res12_Conv00 (Conv2D)          (None, 32, 32, 32)   2080        ['Concat01[0][0]']

 Res12_Batch00 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res12_Conv00[0][0]']
 ion)

 Res12_Act00 (Activation)       (None, 32, 32, 32)   0           ['Res12_Batch00[0][0]']

 Res12_Conv01 (Conv2D)          (None, 32, 32, 32)   9248        ['Res12_Act00[0][0]']

 Res12_Conv02 (Conv2D)          (None, 32, 32, 32)   2080        ['Concat01[0][0]']

 Res12_Batch01 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res12_Conv01[0][0]']
 ion)

 Res12_Batch02 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res12_Conv02[0][0]']
 ion)

 Res12_Add00 (Add)              (None, 32, 32, 32)   0           ['Res12_Batch01[0][0]',
                                                                  'Res12_Batch02[0][0]']

 Res12_Act01 (Activation)       (None, 32, 32, 32)   0           ['Res12_Add00[0][0]']

 Res13_Conv00 (Conv2D)          (None, 32, 32, 32)   1056        ['Res12_Act01[0][0]']

 Res13_Batch00 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res13_Conv00[0][0]']
 ion)

 Res13_Act00 (Activation)       (None, 32, 32, 32)   0           ['Res13_Batch00[0][0]']

 Res13_Conv01 (Conv2D)          (None, 32, 32, 32)   9248        ['Res13_Act00[0][0]']

 Res13_Conv02 (Conv2D)          (None, 32, 32, 32)   1056        ['Res12_Act01[0][0]']

 Res13_Batch01 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res13_Conv01[0][0]']
 ion)

 Res13_Batch02 (BatchNormalizat  (None, 32, 32, 32)  128         ['Res13_Conv02[0][0]']
 ion)

 Res13_Add00 (Add)              (None, 32, 32, 32)   0           ['Res13_Batch01[0][0]',
                                                                  'Res13_Batch02[0][0]']

 Res13_Act01 (Activation)       (None, 32, 32, 32)   0           ['Res13_Add00[0][0]']

 Upsam02 (Conv2DTranspose)      (None, 64, 64, 16)   2064        ['Res13_Act01[0][0]']

 Concat02 (Concatenate)         (None, 64, 64, 32)   0           ['Upsam02[0][0]',
                                                                  'Res03_Act01[0][0]']

 Res14_Conv00 (Conv2D)          (None, 64, 64, 16)   528         ['Concat02[0][0]']

 Res14_Batch00 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res14_Conv00[0][0]']
 ion)

 Res14_Act00 (Activation)       (None, 64, 64, 16)   0           ['Res14_Batch00[0][0]']

 Res14_Conv01 (Conv2D)          (None, 64, 64, 16)   2320        ['Res14_Act00[0][0]']

 Res14_Conv02 (Conv2D)          (None, 64, 64, 16)   528         ['Concat02[0][0]']

 Res14_Batch01 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res14_Conv01[0][0]']
 ion)

 Res14_Batch02 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res14_Conv02[0][0]']
 ion)

 Res14_Add00 (Add)              (None, 64, 64, 16)   0           ['Res14_Batch01[0][0]',
                                                                  'Res14_Batch02[0][0]']

 Res14_Act01 (Activation)       (None, 64, 64, 16)   0           ['Res14_Add00[0][0]']

 Res15_Conv00 (Conv2D)          (None, 64, 64, 16)   272         ['Res14_Act01[0][0]']

 Res15_Batch00 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res15_Conv00[0][0]']
 ion)

 Res15_Act00 (Activation)       (None, 64, 64, 16)   0           ['Res15_Batch00[0][0]']

 Res15_Conv01 (Conv2D)          (None, 64, 64, 16)   2320        ['Res15_Act00[0][0]']

 Res15_Conv02 (Conv2D)          (None, 64, 64, 16)   272         ['Res14_Act01[0][0]']

 Res15_Batch01 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res15_Conv01[0][0]']
 ion)

 Res15_Batch02 (BatchNormalizat  (None, 64, 64, 16)  64          ['Res15_Conv02[0][0]']
 ion)

 Res15_Add00 (Add)              (None, 64, 64, 16)   0           ['Res15_Batch01[0][0]',
                                                                  'Res15_Batch02[0][0]']

 Res15_Act01 (Activation)       (None, 64, 64, 16)   0           ['Res15_Add00[0][0]']

 Upsam03 (Conv2DTranspose)      (None, 128, 128, 8)  520         ['Res15_Act01[0][0]']

 Concat03 (Concatenate)         (None, 128, 128, 16  0           ['Upsam03[0][0]',
                                )                                 'Res01_Act01[0][0]']

 Res16_Conv00 (Conv2D)          (None, 128, 128, 8)  136         ['Concat03[0][0]']

 Res16_Batch00 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res16_Conv00[0][0]']
 ion)

 Res16_Act00 (Activation)       (None, 128, 128, 8)  0           ['Res16_Batch00[0][0]']

 Res16_Conv01 (Conv2D)          (None, 128, 128, 8)  584         ['Res16_Act00[0][0]']

 Res16_Conv02 (Conv2D)          (None, 128, 128, 8)  136         ['Concat03[0][0]']

 Res16_Batch01 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res16_Conv01[0][0]']
 ion)

 Res16_Batch02 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res16_Conv02[0][0]']
 ion)

 Res16_Add00 (Add)              (None, 128, 128, 8)  0           ['Res16_Batch01[0][0]',
                                                                  'Res16_Batch02[0][0]']

 Res16_Act01 (Activation)       (None, 128, 128, 8)  0           ['Res16_Add00[0][0]']

 Res17_Conv00 (Conv2D)          (None, 128, 128, 8)  72          ['Res16_Act01[0][0]']

 Res17_Batch00 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res17_Conv00[0][0]']
 ion)

 Res17_Act00 (Activation)       (None, 128, 128, 8)  0           ['Res17_Batch00[0][0]']

 Res17_Conv01 (Conv2D)          (None, 128, 128, 8)  584         ['Res17_Act00[0][0]']

 Res17_Conv02 (Conv2D)          (None, 128, 128, 8)  72          ['Res16_Act01[0][0]']

 Res17_Batch01 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res17_Conv01[0][0]']
 ion)

 Res17_Batch02 (BatchNormalizat  (None, 128, 128, 8)  32         ['Res17_Conv02[0][0]']
 ion)

 Res17_Add00 (Add)              (None, 128, 128, 8)  0           ['Res17_Batch01[0][0]',
                                                                  'Res17_Batch02[0][0]']

 Res17_Act01 (Activation)       (None, 128, 128, 8)  0           ['Res17_Add00[0][0]']

 Output (Conv2D)                (None, 128, 128, 1)  9           ['Res17_Act01[0][0]']

==================================================================================================
Total params: 643,549
Trainable params: 639,127
Non-trainable params: 4,422
__________________________________________________________________________________________________

Segnet

[6]:
from gcpds.image_segmentation.models import segnet_baseline

model_segnet = segnet_baseline(input_shape=(128,128,3),
                            name='segnet',
                            out_channels=1,
                            out_ActFunction='sigmoid')


model_segnet.summary()
Model: "UNET"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to
==================================================================================================
 Input (InputLayer)             [(None, 128, 128, 3  0           []
                                )]

 Conv1 (Conv2D)                 (None, 128, 128, 64  1792        ['Input[0][0]']
                                )

 Norm1 (BatchNormalization)     (None, 128, 128, 64  256         ['Conv1[0][0]']
                                )

 selu1 (Activation)             (None, 128, 128, 64  0           ['Norm1[0][0]']
                                )

 Conv2 (Conv2D)                 (None, 128, 128, 64  36928       ['selu1[0][0]']
                                )

 Norm2 (BatchNormalization)     (None, 128, 128, 64  256         ['Conv2[0][0]']
                                )

 selu2 (Activation)             (None, 128, 128, 64  0           ['Norm2[0][0]']
                                )

 Max2DArgmax1 (MaxPoolingWithAr  [(None, 64, 64, 64)  0          ['selu2[0][0]']
 gmax2D)                        , (None, 64, 64, 64
                                )]

 Conv3 (Conv2D)                 (None, 64, 64, 128)  73856       ['Max2DArgmax1[0][0]']

 Norm3 (BatchNormalization)     (None, 64, 64, 128)  512         ['Conv3[0][0]']

 selu3 (Activation)             (None, 64, 64, 128)  0           ['Norm3[0][0]']

 Conv4 (Conv2D)                 (None, 64, 64, 128)  147584      ['selu3[0][0]']

 Norm4 (BatchNormalization)     (None, 64, 64, 128)  512         ['Conv4[0][0]']

 selu4 (Activation)             (None, 64, 64, 128)  0           ['Norm4[0][0]']

 Max2DArgmax2 (MaxPoolingWithAr  [(None, 32, 32, 128  0          ['selu4[0][0]']
 gmax2D)                        ),
                                 (None, 32, 32, 128
                                )]

 Conv5 (Conv2D)                 (None, 32, 32, 256)  295168      ['Max2DArgmax2[0][0]']

 Norm5 (BatchNormalization)     (None, 32, 32, 256)  1024        ['Conv5[0][0]']

 selu5 (Activation)             (None, 32, 32, 256)  0           ['Norm5[0][0]']

 Conv6 (Conv2D)                 (None, 32, 32, 256)  590080      ['selu5[0][0]']

 Norm6 (BatchNormalization)     (None, 32, 32, 256)  1024        ['Conv6[0][0]']

 selu6 (Activation)             (None, 32, 32, 256)  0           ['Norm6[0][0]']

 Conv7 (Conv2D)                 (None, 32, 32, 256)  590080      ['selu6[0][0]']

 Norm7 (BatchNormalization)     (None, 32, 32, 256)  1024        ['Conv7[0][0]']

 selu7 (Activation)             (None, 32, 32, 256)  0           ['Norm7[0][0]']

 Max2DArgmax3 (MaxPoolingWithAr  [(None, 16, 16, 256  0          ['selu7[0][0]']
 gmax2D)                        ),
                                 (None, 16, 16, 256
                                )]

 Conv8 (Conv2D)                 (None, 16, 16, 512)  1180160     ['Max2DArgmax3[0][0]']

 Norm8 (BatchNormalization)     (None, 16, 16, 512)  2048        ['Conv8[0][0]']

 selu8 (Activation)             (None, 16, 16, 512)  0           ['Norm8[0][0]']

 Conv9 (Conv2D)                 (None, 16, 16, 512)  2359808     ['selu8[0][0]']

 Norm9 (BatchNormalization)     (None, 16, 16, 512)  2048        ['Conv9[0][0]']

 selu9 (Activation)             (None, 16, 16, 512)  0           ['Norm9[0][0]']

 Conv10 (Conv2D)                (None, 16, 16, 512)  2359808     ['selu9[0][0]']

 Norm10 (BatchNormalization)    (None, 16, 16, 512)  2048        ['Conv10[0][0]']

 selu10 (Activation)            (None, 16, 16, 512)  0           ['Norm10[0][0]']

 Max2DArgmax4 (MaxPoolingWithAr  [(None, 8, 8, 512),  0          ['selu10[0][0]']
 gmax2D)                         (None, 8, 8, 512)]

 Conv11 (Conv2D)                (None, 8, 8, 512)    2359808     ['Max2DArgmax4[0][0]']

 Norm11 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv11[0][0]']

 selu11 (Activation)            (None, 8, 8, 512)    0           ['Norm11[0][0]']

 Conv12 (Conv2D)                (None, 8, 8, 512)    2359808     ['selu11[0][0]']

 Norm12 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv12[0][0]']

 selu12 (Activation)            (None, 8, 8, 512)    0           ['Norm12[0][0]']

 Conv13 (Conv2D)                (None, 8, 8, 512)    2359808     ['selu12[0][0]']

 Norm13 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv13[0][0]']

 selu13 (Activation)            (None, 8, 8, 512)    0           ['Norm13[0][0]']

 Max2DArgmax5 (MaxPoolingWithAr  [(None, 4, 4, 512),  0          ['selu13[0][0]']
 gmax2D)                         (None, 4, 4, 512)]

 tf.compat.v1.shape (TFOpLambda  (4,)                0           ['Conv13[0][0]']
 )

 Unpool5 (MaxUnpooling2D)       (None, 8, 8, 512)    0           ['Max2DArgmax5[0][0]',
                                                                  'Max2DArgmax5[0][1]',
                                                                  'tf.compat.v1.shape[0][0]']

 Conv14 (Conv2D)                (None, 8, 8, 512)    2359808     ['Unpool5[0][0]']

 Norm14 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv14[0][0]']

 selu14 (Activation)            (None, 8, 8, 512)    0           ['Norm14[0][0]']

 Conv15 (Conv2D)                (None, 8, 8, 512)    2359808     ['selu14[0][0]']

 Norm15 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv15[0][0]']

 selu15 (Activation)            (None, 8, 8, 512)    0           ['Norm15[0][0]']

 Conv16 (Conv2D)                (None, 8, 8, 512)    2359808     ['selu15[0][0]']

 Norm16 (BatchNormalization)    (None, 8, 8, 512)    2048        ['Conv16[0][0]']

 selu16 (Activation)            (None, 8, 8, 512)    0           ['Norm16[0][0]']

 tf.compat.v1.shape_1 (TFOpLamb  (4,)                0           ['Conv10[0][0]']
 da)

 Unpool4 (MaxUnpooling2D)       (None, 16, 16, 512)  0           ['selu16[0][0]',
                                                                  'Max2DArgmax4[0][1]',
                                                                  'tf.compat.v1.shape_1[0][0]']

 Conv17 (Conv2D)                (None, 16, 16, 512)  2359808     ['Unpool4[0][0]']

 Norm17 (BatchNormalization)    (None, 16, 16, 512)  2048        ['Conv17[0][0]']

 selu17 (Activation)            (None, 16, 16, 512)  0           ['Norm17[0][0]']

 Conv18 (Conv2D)                (None, 16, 16, 512)  2359808     ['selu17[0][0]']

 Norm18 (BatchNormalization)    (None, 16, 16, 512)  2048        ['Conv18[0][0]']

 selu18 (Activation)            (None, 16, 16, 512)  0           ['Norm18[0][0]']

 Conv19 (Conv2D)                (None, 16, 16, 256)  1179904     ['selu18[0][0]']

 Norm19 (BatchNormalization)    (None, 16, 16, 256)  1024        ['Conv19[0][0]']

 selu19 (Activation)            (None, 16, 16, 256)  0           ['Norm19[0][0]']

 tf.compat.v1.shape_2 (TFOpLamb  (4,)                0           ['Conv7[0][0]']
 da)

 Unpool3 (MaxUnpooling2D)       (None, 32, 32, 256)  0           ['selu19[0][0]',
                                                                  'Max2DArgmax3[0][1]',
                                                                  'tf.compat.v1.shape_2[0][0]']

 Conv20 (Conv2D)                (None, 32, 32, 256)  590080      ['Unpool3[0][0]']

 Norm20 (BatchNormalization)    (None, 32, 32, 256)  1024        ['Conv20[0][0]']

 selu20 (Activation)            (None, 32, 32, 256)  0           ['Norm20[0][0]']

 Conv21 (Conv2D)                (None, 32, 32, 256)  590080      ['selu20[0][0]']

 Norm21 (BatchNormalization)    (None, 32, 32, 256)  1024        ['Conv21[0][0]']

 selu21 (Activation)            (None, 32, 32, 256)  0           ['Norm21[0][0]']

 Conv22 (Conv2D)                (None, 32, 32, 128)  295040      ['selu21[0][0]']

 Norm22 (BatchNormalization)    (None, 32, 32, 128)  512         ['Conv22[0][0]']

 selu22 (Activation)            (None, 32, 32, 128)  0           ['Norm22[0][0]']

 tf.compat.v1.shape_3 (TFOpLamb  (4,)                0           ['Conv4[0][0]']
 da)

 Unpool2 (MaxUnpooling2D)       (None, 64, 64, 128)  0           ['selu22[0][0]',
                                                                  'Max2DArgmax2[0][1]',
                                                                  'tf.compat.v1.shape_3[0][0]']

 Conv23 (Conv2D)                (None, 64, 64, 128)  147584      ['Unpool2[0][0]']

 Norm23 (BatchNormalization)    (None, 64, 64, 128)  512         ['Conv23[0][0]']

 selu23 (Activation)            (None, 64, 64, 128)  0           ['Norm23[0][0]']

 Conv24 (Conv2D)                (None, 64, 64, 64)   73792       ['selu23[0][0]']

 Norm24 (BatchNormalization)    (None, 64, 64, 64)   256         ['Conv24[0][0]']

 selu24 (Activation)            (None, 64, 64, 64)   0           ['Norm24[0][0]']

 tf.compat.v1.shape_4 (TFOpLamb  (4,)                0           ['Conv2[0][0]']
 da)

 Unpool1 (MaxUnpooling2D)       (None, 128, 128, 64  0           ['selu24[0][0]',
                                )                                 'Max2DArgmax1[0][1]',
                                                                  'tf.compat.v1.shape_4[0][0]']

 Conv25 (Conv2D)                (None, 128, 128, 64  36928       ['Unpool1[0][0]']
                                )

 Norm25 (BatchNormalization)    (None, 128, 128, 64  256         ['Conv25[0][0]']
                                )

 selu25 (Activation)            (None, 128, 128, 64  0           ['Norm25[0][0]']
                                )

 Conv26 (Conv2D)                (None, 128, 128, 1)  577         ['selu25[0][0]']

 Norm26 (BatchNormalization)    (None, 128, 128, 1)  4           ['Conv26[0][0]']

 OutputLayer (Conv2D)           (None, 128, 128, 1)  2           ['Norm26[0][0]']

==================================================================================================
Total params: 29,459,463
Trainable params: 29,443,589
Non-trainable params: 15,874
__________________________________________________________________________________________________

U-Net with mobilenetv2 as backbone

[ ]:
from gcpds.image_segmentation.models import unet_mobilenet

model_unet_mobilenet = unet_mobilenet(input_shape=(128,128,3),
                            name='unet_mobilenet',
                            out_channels=1,
                            out_ActFunction='sigmoid')


model_unet_mobilenet.summary()

U-Net with vgg16 as backbone

[ ]:
from gcpds.image_segmentation.models import unet_vgg16

model_unet_vgg16 = unet_vgg16(input_shape=(128,128,3),
                            name='unet_vgg16',
                            out_channels=1,
                            out_ActFunction='sigmoid')


model_unet_vgg16.summary()