[467f44]: / 2TrainUnet.ipynb

Download this file

467 lines (466 with data), 99.8 kB

{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Train U-Net\n",
    "\n",
    "## Summary\n",
    "\n",
    "* split images and masks to train and test sets of 80:20 ratio\n",
    "* load unet and train\n",
    "* calculate sensitivty for predicted masks that have at least 5 pixel overlap with the ground truth mask"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "#EDIT HERE##############################\n",
    "datafolder='processeddata'\n",
    "weightsfolder='modelweights'\n",
    "noduleimages=np.load(datafolder+\"/noduleimages.npy\")\n",
    "nodulemasks=np.load(datafolder+\"/nodulemasks.npy\")\n",
    "\n",
    "########################################\n",
    "\n",
    "\n",
    "from glob import glob\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "from keras.models import Sequential,load_model,Model\n",
    "from keras.layers import Dense, Dropout, Activation, Flatten\n",
    "from keras.layers import Conv2D, MaxPooling2D, SpatialDropout2D\n",
    "from keras.layers import Input, merge, UpSampling2D, BatchNormalization\n",
    "from keras.optimizers import Adam\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.callbacks import EarlyStopping, ModelCheckpoint\n",
    "from keras import backend as K\n",
    "import pandas as pd\n",
    "from keras.callbacks import ModelCheckpoint\n",
    "import h5py\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "\n",
    "K.set_image_dim_ordering('th') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x525d198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nodulesize=[np.sum(mask) for mask in nodulemasks]\n",
    "plt.hist([nod for nod in nodulesize if nod<300],bins=50)\n",
    "plt.xlabel(\"Area\")\n",
    "plt.ylabel(\"frequency\")\n",
    "plt.show()\n",
    "#remove samples with nodulesize<25, which is ~radius=2.8\n",
    "#filteredindicies=[i for i in range(len(nodulesize)) if nodulesize[i]>25]\n",
    "#noduleimages=noduleimages[filteredindicies]\n",
    "#nodulemasks=nodulemasks[filteredindicies]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "noduleimages=noduleimages.reshape(noduleimages.shape[0],1,512,512)\n",
    "nodulemasks=nodulemasks.reshape(nodulemasks.shape[0],1,512,512)\n",
    "imagestrain, imagestest, maskstrain, maskstest = train_test_split(noduleimages,nodulemasks,test_size=.20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Code sourced from https://www.kaggle.com/c/data-science-bowl-2017#tutorial\n",
    "smooth = 1.0\n",
    "width = 32\n",
    "\n",
    "def dice_coef(y_true, y_pred):\n",
    "    y_true_f = K.flatten(y_true)\n",
    "    y_pred_f = K.flatten(y_pred)\n",
    "    intersection = K.sum(y_true_f * y_pred_f)\n",
    "    return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)\n",
    "def dice_coef_loss(y_true, y_pred):\n",
    "    return -dice_coef(y_true, y_pred)\n",
    "\n",
    "def unet_model():\n",
    "    inputs = Input((1,512, 512))\n",
    "    conv1 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(inputs)\n",
    "    conv1 = BatchNormalization(axis = 1)(conv1)\n",
    "    conv1 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv1)\n",
    "    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)\n",
    "\n",
    "    conv2 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(pool1)\n",
    "    conv2 = BatchNormalization(axis = 1)(conv2)\n",
    "    conv2 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv2)\n",
    "    pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)\n",
    "\n",
    "    conv3 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(pool2)\n",
    "    conv3 = BatchNormalization(axis = 1)(conv3)\n",
    "    conv3 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv3)\n",
    "    pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)\n",
    "\n",
    "    conv4 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(pool3)\n",
    "    conv4 = BatchNormalization(axis = 1)(conv4)\n",
    "    conv4 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv4)\n",
    "    pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)\n",
    "\n",
    "    conv5 = Conv2D(width*16, 3, 3, activation='relu', border_mode='same')(pool4)\n",
    "    conv5 = BatchNormalization(axis = 1)(conv5)\n",
    "    conv5 = Conv2D(width*16, 3, 3, activation='relu', border_mode='same')(conv5)\n",
    "\n",
    "    up6 = merge([UpSampling2D(size=(2, 2))(conv5), conv4], mode='concat', concat_axis=1)\n",
    "    conv6 = SpatialDropout2D(0.35)(up6)\n",
    "    conv6 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv6)\n",
    "    conv6 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv6)\n",
    "\n",
    "    up7 = merge([UpSampling2D(size=(2, 2))(conv6), conv3], mode='concat', concat_axis=1)\n",
    "    conv7 = SpatialDropout2D(0.35)(up7)\n",
    "    conv7 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv7)\n",
    "    conv7 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv7)\n",
    "\n",
    "    up8 = merge([UpSampling2D(size=(2, 2))(conv7), conv2], mode='concat', concat_axis=1)\n",
    "    conv8 = SpatialDropout2D(0.35)(up8)\n",
    "    conv8 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv8)\n",
    "    conv8 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv8)\n",
    "\n",
    "    up9 = merge([UpSampling2D(size=(2, 2))(conv8), conv1], mode='concat', concat_axis=1)\n",
    "    conv9 = SpatialDropout2D(0.35)(up9)\n",
    "    conv9 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv9)\n",
    "    conv9 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv9)\n",
    "    conv10 = Conv2D(1, 1, 1, activation='sigmoid')(conv9)\n",
    "\n",
    "    model = Model(input=inputs, output=conv10)\n",
    "    model.compile(optimizer=Adam(lr=1e-5), loss=dice_coef_loss, metrics=[dice_coef])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:15: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "  from ipykernel import kernelapp as app\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:17: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:20: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:22: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:25: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:27: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:30: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:32: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:35: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(512, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:37: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(512, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:39: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\legacy\\layers.py:458: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
      "  name=name)\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:41: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:42: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:44: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:46: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:47: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:49: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:51: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:52: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:54: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:56: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:57: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation=\"relu\", padding=\"same\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:58: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(1, (1, 1), activation=\"sigmoid\")`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:60: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"co...)`\n",
      "c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:8: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`.\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 4018 samples, validate on 1005 samples\n",
      "Epoch 1/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.0830 - dice_coef: 0.0830Epoch 00000: loss improved from inf to -0.08300, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 598s - loss: -0.0830 - dice_coef: 0.0830 - val_loss: -0.2151 - val_dice_coef: 0.2151\n",
      "Epoch 2/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.2625 - dice_coef: 0.2625Epoch 00001: loss improved from -0.08300 to -0.26267, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 582s - loss: -0.2627 - dice_coef: 0.2627 - val_loss: -0.3493 - val_dice_coef: 0.3493\n",
      "Epoch 3/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.3636 - dice_coef: 0.3636Epoch 00002: loss improved from -0.26267 to -0.36339, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 581s - loss: -0.3634 - dice_coef: 0.3634 - val_loss: -0.4280 - val_dice_coef: 0.4280\n",
      "Epoch 4/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.4369 - dice_coef: 0.4369Epoch 00003: loss improved from -0.36339 to -0.43692, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 582s - loss: -0.4369 - dice_coef: 0.4369 - val_loss: -0.4941 - val_dice_coef: 0.4941\n",
      "Epoch 5/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.4770 - dice_coef: 0.4770Epoch 00004: loss improved from -0.43692 to -0.47681, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 577s - loss: -0.4768 - dice_coef: 0.4768 - val_loss: -0.4864 - val_dice_coef: 0.4864\n",
      "Epoch 6/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.5088 - dice_coef: 0.5088Epoch 00005: loss improved from -0.47681 to -0.50888, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 576s - loss: -0.5089 - dice_coef: 0.5089 - val_loss: -0.5356 - val_dice_coef: 0.5356\n",
      "Epoch 7/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.5344 - dice_coef: 0.5344Epoch 00006: loss improved from -0.50888 to -0.53452, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 569s - loss: -0.5345 - dice_coef: 0.5345 - val_loss: -0.5137 - val_dice_coef: 0.5137\n",
      "Epoch 8/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.5565 - dice_coef: 0.5565Epoch 00007: loss improved from -0.53452 to -0.55627, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 569s - loss: -0.5563 - dice_coef: 0.5563 - val_loss: -0.5298 - val_dice_coef: 0.5298\n",
      "Epoch 9/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.5755 - dice_coef: 0.5755Epoch 00008: loss improved from -0.55627 to -0.57560, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 571s - loss: -0.5756 - dice_coef: 0.5756 - val_loss: -0.5490 - val_dice_coef: 0.5490\n",
      "Epoch 10/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6032 - dice_coef: 0.6032Epoch 00009: loss improved from -0.57560 to -0.60339, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 572s - loss: -0.6034 - dice_coef: 0.6034 - val_loss: -0.5534 - val_dice_coef: 0.5534\n",
      "Epoch 11/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.5986 - dice_coef: 0.5986Epoch 00010: loss did not improve\n",
      "4018/4018 [==============================] - 570s - loss: -0.5987 - dice_coef: 0.5987 - val_loss: -0.5761 - val_dice_coef: 0.5761\n",
      "Epoch 12/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6252 - dice_coef: 0.6252Epoch 00011: loss improved from -0.60339 to -0.62536, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6254 - dice_coef: 0.6254 - val_loss: -0.5801 - val_dice_coef: 0.5801\n",
      "Epoch 13/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6356 - dice_coef: 0.6356Epoch 00012: loss improved from -0.62536 to -0.63573, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6357 - dice_coef: 0.6357 - val_loss: -0.5994 - val_dice_coef: 0.5994\n",
      "Epoch 14/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6435 - dice_coef: 0.6435Epoch 00013: loss improved from -0.63573 to -0.64358, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6436 - dice_coef: 0.6436 - val_loss: -0.5874 - val_dice_coef: 0.5874\n",
      "Epoch 15/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6661 - dice_coef: 0.6661Epoch 00014: loss improved from -0.64358 to -0.66612, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6661 - dice_coef: 0.6661 - val_loss: -0.5948 - val_dice_coef: 0.5948\n",
      "Epoch 16/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6692 - dice_coef: 0.6692Epoch 00015: loss improved from -0.66612 to -0.66922, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6692 - dice_coef: 0.6692 - val_loss: -0.5647 - val_dice_coef: 0.5647\n",
      "Epoch 17/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6754 - dice_coef: 0.6754Epoch 00016: loss improved from -0.66922 to -0.67552, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6755 - dice_coef: 0.6755 - val_loss: -0.5754 - val_dice_coef: 0.5754\n",
      "Epoch 18/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6745 - dice_coef: 0.6745Epoch 00017: loss did not improve\n",
      "4018/4018 [==============================] - 566s - loss: -0.6745 - dice_coef: 0.6745 - val_loss: -0.5871 - val_dice_coef: 0.5871\n",
      "Epoch 19/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6880 - dice_coef: 0.6880Epoch 00018: loss improved from -0.67552 to -0.68816, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6882 - dice_coef: 0.6882 - val_loss: -0.6117 - val_dice_coef: 0.6117\n",
      "Epoch 20/20\n",
      "4016/4018 [============================>.] - ETA: 0s - loss: -0.6902 - dice_coef: 0.6902Epoch 00019: loss improved from -0.68816 to -0.69033, saving model to unet-weights-improvement2.hdf5\n",
      "4018/4018 [==============================] - 566s - loss: -0.6903 - dice_coef: 0.6903 - val_loss: -0.6152 - val_dice_coef: 0.6152\n"
     ]
    }
   ],
   "source": [
    "# Train model on dataset with only nodules\n",
    "model=unet_model()\n",
    "filepath=weightsfolder+\"/unet-weights-improvement.hdf5\"\n",
    "#model.load_weights(filepath)\n",
    "\n",
    "checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True)\n",
    "history=model.fit(imagestrain, maskstrain, batch_size=4, nb_epoch=20, verbose=1, shuffle=True,\n",
    "              callbacks=[checkpoint],validation_data=(imagestest,maskstest))\n",
    "#history=model.fit_generator(generator(batch_size=batchsize), steps_per_epoch=len(nonzeroindex)/batchsize-batchsize*11, nb_epoch=1, callbacks=callbacks_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nw/8D9e5QsuRMNlUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x36b278710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.history['dice_coef'], color='b')\n",
    "plt.plot(history.history['val_dice_coef'], color='g')\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.ylabel(\"Dice Coefficient\")\n",
    "plt.legend([\"Train\", \"Validation\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1004/1005 [============================>.] - ETA: 0s"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[-0.67809058924145371, 0.67809058924145371]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(imagestest,maskstest, batch_size=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6069651741293532"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_test=imagestest.shape[0]\n",
    "imgs_mask_test = np.ndarray([num_test,1,512,512],dtype=np.float32)\n",
    "for i in range(num_test):\n",
    "    imgs_mask_test[i] = model.predict([imagestest[i:i+1]], verbose=0)[0]\n",
    "\n",
    "sumoverlap=[]\n",
    "for i in range(num_test):\n",
    "    sumoverlap.append(np.sum(maskstest[i,0]*imgs_mask_test[i,0]))\n",
    "\n",
    "#nodulemasks\n",
    "len([ov for ov in sumoverlap if ov>1])/len(sumoverlap)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12df40ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ground Truth\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x132f6b128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Image\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nigAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x129ebd0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Visualize prediction mask\n",
    "\n",
    "index=47\n",
    "print(\"Predicted\")\n",
    "plt.imshow(imgs_mask_test[index,0], cmap=\"gray\")\n",
    "plt.show()\n",
    "print(\"Ground Truth\")\n",
    "plt.imshow(maskstest[index,0],cmap=\"gray\")\n",
    "plt.show()\n",
    "print(\"Image\")\n",
    "plt.imshow(imagestest[index,0], cmap=\"gray\")\n",
    "plt.show()"
   ]
  }
 ],
 "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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}