{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "rqqInUU65bnp"
},
"source": [
"# CheXNet + Grad-CamNet \n",
"---\n",
"Author: Ruchit Agrawal\n",
"\n",
"- **CheXNet**\n",
" - A 121-layer DenseNet based multi-classification model for automatic pneumonia detection from Chest X-Ray images.\n",
"\n",
"- **Grad-CamNet**\n",
" - A class activation visualization model to output the probality distibution heat map over input images to CNN based models. \n",
"\n",
"
\n",
"\n",
"\n",
"\n",
"## What you will learn\n",
"- Understand the workflow of the CheXNet model.\n",
"- Visualize the probability heatmaps via the Grad-CamNet model on top of the pretrained CheXNet model.\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mjFfgozQ47YA",
"outputId": "d9fc4ef1-af46-4a36-e430-31ea1212a0be"
},
"outputs": [],
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
]
},
{
"cell_type": "code",
"execution_count": 413,
"metadata": {
"id": "TsUBuAV-6ciy"
},
"outputs": [],
"source": [
"image_folder = '/content/drive/My Drive/Medical image Reporting/data/images/'\n",
"labels_file = '/content/drive/My Drive/Medical image Reporting/data/labels.csv'\n",
"chexnet_weights = '/content/drive/My Drive/Medical image Reporting/ChexNet weights/brucechou1983_CheXNet_Keras_0.3.0_weights.h5'\n",
"class_name = \"Atelectasis,Cardiomegaly,Effusion,Infiltration,Mass,Nodule,Pneumonia,Pneumothorax,Consolidation,Edema,Emphysema,Fibrosis,Pleural_Thickening,Hernia\".split(',')"
]
},
{
"cell_type": "code",
"execution_count": 414,
"metadata": {
"id": "yS7sRq5R7NTJ"
},
"outputs": [],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"import joblib\n",
"import os\n",
"import tensorflow as tf\n",
"\n",
"from tensorflow.keras.layers import Dense,GlobalAveragePooling2D, Input, Embedding, LSTM,Dot,Reshape,Concatenate,BatchNormalization, GlobalMaxPooling2D, Dropout, Add, MaxPooling2D, GRU, AveragePooling2D, Activation\n",
"from tensorflow.keras.preprocessing.text import Tokenizer\n",
"from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import cv2\n",
"import random\n",
"import matplotlib.pyplot as plt \n",
"import matplotlib.cm as cm\n",
"import seaborn as sns\n",
"sns.set_context('notebook')\n",
"from nltk.translate.bleu_score import sentence_bleu"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "UtkHNxWI7WTR"
},
"outputs": [],
"source": [
"def create_chexnet(chexnet_weights = chexnet_weights, input_size = (224,224)):\n",
" \"\"\"\n",
" Creating the ChexNet model and loading the pre-trained weights \n",
" \"\"\"\n",
" model = tf.keras.applications.DenseNet121(include_top = False, input_shape = input_size+(3,)) \n",
" #Importing DenseNet. The last layer will be a ReLU activation layer.\n",
"\n",
" x = model.output #output from CheXNet\n",
" x = GlobalAveragePooling2D()(x)\n",
" x = Dense(14, activation = \"softmax\", name = \"chexnet_output\")(x) \n",
" # x = Activation('softmax')(x)\n",
"\n",
" chexnet = tf.keras.Model(inputs = model.input, outputs = x)\n",
" chexnet.load_weights(chexnet_weights)\n",
" _chexnet = tf.keras.Model(inputs = model.input, outputs = chexnet.layers[-3].output)\n",
" return chexnet, _chexnet\n",
"\n",
"def predict_chexnet(img,model, plot=False):\n",
" \"\"\"\n",
" return the name of the predicted class for the input image\n",
" \"\"\"\n",
" class_name = \"Atelectasis,Cardiomegaly,Effusion,Infiltration,Mass,Nodule,Pneumonia,Pneumothorax,Consolidation,Edema,Emphysema,Fibrosis,Pleural_Thickening,Hernia\".split(',')\n",
" pred = model(img)\n",
" \n",
" if plot:\n",
" fig = plt.figure(figsize=(30,4))\n",
" x = np.array(class_name)\n",
" y = np.array(pred.numpy().reshape(-1))\n",
" plt.title('Prediction probabilities')\n",
" sns.barplot(x, y, palette=\"Blues_d\")\n",
" plt.tight_layout()\n",
"\n",
" index = tf.argmax(pred, axis=1).numpy()[0]\n",
" percentage = round(pred[0,index].numpy(),2)\n",
" return class_name[index] + f' {str(percentage)}'\n"
]
},
{
"cell_type": "code",
"execution_count": 416,
"metadata": {
"id": "_rxJAtqv7yK-"
},
"outputs": [],
"source": [
"model, _ = create_chexnet(chexnet_weights = chexnet_weights,input_size=(224,224))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "I5uJj68EuzfY"
},
"source": [
"---\n",
"**Model Visualization**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AmDk_kcyuQFr"
},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "u_rK71HC8VbD",
"outputId": "bd36052e-3264-475a-ad3a-c0040222c1fa"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) [(None, 224, 224, 3) 0 \n",
"__________________________________________________________________________________________________\n",
"zero_padding2d (ZeroPadding2D) (None, 230, 230, 3) 0 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1/conv (Conv2D) (None, 112, 112, 64) 9408 zero_padding2d[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1/bn (BatchNormalization) (None, 112, 112, 64) 256 conv1/conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1/relu (Activation) (None, 112, 112, 64) 0 conv1/bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"zero_padding2d_1 (ZeroPadding2D (None, 114, 114, 64) 0 conv1/relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool1 (MaxPooling2D) (None, 56, 56, 64) 0 zero_padding2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_0_bn (BatchNormali (None, 56, 56, 64) 256 pool1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_0_relu (Activation (None, 56, 56, 64) 0 conv2_block1_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_1_conv (Conv2D) (None, 56, 56, 128) 8192 conv2_block1_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block1_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_1_relu (Activation (None, 56, 56, 128) 0 conv2_block1_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block1_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block1_concat (Concatenat (None, 56, 56, 96) 0 pool1[0][0] \n",
" conv2_block1_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_0_bn (BatchNormali (None, 56, 56, 96) 384 conv2_block1_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_0_relu (Activation (None, 56, 56, 96) 0 conv2_block2_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_1_conv (Conv2D) (None, 56, 56, 128) 12288 conv2_block2_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block2_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_1_relu (Activation (None, 56, 56, 128) 0 conv2_block2_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block2_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block2_concat (Concatenat (None, 56, 56, 128) 0 conv2_block1_concat[0][0] \n",
" conv2_block2_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_0_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block2_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_0_relu (Activation (None, 56, 56, 128) 0 conv2_block3_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_1_conv (Conv2D) (None, 56, 56, 128) 16384 conv2_block3_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block3_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_1_relu (Activation (None, 56, 56, 128) 0 conv2_block3_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block3_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block3_concat (Concatenat (None, 56, 56, 160) 0 conv2_block2_concat[0][0] \n",
" conv2_block3_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_0_bn (BatchNormali (None, 56, 56, 160) 640 conv2_block3_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_0_relu (Activation (None, 56, 56, 160) 0 conv2_block4_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_1_conv (Conv2D) (None, 56, 56, 128) 20480 conv2_block4_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block4_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_1_relu (Activation (None, 56, 56, 128) 0 conv2_block4_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block4_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block4_concat (Concatenat (None, 56, 56, 192) 0 conv2_block3_concat[0][0] \n",
" conv2_block4_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_0_bn (BatchNormali (None, 56, 56, 192) 768 conv2_block4_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_0_relu (Activation (None, 56, 56, 192) 0 conv2_block5_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_1_conv (Conv2D) (None, 56, 56, 128) 24576 conv2_block5_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block5_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_1_relu (Activation (None, 56, 56, 128) 0 conv2_block5_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block5_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block5_concat (Concatenat (None, 56, 56, 224) 0 conv2_block4_concat[0][0] \n",
" conv2_block5_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_0_bn (BatchNormali (None, 56, 56, 224) 896 conv2_block5_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_0_relu (Activation (None, 56, 56, 224) 0 conv2_block6_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_1_conv (Conv2D) (None, 56, 56, 128) 28672 conv2_block6_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_1_bn (BatchNormali (None, 56, 56, 128) 512 conv2_block6_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_1_relu (Activation (None, 56, 56, 128) 0 conv2_block6_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_2_conv (Conv2D) (None, 56, 56, 32) 36864 conv2_block6_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2_block6_concat (Concatenat (None, 56, 56, 256) 0 conv2_block5_concat[0][0] \n",
" conv2_block6_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool2_bn (BatchNormalization) (None, 56, 56, 256) 1024 conv2_block6_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool2_relu (Activation) (None, 56, 56, 256) 0 pool2_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool2_conv (Conv2D) (None, 56, 56, 128) 32768 pool2_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool2_pool (AveragePooling2D) (None, 28, 28, 128) 0 pool2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_0_bn (BatchNormali (None, 28, 28, 128) 512 pool2_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_0_relu (Activation (None, 28, 28, 128) 0 conv3_block1_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_1_conv (Conv2D) (None, 28, 28, 128) 16384 conv3_block1_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block1_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_1_relu (Activation (None, 28, 28, 128) 0 conv3_block1_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block1_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block1_concat (Concatenat (None, 28, 28, 160) 0 pool2_pool[0][0] \n",
" conv3_block1_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_0_bn (BatchNormali (None, 28, 28, 160) 640 conv3_block1_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_0_relu (Activation (None, 28, 28, 160) 0 conv3_block2_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_1_conv (Conv2D) (None, 28, 28, 128) 20480 conv3_block2_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block2_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_1_relu (Activation (None, 28, 28, 128) 0 conv3_block2_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block2_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block2_concat (Concatenat (None, 28, 28, 192) 0 conv3_block1_concat[0][0] \n",
" conv3_block2_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_0_bn (BatchNormali (None, 28, 28, 192) 768 conv3_block2_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_0_relu (Activation (None, 28, 28, 192) 0 conv3_block3_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_1_conv (Conv2D) (None, 28, 28, 128) 24576 conv3_block3_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block3_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_1_relu (Activation (None, 28, 28, 128) 0 conv3_block3_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block3_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block3_concat (Concatenat (None, 28, 28, 224) 0 conv3_block2_concat[0][0] \n",
" conv3_block3_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_0_bn (BatchNormali (None, 28, 28, 224) 896 conv3_block3_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_0_relu (Activation (None, 28, 28, 224) 0 conv3_block4_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_1_conv (Conv2D) (None, 28, 28, 128) 28672 conv3_block4_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block4_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_1_relu (Activation (None, 28, 28, 128) 0 conv3_block4_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block4_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block4_concat (Concatenat (None, 28, 28, 256) 0 conv3_block3_concat[0][0] \n",
" conv3_block4_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_0_bn (BatchNormali (None, 28, 28, 256) 1024 conv3_block4_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_0_relu (Activation (None, 28, 28, 256) 0 conv3_block5_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_1_conv (Conv2D) (None, 28, 28, 128) 32768 conv3_block5_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block5_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_1_relu (Activation (None, 28, 28, 128) 0 conv3_block5_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block5_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block5_concat (Concatenat (None, 28, 28, 288) 0 conv3_block4_concat[0][0] \n",
" conv3_block5_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_0_bn (BatchNormali (None, 28, 28, 288) 1152 conv3_block5_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_0_relu (Activation (None, 28, 28, 288) 0 conv3_block6_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_1_conv (Conv2D) (None, 28, 28, 128) 36864 conv3_block6_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block6_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_1_relu (Activation (None, 28, 28, 128) 0 conv3_block6_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block6_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block6_concat (Concatenat (None, 28, 28, 320) 0 conv3_block5_concat[0][0] \n",
" conv3_block6_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_0_bn (BatchNormali (None, 28, 28, 320) 1280 conv3_block6_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_0_relu (Activation (None, 28, 28, 320) 0 conv3_block7_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_1_conv (Conv2D) (None, 28, 28, 128) 40960 conv3_block7_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block7_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_1_relu (Activation (None, 28, 28, 128) 0 conv3_block7_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block7_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block7_concat (Concatenat (None, 28, 28, 352) 0 conv3_block6_concat[0][0] \n",
" conv3_block7_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_0_bn (BatchNormali (None, 28, 28, 352) 1408 conv3_block7_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_0_relu (Activation (None, 28, 28, 352) 0 conv3_block8_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_1_conv (Conv2D) (None, 28, 28, 128) 45056 conv3_block8_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block8_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_1_relu (Activation (None, 28, 28, 128) 0 conv3_block8_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block8_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block8_concat (Concatenat (None, 28, 28, 384) 0 conv3_block7_concat[0][0] \n",
" conv3_block8_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_0_bn (BatchNormali (None, 28, 28, 384) 1536 conv3_block8_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_0_relu (Activation (None, 28, 28, 384) 0 conv3_block9_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_1_conv (Conv2D) (None, 28, 28, 128) 49152 conv3_block9_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_1_bn (BatchNormali (None, 28, 28, 128) 512 conv3_block9_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_1_relu (Activation (None, 28, 28, 128) 0 conv3_block9_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block9_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block9_concat (Concatenat (None, 28, 28, 416) 0 conv3_block8_concat[0][0] \n",
" conv3_block9_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_0_bn (BatchNormal (None, 28, 28, 416) 1664 conv3_block9_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_0_relu (Activatio (None, 28, 28, 416) 0 conv3_block10_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_1_conv (Conv2D) (None, 28, 28, 128) 53248 conv3_block10_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_1_bn (BatchNormal (None, 28, 28, 128) 512 conv3_block10_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_1_relu (Activatio (None, 28, 28, 128) 0 conv3_block10_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block10_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block10_concat (Concatena (None, 28, 28, 448) 0 conv3_block9_concat[0][0] \n",
" conv3_block10_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_0_bn (BatchNormal (None, 28, 28, 448) 1792 conv3_block10_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_0_relu (Activatio (None, 28, 28, 448) 0 conv3_block11_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_1_conv (Conv2D) (None, 28, 28, 128) 57344 conv3_block11_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_1_bn (BatchNormal (None, 28, 28, 128) 512 conv3_block11_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_1_relu (Activatio (None, 28, 28, 128) 0 conv3_block11_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block11_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block11_concat (Concatena (None, 28, 28, 480) 0 conv3_block10_concat[0][0] \n",
" conv3_block11_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_0_bn (BatchNormal (None, 28, 28, 480) 1920 conv3_block11_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_0_relu (Activatio (None, 28, 28, 480) 0 conv3_block12_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_1_conv (Conv2D) (None, 28, 28, 128) 61440 conv3_block12_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_1_bn (BatchNormal (None, 28, 28, 128) 512 conv3_block12_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_1_relu (Activatio (None, 28, 28, 128) 0 conv3_block12_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_2_conv (Conv2D) (None, 28, 28, 32) 36864 conv3_block12_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv3_block12_concat (Concatena (None, 28, 28, 512) 0 conv3_block11_concat[0][0] \n",
" conv3_block12_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool3_bn (BatchNormalization) (None, 28, 28, 512) 2048 conv3_block12_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool3_relu (Activation) (None, 28, 28, 512) 0 pool3_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool3_conv (Conv2D) (None, 28, 28, 256) 131072 pool3_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool3_pool (AveragePooling2D) (None, 14, 14, 256) 0 pool3_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_0_bn (BatchNormali (None, 14, 14, 256) 1024 pool3_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_0_relu (Activation (None, 14, 14, 256) 0 conv4_block1_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_1_conv (Conv2D) (None, 14, 14, 128) 32768 conv4_block1_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block1_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_1_relu (Activation (None, 14, 14, 128) 0 conv4_block1_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block1_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block1_concat (Concatenat (None, 14, 14, 288) 0 pool3_pool[0][0] \n",
" conv4_block1_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_0_bn (BatchNormali (None, 14, 14, 288) 1152 conv4_block1_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_0_relu (Activation (None, 14, 14, 288) 0 conv4_block2_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_1_conv (Conv2D) (None, 14, 14, 128) 36864 conv4_block2_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block2_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_1_relu (Activation (None, 14, 14, 128) 0 conv4_block2_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block2_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block2_concat (Concatenat (None, 14, 14, 320) 0 conv4_block1_concat[0][0] \n",
" conv4_block2_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_0_bn (BatchNormali (None, 14, 14, 320) 1280 conv4_block2_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_0_relu (Activation (None, 14, 14, 320) 0 conv4_block3_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_1_conv (Conv2D) (None, 14, 14, 128) 40960 conv4_block3_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block3_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_1_relu (Activation (None, 14, 14, 128) 0 conv4_block3_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block3_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block3_concat (Concatenat (None, 14, 14, 352) 0 conv4_block2_concat[0][0] \n",
" conv4_block3_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_0_bn (BatchNormali (None, 14, 14, 352) 1408 conv4_block3_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_0_relu (Activation (None, 14, 14, 352) 0 conv4_block4_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_1_conv (Conv2D) (None, 14, 14, 128) 45056 conv4_block4_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block4_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_1_relu (Activation (None, 14, 14, 128) 0 conv4_block4_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block4_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block4_concat (Concatenat (None, 14, 14, 384) 0 conv4_block3_concat[0][0] \n",
" conv4_block4_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_0_bn (BatchNormali (None, 14, 14, 384) 1536 conv4_block4_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_0_relu (Activation (None, 14, 14, 384) 0 conv4_block5_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_1_conv (Conv2D) (None, 14, 14, 128) 49152 conv4_block5_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block5_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_1_relu (Activation (None, 14, 14, 128) 0 conv4_block5_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block5_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block5_concat (Concatenat (None, 14, 14, 416) 0 conv4_block4_concat[0][0] \n",
" conv4_block5_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_0_bn (BatchNormali (None, 14, 14, 416) 1664 conv4_block5_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_0_relu (Activation (None, 14, 14, 416) 0 conv4_block6_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_1_conv (Conv2D) (None, 14, 14, 128) 53248 conv4_block6_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block6_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_1_relu (Activation (None, 14, 14, 128) 0 conv4_block6_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block6_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block6_concat (Concatenat (None, 14, 14, 448) 0 conv4_block5_concat[0][0] \n",
" conv4_block6_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_0_bn (BatchNormali (None, 14, 14, 448) 1792 conv4_block6_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_0_relu (Activation (None, 14, 14, 448) 0 conv4_block7_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_1_conv (Conv2D) (None, 14, 14, 128) 57344 conv4_block7_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block7_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_1_relu (Activation (None, 14, 14, 128) 0 conv4_block7_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block7_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block7_concat (Concatenat (None, 14, 14, 480) 0 conv4_block6_concat[0][0] \n",
" conv4_block7_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_0_bn (BatchNormali (None, 14, 14, 480) 1920 conv4_block7_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_0_relu (Activation (None, 14, 14, 480) 0 conv4_block8_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_1_conv (Conv2D) (None, 14, 14, 128) 61440 conv4_block8_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block8_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_1_relu (Activation (None, 14, 14, 128) 0 conv4_block8_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block8_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block8_concat (Concatenat (None, 14, 14, 512) 0 conv4_block7_concat[0][0] \n",
" conv4_block8_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_0_bn (BatchNormali (None, 14, 14, 512) 2048 conv4_block8_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_0_relu (Activation (None, 14, 14, 512) 0 conv4_block9_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_1_conv (Conv2D) (None, 14, 14, 128) 65536 conv4_block9_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_1_bn (BatchNormali (None, 14, 14, 128) 512 conv4_block9_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_1_relu (Activation (None, 14, 14, 128) 0 conv4_block9_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block9_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block9_concat (Concatenat (None, 14, 14, 544) 0 conv4_block8_concat[0][0] \n",
" conv4_block9_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_0_bn (BatchNormal (None, 14, 14, 544) 2176 conv4_block9_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_0_relu (Activatio (None, 14, 14, 544) 0 conv4_block10_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_1_conv (Conv2D) (None, 14, 14, 128) 69632 conv4_block10_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block10_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block10_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block10_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block10_concat (Concatena (None, 14, 14, 576) 0 conv4_block9_concat[0][0] \n",
" conv4_block10_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_0_bn (BatchNormal (None, 14, 14, 576) 2304 conv4_block10_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_0_relu (Activatio (None, 14, 14, 576) 0 conv4_block11_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_1_conv (Conv2D) (None, 14, 14, 128) 73728 conv4_block11_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block11_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block11_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block11_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block11_concat (Concatena (None, 14, 14, 608) 0 conv4_block10_concat[0][0] \n",
" conv4_block11_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_0_bn (BatchNormal (None, 14, 14, 608) 2432 conv4_block11_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_0_relu (Activatio (None, 14, 14, 608) 0 conv4_block12_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_1_conv (Conv2D) (None, 14, 14, 128) 77824 conv4_block12_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block12_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block12_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block12_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block12_concat (Concatena (None, 14, 14, 640) 0 conv4_block11_concat[0][0] \n",
" conv4_block12_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_0_bn (BatchNormal (None, 14, 14, 640) 2560 conv4_block12_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_0_relu (Activatio (None, 14, 14, 640) 0 conv4_block13_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_1_conv (Conv2D) (None, 14, 14, 128) 81920 conv4_block13_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block13_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block13_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block13_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block13_concat (Concatena (None, 14, 14, 672) 0 conv4_block12_concat[0][0] \n",
" conv4_block13_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_0_bn (BatchNormal (None, 14, 14, 672) 2688 conv4_block13_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_0_relu (Activatio (None, 14, 14, 672) 0 conv4_block14_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_1_conv (Conv2D) (None, 14, 14, 128) 86016 conv4_block14_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block14_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block14_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block14_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block14_concat (Concatena (None, 14, 14, 704) 0 conv4_block13_concat[0][0] \n",
" conv4_block14_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_0_bn (BatchNormal (None, 14, 14, 704) 2816 conv4_block14_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_0_relu (Activatio (None, 14, 14, 704) 0 conv4_block15_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_1_conv (Conv2D) (None, 14, 14, 128) 90112 conv4_block15_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block15_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block15_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block15_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block15_concat (Concatena (None, 14, 14, 736) 0 conv4_block14_concat[0][0] \n",
" conv4_block15_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_0_bn (BatchNormal (None, 14, 14, 736) 2944 conv4_block15_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_0_relu (Activatio (None, 14, 14, 736) 0 conv4_block16_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_1_conv (Conv2D) (None, 14, 14, 128) 94208 conv4_block16_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block16_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block16_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block16_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block16_concat (Concatena (None, 14, 14, 768) 0 conv4_block15_concat[0][0] \n",
" conv4_block16_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_0_bn (BatchNormal (None, 14, 14, 768) 3072 conv4_block16_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_0_relu (Activatio (None, 14, 14, 768) 0 conv4_block17_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_1_conv (Conv2D) (None, 14, 14, 128) 98304 conv4_block17_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block17_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block17_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block17_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block17_concat (Concatena (None, 14, 14, 800) 0 conv4_block16_concat[0][0] \n",
" conv4_block17_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_0_bn (BatchNormal (None, 14, 14, 800) 3200 conv4_block17_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_0_relu (Activatio (None, 14, 14, 800) 0 conv4_block18_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_1_conv (Conv2D) (None, 14, 14, 128) 102400 conv4_block18_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block18_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block18_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block18_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block18_concat (Concatena (None, 14, 14, 832) 0 conv4_block17_concat[0][0] \n",
" conv4_block18_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_0_bn (BatchNormal (None, 14, 14, 832) 3328 conv4_block18_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_0_relu (Activatio (None, 14, 14, 832) 0 conv4_block19_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_1_conv (Conv2D) (None, 14, 14, 128) 106496 conv4_block19_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block19_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block19_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block19_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block19_concat (Concatena (None, 14, 14, 864) 0 conv4_block18_concat[0][0] \n",
" conv4_block19_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_0_bn (BatchNormal (None, 14, 14, 864) 3456 conv4_block19_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_0_relu (Activatio (None, 14, 14, 864) 0 conv4_block20_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_1_conv (Conv2D) (None, 14, 14, 128) 110592 conv4_block20_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block20_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block20_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block20_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block20_concat (Concatena (None, 14, 14, 896) 0 conv4_block19_concat[0][0] \n",
" conv4_block20_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_0_bn (BatchNormal (None, 14, 14, 896) 3584 conv4_block20_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_0_relu (Activatio (None, 14, 14, 896) 0 conv4_block21_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_1_conv (Conv2D) (None, 14, 14, 128) 114688 conv4_block21_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block21_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block21_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block21_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block21_concat (Concatena (None, 14, 14, 928) 0 conv4_block20_concat[0][0] \n",
" conv4_block21_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_0_bn (BatchNormal (None, 14, 14, 928) 3712 conv4_block21_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_0_relu (Activatio (None, 14, 14, 928) 0 conv4_block22_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_1_conv (Conv2D) (None, 14, 14, 128) 118784 conv4_block22_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block22_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block22_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block22_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block22_concat (Concatena (None, 14, 14, 960) 0 conv4_block21_concat[0][0] \n",
" conv4_block22_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_0_bn (BatchNormal (None, 14, 14, 960) 3840 conv4_block22_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_0_relu (Activatio (None, 14, 14, 960) 0 conv4_block23_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_1_conv (Conv2D) (None, 14, 14, 128) 122880 conv4_block23_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block23_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block23_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block23_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block23_concat (Concatena (None, 14, 14, 992) 0 conv4_block22_concat[0][0] \n",
" conv4_block23_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_0_bn (BatchNormal (None, 14, 14, 992) 3968 conv4_block23_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_0_relu (Activatio (None, 14, 14, 992) 0 conv4_block24_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_1_conv (Conv2D) (None, 14, 14, 128) 126976 conv4_block24_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_1_bn (BatchNormal (None, 14, 14, 128) 512 conv4_block24_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_1_relu (Activatio (None, 14, 14, 128) 0 conv4_block24_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_2_conv (Conv2D) (None, 14, 14, 32) 36864 conv4_block24_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv4_block24_concat (Concatena (None, 14, 14, 1024) 0 conv4_block23_concat[0][0] \n",
" conv4_block24_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool4_bn (BatchNormalization) (None, 14, 14, 1024) 4096 conv4_block24_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool4_relu (Activation) (None, 14, 14, 1024) 0 pool4_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool4_conv (Conv2D) (None, 14, 14, 512) 524288 pool4_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"pool4_pool (AveragePooling2D) (None, 7, 7, 512) 0 pool4_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_0_bn (BatchNormali (None, 7, 7, 512) 2048 pool4_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_0_relu (Activation (None, 7, 7, 512) 0 conv5_block1_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_1_conv (Conv2D) (None, 7, 7, 128) 65536 conv5_block1_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block1_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_1_relu (Activation (None, 7, 7, 128) 0 conv5_block1_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block1_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block1_concat (Concatenat (None, 7, 7, 544) 0 pool4_pool[0][0] \n",
" conv5_block1_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_0_bn (BatchNormali (None, 7, 7, 544) 2176 conv5_block1_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_0_relu (Activation (None, 7, 7, 544) 0 conv5_block2_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_1_conv (Conv2D) (None, 7, 7, 128) 69632 conv5_block2_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block2_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_1_relu (Activation (None, 7, 7, 128) 0 conv5_block2_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block2_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block2_concat (Concatenat (None, 7, 7, 576) 0 conv5_block1_concat[0][0] \n",
" conv5_block2_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_0_bn (BatchNormali (None, 7, 7, 576) 2304 conv5_block2_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_0_relu (Activation (None, 7, 7, 576) 0 conv5_block3_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_1_conv (Conv2D) (None, 7, 7, 128) 73728 conv5_block3_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block3_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_1_relu (Activation (None, 7, 7, 128) 0 conv5_block3_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block3_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block3_concat (Concatenat (None, 7, 7, 608) 0 conv5_block2_concat[0][0] \n",
" conv5_block3_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_0_bn (BatchNormali (None, 7, 7, 608) 2432 conv5_block3_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_0_relu (Activation (None, 7, 7, 608) 0 conv5_block4_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_1_conv (Conv2D) (None, 7, 7, 128) 77824 conv5_block4_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block4_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_1_relu (Activation (None, 7, 7, 128) 0 conv5_block4_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block4_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block4_concat (Concatenat (None, 7, 7, 640) 0 conv5_block3_concat[0][0] \n",
" conv5_block4_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_0_bn (BatchNormali (None, 7, 7, 640) 2560 conv5_block4_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_0_relu (Activation (None, 7, 7, 640) 0 conv5_block5_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_1_conv (Conv2D) (None, 7, 7, 128) 81920 conv5_block5_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block5_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_1_relu (Activation (None, 7, 7, 128) 0 conv5_block5_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block5_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block5_concat (Concatenat (None, 7, 7, 672) 0 conv5_block4_concat[0][0] \n",
" conv5_block5_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_0_bn (BatchNormali (None, 7, 7, 672) 2688 conv5_block5_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_0_relu (Activation (None, 7, 7, 672) 0 conv5_block6_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_1_conv (Conv2D) (None, 7, 7, 128) 86016 conv5_block6_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block6_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_1_relu (Activation (None, 7, 7, 128) 0 conv5_block6_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block6_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block6_concat (Concatenat (None, 7, 7, 704) 0 conv5_block5_concat[0][0] \n",
" conv5_block6_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_0_bn (BatchNormali (None, 7, 7, 704) 2816 conv5_block6_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_0_relu (Activation (None, 7, 7, 704) 0 conv5_block7_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_1_conv (Conv2D) (None, 7, 7, 128) 90112 conv5_block7_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block7_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_1_relu (Activation (None, 7, 7, 128) 0 conv5_block7_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block7_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block7_concat (Concatenat (None, 7, 7, 736) 0 conv5_block6_concat[0][0] \n",
" conv5_block7_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_0_bn (BatchNormali (None, 7, 7, 736) 2944 conv5_block7_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_0_relu (Activation (None, 7, 7, 736) 0 conv5_block8_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_1_conv (Conv2D) (None, 7, 7, 128) 94208 conv5_block8_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block8_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_1_relu (Activation (None, 7, 7, 128) 0 conv5_block8_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block8_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block8_concat (Concatenat (None, 7, 7, 768) 0 conv5_block7_concat[0][0] \n",
" conv5_block8_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_0_bn (BatchNormali (None, 7, 7, 768) 3072 conv5_block8_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_0_relu (Activation (None, 7, 7, 768) 0 conv5_block9_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_1_conv (Conv2D) (None, 7, 7, 128) 98304 conv5_block9_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_1_bn (BatchNormali (None, 7, 7, 128) 512 conv5_block9_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_1_relu (Activation (None, 7, 7, 128) 0 conv5_block9_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block9_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block9_concat (Concatenat (None, 7, 7, 800) 0 conv5_block8_concat[0][0] \n",
" conv5_block9_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_0_bn (BatchNormal (None, 7, 7, 800) 3200 conv5_block9_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_0_relu (Activatio (None, 7, 7, 800) 0 conv5_block10_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_1_conv (Conv2D) (None, 7, 7, 128) 102400 conv5_block10_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block10_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block10_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block10_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block10_concat (Concatena (None, 7, 7, 832) 0 conv5_block9_concat[0][0] \n",
" conv5_block10_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_0_bn (BatchNormal (None, 7, 7, 832) 3328 conv5_block10_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_0_relu (Activatio (None, 7, 7, 832) 0 conv5_block11_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_1_conv (Conv2D) (None, 7, 7, 128) 106496 conv5_block11_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block11_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block11_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block11_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block11_concat (Concatena (None, 7, 7, 864) 0 conv5_block10_concat[0][0] \n",
" conv5_block11_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_0_bn (BatchNormal (None, 7, 7, 864) 3456 conv5_block11_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_0_relu (Activatio (None, 7, 7, 864) 0 conv5_block12_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_1_conv (Conv2D) (None, 7, 7, 128) 110592 conv5_block12_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block12_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block12_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block12_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block12_concat (Concatena (None, 7, 7, 896) 0 conv5_block11_concat[0][0] \n",
" conv5_block12_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_0_bn (BatchNormal (None, 7, 7, 896) 3584 conv5_block12_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_0_relu (Activatio (None, 7, 7, 896) 0 conv5_block13_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_1_conv (Conv2D) (None, 7, 7, 128) 114688 conv5_block13_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block13_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block13_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block13_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block13_concat (Concatena (None, 7, 7, 928) 0 conv5_block12_concat[0][0] \n",
" conv5_block13_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_0_bn (BatchNormal (None, 7, 7, 928) 3712 conv5_block13_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_0_relu (Activatio (None, 7, 7, 928) 0 conv5_block14_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_1_conv (Conv2D) (None, 7, 7, 128) 118784 conv5_block14_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block14_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block14_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block14_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block14_concat (Concatena (None, 7, 7, 960) 0 conv5_block13_concat[0][0] \n",
" conv5_block14_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_0_bn (BatchNormal (None, 7, 7, 960) 3840 conv5_block14_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_0_relu (Activatio (None, 7, 7, 960) 0 conv5_block15_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_1_conv (Conv2D) (None, 7, 7, 128) 122880 conv5_block15_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block15_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block15_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block15_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block15_concat (Concatena (None, 7, 7, 992) 0 conv5_block14_concat[0][0] \n",
" conv5_block15_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_0_bn (BatchNormal (None, 7, 7, 992) 3968 conv5_block15_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_0_relu (Activatio (None, 7, 7, 992) 0 conv5_block16_0_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_1_conv (Conv2D) (None, 7, 7, 128) 126976 conv5_block16_0_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_1_bn (BatchNormal (None, 7, 7, 128) 512 conv5_block16_1_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_1_relu (Activatio (None, 7, 7, 128) 0 conv5_block16_1_bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_2_conv (Conv2D) (None, 7, 7, 32) 36864 conv5_block16_1_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv5_block16_concat (Concatena (None, 7, 7, 1024) 0 conv5_block15_concat[0][0] \n",
" conv5_block16_2_conv[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn (BatchNormalization) (None, 7, 7, 1024) 4096 conv5_block16_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"relu (Activation) (None, 7, 7, 1024) 0 bn[0][0] \n",
"__________________________________________________________________________________________________\n",
"global_average_pooling2d (Globa (None, 1024) 0 relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"chexnet_output (Dense) (None, 14) 14350 global_average_pooling2d[0][0] \n",
"==================================================================================================\n",
"Total params: 7,051,854\n",
"Trainable params: 6,968,206\n",
"Non-trainable params: 83,648\n",
"__________________________________________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RwdZKWCCszYa"
},
"source": [
"### Load data\n",
"---\n",
"- The dataset contains images of chest X-rays and the corresponding labels for each image. Each label denotes the name of the thoracic disease. \n",
"- We can predict up to 14 different thoracic disorders using this dataset. These are listed below:`Atelectasis,Cardiomegaly,Effusion,Infiltration,Mass,Nodule,Pneumonia,Pneumothorax,Consolidation,Edema,Emphysema,Fibrosis,Pleural_Thickening,Hernia`\n"
]
},
{
"cell_type": "code",
"execution_count": 417,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 414
},
"id": "fI6jHoxpsyvv",
"outputId": "c42fc1bc-816b-46a5-a837-74fd125b42c6"
},
"outputs": [
{
"data": {
"text/html": [
"
\n", " | Unnamed: 0 | \n", "Image Index | \n", "Finding Labels | \n", "Follow-up # | \n", "Patient ID | \n", "Patient Age | \n", "Patient Gender | \n", "View Position | \n", "OriginalImage[Width | \n", "Height] | \n", "OriginalImagePixelSpacing[x | \n", "y] | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0 | \n", "00000001_000.png | \n", "Cardiomegaly | \n", "0 | \n", "1 | \n", "57 | \n", "M | \n", "PA | \n", "2682 | \n", "2749 | \n", "0.143 | \n", "0.143 | \n", "
1 | \n", "4 | \n", "00000003_001.png | \n", "Hernia | \n", "0 | \n", "3 | \n", "74 | \n", "F | \n", "PA | \n", "2500 | \n", "2048 | \n", "0.168 | \n", "0.168 | \n", "
2 | \n", "5 | \n", "00000003_002.png | \n", "Hernia | \n", "1 | \n", "3 | \n", "75 | \n", "F | \n", "PA | \n", "2048 | \n", "2500 | \n", "0.168 | \n", "0.168 | \n", "
3 | \n", "7 | \n", "00000003_004.png | \n", "Hernia | \n", "3 | \n", "3 | \n", "77 | \n", "F | \n", "PA | \n", "2500 | \n", "2048 | \n", "0.168 | \n", "0.168 | \n", "
4 | \n", "8 | \n", "00000003_005.png | \n", "Hernia | \n", "4 | \n", "3 | \n", "78 | \n", "F | \n", "PA | \n", "2686 | \n", "2991 | \n", "0.143 | \n", "0.143 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1416 | \n", "4978 | \n", "00001330_002.png | \n", "Effusion | \n", "2 | \n", "1330 | \n", "75 | \n", "M | \n", "AP | \n", "3056 | \n", "2544 | \n", "0.139 | \n", "0.139 | \n", "
1417 | \n", "4979 | \n", "00001330_003.png | \n", "Infiltration | \n", "3 | \n", "1330 | \n", "75 | \n", "M | \n", "PA | \n", "2992 | \n", "2991 | \n", "0.143 | \n", "0.143 | \n", "
1418 | \n", "4980 | \n", "00001330_004.png | \n", "Effusion | \n", "4 | \n", "1330 | \n", "75 | \n", "M | \n", "AP | \n", "3056 | \n", "2544 | \n", "0.139 | \n", "0.139 | \n", "
1419 | \n", "4986 | \n", "00001333_000.png | \n", "Nodule | \n", "0 | \n", "1333 | \n", "47 | \n", "M | \n", "PA | \n", "2500 | \n", "2048 | \n", "0.171 | \n", "0.171 | \n", "
1420 | \n", "4998 | \n", "00001335_006.png | \n", "Infiltration | \n", "6 | \n", "1335 | \n", "23 | \n", "F | \n", "PA | \n", "2992 | \n", "2729 | \n", "0.143 | \n", "0.143 | \n", "
1421 rows × 12 columns
\n", "\n", " | Unnamed: 0 | \n", "Image Index | \n", "Finding Labels | \n", "Follow-up # | \n", "Patient ID | \n", "Patient Age | \n", "Patient Gender | \n", "View Position | \n", "OriginalImage[Width | \n", "Height] | \n", "OriginalImagePixelSpacing[x | \n", "y] | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
691 | \n", "2217 | \n", "00000583_009.png | \n", "Atelectasis | \n", "7 | \n", "583 | \n", "40 | \n", "F | \n", "AP | \n", "2500 | \n", "2048 | \n", "0.168000 | \n", "0.168000 | \n", "
15 | \n", "34 | \n", "00000011_006.png | \n", "Atelectasis | \n", "6 | \n", "11 | \n", "75 | \n", "M | \n", "PA | \n", "2992 | \n", "2991 | \n", "0.143000 | \n", "0.143000 | \n", "
1184 | \n", "4107 | \n", "00001108_001.png | \n", "Atelectasis | \n", "2 | \n", "1108 | \n", "59 | \n", "M | \n", "PA | \n", "2020 | \n", "2021 | \n", "0.194311 | \n", "0.194311 | \n", "
453 | \n", "1396 | \n", "00000368_004.png | \n", "Atelectasis | \n", "0 | \n", "368 | \n", "35 | \n", "M | \n", "PA | \n", "2992 | \n", "2991 | \n", "0.143000 | \n", "0.143000 | \n", "
1177 | \n", "4076 | \n", "00001104_008.png | \n", "Atelectasis | \n", "8 | \n", "1104 | \n", "54 | \n", "M | \n", "PA | \n", "2500 | \n", "2048 | \n", "0.168000 | \n", "0.168000 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
6 | \n", "10 | \n", "00000003_007.png | \n", "Hernia | \n", "6 | \n", "3 | \n", "80 | \n", "F | \n", "PA | \n", "2582 | \n", "2905 | \n", "0.143000 | \n", "0.143000 | \n", "
1012 | \n", "3491 | \n", "00000942_001.png | \n", "Hernia | \n", "1 | \n", "942 | \n", "48 | \n", "F | \n", "PA | \n", "2048 | \n", "2500 | \n", "0.171000 | \n", "0.171000 | \n", "
385 | \n", "1158 | \n", "00000284_000.png | \n", "Hernia | \n", "5 | \n", "284 | \n", "86 | \n", "F | \n", "PA | \n", "2992 | \n", "2991 | \n", "0.143000 | \n", "0.143000 | \n", "
383 | \n", "1154 | \n", "00000284_002.png | \n", "Hernia | \n", "1 | \n", "284 | \n", "81 | \n", "F | \n", "PA | \n", "2500 | \n", "2048 | \n", "0.168000 | \n", "0.168000 | \n", "
4 | \n", "8 | \n", "00000003_005.png | \n", "Hernia | \n", "4 | \n", "3 | \n", "78 | \n", "F | \n", "PA | \n", "2686 | \n", "2991 | \n", "0.143000 | \n", "0.143000 | \n", "
196 rows × 12 columns
\n", "