Skip to content

Instantly share code, notes, and snippets.

@kuroipearls
Created November 19, 2018 12:43
Show Gist options
  • Save kuroipearls/74a0b78c58e4cd35ea43bdeb5cb3597c to your computer and use it in GitHub Desktop.
Save kuroipearls/74a0b78c58e4cd35ea43bdeb5cb3597c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# CNN-Resnet for RSNA Pneumonia"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This code is based on https://www.kaggle.com/jonnedtc/cnn-segmentation-connected-components , with some additional changes in the parameters. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. Import packages "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# import packages \n",
"import os\n",
"import csv\n",
"import random\n",
"import pydicom\n",
"import numpy as np\n",
"import pandas as pd\n",
"from skimage import io\n",
"from skimage import measure\n",
"from skimage.transform import resize\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from matplotlib import pyplot as plt\n",
"import matplotlib.patches as patches\n",
"import h5py"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. Make a dictionary of pneumonia"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# MAKE A DICTIONARY OF PNEUMONIA\n",
"# empty dictionary\n",
"pneumonia_locations = {}\n",
"# load table\n",
"with open(os.path.join('../input/stage_1_train_labels.csv'), mode='r') as infile:\n",
" # open reader\n",
" reader = csv.reader(infile)\n",
" # skip header\n",
" next(reader, None)\n",
" # loop through rows\n",
" for rows in reader:\n",
" # retrieve information\n",
" filename = rows[0]\n",
" location = rows[1:5]\n",
" pneumonia = rows[5]\n",
" # if row contains pneumonia add label to dictionary\n",
" # which contains a list of pneumonia locations per filename\n",
" if pneumonia == '1':\n",
" # convert string to float to int\n",
" location = [int(float(i)) for i in location]\n",
" # save pneumonia location in dictionary\n",
" if filename in pneumonia_locations:\n",
" pneumonia_locations[filename].append(location)\n",
" else:\n",
" pneumonia_locations[filename] = [location]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. Load training data and split it into training & validation set"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"n train samples 23124\n",
"n valid samples 2560\n"
]
}
],
"source": [
"# LOAD FILENAMES & SPLIT TRAINING - VALIDATION \n",
"# load and shuffle filenames\n",
"folder = '../input/stage_1_train_images'\n",
"filenames = os.listdir(folder)\n",
"random.shuffle(filenames)\n",
"# split into train and validation filenames - 9:1\n",
"# n_valid_samples = 2560\n",
"n_valid_samples = 2560\n",
"train_filenames = filenames[n_valid_samples:]\n",
"valid_filenames = filenames[:n_valid_samples]\n",
"print('n train samples', len(train_filenames))\n",
"print('n valid samples', len(valid_filenames))\n",
"n_train_samples = len(filenames) - n_valid_samples"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4. Create a data generator "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# DATA GENERATOR \n",
"# we need to create data generator because the data is way too big\n",
"class generator(keras.utils.Sequence):\n",
" \n",
" def __init__(self, folder, filenames, pneumonia_locations=None, batch_size=8, image_size=256, shuffle=True, augment=False, predict=False):\n",
" self.folder = folder\n",
" self.filenames = filenames\n",
" self.pneumonia_locations = pneumonia_locations\n",
" self.batch_size = batch_size\n",
" self.image_size = image_size\n",
" self.shuffle = shuffle\n",
" self.augment = augment\n",
" self.predict = predict\n",
" self.on_epoch_end()\n",
" \n",
" def __load__(self, filename):\n",
" # load dicom file as numpy array\n",
" img = pydicom.dcmread(os.path.join(self.folder, filename), force=True).pixel_array\n",
" # create empty mask\n",
" msk = np.zeros(img.shape)\n",
" # get filename without extension\n",
" filename = filename.split('.')[0]\n",
" # if image contains pneumonia\n",
" if filename in self.pneumonia_locations:\n",
" # loop through pneumonia\n",
" for location in self.pneumonia_locations[filename]:\n",
" # add 1's at the location of the pneumonia\n",
" x, y, w, h = location\n",
" msk[y:y+h, x:x+w] = 1\n",
" # resize both image and mask\n",
" img = resize(img, (self.image_size, self.image_size), mode='reflect')\n",
" msk = resize(msk, (self.image_size, self.image_size), mode='reflect') > 0.5\n",
" # if augment then horizontal flip half the time\n",
" if self.augment and random.random() > 0.5:\n",
" img = np.fliplr(img)\n",
" msk = np.fliplr(msk)\n",
" # add trailing channel dimension\n",
" img = np.expand_dims(img, -1)\n",
" msk = np.expand_dims(msk, -1)\n",
" return img, msk\n",
" \n",
" def __loadpredict__(self, filename):\n",
" # load dicom file as numpy array\n",
" img = pydicom.dcmread(os.path.join(self.folder, filename), force=True).pixel_array\n",
" # resize image\n",
" img = resize(img, (self.image_size, self.image_size), mode='reflect')\n",
" # add trailing channel dimension\n",
" img = np.expand_dims(img, -1)\n",
" return img\n",
" \n",
" def __getitem__(self, index):\n",
" # select batch\n",
" filenames = self.filenames[index*self.batch_size:(index+1)*self.batch_size]\n",
" # predict mode: return images and filenames\n",
" if self.predict:\n",
" # load files\n",
" imgs = [self.__loadpredict__(filename) for filename in filenames]\n",
" # create numpy batch\n",
" imgs = np.array(imgs)\n",
" return imgs, filenames\n",
" # train mode: return images and masks\n",
" else:\n",
" # load files\n",
" items = [self.__load__(filename) for filename in filenames]\n",
" # unzip images and masks\n",
" imgs, msks = zip(*items)\n",
" # create numpy batch\n",
" imgs = np.array(imgs)\n",
" msks = np.array(msks)\n",
" return imgs, msks\n",
" \n",
" def on_epoch_end(self):\n",
" if self.shuffle:\n",
" random.shuffle(self.filenames)\n",
" \n",
" def __len__(self):\n",
" if self.predict:\n",
" # return everything\n",
" return int(np.ceil(len(self.filenames) / self.batch_size))\n",
" else:\n",
" # return full batches only\n",
" return int(len(self.filenames) / self.batch_size)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5. Create the network "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# CREATE THE NETWORK \n",
"def create_downsample(channels, inputs):\n",
" x = keras.layers.BatchNormalization(momentum=0.9)(inputs)\n",
" x = keras.layers.LeakyReLU(0)(x)\n",
" x = keras.layers.Conv2D(channels, 1, padding='same', use_bias=False)(x)\n",
" x = keras.layers.MaxPool2D(2)(x)\n",
" return x\n",
"\n",
"def create_resblock(channels, inputs):\n",
" x = keras.layers.BatchNormalization(momentum=0.9)(inputs)\n",
" x = keras.layers.LeakyReLU(0)(x)\n",
" x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(x)\n",
" x = keras.layers.BatchNormalization(momentum=0.9)(x)\n",
" x = keras.layers.LeakyReLU(0)(x)\n",
" x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(x)\n",
" return keras.layers.add([x, inputs])\n",
"\n",
"def create_network(input_size, channels, n_blocks=2, depth=4):\n",
" # input\n",
" inputs = keras.Input(shape=(input_size, input_size, 1))\n",
" x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(inputs)\n",
" # residual blocks\n",
" for d in range(depth):\n",
" channels = channels * 2\n",
" x = create_downsample(channels, x)\n",
" for b in range(n_blocks):\n",
" x = create_resblock(channels, x)\n",
" # output\n",
" x = keras.layers.BatchNormalization(momentum=0.9)(x)\n",
" x = keras.layers.LeakyReLU(0)(x)\n",
" x = keras.layers.Conv2D(1, 1, activation='sigmoid')(x)\n",
" outputs = keras.layers.UpSampling2D(2**depth)(x)\n",
" model = keras.Model(inputs=inputs, outputs=outputs)\n",
" return model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6. Configure the model "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 256, 256, 1) 0 \n",
"__________________________________________________________________________________________________\n",
"conv2d (Conv2D) (None, 256, 256, 32) 288 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization (BatchNorma (None, 256, 256, 32) 128 conv2d[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu (LeakyReLU) (None, 256, 256, 32) 0 batch_normalization[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_1 (Conv2D) (None, 256, 256, 64) 2048 leaky_re_lu[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d (MaxPooling2D) (None, 128, 128, 64) 0 conv2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_1 (BatchNor (None, 128, 128, 64) 256 max_pooling2d[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_1 (LeakyReLU) (None, 128, 128, 64) 0 batch_normalization_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_2 (Conv2D) (None, 128, 128, 64) 36864 leaky_re_lu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_2 (BatchNor (None, 128, 128, 64) 256 conv2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_2 (LeakyReLU) (None, 128, 128, 64) 0 batch_normalization_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_3 (Conv2D) (None, 128, 128, 64) 36864 leaky_re_lu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"add (Add) (None, 128, 128, 64) 0 conv2d_3[0][0] \n",
" max_pooling2d[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_3 (BatchNor (None, 128, 128, 64) 256 add[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_3 (LeakyReLU) (None, 128, 128, 64) 0 batch_normalization_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_4 (Conv2D) (None, 128, 128, 64) 36864 leaky_re_lu_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_4 (BatchNor (None, 128, 128, 64) 256 conv2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_4 (LeakyReLU) (None, 128, 128, 64) 0 batch_normalization_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_5 (Conv2D) (None, 128, 128, 64) 36864 leaky_re_lu_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 128, 128, 64) 0 conv2d_5[0][0] \n",
" add[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_5 (BatchNor (None, 128, 128, 64) 256 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_5 (LeakyReLU) (None, 128, 128, 64) 0 batch_normalization_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_6 (Conv2D) (None, 128, 128, 128 8192 leaky_re_lu_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_1 (MaxPooling2D) (None, 64, 64, 128) 0 conv2d_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_6 (BatchNor (None, 64, 64, 128) 512 max_pooling2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_6 (LeakyReLU) (None, 64, 64, 128) 0 batch_normalization_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_7 (Conv2D) (None, 64, 64, 128) 147456 leaky_re_lu_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_7 (BatchNor (None, 64, 64, 128) 512 conv2d_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_7 (LeakyReLU) (None, 64, 64, 128) 0 batch_normalization_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_8 (Conv2D) (None, 64, 64, 128) 147456 leaky_re_lu_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 64, 64, 128) 0 conv2d_8[0][0] \n",
" max_pooling2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_8 (BatchNor (None, 64, 64, 128) 512 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_8 (LeakyReLU) (None, 64, 64, 128) 0 batch_normalization_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_9 (Conv2D) (None, 64, 64, 128) 147456 leaky_re_lu_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_9 (BatchNor (None, 64, 64, 128) 512 conv2d_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_9 (LeakyReLU) (None, 64, 64, 128) 0 batch_normalization_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_10 (Conv2D) (None, 64, 64, 128) 147456 leaky_re_lu_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 64, 64, 128) 0 conv2d_10[0][0] \n",
" add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_10 (BatchNo (None, 64, 64, 128) 512 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_10 (LeakyReLU) (None, 64, 64, 128) 0 batch_normalization_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_11 (Conv2D) (None, 64, 64, 256) 32768 leaky_re_lu_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_2 (MaxPooling2D) (None, 32, 32, 256) 0 conv2d_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_11 (BatchNo (None, 32, 32, 256) 1024 max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_11 (LeakyReLU) (None, 32, 32, 256) 0 batch_normalization_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_12 (Conv2D) (None, 32, 32, 256) 589824 leaky_re_lu_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_12 (BatchNo (None, 32, 32, 256) 1024 conv2d_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_12 (LeakyReLU) (None, 32, 32, 256) 0 batch_normalization_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_13 (Conv2D) (None, 32, 32, 256) 589824 leaky_re_lu_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 32, 32, 256) 0 conv2d_13[0][0] \n",
" max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_13 (BatchNo (None, 32, 32, 256) 1024 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_13 (LeakyReLU) (None, 32, 32, 256) 0 batch_normalization_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_14 (Conv2D) (None, 32, 32, 256) 589824 leaky_re_lu_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_14 (BatchNo (None, 32, 32, 256) 1024 conv2d_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_14 (LeakyReLU) (None, 32, 32, 256) 0 batch_normalization_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_15 (Conv2D) (None, 32, 32, 256) 589824 leaky_re_lu_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 32, 32, 256) 0 conv2d_15[0][0] \n",
" add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_15 (BatchNo (None, 32, 32, 256) 1024 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_15 (LeakyReLU) (None, 32, 32, 256) 0 batch_normalization_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_16 (Conv2D) (None, 32, 32, 512) 131072 leaky_re_lu_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_3 (MaxPooling2D) (None, 16, 16, 512) 0 conv2d_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_16 (BatchNo (None, 16, 16, 512) 2048 max_pooling2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_16 (LeakyReLU) (None, 16, 16, 512) 0 batch_normalization_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_17 (Conv2D) (None, 16, 16, 512) 2359296 leaky_re_lu_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_17 (BatchNo (None, 16, 16, 512) 2048 conv2d_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_17 (LeakyReLU) (None, 16, 16, 512) 0 batch_normalization_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_18 (Conv2D) (None, 16, 16, 512) 2359296 leaky_re_lu_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 16, 16, 512) 0 conv2d_18[0][0] \n",
" max_pooling2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_18 (BatchNo (None, 16, 16, 512) 2048 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_18 (LeakyReLU) (None, 16, 16, 512) 0 batch_normalization_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_19 (Conv2D) (None, 16, 16, 512) 2359296 leaky_re_lu_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_19 (BatchNo (None, 16, 16, 512) 2048 conv2d_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_19 (LeakyReLU) (None, 16, 16, 512) 0 batch_normalization_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_20 (Conv2D) (None, 16, 16, 512) 2359296 leaky_re_lu_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 16, 16, 512) 0 conv2d_20[0][0] \n",
" add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_20 (BatchNo (None, 16, 16, 512) 2048 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"leaky_re_lu_20 (LeakyReLU) (None, 16, 16, 512) 0 batch_normalization_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_21 (Conv2D) (None, 16, 16, 1) 513 leaky_re_lu_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"up_sampling2d (UpSampling2D) (None, 256, 256, 1) 0 conv2d_21[0][0] \n",
"==================================================================================================\n",
"Total params: 12,727,969\n",
"Trainable params: 12,718,305\n",
"Non-trainable params: 9,664\n",
"__________________________________________________________________________________________________\n",
"None\n"
]
}
],
"source": [
"# PREPARE TO TRAIN THE NETWORK \n",
"# define iou or jaccard loss function\n",
"def iou_loss(y_true, y_pred):\n",
" y_true = tf.reshape(y_true, [-1])\n",
" y_pred = tf.reshape(y_pred, [-1])\n",
" intersection = tf.reduce_sum(y_true * y_pred)\n",
" score = (intersection + 1.) / (tf.reduce_sum(y_true) + tf.reduce_sum(y_pred) - intersection + 1.)\n",
" return 1 - score\n",
"\n",
"# combine bce loss and iou loss\n",
"def iou_bce_loss(y_true, y_pred):\n",
" return 0.5 * keras.losses.binary_crossentropy(y_true, y_pred) + 0.5 * iou_loss(y_true, y_pred)\n",
"\n",
"# mean iou as a metric\n",
"def mean_iou(y_true, y_pred):\n",
" y_pred = tf.round(y_pred)\n",
" intersect = tf.reduce_sum(y_true * y_pred, axis=[1, 2, 3])\n",
" union = tf.reduce_sum(y_true, axis=[1, 2, 3]) + tf.reduce_sum(y_pred, axis=[1, 2, 3])\n",
" smooth = tf.ones(tf.shape(intersect))\n",
" return tf.reduce_mean((intersect + smooth) / (union - intersect + smooth))\n",
"\n",
"# create network and compiler\n",
"model = create_network(input_size=256, channels=32, n_blocks=2, depth=4)\n",
"model.compile(optimizer='adam',\n",
" loss=iou_bce_loss,\n",
" metrics=['accuracy', mean_iou])\n",
"# model.save('my_model.h5')\n",
"\n",
"# print the model summary\n",
"print(model.summary())\n",
"\n",
"# cosine learning rate annealing\n",
"def cosine_annealing(x):\n",
" lr = 0.0005\n",
" # lr = 0.001\n",
" epochs = 25\n",
" return lr*(np.cos(np.pi*x/epochs)+1.)/2\n",
"learning_rate = tf.keras.callbacks.LearningRateScheduler(cosine_annealing)\n",
"\n",
"# create train and validation generators\n",
"folder = '../input/stage_1_train_images'\n",
"train_gen = generator(folder, train_filenames, pneumonia_locations, batch_size=8, image_size=256, shuffle=True, augment=True, predict=False)\n",
"valid_gen = generator(folder, valid_filenames, pneumonia_locations, batch_size=8, image_size=256, shuffle=False, predict=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7. Train the network "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4902 - acc: 0.9629 - mean_iou: 0.5935"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 959s 332ms/step - loss: 0.4902 - acc: 0.9629 - mean_iou: 0.5936 - val_loss: 0.5112 - val_acc: 0.9330 - val_mean_iou: 0.4298\n",
"Epoch 2/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4660 - acc: 0.9648 - mean_iou: 0.6340"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 954s 330ms/step - loss: 0.4659 - acc: 0.9648 - mean_iou: 0.6339 - val_loss: 0.4690 - val_acc: 0.9728 - val_mean_iou: 0.7321\n",
"Epoch 3/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4568 - acc: 0.9665 - mean_iou: 0.6504"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 953s 330ms/step - loss: 0.4568 - acc: 0.9665 - mean_iou: 0.6505 - val_loss: 0.4929 - val_acc: 0.9375 - val_mean_iou: 0.4949\n",
"Epoch 4/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4497 - acc: 0.9673 - mean_iou: 0.6589"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 951s 329ms/step - loss: 0.4497 - acc: 0.9673 - mean_iou: 0.6589 - val_loss: 0.4709 - val_acc: 0.9475 - val_mean_iou: 0.5639\n",
"Epoch 5/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4468 - acc: 0.9677 - mean_iou: 0.6563"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 953s 330ms/step - loss: 0.4468 - acc: 0.9677 - mean_iou: 0.6563 - val_loss: 0.4469 - val_acc: 0.9671 - val_mean_iou: 0.6851\n",
"Epoch 6/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4410 - acc: 0.9686 - mean_iou: 0.6657"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 951s 329ms/step - loss: 0.4410 - acc: 0.9686 - mean_iou: 0.6658 - val_loss: 0.4334 - val_acc: 0.9708 - val_mean_iou: 0.6991\n",
"Epoch 7/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4383 - acc: 0.9685 - mean_iou: 0.6634"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 958s 332ms/step - loss: 0.4383 - acc: 0.9685 - mean_iou: 0.6634 - val_loss: 0.4368 - val_acc: 0.9678 - val_mean_iou: 0.6977\n",
"Epoch 8/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4343 - acc: 0.9692 - mean_iou: 0.6706"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4344 - acc: 0.9692 - mean_iou: 0.6706 - val_loss: 0.4751 - val_acc: 0.9573 - val_mean_iou: 0.6125\n",
"Epoch 9/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4322 - acc: 0.9696 - mean_iou: 0.6759"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4322 - acc: 0.9696 - mean_iou: 0.6760 - val_loss: 0.4353 - val_acc: 0.9731 - val_mean_iou: 0.7324\n",
"Epoch 10/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4267 - acc: 0.9700 - mean_iou: 0.6793"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 330ms/step - loss: 0.4266 - acc: 0.9700 - mean_iou: 0.6793 - val_loss: 0.4290 - val_acc: 0.9647 - val_mean_iou: 0.6738\n",
"Epoch 11/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4276 - acc: 0.9703 - mean_iou: 0.6828"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 951s 329ms/step - loss: 0.4276 - acc: 0.9703 - mean_iou: 0.6828 - val_loss: 0.4219 - val_acc: 0.9690 - val_mean_iou: 0.6945\n",
"Epoch 12/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4239 - acc: 0.9703 - mean_iou: 0.6833"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 956s 331ms/step - loss: 0.4239 - acc: 0.9703 - mean_iou: 0.6834 - val_loss: 0.4213 - val_acc: 0.9665 - val_mean_iou: 0.6743\n",
"Epoch 13/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4186 - acc: 0.9711 - mean_iou: 0.6913"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4186 - acc: 0.9711 - mean_iou: 0.6913 - val_loss: 0.4261 - val_acc: 0.9644 - val_mean_iou: 0.6902\n",
"Epoch 14/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4195 - acc: 0.9710 - mean_iou: 0.6941"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"2890/2890 [==============================] - 952s 330ms/step - loss: 0.4195 - acc: 0.9710 - mean_iou: 0.6940 - val_loss: 0.4195 - val_acc: 0.9698 - val_mean_iou: 0.7140\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 15/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4138 - acc: 0.9715 - mean_iou: 0.6995"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4138 - acc: 0.9715 - mean_iou: 0.6995 - val_loss: 0.4128 - val_acc: 0.9703 - val_mean_iou: 0.7178\n",
"Epoch 16/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4139 - acc: 0.9719 - mean_iou: 0.7000"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 951s 329ms/step - loss: 0.4140 - acc: 0.9719 - mean_iou: 0.6999 - val_loss: 0.4176 - val_acc: 0.9717 - val_mean_iou: 0.7122\n",
"Epoch 17/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4103 - acc: 0.9722 - mean_iou: 0.7064"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 954s 330ms/step - loss: 0.4103 - acc: 0.9722 - mean_iou: 0.7064 - val_loss: 0.4117 - val_acc: 0.9702 - val_mean_iou: 0.7151\n",
"Epoch 18/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4094 - acc: 0.9722 - mean_iou: 0.7063"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 951s 329ms/step - loss: 0.4094 - acc: 0.9722 - mean_iou: 0.7063 - val_loss: 0.4121 - val_acc: 0.9695 - val_mean_iou: 0.7188\n",
"Epoch 19/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4085 - acc: 0.9727 - mean_iou: 0.7093"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4085 - acc: 0.9727 - mean_iou: 0.7093 - val_loss: 0.4127 - val_acc: 0.9697 - val_mean_iou: 0.7170\n",
"Epoch 20/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4038 - acc: 0.9730 - mean_iou: 0.7138"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 963s 333ms/step - loss: 0.4038 - acc: 0.9730 - mean_iou: 0.7138 - val_loss: 0.4125 - val_acc: 0.9728 - val_mean_iou: 0.7370\n",
"Epoch 21/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4051 - acc: 0.9731 - mean_iou: 0.7139"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 952s 329ms/step - loss: 0.4051 - acc: 0.9731 - mean_iou: 0.7139 - val_loss: 0.4111 - val_acc: 0.9719 - val_mean_iou: 0.7236\n",
"Epoch 22/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4032 - acc: 0.9735 - mean_iou: 0.7172"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 955s 330ms/step - loss: 0.4032 - acc: 0.9735 - mean_iou: 0.7172 - val_loss: 0.4115 - val_acc: 0.9702 - val_mean_iou: 0.7197\n",
"Epoch 23/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4008 - acc: 0.9735 - mean_iou: 0.7195"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 954s 330ms/step - loss: 0.4008 - acc: 0.9735 - mean_iou: 0.7195 - val_loss: 0.4111 - val_acc: 0.9704 - val_mean_iou: 0.7216\n",
"Epoch 24/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.4009 - acc: 0.9738 - mean_iou: 0.7188"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2890/2890 [==============================] - 953s 330ms/step - loss: 0.4008 - acc: 0.9738 - mean_iou: 0.7188 - val_loss: 0.4105 - val_acc: 0.9710 - val_mean_iou: 0.7219\n",
"Epoch 25/25\n",
"2889/2890 [============================>.] - ETA: 0s - loss: 0.3995 - acc: 0.9738 - mean_iou: 0.7191"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n",
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"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\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"2890/2890 [==============================] - 955s 330ms/step - loss: 0.3995 - acc: 0.9738 - mean_iou: 0.7191 - val_loss: 0.4107 - val_acc: 0.9705 - val_mean_iou: 0.7178\n"
]
}
],
"source": [
"# TRAIN THE NETWORK \n",
"# if you run this line, it would start the training progress\n",
"history = model.fit_generator(train_gen, validation_data=valid_gen, callbacks=[learning_rate], epochs=25, workers=4, use_multiprocessing=True)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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p3drxs2DO9e2wir+fCNxrcgjAUQkBbhQVfeU7SMiS3GU5OmqusVtzxWRKTguIa9VSlILDowIRo0axbRp0zj77LNL26ZNm8azzz4b0PhWrVoxffr0qhKvUhQVFREXZ7e7gCjMg9h6EBPrv69R56iJ68RLL70UVP+qxizORtSTGB/L69edwLf3n87vRvTitG7Nj1Kavcls1YDnLz6W/943mFsHd2bhT7sZ+ddvGD9lEZt25VWj5BVS6hspIgk4vpFHWKhEJM2Nyge4H3jZbc8Qkfru58bAKcAqEYkTkTS3PR4YCiyttKRmcY4ILrroIj766CMOHXJc4Ddu3MjWrVs59dRT2b9/P6effjp9+/alV69evP/++0eN37hxIz17OrU48vPzueyyy+jevTsjRowgPz+/3N987LHHOP744+nZsyc33HADHq+gtWvXcsYZZ3DsscfSt29f1q1bB8AzzzxDr169OPbYY7nvPieRjLeVKjs7m/bt2wNOCe9hw4Zx2mmncfrpp1d4Dq+99hq9e/fm2GOP5aqrriI3N5cOHTpQWOiktNy3b98R36MaW69GBdTEdcJ7jU+dOpVevXrRs2dP7r333tI+Hos2wPTp0xkzZky4Tvko7BHcMHzQLDWRu846hhsHduLvX61n0lfr+HT5dq49uQM3D+5Eg8T4GpMtQN/IQcBTIqLAV8At7vDuwO/ddgGeV9UfRSQZmOkqzbHA58A/Ki2s5XEOno/vg19+DO+cLXrBOeVWcwagSZMm9O/fn48//pjhw4czbdo0LrnkEkSExMRE3n33XRo0aEB2djYnnngiw4YNQ0TKnWvixIkkJSWxYsUKlixZQt++fcvtN378eB555BEArrrqKj788EPOP/98rrjiCu677z5GjBhBQUEBJSUlfPzxx7z//vvMmzePpKQkdu3y7867aNEilixZQpMmTSgqKir3HJYvX84TTzzBN998Q1paGrt27SI1NZVBgwbx0UcfccEFFzBt2jRGjhxJfHzNrflqw9Zr5FBHrhMetm7dyr333svChQtp3LgxZ511Fu+99x4XXHBBpU45WAKyOPvLF+vV70IRURHJ8mq73x23SkTO9jXWMGoryfXiuOvMrsy+exDn927F375cx6Dn5vD63J8oKi6pMbn8+Uaq6nRV7eL2GauqB932z1S1t6oe675PctsPqGo/t62Hqt6u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\n",
"text/plain": [
"<Figure size 864x288 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# display the loss, accuracy, and mean_iou over epoch\n",
"plt.figure(figsize=(12,4))\n",
"plt.subplot(131)\n",
"plt.plot(history.epoch, history.history[\"loss\"], label=\"Train loss\")\n",
"plt.plot(history.epoch, history.history[\"val_loss\"], label=\"Valid loss\")\n",
"plt.legend()\n",
"plt.subplot(132)\n",
"plt.plot(history.epoch, history.history[\"acc\"], label=\"Train accuracy\")\n",
"plt.plot(history.epoch, history.history[\"val_acc\"], label=\"Valid accuracy\")\n",
"plt.legend()\n",
"plt.subplot(133)\n",
"plt.plot(history.epoch, history.history[\"mean_iou\"], label=\"Train iou\")\n",
"plt.plot(history.epoch, history.history[\"val_mean_iou\"], label=\"Valid iou\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8. Predict the testing set "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"n test samples: 3000\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kuroipearls/.local/lib/python3.5/site-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images.\n",
" warn(\"Anti-aliasing will be enabled by default in skimage 0.15 to \"\n"
]
}
],
"source": [
"# load and shuffle filenames\n",
"folder = '../input/stage_2_test_images'\n",
"test_filenames = os.listdir(folder)\n",
"print('n test samples:', len(test_filenames))\n",
"\n",
"# create test generator with predict flag set to True\n",
"test_gen = generator(folder, test_filenames, None, batch_size=8, image_size=256, shuffle=False, predict=True)\n",
"\n",
"# create submission dictionary\n",
"submission_dict = {}\n",
"# loop through testset\n",
"for imgs, filenames in test_gen:\n",
" # predict batch of images\n",
" preds = model.predict(imgs)\n",
" # loop through batch\n",
" for pred, filename in zip(preds, filenames):\n",
" # resize predicted mask\n",
" pred = resize(pred, (1024, 1024), mode='reflect')\n",
" # threshold predicted mask\n",
" comp = pred[:, :, 0] > 0.5\n",
" # apply connected components\n",
" comp = measure.label(comp)\n",
" # apply bounding boxes\n",
" predictionString = ''\n",
" for region in measure.regionprops(comp):\n",
" # retrieve x, y, height and width\n",
" y, x, y2, x2 = region.bbox\n",
" height = y2 - y\n",
" width = x2 - x\n",
" # proxy for confidence score\n",
" conf = np.mean(pred[y:y+height, x:x+width])\n",
" # add to predictionString\n",
" predictionString += str(conf) + ' ' + str(x) + ' ' + str(y) + ' ' + str(width) + ' ' + str(height) + ' '\n",
" # add filename and predictionString to dictionary\n",
" filename = filename.split('.')[0]\n",
" submission_dict[filename] = predictionString\n",
" # stop if we've got them all\n",
" if len(submission_dict) >= len(test_filenames):\n",
" break\n",
"\n",
"# save dictionary as csv file\n",
"sub = pd.DataFrame.from_dict(submission_dict,orient='index')\n",
"sub.index.names = ['patientId']\n",
"sub.columns = ['PredictionString']\n",
"sub.to_csv('2ndSubmissionRN2.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment