📏 Model Name
True_DAG_VNet
Advanced segmentation model for fetal head analysis
🔢 Total Parameters
14,419,267
Trainable: 14,408,451
Non-trainable: 10,816
Size: ~55.01 MB
📊 Training Details
25 Epochs
Final Loss: 0.4743
Main Output Accuracy: 87.52%
Aux Outputs Accuracy: ~87.5%
🛠 Framework Versions
TensorFlow 2.16.2
Keras: 3.11.3
tf_keras: 2.16.0
Model Structure Summary
🧠 True DAG-VNet Model Summary:
Model: "True_DAG_VNet"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_3 (InputLayer) [(None, 256, 256, 1)] 0 []
conv2d_98 (Conv2D) (None, 256, 256, 32) 320 ['input_3[0][0]']
batch_normalization_64 (Ba (None, 256, 256, 32) 128 ['conv2d_98[0][0]']
tchNormalization)
re_lu_64 (ReLU) (None, 256, 256, 32) 0 ['batch_normalization_64[0][0]
']
conv2d_99 (Conv2D) (None, 256, 256, 32) 9248 ['re_lu_64[0][0]']
batch_normalization_65 (Ba (None, 256, 256, 32) 128 ['conv2d_99[0][0]']
tchNormalization)
conv2d_100 (Conv2D) (None, 256, 256, 32) 64 ['input_3[0][0]']
add_28 (Add) (None, 256, 256, 32) 0 ['batch_normalization_65[0][0]
',
'conv2d_100[0][0]']
re_lu_65 (ReLU) (None, 256, 256, 32) 0 ['add_28[0][0]']
conv2d_101 (Conv2D) (None, 256, 256, 32) 9248 ['re_lu_65[0][0]']
batch_normalization_66 (Ba (None, 256, 256, 32) 128 ['conv2d_101[0][0]']
tchNormalization)
re_lu_66 (ReLU) (None, 256, 256, 32) 0 ['batch_normalization_66[0][0]
']
conv2d_102 (Conv2D) (None, 256, 256, 32) 9248 ['re_lu_66[0][0]']
batch_normalization_67 (Ba (None, 256, 256, 32) 128 ['conv2d_102[0][0]']
tchNormalization)
add_29 (Add) (None, 256, 256, 32) 0 ['batch_normalization_67[0][0]
',
're_lu_65[0][0]']
re_lu_67 (ReLU) (None, 256, 256, 32) 0 ['add_29[0][0]']
max_pooling2d_8 (MaxPoolin (None, 128, 128, 32) 0 ['re_lu_67[0][0]']
g2D)
conv2d_103 (Conv2D) (None, 128, 128, 64) 18496 ['max_pooling2d_8[0][0]']
batch_normalization_68 (Ba (None, 128, 128, 64) 256 ['conv2d_103[0][0]']
tchNormalization)
re_lu_68 (ReLU) (None, 128, 128, 64) 0 ['batch_normalization_68[0][0]
']
conv2d_104 (Conv2D) (None, 128, 128, 64) 36928 ['re_lu_68[0][0]']
batch_normalization_69 (Ba (None, 128, 128, 64) 256 ['conv2d_104[0][0]']
tchNormalization)
conv2d_105 (Conv2D) (None, 128, 128, 64) 2112 ['max_pooling2d_8[0][0]']
add_30 (Add) (None, 128, 128, 64) 0 ['batch_normalization_69[0][0]
',
'conv2d_105[0][0]']
re_lu_69 (ReLU) (None, 128, 128, 64) 0 ['add_30[0][0]']
conv2d_106 (Conv2D) (None, 128, 128, 64) 36928 ['re_lu_69[0][0]']
batch_normalization_70 (Ba (None, 128, 128, 64) 256 ['conv2d_106[0][0]']
tchNormalization)
re_lu_70 (ReLU) (None, 128, 128, 64) 0 ['batch_normalization_70[0][0]
']
conv2d_107 (Conv2D) (None, 128, 128, 64) 36928 ['re_lu_70[0][0]']
batch_normalization_71 (Ba (None, 128, 128, 64) 256 ['conv2d_107[0][0]']
tchNormalization)
add_31 (Add) (None, 128, 128, 64) 0 ['batch_normalization_71[0][0]
',
're_lu_69[0][0]']
re_lu_71 (ReLU) (None, 128, 128, 64) 0 ['add_31[0][0]']
max_pooling2d_9 (MaxPoolin (None, 64, 64, 64) 0 ['re_lu_71[0][0]']
g2D)
conv2d_108 (Conv2D) (None, 64, 64, 128) 73856 ['max_pooling2d_9[0][0]']
batch_normalization_72 (Ba (None, 64, 64, 128) 512 ['conv2d_108[0][0]']
tchNormalization)
re_lu_72 (ReLU) (None, 64, 64, 128) 0 ['batch_normalization_72[0][0]
']
conv2d_109 (Conv2D) (None, 64, 64, 128) 147584 ['re_lu_72[0][0]']
batch_normalization_73 (Ba (None, 64, 64, 128) 512 ['conv2d_109[0][0]']
tchNormalization)
conv2d_110 (Conv2D) (None, 64, 64, 128) 8320 ['max_pooling2d_9[0][0]']
add_32 (Add) (None, 64, 64, 128) 0 ['batch_normalization_73[0][0]
',
'conv2d_110[0][0]']
re_lu_73 (ReLU) (None, 64, 64, 128) 0 ['add_32[0][0]']
conv2d_111 (Conv2D) (None, 64, 64, 128) 147584 ['re_lu_73[0][0]']
batch_normalization_74 (Ba (None, 64, 64, 128) 512 ['conv2d_111[0][0]']
tchNormalization)
re_lu_74 (ReLU) (None, 64, 64, 128) 0 ['batch_normalization_74[0][0]
']
conv2d_112 (Conv2D) (None, 64, 64, 128) 147584 ['re_lu_74[0][0]']
batch_normalization_75 (Ba (None, 64, 64, 128) 512 ['conv2d_112[0][0]']
tchNormalization)
add_33 (Add) (None, 64, 64, 128) 0 ['batch_normalization_75[0][0]
',
're_lu_73[0][0]']
re_lu_75 (ReLU) (None, 64, 64, 128) 0 ['add_33[0][0]']
max_pooling2d_10 (MaxPooli (None, 32, 32, 128) 0 ['re_lu_75[0][0]']
ng2D)
conv2d_113 (Conv2D) (None, 32, 32, 256) 295168 ['max_pooling2d_10[0][0]']
batch_normalization_76 (Ba (None, 32, 32, 256) 1024 ['conv2d_113[0][0]']
tchNormalization)
re_lu_76 (ReLU) (None, 32, 32, 256) 0 ['batch_normalization_76[0][0]
']
conv2d_114 (Conv2D) (None, 32, 32, 256) 590080 ['re_lu_76[0][0]']
batch_normalization_77 (Ba (None, 32, 32, 256) 1024 ['conv2d_114[0][0]']
tchNormalization)
conv2d_115 (Conv2D) (None, 32, 32, 256) 33024 ['max_pooling2d_10[0][0]']
add_34 (Add) (None, 32, 32, 256) 0 ['batch_normalization_77[0][0]
',
'conv2d_115[0][0]']
re_lu_77 (ReLU) (None, 32, 32, 256) 0 ['add_34[0][0]']
conv2d_116 (Conv2D) (None, 32, 32, 256) 590080 ['re_lu_77[0][0]']
batch_normalization_78 (Ba (None, 32, 32, 256) 1024 ['conv2d_116[0][0]']
tchNormalization)
re_lu_78 (ReLU) (None, 32, 32, 256) 0 ['batch_normalization_78[0][0]
']
conv2d_117 (Conv2D) (None, 32, 32, 256) 590080 ['re_lu_78[0][0]']
batch_normalization_79 (Ba (None, 32, 32, 256) 1024 ['conv2d_117[0][0]']
tchNormalization)
add_35 (Add) (None, 32, 32, 256) 0 ['batch_normalization_79[0][0]
',
're_lu_77[0][0]']
re_lu_79 (ReLU) (None, 32, 32, 256) 0 ['add_35[0][0]']
max_pooling2d_11 (MaxPooli (None, 16, 16, 256) 0 ['re_lu_79[0][0]']
ng2D)
conv2d_118 (Conv2D) (None, 16, 16, 512) 1180160 ['max_pooling2d_11[0][0]']
batch_normalization_80 (Ba (None, 16, 16, 512) 2048 ['conv2d_118[0][0]']
tchNormalization)
re_lu_80 (ReLU) (None, 16, 16, 512) 0 ['batch_normalization_80[0][0]
']
conv2d_119 (Conv2D) (None, 16, 16, 512) 2359808 ['re_lu_80[0][0]']
batch_normalization_81 (Ba (None, 16, 16, 512) 2048 ['conv2d_119[0][0]']
tchNormalization)
conv2d_120 (Conv2D) (None, 16, 16, 512) 131584 ['max_pooling2d_11[0][0]']
add_36 (Add) (None, 16, 16, 512) 0 ['batch_normalization_81[0][0]
',
'conv2d_120[0][0]']
re_lu_81 (ReLU) (None, 16, 16, 512) 0 ['add_36[0][0]']
conv2d_121 (Conv2D) (None, 16, 16, 512) 2359808 ['re_lu_81[0][0]']
batch_normalization_82 (Ba (None, 16, 16, 512) 2048 ['conv2d_121[0][0]']
tchNormalization)
re_lu_82 (ReLU) (None, 16, 16, 512) 0 ['batch_normalization_82[0][0]
']
conv2d_122 (Conv2D) (None, 16, 16, 512) 2359808 ['re_lu_82[0][0]']
batch_normalization_83 (Ba (None, 16, 16, 512) 2048 ['conv2d_122[0][0]']
tchNormalization)
add_37 (Add) (None, 16, 16, 512) 0 ['batch_normalization_83[0][0]
',
're_lu_81[0][0]']
re_lu_83 (ReLU) (None, 16, 16, 512) 0 ['add_37[0][0]']
conv2d_transpose_8 (Conv2D (None, 32, 32, 256) 524544 ['re_lu_83[0][0]']
Transpose)
tf.compat.v1.shape_16 (TFO (4,) 0 ['conv2d_transpose_8[0][0]']
pLambda)
tf.compat.v1.shape_17 (TFO (4,) 0 ['conv2d_transpose_8[0][0]']
pLambda)
tf.__operators__.getitem_1 () 0 ['tf.compat.v1.shape_16[0][0]'
6 (SlicingOpLambda) ]
tf.__operators__.getitem_1 () 0 ['tf.compat.v1.shape_17[0][0]'
7 (SlicingOpLambda) ]
tf.image.resize_16 (TFOpLa (None, 32, 32, 256) 0 ['conv2d_transpose_8[0][0]',
mbda) 'tf.__operators__.getitem_16[
0][0]',
'tf.__operators__.getitem_17[
0][0]']
tf.image.resize_17 (TFOpLa (None, 32, 32, 256) 0 ['re_lu_79[0][0]',
mbda) 'tf.__operators__.getitem_16[
0][0]',
'tf.__operators__.getitem_17[
0][0]']
conv2d_123 (Conv2D) (None, 32, 32, 128) 32896 ['tf.image.resize_16[0][0]']
conv2d_124 (Conv2D) (None, 32, 32, 128) 32896 ['tf.image.resize_17[0][0]']
concatenate_8 (Concatenate (None, 32, 32, 256) 0 ['conv2d_123[0][0]',
) 'conv2d_124[0][0]']
conv2d_125 (Conv2D) (None, 32, 32, 256) 65792 ['concatenate_8[0][0]']
multiply_8 (Multiply) (None, 32, 32, 256) 0 ['concatenate_8[0][0]',
'conv2d_125[0][0]']
conv2d_126 (Conv2D) (None, 32, 32, 256) 590080 ['multiply_8[0][0]']
batch_normalization_84 (Ba (None, 32, 32, 256) 1024 ['conv2d_126[0][0]']
tchNormalization)
re_lu_84 (ReLU) (None, 32, 32, 256) 0 ['batch_normalization_84[0][0]
']
conv2d_127 (Conv2D) (None, 32, 32, 256) 590080 ['re_lu_84[0][0]']
batch_normalization_85 (Ba (None, 32, 32, 256) 1024 ['conv2d_127[0][0]']
tchNormalization)
re_lu_85 (ReLU) (None, 32, 32, 256) 0 ['batch_normalization_85[0][0]
']
conv2d_128 (Conv2D) (None, 32, 32, 256) 590080 ['re_lu_85[0][0]']
batch_normalization_86 (Ba (None, 32, 32, 256) 1024 ['conv2d_128[0][0]']
tchNormalization)
add_38 (Add) (None, 32, 32, 256) 0 ['batch_normalization_86[0][0]
',
're_lu_84[0][0]']
re_lu_86 (ReLU) (None, 32, 32, 256) 0 ['add_38[0][0]']
conv2d_transpose_9 (Conv2D (None, 64, 64, 128) 131200 ['re_lu_86[0][0]']
Transpose)
tf.compat.v1.shape_18 (TFO (4,) 0 ['conv2d_transpose_9[0][0]']
pLambda)
tf.compat.v1.shape_19 (TFO (4,) 0 ['conv2d_transpose_9[0][0]']
pLambda)
tf.__operators__.getitem_1 () 0 ['tf.compat.v1.shape_18[0][0]'
8 (SlicingOpLambda) ]
tf.__operators__.getitem_1 () 0 ['tf.compat.v1.shape_19[0][0]'
9 (SlicingOpLambda) ]
tf.image.resize_18 (TFOpLa (None, 64, 64, 128) 0 ['conv2d_transpose_9[0][0]',
mbda) 'tf.__operators__.getitem_18[
0][0]',
'tf.__operators__.getitem_19[
0][0]']
tf.image.resize_19 (TFOpLa (None, 64, 64, 128) 0 ['re_lu_75[0][0]',
mbda) 'tf.__operators__.getitem_18[
0][0]',
'tf.__operators__.getitem_19[
0][0]']
conv2d_129 (Conv2D) (None, 64, 64, 64) 8256 ['tf.image.resize_18[0][0]']
conv2d_130 (Conv2D) (None, 64, 64, 64) 8256 ['tf.image.resize_19[0][0]']
concatenate_9 (Concatenate (None, 64, 64, 128) 0 ['conv2d_129[0][0]',
) 'conv2d_130[0][0]']
conv2d_131 (Conv2D) (None, 64, 64, 128) 16512 ['concatenate_9[0][0]']
multiply_9 (Multiply) (None, 64, 64, 128) 0 ['concatenate_9[0][0]',
'conv2d_131[0][0]']
conv2d_132 (Conv2D) (None, 64, 64, 128) 147584 ['multiply_9[0][0]']
batch_normalization_87 (Ba (None, 64, 64, 128) 512 ['conv2d_132[0][0]']
tchNormalization)
re_lu_87 (ReLU) (None, 64, 64, 128) 0 ['batch_normalization_87[0][0]
']
conv2d_133 (Conv2D) (None, 64, 64, 128) 147584 ['re_lu_87[0][0]']
batch_normalization_88 (Ba (None, 64, 64, 128) 512 ['conv2d_133[0][0]']
tchNormalization)
re_lu_88 (ReLU) (None, 64, 64, 128) 0 ['batch_normalization_88[0][0]
']
conv2d_134 (Conv2D) (None, 64, 64, 128) 147584 ['re_lu_88[0][0]']
batch_normalization_89 (Ba (None, 64, 64, 128) 512 ['conv2d_134[0][0]']
tchNormalization)
add_39 (Add) (None, 64, 64, 128) 0 ['batch_normalization_89[0][0]
',
're_lu_87[0][0]']
re_lu_89 (ReLU) (None, 64, 64, 128) 0 ['add_39[0][0]']
conv2d_transpose_10 (Conv2 (None, 128, 128, 64) 32832 ['re_lu_89[0][0]']
DTranspose)
tf.compat.v1.shape_20 (TFO (4,) 0 ['conv2d_transpose_10[0][0]']
pLambda)
tf.compat.v1.shape_21 (TFO (4,) 0 ['conv2d_transpose_10[0][0]']
pLambda)
tf.__operators__.getitem_2 () 0 ['tf.compat.v1.shape_20[0][0]'
0 (SlicingOpLambda) ]
tf.__operators__.getitem_2 () 0 ['tf.compat.v1.shape_21[0][0]'
1 (SlicingOpLambda) ]
tf.image.resize_20 (TFOpLa (None, 128, 128, 64) 0 ['conv2d_transpose_10[0][0]',
mbda) 'tf.__operators__.getitem_20[
0][0]',
'tf.__operators__.getitem_21[
0][0]']
tf.image.resize_21 (TFOpLa (None, 128, 128, 64) 0 ['re_lu_71[0][0]',
mbda) 'tf.__operators__.getitem_20[
0][0]',
'tf.__operators__.getitem_21[
0][0]']
conv2d_135 (Conv2D) (None, 128, 128, 32) 2080 ['tf.image.resize_20[0][0]']
conv2d_136 (Conv2D) (None, 128, 128, 32) 2080 ['tf.image.resize_21[0][0]']
concatenate_10 (Concatenat (None, 128, 128, 64) 0 ['conv2d_135[0][0]',
e) 'conv2d_136[0][0]']
conv2d_137 (Conv2D) (None, 128, 128, 64) 4160 ['concatenate_10[0][0]']
multiply_10 (Multiply) (None, 128, 128, 64) 0 ['concatenate_10[0][0]',
'conv2d_137[0][0]']
conv2d_138 (Conv2D) (None, 128, 128, 64) 36928 ['multiply_10[0][0]']
batch_normalization_90 (Ba (None, 128, 128, 64) 256 ['conv2d_138[0][0]']
tchNormalization)
re_lu_90 (ReLU) (None, 128, 128, 64) 0 ['batch_normalization_90[0][0]
']
conv2d_139 (Conv2D) (None, 128, 128, 64) 36928 ['re_lu_90[0][0]']
batch_normalization_91 (Ba (None, 128, 128, 64) 256 ['conv2d_139[0][0]']
tchNormalization)
re_lu_91 (ReLU) (None, 128, 128, 64) 0 ['batch_normalization_91[0][0]
']
conv2d_140 (Conv2D) (None, 128, 128, 64) 36928 ['re_lu_91[0][0]']
batch_normalization_92 (Ba (None, 128, 128, 64) 256 ['conv2d_140[0][0]']
tchNormalization)
add_40 (Add) (None, 128, 128, 64) 0 ['batch_normalization_92[0][0]
',
're_lu_90[0][0]']
re_lu_92 (ReLU) (None, 128, 128, 64) 0 ['add_40[0][0]']
conv2d_transpose_11 (Conv2 (None, 256, 256, 32) 8224 ['re_lu_92[0][0]']
DTranspose)
tf.compat.v1.shape_22 (TFO (4,) 0 ['conv2d_transpose_11[0][0]']
pLambda)
tf.compat.v1.shape_23 (TFO (4,) 0 ['conv2d_transpose_11[0][0]']
pLambda)
tf.__operators__.getitem_2 () 0 ['tf.compat.v1.shape_22[0][0]'
2 (SlicingOpLambda) ]
tf.__operators__.getitem_2 () 0 ['tf.compat.v1.shape_23[0][0]'
3 (SlicingOpLambda) ]
tf.image.resize_22 (TFOpLa (None, 256, 256, 32) 0 ['conv2d_transpose_11[0][0]',
mbda) 'tf.__operators__.getitem_22[
0][0]',
'tf.__operators__.getitem_23[
0][0]']
tf.image.resize_23 (TFOpLa (None, 256, 256, 32) 0 ['re_lu_67[0][0]',
mbda) 'tf.__operators__.getitem_22[
0][0]',
'tf.__operators__.getitem_23[
0][0]']
conv2d_141 (Conv2D) (None, 256, 256, 16) 528 ['tf.image.resize_22[0][0]']
conv2d_142 (Conv2D) (None, 256, 256, 16) 528 ['tf.image.resize_23[0][0]']
concatenate_11 (Concatenat (None, 256, 256, 32) 0 ['conv2d_141[0][0]',
e) 'conv2d_142[0][0]']
conv2d_143 (Conv2D) (None, 256, 256, 32) 1056 ['concatenate_11[0][0]']
multiply_11 (Multiply) (None, 256, 256, 32) 0 ['concatenate_11[0][0]',
'conv2d_143[0][0]']
conv2d_144 (Conv2D) (None, 256, 256, 32) 9248 ['multiply_11[0][0]']
batch_normalization_93 (Ba (None, 256, 256, 32) 128 ['conv2d_144[0][0]']
tchNormalization)
re_lu_93 (ReLU) (None, 256, 256, 32) 0 ['batch_normalization_93[0][0]
']
conv2d_145 (Conv2D) (None, 256, 256, 32) 9248 ['re_lu_93[0][0]']
batch_normalization_94 (Ba (None, 256, 256, 32) 128 ['conv2d_145[0][0]']
tchNormalization)
re_lu_94 (ReLU) (None, 256, 256, 32) 0 ['batch_normalization_94[0][0]
']
conv2d_146 (Conv2D) (None, 256, 256, 32) 9248 ['re_lu_94[0][0]']
batch_normalization_95 (Ba (None, 256, 256, 32) 128 ['conv2d_146[0][0]']
tchNormalization)
add_41 (Add) (None, 256, 256, 32) 0 ['batch_normalization_95[0][0]
',
're_lu_93[0][0]']
re_lu_95 (ReLU) (None, 256, 256, 32) 0 ['add_41[0][0]']
up_sampling2d_4 (UpSamplin (None, 256, 256, 64) 0 ['re_lu_92[0][0]']
g2D)
up_sampling2d_5 (UpSamplin (None, 256, 256, 128) 0 ['re_lu_89[0][0]']
g2D)
main_output (Conv2D) (None, 256, 256, 1) 33 ['re_lu_95[0][0]']
aux_output_1 (Conv2D) (None, 256, 256, 1) 65 ['up_sampling2d_4[0][0]']
aux_output_2 (Conv2D) (None, 256, 256, 1) 129 ['up_sampling2d_5[0][0]']
==================================================================================================
Total params: 14419267 (55.01 MB)
Trainable params: 14408451 (54.96 MB)
Non-trainable params: 10816 (42.25 KB)