1562 lines (1562 with data), 140.5 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyPSMBc/WpgXbVKqssUpDA96",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/albysource/pneumonia_segmentation/blob/main/Chest_X_Ray.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"!pip install -q kaggle"
],
"metadata": {
"id": "4KZXfNSoOu2h"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from google.colab import files\n",
"files.upload()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 107
},
"id": "PO8dG34kPoX8",
"outputId": "adeeb6c8-37d2-4a6e-c25a-f77604c9e095"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.HTML object>"
],
"text/html": [
"\n",
" <input type=\"file\" id=\"files-147f8e6c-5c74-4a54-8ace-59a1ea52a6e0\" name=\"files[]\" multiple disabled\n",
" style=\"border:none\" />\n",
" <output id=\"result-147f8e6c-5c74-4a54-8ace-59a1ea52a6e0\">\n",
" Upload widget is only available when the cell has been executed in the\n",
" current browser session. Please rerun this cell to enable.\n",
" </output>\n",
" <script>// Copyright 2017 Google LLC\n",
"//\n",
"// Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"// you may not use this file except in compliance with the License.\n",
"// You may obtain a copy of the License at\n",
"//\n",
"// http://www.apache.org/licenses/LICENSE-2.0\n",
"//\n",
"// Unless required by applicable law or agreed to in writing, software\n",
"// distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"// See the License for the specific language governing permissions and\n",
"// limitations under the License.\n",
"\n",
"/**\n",
" * @fileoverview Helpers for google.colab Python module.\n",
" */\n",
"(function(scope) {\n",
"function span(text, styleAttributes = {}) {\n",
" const element = document.createElement('span');\n",
" element.textContent = text;\n",
" for (const key of Object.keys(styleAttributes)) {\n",
" element.style[key] = styleAttributes[key];\n",
" }\n",
" return element;\n",
"}\n",
"\n",
"// Max number of bytes which will be uploaded at a time.\n",
"const MAX_PAYLOAD_SIZE = 100 * 1024;\n",
"\n",
"function _uploadFiles(inputId, outputId) {\n",
" const steps = uploadFilesStep(inputId, outputId);\n",
" const outputElement = document.getElementById(outputId);\n",
" // Cache steps on the outputElement to make it available for the next call\n",
" // to uploadFilesContinue from Python.\n",
" outputElement.steps = steps;\n",
"\n",
" return _uploadFilesContinue(outputId);\n",
"}\n",
"\n",
"// This is roughly an async generator (not supported in the browser yet),\n",
"// where there are multiple asynchronous steps and the Python side is going\n",
"// to poll for completion of each step.\n",
"// This uses a Promise to block the python side on completion of each step,\n",
"// then passes the result of the previous step as the input to the next step.\n",
"function _uploadFilesContinue(outputId) {\n",
" const outputElement = document.getElementById(outputId);\n",
" const steps = outputElement.steps;\n",
"\n",
" const next = steps.next(outputElement.lastPromiseValue);\n",
" return Promise.resolve(next.value.promise).then((value) => {\n",
" // Cache the last promise value to make it available to the next\n",
" // step of the generator.\n",
" outputElement.lastPromiseValue = value;\n",
" return next.value.response;\n",
" });\n",
"}\n",
"\n",
"/**\n",
" * Generator function which is called between each async step of the upload\n",
" * process.\n",
" * @param {string} inputId Element ID of the input file picker element.\n",
" * @param {string} outputId Element ID of the output display.\n",
" * @return {!Iterable<!Object>} Iterable of next steps.\n",
" */\n",
"function* uploadFilesStep(inputId, outputId) {\n",
" const inputElement = document.getElementById(inputId);\n",
" inputElement.disabled = false;\n",
"\n",
" const outputElement = document.getElementById(outputId);\n",
" outputElement.innerHTML = '';\n",
"\n",
" const pickedPromise = new Promise((resolve) => {\n",
" inputElement.addEventListener('change', (e) => {\n",
" resolve(e.target.files);\n",
" });\n",
" });\n",
"\n",
" const cancel = document.createElement('button');\n",
" inputElement.parentElement.appendChild(cancel);\n",
" cancel.textContent = 'Cancel upload';\n",
" const cancelPromise = new Promise((resolve) => {\n",
" cancel.onclick = () => {\n",
" resolve(null);\n",
" };\n",
" });\n",
"\n",
" // Wait for the user to pick the files.\n",
" const files = yield {\n",
" promise: Promise.race([pickedPromise, cancelPromise]),\n",
" response: {\n",
" action: 'starting',\n",
" }\n",
" };\n",
"\n",
" cancel.remove();\n",
"\n",
" // Disable the input element since further picks are not allowed.\n",
" inputElement.disabled = true;\n",
"\n",
" if (!files) {\n",
" return {\n",
" response: {\n",
" action: 'complete',\n",
" }\n",
" };\n",
" }\n",
"\n",
" for (const file of files) {\n",
" const li = document.createElement('li');\n",
" li.append(span(file.name, {fontWeight: 'bold'}));\n",
" li.append(span(\n",
" `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n",
" `last modified: ${\n",
" file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n",
" 'n/a'} - `));\n",
" const percent = span('0% done');\n",
" li.appendChild(percent);\n",
"\n",
" outputElement.appendChild(li);\n",
"\n",
" const fileDataPromise = new Promise((resolve) => {\n",
" const reader = new FileReader();\n",
" reader.onload = (e) => {\n",
" resolve(e.target.result);\n",
" };\n",
" reader.readAsArrayBuffer(file);\n",
" });\n",
" // Wait for the data to be ready.\n",
" let fileData = yield {\n",
" promise: fileDataPromise,\n",
" response: {\n",
" action: 'continue',\n",
" }\n",
" };\n",
"\n",
" // Use a chunked sending to avoid message size limits. See b/62115660.\n",
" let position = 0;\n",
" do {\n",
" const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n",
" const chunk = new Uint8Array(fileData, position, length);\n",
" position += length;\n",
"\n",
" const base64 = btoa(String.fromCharCode.apply(null, chunk));\n",
" yield {\n",
" response: {\n",
" action: 'append',\n",
" file: file.name,\n",
" data: base64,\n",
" },\n",
" };\n",
"\n",
" let percentDone = fileData.byteLength === 0 ?\n",
" 100 :\n",
" Math.round((position / fileData.byteLength) * 100);\n",
" percent.textContent = `${percentDone}% done`;\n",
"\n",
" } while (position < fileData.byteLength);\n",
" }\n",
"\n",
" // All done.\n",
" yield {\n",
" response: {\n",
" action: 'complete',\n",
" }\n",
" };\n",
"}\n",
"\n",
"scope.google = scope.google || {};\n",
"scope.google.colab = scope.google.colab || {};\n",
"scope.google.colab._files = {\n",
" _uploadFiles,\n",
" _uploadFilesContinue,\n",
"};\n",
"})(self);\n",
"</script> "
]
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Saving kaggle.json to kaggle.json\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'kaggle.json': b'{\"username\":\"albynn\",\"key\":\"191feb1b2346cbc06b05e44750a9f67e\"}'}"
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "a8CLUvVbV6lC",
"outputId": "2281271a-fb4a-4dd0-918f-356041c2eccf"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Mounted at /content/drive\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"!apt install unzip\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BTpzTW5oWC9D",
"outputId": "a69855d3-fdb5-49e4-b292-a221bf2661f8"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Reading package lists... Done\n",
"Building dependency tree \n",
"Reading state information... Done\n",
"unzip is already the newest version (6.0-21ubuntu1.2).\n",
"The following package was automatically installed and is no longer required:\n",
" libnvidia-common-460\n",
"Use 'apt autoremove' to remove it.\n",
"0 upgraded, 0 newly installed, 0 to remove and 20 not upgraded.\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"id": "yXTfSrweALQs"
},
"outputs": [],
"source": [
"!mkdir CHEST"
]
},
{
"cell_type": "code",
"source": [
"!unzip /content/proj/Chest_X_ray.zip -d /content/CHEST"
],
"metadata": {
"id": "tn2oFNn_Alhq"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import warnings\n",
"warnings.filterwarnings ('ignore')"
],
"metadata": {
"id": "WZsRVdlOAn8M"
},
"execution_count": 29,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import os \n",
"import math \n",
"import shutil\n",
"import glob\n"
],
"metadata": {
"id": "aO04XK3EApwV"
},
"execution_count": 30,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#count the numebbr of images in the respecitve classes \n",
"ROOT_DIR = \"/content/proj\"\n",
"number_of_images = {}\n",
"\n",
"for dir in os.listdir(ROOT_DIR):\n",
" number_of_images[dir] = len(os.listdir(os.path.join(ROOT_DIR,dir)))\n",
"\n",
"number_of_images.items()"
],
"metadata": {
"id": "9ixJwU4qAuO-"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"#Building the Model "
],
"metadata": {
"id": "28vrUlDIAz0i"
}
},
{
"cell_type": "code",
"source": [
"from keras.layers import Conv2D, MaxPool2D, Dropout, Flatten, Dense, BatchNormalization, GlobalAveragePooling2D\n",
"from keras.models import Sequential \n",
"from keras_preprocessing.image import ImageDataGenerator\n",
"import keras "
],
"metadata": {
"id": "DU2Hfg4-A1vc"
},
"execution_count": 31,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Builing the CNN Model \n",
"\n",
"model = Sequential()\n",
"model.add(Conv2D(filters = 16, kernel_size=(3,3), activation= 'relu', input_shape=(224,224,3)))\n",
"\n",
"model.add(Conv2D(filters = 36, kernel_size=(3,3), activation= 'relu'))\n",
"model.add(MaxPool2D(pool_size=(2,2)))\n",
"\n",
"model.add(Conv2D(filters = 64, kernel_size=(3,3), activation= 'relu'))\n",
"model.add(MaxPool2D(pool_size=(2,2)))\n",
"\n",
"model.add(Conv2D(filters = 128, kernel_size=(3,3), activation= 'relu'))\n",
"model.add(MaxPool2D(pool_size=(2,2)))\n",
"\n",
"\n",
"\n",
"model.add(Dropout(rate=0.25))\n",
"\n",
"model.add(Flatten())\n",
"model.add(Dense(units=64,activation = 'relu'))\n",
"model.add(Dropout(rate=0.25))\n",
"\n",
"model.add(Dense(units=1,activation='sigmoid'))\n",
"\n",
"model.summary()\n"
],
"metadata": {
"id": "5h_C3Wh9A3U9",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "bfebee5a-c813-4d40-d61c-6784ca37d6da"
},
"execution_count": 32,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d (Conv2D) (None, 222, 222, 16) 448 \n",
" \n",
" conv2d_1 (Conv2D) (None, 220, 220, 36) 5220 \n",
" \n",
" max_pooling2d (MaxPooling2D (None, 110, 110, 36) 0 \n",
" ) \n",
" \n",
" conv2d_2 (Conv2D) (None, 108, 108, 64) 20800 \n",
" \n",
" max_pooling2d_1 (MaxPooling (None, 54, 54, 64) 0 \n",
" 2D) \n",
" \n",
" conv2d_3 (Conv2D) (None, 52, 52, 128) 73856 \n",
" \n",
" max_pooling2d_2 (MaxPooling (None, 26, 26, 128) 0 \n",
" 2D) \n",
" \n",
" dropout (Dropout) (None, 26, 26, 128) 0 \n",
" \n",
" flatten (Flatten) (None, 86528) 0 \n",
" \n",
" dense (Dense) (None, 64) 5537856 \n",
" \n",
" dropout_1 (Dropout) (None, 64) 0 \n",
" \n",
" dense_1 (Dense) (None, 1) 65 \n",
" \n",
"=================================================================\n",
"Total params: 5,638,245\n",
"Trainable params: 5,638,245\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"model.compile(optimizer = 'adam',loss = keras.losses.binary_crossentropy, metrics=['accuracy'])"
],
"metadata": {
"id": "LLgb0llyA-Nr"
},
"execution_count": 33,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Data Prepration using "
],
"metadata": {
"id": "n5hpg0mbBAcH"
}
},
{
"cell_type": "code",
"source": [
"def preprocessingImages(path):\n",
"\n",
" #input will be the path \n",
" #outpu will be the processed images \n",
"\n",
" image_data = ImageDataGenerator(zoom_range=0.2,shear_range=0.2,rescale=1/255,horizontal_flip=True)\n",
" image = image_data.flow_from_directory(directory = path , target_size=(224,224), batch_size = 32,class_mode='binary')\n",
"\n",
" return image \n",
" "
],
"metadata": {
"id": "nfwf4QxUBIQt"
},
"execution_count": 35,
"outputs": []
},
{
"cell_type": "code",
"source": [
"path = \"/content/CHEST/train\"\n",
"train_data = preprocessingImages(path )"
],
"metadata": {
"id": "WN5OhChnBKT7",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "6623335d-149e-4d21-fd84-16f6a510cabc"
},
"execution_count": 36,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found 5216 images belonging to 2 classes.\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"def preprocessingImages1(path):\n",
"\n",
" #input will be the path \n",
" #outpu will be the processed images \n",
"\n",
" image_data = ImageDataGenerator(rescale=1/25)\n",
" image = image_data.flow_from_directory(directory = path , target_size=(224,224), batch_size = 32,class_mode='binary')\n",
"\n",
" return image "
],
"metadata": {
"id": "FpPysrdZBy0x"
},
"execution_count": 37,
"outputs": []
},
{
"cell_type": "code",
"source": [
"path = \"/content/CHEST/test\"\n",
"test_data = preprocessingImages1(path)"
],
"metadata": {
"id": "M45qU98kB08J",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "dda7b87e-d0bd-4c4d-9112-fa4d55e30e3c"
},
"execution_count": 38,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found 624 images belonging to 2 classes.\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"path = \"/content/CHEST/val\"\n",
"val_data = preprocessingImages1(path)"
],
"metadata": {
"id": "B7TXf7XhB1uO",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "edbbdb04-a9ab-4974-f3ed-e20117e2dae9"
},
"execution_count": 41,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found 16 images belonging to 2 classes.\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Early Stoping \n",
"from keras.callbacks import ModelCheckpoint, EarlyStopping \n",
"\n",
"es = EarlyStopping(monitor=\"val_accuracy\",min_delta=0.01,patience =6, verbose=1, mode='auto')\n",
"\n",
"mc = ModelCheckpoint(monitor=\"val_accuracy\",filepath = \"./bestmodel.h5\", verbose =1, save_best_only = True, mode='auto')\n",
"\n",
"cd = [es,mc]\n",
"\n"
],
"metadata": {
"id": "hURXleetB5Vk"
},
"execution_count": 42,
"outputs": []
},
{
"cell_type": "code",
"source": [
"hs = model.fit_generator(generator = train_data,steps_per_epoch=8,epochs=30,verbose=1,validation_data = val_data,validation_steps= 16,callbacks=cd)"
],
"metadata": {
"id": "JQCrN6SnB8D9",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8f26ef4d-16e4-4db4-94a7-c27916125f72"
},
"execution_count": null,
"outputs": [
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.9544 - accuracy: 0.5234"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 16 batches). You may need to use the repeat() function when building your dataset.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 1: val_accuracy improved from -inf to 0.50000, saving model to ./bestmodel.h5\n",
"8/8 [==============================] - 48s 6s/step - loss: 0.9544 - accuracy: 0.5234 - val_loss: 6.9123 - val_accuracy: 0.5000\n",
"Epoch 2/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.5638 - accuracy: 0.7578"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.5638 - accuracy: 0.7578\n",
"Epoch 3/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.5939 - accuracy: 0.7148"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 47s 6s/step - loss: 0.5939 - accuracy: 0.7148\n",
"Epoch 4/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.5378 - accuracy: 0.7266"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.5378 - accuracy: 0.7266\n",
"Epoch 5/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.5159 - accuracy: 0.7344"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 48s 6s/step - loss: 0.5159 - accuracy: 0.7344\n",
"Epoch 6/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.4199 - accuracy: 0.7617"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.4199 - accuracy: 0.7617\n",
"Epoch 7/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.4095 - accuracy: 0.7656"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.4095 - accuracy: 0.7656\n",
"Epoch 8/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.4541 - accuracy: 0.7812"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.4541 - accuracy: 0.7812\n",
"Epoch 9/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.4093 - accuracy: 0.7930"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.4093 - accuracy: 0.7930\n",
"Epoch 10/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3292 - accuracy: 0.8125"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 42s 5s/step - loss: 0.3292 - accuracy: 0.8125\n",
"Epoch 11/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2994 - accuracy: 0.8438"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 42s 5s/step - loss: 0.2994 - accuracy: 0.8438\n",
"Epoch 12/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3101 - accuracy: 0.8516"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.3101 - accuracy: 0.8516\n",
"Epoch 13/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3117 - accuracy: 0.8672"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 42s 5s/step - loss: 0.3117 - accuracy: 0.8672\n",
"Epoch 14/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2759 - accuracy: 0.8828"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 43s 5s/step - loss: 0.2759 - accuracy: 0.8828\n",
"Epoch 15/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2986 - accuracy: 0.8555"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 45s 5s/step - loss: 0.2986 - accuracy: 0.8555\n",
"Epoch 16/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2505 - accuracy: 0.8672"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.2505 - accuracy: 0.8672\n",
"Epoch 17/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3283 - accuracy: 0.8750"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 46s 6s/step - loss: 0.3283 - accuracy: 0.8750\n",
"Epoch 18/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2833 - accuracy: 0.8672"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.2833 - accuracy: 0.8672\n",
"Epoch 19/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3341 - accuracy: 0.8906"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.3341 - accuracy: 0.8906\n",
"Epoch 20/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2917 - accuracy: 0.8945"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 46s 6s/step - loss: 0.2917 - accuracy: 0.8945\n",
"Epoch 21/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3180 - accuracy: 0.8789"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.3180 - accuracy: 0.8789\n",
"Epoch 22/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2319 - accuracy: 0.9180"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 44s 5s/step - loss: 0.2319 - accuracy: 0.9180\n",
"Epoch 23/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2572 - accuracy: 0.8906"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 48s 6s/step - loss: 0.2572 - accuracy: 0.8906\n",
"Epoch 24/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3089 - accuracy: 0.8828"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 46s 6s/step - loss: 0.3089 - accuracy: 0.8828\n",
"Epoch 25/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2606 - accuracy: 0.8867"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 45s 6s/step - loss: 0.2606 - accuracy: 0.8867\n",
"Epoch 26/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.3021 - accuracy: 0.8633"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"metadata": {
"tags": null
},
"name": "stdout",
"output_type": "stream",
"text": [
"8/8 [==============================] - 45s 6s/step - loss: 0.3021 - accuracy: 0.8633\n",
"Epoch 27/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2052 - accuracy: 0.9062"
]
},
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r8/8 [==============================] - 46s 6s/step - loss: 0.2052 - accuracy: 0.9062\n",
"Epoch 28/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2649 - accuracy: 0.8906"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r8/8 [==============================] - 44s 5s/step - loss: 0.2649 - accuracy: 0.8906\n",
"Epoch 29/30\n",
"8/8 [==============================] - ETA: 0s - loss: 0.2486 - accuracy: 0.9023"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,accuracy\n",
"WARNING:tensorflow:Can save best model only with val_accuracy available, skipping.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r8/8 [==============================] - 45s 6s/step - loss: 0.2486 - accuracy: 0.9023\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Graphical Interpretation of Our Model \n",
"\n",
"h = hs.history \n",
"h.keys()"
],
"metadata": {
"id": "87YzQ6KWB9s9",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "f4a30ec0-702d-4615-af02-1b920ec814f0"
},
"execution_count": 44,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy'])"
]
},
"metadata": {},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"source": [
"plt.plot(h['accuracy'])\n",
"plt.plot(h['val_accuracy'],c=\"red\")\n",
"\n",
"plt.title('acc vs val-acc')\n",
"plt.show()"
],
"metadata": {
"id": "U_LwQ2qECAIc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
},
"outputId": "c87a91e4-36bf-458c-d6c8-cca4f887b093"
},
"execution_count": 45,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"plt.plot(h['loss'])\n",
"plt.plot(h['val_loss'],c=\"red\")\n",
"\n",
"plt.title('loss vs val-loss')\n",
"plt.show()"
],
"metadata": {
"id": "enk-x-hqCA0_",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 281
},
"outputId": "063b4611-f712-4580-b496-34c306814b85"
},
"execution_count": 46,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# Model Accuracy \n",
"\n",
"from keras.models import load_model \n",
"\n",
"model = load_model(\"/content/bestmodel.h5\")"
],
"metadata": {
"id": "XoyG2wngCCo3"
},
"execution_count": 47,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Model Accuracy "
],
"metadata": {
"id": "uAZAEw-UCIKf"
}
},
{
"cell_type": "code",
"source": [
"acc = model.evaluate_generator(test_data)[1]\n",
"\n",
"print(f\"the accuracy of the model is {acc*100}%\")"
],
"metadata": {
"id": "vXNB9a0VCGtX",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2a7ee0cd-2a5a-4b48-88da-b40000c6d2be"
},
"execution_count": 48,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"the accuracy of the model is 62.5%\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"from tensorflow.keras.utils import load_img,img_to_array"
],
"metadata": {
"id": "JsyWB9nACL4j"
},
"execution_count": 49,
"outputs": []
},
{
"cell_type": "code",
"source": [
"path =\"/content/CHEST/test/PNEUMONIA/person100_bacteria_475.jpeg\"\n",
"\n",
"img = load_img(path,target_size=(224,224))\n",
"input_arr = img_to_array(img)/255\n",
"\n",
"\n",
"plt.imshow(input_arr)\n",
"plt.show()\n",
"\n",
"input_arr.shape\n",
"\n",
"input_arr = np.expand_dims(input_arr, axis=0)\n",
"\n",
"pred = model.predict(input_arr)[0][0]\n",
"pred\n",
"\n",
"if pred == 0:\n",
" print(\"The scan shows no sign of Pneumonia\")\n",
"else:\n",
" print(\"The Scan Shows sign of Pneumonia\")"
],
"metadata": {
"id": "YGkvHqpNCN29",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 303
},
"outputId": "aec8d96f-7f9c-431d-b372-206b264958be"
},
"execution_count": 54,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"1/1 [==============================] - 0s 78ms/step\n",
"The Scan Shows sign of Pneumonia\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"train_data.class_indices"
],
"metadata": {
"id": "HpEc2lfqCSIE",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "6932bfd7-5043-4cf2-a627-f43fffaf405d"
},
"execution_count": 52,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'NORMAL': 0, 'PNEUMONIA': 1}"
]
},
"metadata": {},
"execution_count": 52
}
]
}
]
}