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()