{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
    "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5"
   },
   "outputs": [],
   "source": [
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix, classification_report \n",
    "from sklearn.model_selection import train_test_split\n",
    "from glob import glob"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras import Sequential\n",
    "from tensorflow.keras.layers import Dense, MaxPooling2D, GlobalAveragePooling2D, Conv2D, Input, Flatten,BatchNormalization, Dropout, Activation,  Add, LeakyReLU, ELU\n",
    "import tensorflow\n",
    "import tensorflow as tf\n",
    "from keras.optimizers import Adam, RMSprop\n",
    "from keras.callbacks import ModelCheckpoint, ReduceLROnPlateau\n",
    "from keras.engine.topology import Layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1323 962\n"
     ]
    }
   ],
   "source": [
    "TRAIN_PATH = '../datos/train/*/*'\n",
    "TEST_PATH  = '../datos/test/*/*'\n",
    "\n",
    "TRAIN_IMGS = glob(TRAIN_PATH)\n",
    "TEST_IMGS  = glob(TEST_PATH)\n",
    "\n",
    "print (len(TRAIN_IMGS) , len (TEST_IMGS))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(['../input/tfg-covid-data/train/NORMAL/NORMAL (159).png',\n",
       "  '../input/tfg-covid-data/train/NORMAL/NORMAL (28).png'],\n",
       " ['../input/tfg-covid-data/test/NORMAL/NORMAL (391).png',\n",
       "  '../input/tfg-covid-data/test/NORMAL/NORMAL (695).png'])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "TRAIN_IMGS[: 2], TEST_IMGS[:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "## converts name into number\n",
    "class_dict = {'NORMAL': 0, 'COVID-19':1, 'Viral Pneumonia':2}\n",
    "num2label = {0:'NORMAL', 1:'COVID-19', 2:'Viral Pneumonia'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Generate labels\n",
    "\n",
    "TRAIN_LABELS = []\n",
    "TEST_LABELS = []\n",
    "\n",
    "for filename in TRAIN_IMGS:\n",
    "    label = str(filename.split('/')[4])\n",
    "    #print (label)\n",
    "    assert label in ['NORMAL', 'COVID-19', 'Viral Pneumonia']\n",
    "    label = int (class_dict[label])\n",
    "    TRAIN_LABELS.append (label)\n",
    "    \n",
    "for filename in TEST_IMGS:\n",
    "    label = str(filename.split('/')[4])\n",
    "    #print (label)\n",
    "    assert label in ['NORMAL', 'COVID-19', 'Viral Pneumonia']\n",
    "    label = int (class_dict[label])\n",
    "    TEST_LABELS.append (label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1323, 962, [0, 0, 0], [0, 0, 0])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(TRAIN_LABELS) , len(TEST_LABELS), TRAIN_LABELS[:3], TEST_LABELS[:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "NCLASSES = 3\n",
    "SIZE = (1024,1024)\n",
    "BATCH_SIZE = 16"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def decode_image(filename, label = None, image_size= SIZE ):\n",
    "    \n",
    "    bits = tf.io.read_file(filename)\n",
    "    image = tf.image.decode_png(bits, channels=1)\n",
    "    image = tf.cast(image, tf.float32) / 255.0\n",
    "    image = tf.image.resize(image, image_size)\n",
    "    \n",
    "    if label is None:\n",
    "        return image\n",
    "    else:\n",
    "        return image, label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "image, label  = decode_image(TRAIN_IMGS[0], TRAIN_LABELS[0])\n",
    "plt.imshow(image)\n",
    "plt.title (num2label[label] + str(label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('../input/tfg-covid-data/train/Viral Pneumonia/Viral Pneumonia (1000).png')\n",
    "img.shape, img.min(), img.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "## DATALOADERS\n",
    "\n",
    "AUTO = tf.data.experimental.AUTOTUNE\n",
    "\n",
    "train_dataset = (\n",
    "    tf.data.TFRecordDataset\n",
    "    .from_tensor_slices((TRAIN_IMGS, TRAIN_LABELS))\n",
    "    .map(decode_image, num_parallel_calls=AUTO)\n",
    "    .repeat()\n",
    "    .shuffle(1024)\n",
    "    .batch(44)\n",
    "    #.batch(BATCH_SIZE)\n",
    "    )\n",
    "\n",
    "\n",
    "test_dataset = (\n",
    "    tf.data.TFRecordDataset\n",
    "    .from_tensor_slices((TEST_IMGS, TEST_LABELS))\n",
    "    .map(decode_image, num_parallel_calls=AUTO)\n",
    "    .batch(19)\n",
    "    #.batch(BATCH_SIZE)\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for element in train_dataset:\n",
    "    \n",
    "    image = element[0]\n",
    "    label = element[1]\n",
    "\n",
    "    print (image.shape, label.shape)\n",
    "    for img, lbl in zip(image, label): #batch\n",
    "        \n",
    "        plt.imshow(img)\n",
    "        plt.show()\n",
    "        \n",
    "        break\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_10 (Conv2D)           (None, 1022, 1022, 8)     80        \n",
      "_________________________________________________________________\n",
      "conv2d_11 (Conv2D)           (None, 1020, 1020, 8)     584       \n",
      "_________________________________________________________________\n",
      "max_pooling2d_5 (MaxPooling2 (None, 510, 510, 8)       0         \n",
      "_________________________________________________________________\n",
      "conv2d_12 (Conv2D)           (None, 508, 508, 16)      1168      \n",
      "_________________________________________________________________\n",
      "conv2d_13 (Conv2D)           (None, 506, 506, 16)      2320      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_6 (MaxPooling2 (None, 253, 253, 16)      0         \n",
      "_________________________________________________________________\n",
      "conv2d_14 (Conv2D)           (None, 251, 251, 32)      4640      \n",
      "_________________________________________________________________\n",
      "conv2d_15 (Conv2D)           (None, 249, 249, 32)      9248      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_7 (MaxPooling2 (None, 124, 124, 32)      0         \n",
      "_________________________________________________________________\n",
      "conv2d_16 (Conv2D)           (None, 122, 122, 64)      18496     \n",
      "_________________________________________________________________\n",
      "conv2d_17 (Conv2D)           (None, 120, 120, 64)      36928     \n",
      "_________________________________________________________________\n",
      "max_pooling2d_8 (MaxPooling2 (None, 60, 60, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_18 (Conv2D)           (None, 58, 58, 128)       73856     \n",
      "_________________________________________________________________\n",
      "conv2d_19 (Conv2D)           (None, 56, 56, 128)       147584    \n",
      "_________________________________________________________________\n",
      "max_pooling2d_9 (MaxPooling2 (None, 28, 28, 128)       0         \n",
      "_________________________________________________________________\n",
      "flatten_1 (Flatten)          (None, 100352)            0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 256)               25690368  \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 3)                 771       \n",
      "=================================================================\n",
      "Total params: 25,986,043\n",
      "Trainable params: 25,986,043\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "#arquitectura Teodoro\n",
    "EPOCHS = 100\n",
    "\n",
    "model = Sequential()\n",
    "\n",
    "\n",
    "\n",
    "model.add(Conv2D(filters=8 , (3 , activation='relu', input_shape=(1024,1024,1)))\n",
    "model.add(Conv2D(filters=8 , kernel_size=3 , activation='relu'))\n",
    "model.add(MaxPooling2D((3,3)))\n",
    "model.add(Conv2D(filters=16 , kernel_size=3 , activation='relu'))\n",
    "model.add(Conv2D(filters=16 , kernel_size=3 , activation='relu'))\n",
    "model.add(MaxPooling2D((3,3)))\n",
    "model.add(Conv2D(filters=32 , kernel_size=3 , activation='relu'))\n",
    "model.add(Conv2D(filters=32 , kernel_size=3 , activation='relu'))\n",
    "model.add(MaxPooling2D((3,3)))\n",
    "model.add(Conv2D(filters=64 , kernel_size=3 , activation='relu'))\n",
    "model.add(Conv2D(filters=64 , kernel_size=3 , activation='relu'))\n",
    "model.add(MaxPooling2D((3,3)))\n",
    "model.add(Conv2D(filters=128 , kernel_size=3 , activation='relu'))\n",
    "model.add(Conv2D(filters=128 , kernel_size=3 , activation='relu'))\n",
    "model.add(MaxPooling2D((3,3)))\n",
    "\n",
    "#model.add(GlobalAveragePooling2D()) # mas eficiente que Flatten\n",
    "model.add(Flatten()) # o GAP = Global Average Pooling\n",
    "model.add(Dense(256,activation=\"relu\"))\n",
    "#model.add(Dropout (0.5))\n",
    "model.add(Dense(NCLASSES, activation='softmax'))\n",
    "\n",
    "print (model.summary())\n",
    "model.compile(optimizer= RMSprop(0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "LAYERS = 4\n",
    "EPOCHS = 5\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Input((SIZE[0],SIZE[0],3))) # (16, 512, 512, 3)\n",
    "\n",
    "for i in range(1, LAYERS+1):\n",
    "    print ('block' , i)\n",
    "    model.add(Conv2D(filters=16* (2**i) , kernel_size=3 , padding='same', activation='relu'))\n",
    "    model.add(Conv2D(filters=16* (2**i) , kernel_size=3 , padding='same', activation='relu'))\n",
    "    #model.add(Conv2D(filters=16* (2**i) , kernel_size=3 , padding='same', activation='relu'))\n",
    "    model.add(MaxPooling2D((2,2)))\n",
    "\n",
    "#model.add(GlobalAveragePooling2D()) # mas eficiente que Flatten\n",
    "model.add(Flatten())\n",
    "model.add(Dense(512,activation=\"relu\"))\n",
    "model.add(Dropout (0.5)) #regularizacion\n",
    "model.add(Dense(NCLASSES, activation='softmax'))\n",
    "\n",
    "print (model.summary())\n",
    "model.compile(optimizer= RMSprop(0.001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "STEPS_PER_EPOCH = len(TRAIN_IMGS) // 44#BATCH_SIZE\n",
    "BATCH_SIZE, EPOCHS, STEPS_PER_EPOCH\n",
    "VALIDATION_STEPS = len(TEST_IMGS) // 19"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "30/30 [==============================] - 89s 2s/step - loss: 0.9596 - accuracy: 0.5794 - val_loss: 0.7236 - val_accuracy: 0.5632\n",
      "Epoch 2/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.5108 - accuracy: 0.8070 - val_loss: 0.3412 - val_accuracy: 0.8726\n",
      "Epoch 3/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.3205 - accuracy: 0.8718 - val_loss: 0.4332 - val_accuracy: 0.8126\n",
      "Epoch 4/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.2543 - accuracy: 0.9051 - val_loss: 0.3484 - val_accuracy: 0.8663\n",
      "Epoch 5/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.2787 - accuracy: 0.9041 - val_loss: 0.2671 - val_accuracy: 0.9063\n",
      "Epoch 6/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.2398 - accuracy: 0.9090 - val_loss: 0.2619 - val_accuracy: 0.9074\n",
      "Epoch 7/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.2304 - accuracy: 0.9126 - val_loss: 0.2845 - val_accuracy: 0.8895\n",
      "Epoch 8/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.1868 - accuracy: 0.9378 - val_loss: 0.3402 - val_accuracy: 0.8800\n",
      "Epoch 9/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.1531 - accuracy: 0.9444 - val_loss: 0.2378 - val_accuracy: 0.9242\n",
      "Epoch 10/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.1818 - accuracy: 0.9302 - val_loss: 0.2493 - val_accuracy: 0.9126\n",
      "Epoch 11/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.1632 - accuracy: 0.9474 - val_loss: 0.3234 - val_accuracy: 0.8905\n",
      "Epoch 12/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.1516 - accuracy: 0.9480 - val_loss: 0.3337 - val_accuracy: 0.8916\n",
      "Epoch 13/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.1084 - accuracy: 0.9574 - val_loss: 0.3399 - val_accuracy: 0.8937\n",
      "Epoch 14/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0936 - accuracy: 0.9671 - val_loss: 0.2425 - val_accuracy: 0.9284\n",
      "Epoch 15/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0817 - accuracy: 0.9687 - val_loss: 0.2315 - val_accuracy: 0.9263\n",
      "Epoch 16/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0639 - accuracy: 0.9789 - val_loss: 0.4438 - val_accuracy: 0.8411\n",
      "Epoch 17/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.1003 - accuracy: 0.9647 - val_loss: 0.2368 - val_accuracy: 0.9316\n",
      "Epoch 18/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0768 - accuracy: 0.9680 - val_loss: 0.2742 - val_accuracy: 0.9274\n",
      "Epoch 19/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0739 - accuracy: 0.9697 - val_loss: 0.2523 - val_accuracy: 0.9316\n",
      "Epoch 20/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0566 - accuracy: 0.9786 - val_loss: 0.3835 - val_accuracy: 0.8947\n",
      "Epoch 21/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0379 - accuracy: 0.9860 - val_loss: 0.3615 - val_accuracy: 0.9189\n",
      "Epoch 22/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0537 - accuracy: 0.9818 - val_loss: 0.2796 - val_accuracy: 0.9326\n",
      "Epoch 23/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0420 - accuracy: 0.9833 - val_loss: 0.5393 - val_accuracy: 0.8537\n",
      "Epoch 24/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0332 - accuracy: 0.9866 - val_loss: 0.5634 - val_accuracy: 0.8632\n",
      "Epoch 25/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0691 - accuracy: 0.9784 - val_loss: 0.3830 - val_accuracy: 0.9179\n",
      "Epoch 26/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.1033 - accuracy: 0.9678 - val_loss: 0.3829 - val_accuracy: 0.9263\n",
      "Epoch 27/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0151 - accuracy: 0.9965 - val_loss: 0.3094 - val_accuracy: 0.9442\n",
      "Epoch 28/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0354 - accuracy: 0.9892 - val_loss: 0.2608 - val_accuracy: 0.9474\n",
      "Epoch 29/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0180 - accuracy: 0.9974 - val_loss: 0.3035 - val_accuracy: 0.9347\n",
      "Epoch 30/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0122 - accuracy: 0.9972 - val_loss: 0.3220 - val_accuracy: 0.9474\n",
      "Epoch 31/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0369 - accuracy: 0.9884 - val_loss: 0.3080 - val_accuracy: 0.9347\n",
      "Epoch 32/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0021 - accuracy: 1.0000 - val_loss: 0.4127 - val_accuracy: 0.9295\n",
      "Epoch 33/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0405 - accuracy: 0.9883 - val_loss: 0.3328 - val_accuracy: 0.9389\n",
      "Epoch 34/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 6.7841e-04 - accuracy: 1.0000 - val_loss: 0.4397 - val_accuracy: 0.9295\n",
      "Epoch 35/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0207 - accuracy: 0.9958 - val_loss: 0.4035 - val_accuracy: 0.9347\n",
      "Epoch 36/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0039 - accuracy: 0.9990 - val_loss: 0.4232 - val_accuracy: 0.9274\n",
      "Epoch 37/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0071 - accuracy: 0.9970 - val_loss: 0.4524 - val_accuracy: 0.9379\n",
      "Epoch 38/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0127 - accuracy: 0.9962 - val_loss: 0.4557 - val_accuracy: 0.9316\n",
      "Epoch 39/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 5.2700e-04 - accuracy: 1.0000 - val_loss: 0.4592 - val_accuracy: 0.9358\n",
      "Epoch 40/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0053 - accuracy: 0.9990 - val_loss: 0.4466 - val_accuracy: 0.9284\n",
      "Epoch 41/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.4651 - val_accuracy: 0.9411\n",
      "Epoch 42/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 9.5511e-05 - accuracy: 1.0000 - val_loss: 0.5212 - val_accuracy: 0.9389\n",
      "Epoch 43/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 0.0421 - accuracy: 0.9905 - val_loss: 0.3996 - val_accuracy: 0.9347\n",
      "Epoch 44/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 5.2430e-04 - accuracy: 1.0000 - val_loss: 0.4369 - val_accuracy: 0.9432\n",
      "Epoch 45/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 8.4447e-05 - accuracy: 1.0000 - val_loss: 0.5082 - val_accuracy: 0.9411\n",
      "Epoch 46/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0101 - accuracy: 0.9989 - val_loss: 0.5193 - val_accuracy: 0.9147\n",
      "Epoch 47/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 0.0043 - accuracy: 0.9978 - val_loss: 0.5534 - val_accuracy: 0.9263\n",
      "Epoch 48/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 2.3153e-04 - accuracy: 1.0000 - val_loss: 0.5945 - val_accuracy: 0.9295\n",
      "Epoch 49/100\n",
      "30/30 [==============================] - 52s 2s/step - loss: 4.6704e-05 - accuracy: 1.0000 - val_loss: 0.6543 - val_accuracy: 0.9295\n",
      "Epoch 50/100\n",
      "30/30 [==============================] - 51s 2s/step - loss: 1.4655e-05 - accuracy: 1.0000 - val_loss: 0.6759 - val_accuracy: 0.9316\n",
      "Epoch 51/100\n",
      "25/30 [========================>.....] - ETA: 6s - loss: 0.0328 - accuracy: 0.9955"
     ]
    }
   ],
   "source": [
    "hist = model.fit(train_dataset, validation_data=test_dataset, batch_size=BATCH_SIZE, epochs=EPOCHS, steps_per_epoch=STEPS_PER_EPOCH, validation_steps=VALIDATION_STEPS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(hist.history['loss'])\n",
    "plt.plot(hist.history['val_loss'])\n",
    "plt.title(\"model accuracy\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.legend([\"loss\",\"Validation Loss\"])\n",
    "#plt.savefig(\"history_vgg16.png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(hist.history[\"accuracy\"])\n",
    "plt.plot(hist.history['val_accuracy'])\n",
    "plt.title(\"model accuracy\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"loss\",\"Validation Loss\"])\n",
    "#plt.savefig(\"history_vgg16.png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.models import load_model\n",
    "\n",
    "model.save('model.h5')#136M de params - 3 canales - \n",
    "#model = load_model('modelo136M3C.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Predict test data\n",
    "\n",
    "predictions = model.predict(test_dataset)\n",
    "print (predictions.shape)\n",
    "predictions = np.argmax(predictions, axis=1).astype(np.int)\n",
    "\n",
    "print (accuracy_score(TEST_LABELS,predictions ))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_names = {'COVID-19','NORMAL', 'Viral pneumonia'}\n",
    "print('Confussion matrix:')\n",
    "c = confusion_matrix(TEST_LABELS,predictions)\n",
    "print(c)\n",
    "print('Classification report')\n",
    "print(classification_report(TEST_LABELS,predictions,target_names=target_names))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(c,range(3),range(3))\n",
    "plt.figure(figsize=(6,4))\n",
    "sns.set(font_scale=1.4)\n",
    "sns.heatmap(df, annot=True, annot_kws={\"size\":16}, cmap=\"Blues\")\n",
    "plt.savefig(\"conf_mat_modelo136M3C.png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d (Conv2D)              (None, 1022, 1022, 8)     80        \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 1020, 1020, 8)     584       \n",
      "_________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D) (None, 340, 340, 8)       0         \n",
      "_________________________________________________________________\n",
      "conv2d_2 (Conv2D)            (None, 338, 338, 16)      1168      \n",
      "_________________________________________________________________\n",
      "conv2d_3 (Conv2D)            (None, 336, 336, 16)      2320      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2 (None, 168, 168, 16)      0         \n",
      "_________________________________________________________________\n",
      "conv2d_4 (Conv2D)            (None, 166, 166, 32)      4640      \n",
      "_________________________________________________________________\n",
      "conv2d_5 (Conv2D)            (None, 164, 164, 32)      9248      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2 (None, 82, 82, 32)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_6 (Conv2D)            (None, 80, 80, 64)        18496     \n",
      "_________________________________________________________________\n",
      "conv2d_7 (Conv2D)            (None, 78, 78, 64)        36928     \n",
      "_________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2 (None, 39, 39, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_8 (Conv2D)            (None, 37, 37, 128)       73856     \n",
      "_________________________________________________________________\n",
      "conv2d_9 (Conv2D)            (None, 35, 35, 128)       147584    \n",
      "_________________________________________________________________\n",
      "max_pooling2d_4 (MaxPooling2 (None, 17, 17, 128)       0         \n",
      "_________________________________________________________________\n",
      "flatten (Flatten)            (None, 36992)             0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 256)               9470208   \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 3)                 771       \n",
      "=================================================================\n",
      "Total params: 9,765,883\n",
      "Trainable params: 9,765,883\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1024, 1024)\n",
      "(1, 1024, 1024, 1)\n",
      "[[9.9999976e-01 7.2375179e-15 2.0856763e-07]]\n",
      "[0]\n",
      "NORMAL\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from keras.preprocessing import image\n",
    "img = image.load_img(\"../datos/test/COVID-19/COVID-19(135).png\",target_size=(1024,1024), color_mode=\"grayscale\")\n",
    "img = np.asarray(img)/255.0\n",
    "plt.imshow(img)\n",
    "print(img.shape)\n",
    "img = np.expand_dims(img, axis=0)\n",
    "img = np.expand_dims(img, axis=3)\n",
    "print(img.shape)\n",
    "from keras.models import load_model\n",
    "#saved_model = load_model(\"./modelo136M3C.h5\")\n",
    "#output = saved_model.predict(img)\n",
    "output = model.predict(img)\n",
    "print(output)\n",
    "prediction = np.argmax(output, axis=1).astype(np.int)\n",
    "print(prediction)\n",
    "print(num2label[prediction[0]])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}