Table 5.
Summary of model architecture with layer-wise annotations.
| Layer (type) | Output shape | Param # | Connected to |
|---|---|---|---|
| input_layer (InputLayer) | (None, 256, 256, 3) | 0 | — |
| conv2d (Conv2D) | (None, 256, 256, 32) | 896 | input_layer[0][0] |
| conv2d_1 (Conv2D) | (None, 256, 256, 32) | 9,248 | conv2d[0][0] |
| batch_normalization (BatchNormalization) | (None, 256, 256, 32) | 128 | conv2d_1[0][0] |
| re_lu (ReLU) | (None, 256, 256, 32) | 0 | batch_normalization[0][0] |
| depthwise_conv2d (DepthwiseConv2D) | (None, 256, 256, 32) | 320 | re_lu[0][0] |
| batch_normalization_1 (BatchNormalization) | (None, 256, 256, 32) | 128 | depthwise_conv2d[0][0] |
| re_lu_1 (ReLU) | (None, 256, 256, 32) | 0 | batch_normalization_1[0][0] |
| conv2d_2 (Conv2D) | (None, 256, 256, 32) | 1,056 | re_lu_1[0][0] |
| batch_normalization_2 (BatchNormalization) | (None, 256, 256, 32) | 128 | conv2d_2[0][0] |
| re_lu_2 (ReLU) | (None, 256, 256, 32) | 0 | batch_normalization_2[0][0] |
| global_average_pooling2d (GlobalAveragePooling2D) | (None, 32) | 0 | re_lu_2[0][0] |
| dense (Dense) | (None, 2) | 66 | global_average_pooling2d[0][0] |
| dense_1 (Dense) | (None, 32) | 96 | dense[0][0] |
| multiply (Multiply) | (None, 256, 256, 32) | 0 | re_lu_2[0][0], dense_1[0][0] |
| conv2d_3 (Conv2D) | (None, 256, 256, 32) | 1,056 | conv2d[0][0] |
| add (Add) | (None, 256, 256, 32) | 0 | multiply[0][0], conv2d_3[0][0] |
| max_pooling2d (MaxPooling2D) | (None, 128, 128, 32) | 0 | add[0][0] |
| conv2d_4 (Conv2D) | (None, 128, 128, 64) | 18,496 | max_pooling2d[0][0] |
| batch_normalization_3 (BatchNormalization) | (None, 128, 128, 64) | 256 | conv2d_4[0][0] |
| re_lu_3 (ReLU) | (None, 128, 128, 64) | 0 | batch_normalization_3[0][0] |
| depthwise_conv2d_1 (DepthwiseConv2D) | (None, 128, 128, 64) | 640 | re_lu_3[0][0] |
| batch_normalization_4 (BatchNormalization) | (None, 128, 128, 64) | 256 | depthwise_conv2d_1[0][0] |
| re_lu_4 (ReLU) | (None, 128, 128, 64) | 0 | batch_normalization_4[0][0] |
| conv2d_5 (Conv2D) | (None, 128, 128, 64) | 4,160 | re_lu_4[0][0] |
| batch_normalization_5 (BatchNormalization) | (None, 128, 128, 64) | 256 | conv2d_5[0][0] |
| re_lu_5 (ReLU) | (None, 128, 128, 64) | 0 | batch_normalization_5[0][0] |
| global_average_pooling2d_1 (GlobalAveragePooling2D) | (None, 64) | 0 | re_lu_5[0][0] |
| dense_2 (Dense) | (None, 4) | 260 | global_average_pooling2d_1[0][0] |
| dense_3 (Dense) | (None, 64) | 320 | dense_2[0][0] |
| multiply_1 (Multiply) | (None, 128, 128, 64) | 0 | re_lu_5[0][0], dense_3[0][0] |
| conv2d_6 (Conv2D) | (None, 128, 128, 64) | 2,112 | max_pooling2d[0][0] |
| add_1 (Add) | (None, 128, 128, 64) | 0 | multiply_1[0][0], conv2d_6[0][0] |
| max_pooling2d_1 (MaxPooling2D) | (None, 64, 64, 64) | 0 | add_1[0][0] |
| conv2d_7 (Conv2D) | (None, 64, 64, 128) | 73,856 | max_pooling2d_1[0][0] |
| batch_normalization_6 (BatchNormalization) | (None, 64, 64, 128) | 512 | conv2d_7[0][0] |
| re_lu_6 (ReLU) | (None, 64, 64, 128) | 0 | batch_normalization_6[0][0] |
| depthwise_conv2d_2 (DepthwiseConv2D) | (None, 64, 64, 128) | 1,280 | re_lu_6[0][0] |
| batch_normalization_7 (BatchNormalization) | (None, 64, 64, 128) | 512 | depthwise_conv2d_2[0][0] |
| re_lu_7 (ReLU) | (None, 64, 64, 128) | 0 | batch_normalization_7[0][0] |
| conv2d_8 (Conv2D) | (None, 64, 64, 128) | 16,512 | re_lu_7[0][0] |
| batch_normalization_8 (BatchNormalization) | (None, 64, 64, 128) | 512 | conv2d_8[0][0] |
| re_lu_8 (ReLU) | (None, 64, 64, 128) | 0 | batch_normalization_8[0][0] |
| global_average_pooling2d_2 (GlobalAveragePooling2D) | (None, 128) | 0 | re_lu_8[0][0] |
| dense_4 (Dense) | (None, 8) | 1,032 | global_average_pooling2d_2[0][0] |
| dense_5 (Dense) | (None, 128) | 1,152 | dense_4[0][0] |
| multiply_2 (Multiply) | (None, 64, 64, 128) | 0 | re_lu_8[0][0], dense_5[0][0] |
| conv2d_9 (Conv2D) | (None, 64, 64, 128) | 8,320 | max_pooling2d_1[0][0] |
| add_2 (Add) | (None, 64, 64, 128) | 0 | multiply_2[0][0], conv2d_9[0][0] |
| max_pooling2d_2 (MaxPooling2D) | (None, 32, 32, 128) | 0 | add_2[0][0] |
| conv2d_10 (Conv2D) | (None, 32, 32, 256) | 295,168 | max_pooling2d_2[0][0] |
| batch_normalization_9 (BatchNormalization) | (None, 32, 32, 256) | 1,024 | conv2d_10[0][0] |
| re_lu_9 (ReLU) | (None, 32, 32, 256) | 0 | batch_normalization_9[0][0] |
| depthwise_conv2d_3 (DepthwiseConv2D) | (None, 32, 32, 256) | 2,560 | re_lu_9[0][0] |
| batch_normalization_10 (BatchNormalization) | (None, 32, 32, 256) | 1,024 | depthwise_conv2d_3[0][0] |
| re_lu_10 (ReLU) | (None, 32, 32, 256) | 0 | batch_normalization_10[0][0] |
| conv2d_11 (Conv2D) | (None, 32, 32, 256) | 65,792 | re_lu_10[0][0] |
| batch_normalization_11 (BatchNormalization) | (None, 32, 32, 256) | 1,024 | conv2d_11[0][0] |
| re_lu_11 (ReLU) | (None, 32, 32, 256) | 0 | batch_normalization_11[0][0] |
| global_average_pooling2d_3 (GlobalAveragePooling2D) | (None, 256) | 0 | re_lu_11[0][0] |
| dense_6 (Dense) | (None, 16) | 4,112 | global_average_pooling2d_3[0][0] |
| dense_7 (Dense) | (None, 256) | 4,352 | dense_6[0][0] |
| multiply_3 (Multiply) | (None, 32, 32, 256) | 0 | re_lu_11[0][0], dense_7[0][0] |
| conv2d_12 (Conv2D) | (None, 32, 32, 256) | 33,024 | max_pooling2d_2[0][0] |
| add_3 (Add) | (None, 32, 32, 256) | 0 | multiply_3[0][0], conv2d_12[0][0] |
| global_max_pooling2d (GlobalMaxPooling2D) | (None, 256) | 0 | add_3[0][0] |
| dropout (Dropout) | (None, 256) | 0 | global_max_pooling2d[0][0] |
| dense_8 (Dense) | (None, 4) | 1,028 | dropout[0][0] |
| Total parameters | — | 107,076 | — |