In [1]:
%matplotlib inline

In [2]:
import os

In [6]:
# os.system('7z x ../data/cancer/train.7z -o../data/cancer/extracted')
# os.system('7z x ../data/cancer/test.7z -o../data/cancer/extracted')
# os.system('7z x ../data/cancer/additional_Type_1_v2.7z -o../data/cancer/extracted')


Out[6]:
0

In [16]:
path = '../data/cancer/extracted/'

In [18]:
# create sample set
import random
import shutil

# method to create image data subset
# move = true - to create validation subset (move from train)
# move = false - to create sample subset
def createSubSet(path, name, size, move):
    
    subRoot = os.path.join(path, name)
    os.makedirs(subRoot)
    
    classDirs = next(os.walk(os.path.join(path, 'train')))[1]
    for classDir in classDirs:
        origin = os.path.join(path, 'train', classDir)
        
        if (os.path.isdir(origin)):
            subDir = os.path.join(subRoot, classDir)
            os.makedirs(subDir)
            
            # get list of files
            files = next(os.walk(origin))[2]
            random.shuffle(files)
            files = files[0:int(len(files)*size)]
            
            for file in files:
                if move:
                    shutil.move(os.path.join(origin, file), os.path.join(subDir, file))
                else:
                    shutil.copy(os.path.join(origin, file), os.path.join(subDir, file))
                    
samplePath = os.path.join(path, 'sample')
os.makedirs(samplePath)
createSubSet(path, os.path.join('sample', 'train'), 0.03, False)
createSubSet(samplePath, 'valid', 0.2, True)

In [2]:
# path = samplePath + os.sep
path = '../data/cancer/extracted/sample/'
path


Out[2]:
'../data/cancer/extracted/sample/'

In [3]:
# add path to our includes
import sys
sys.path.append('../../nbs')
import utils
from utils import plots

In [1]:
# compatibility fix from here - http://forums.fast.ai/t/keras-2-released/1956/22
from keras import backend
backend.set_image_dim_ordering('th')


Using Theano backend.
WARNING (theano.sandbox.cuda): The cuda backend is deprecated and will be removed in the next release (v0.10).  Please switch to the gpuarray backend. You can get more information about how to switch at this URL:
 https://github.com/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29

Using gpu device 0: Tesla K80 (CNMeM is disabled, cuDNN 5103)

In [4]:
import importlib
import vgg16
from vgg16 import Vgg16

In [20]:
batches = vgg.get_batches(path+'train', batch_size=10)


Found 36 images belonging to 3 classes.

In [21]:
imgs,labels = next(batches)

In [ ]:
plots(imgs, titles=labels)

In [5]:
vgg = Vgg16()

In [6]:
batch_size=1
batches = vgg.get_batches(path+'train', batch_size=batch_size)
val_batches = vgg.get_batches(path+'valid', batch_size=1)


Found 36 images belonging to 3 classes.
Found 7 images belonging to 3 classes.

In [7]:
vgg.finetune(batches)

In [8]:
vgg.fit(batches, val_batches, nb_epoch=1)


../../nbs/vgg16.py:116: UserWarning: Update your `fit_generator` call to the Keras 2 API: `fit_generator(<keras.pre..., validation_data=<keras.pre..., steps_per_epoch=36, epochs=1, validation_steps=7)`
  validation_data=val_batches, nb_val_samples=val_batches.samples)
Epoch 1/1
 8/36 [=====>........................] - ETA: 5s - loss: 2.6012 - acc: 0.6250 
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 524288 bytes but only got 0. Skipping tag 3
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 393216 bytes but only got 0. Skipping tag 3
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 33554432 bytes but only got 0. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 25165824 bytes but only got 0. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 131072 bytes but only got 0. Skipping tag 3
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 217972736 bytes but only got 0. Skipping tag 5
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 218497024 bytes but only got 0. Skipping tag 5
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 832897024 bytes but only got 0. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 219021312 bytes but only got 16051. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 3640590336 bytes but only got 0. Skipping tag 0
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 99877888 bytes but only got 0. Skipping tag 1029
  "Skipping tag %s" % (size, len(data), tag))
35/36 [============================>.] - ETA: 0s - loss: 2.7243 - acc: 0.4571
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 204865536 bytes but only got 0. Skipping tag 5
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 205389824 bytes but only got 0. Skipping tag 5
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 491192320 bytes but only got 0. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 205914112 bytes but only got 10637. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 713752576 bytes but only got 0. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 219021312 bytes but only got 14233. Skipping tag 4
  "Skipping tag %s" % (size, len(data), tag))
/home/ubuntu/anaconda2/envs/py36/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data.  Expecting to read 8980672836 bytes but only got 0. Skipping tag 35485
  "Skipping tag %s" % (size, len(data), tag))
36/36 [==============================] - 9s - loss: 2.7641 - acc: 0.4444 - val_loss: 2.2551 - val_acc: 0.1429

In [ ]: