In [2]:
from __future__ import print_function
import matplotlib.pyplot as plt
import numpy as np
import os
import sys
import zipfile
from IPython.display import display, Image
from scipy import ndimage
from sklearn.linear_model import LogisticRegression
from six.moves.urllib.request import urlretrieve
from six.moves import cPickle as pickle

from skimage import color, io
from scipy.misc import imresize

np.random.seed(133)

# Config the matplotlib backend as plotting inline in IPython
%matplotlib inline

IMAGE_SIZE = 224

First, load the data from the Kaggle


In [2]:
last_percent_reported = None

def download_progress_hook(count, blockSize, totalSize):
  """A hook to report the progress of a download. This is mostly intended for users with
  slow internet connections. Reports every 1% change in download progress.
  """
  global last_percent_reported
  percent = int(count * blockSize * 100 / totalSize)

  if last_percent_reported != percent:
    if percent % 5 == 0:
      sys.stdout.write("%s%%" % percent)
      sys.stdout.flush()
    else:
      sys.stdout.write(".")
      sys.stdout.flush()
      
    last_percent_reported = percent
        
def maybe_download(filename, url, expected_bytes, force=False):
  """Download a file if not present, and make sure it's the right size."""
  if force or not os.path.exists(filename):
    print('Attempting to download:', filename) 
    filename, _ = urlretrieve(url , filename, reporthook=download_progress_hook)
    print('\nDownload Complete!')
  statinfo = os.stat(filename)
  if statinfo.st_size:# == expected_bytes:
    print('Found and verified', filename)
  else:
    raise Exception(
      'Failed to verify ' + filename + '. Can you get to it with a browser?')
  return filename

test_filename = maybe_download('test.zip', 'https://kaggle2.blob.core.windows.net/competitions-data/kaggle/5441/test.zip?sv=2015-12-11&sr=b&sig=YtsCaH8gL7dObP11aL7iD9VVaJ%2BGtnls3%2FzBiE8vfjE%3D&se=2017-02-26T15%3A55%3A36Z&sp=r', 71303168)
train_filename = maybe_download('train.zip', 'https://kaggle2.blob.core.windows.net/competitions-data/kaggle/5441/train.zip?sv=2015-12-11&sr=b&sig=7UzYtGnmwvxodWZtaMVFjzmfSXLUM%2FMVjOpmtBZId28%3D&se=2017-02-26T16%3A02%3A58Z&sp=r', 566181888)


Found and verified test.zip
Found and verified train.zip

Extract the images


In [3]:
def maybe_extract(filename, force=False):
  root = os.path.splitext(os.path.splitext(filename)[0])[0]  # remove .tar.gz
  if os.path.isdir(root) and not force:
    # You may override by setting force=True.
    print('%s already present - Skipping extraction of %s.' % (root, filename))
  else:
    print('Extracting data from %s. This may take a while. Please wait.' % filename)

    zip = zipfile.ZipFile(filename)
    sys.stdout.flush()
    zip.extractall()
    zip.close()
  return root+'/'
  
train_folder = maybe_extract(train_filename)
test_folder = maybe_extract(test_filename)


train already present - Skipping extraction of train.zip.
test already present - Skipping extraction of test.zip.

Build lists of files and display some random image to verify if it works


In [4]:
train_images = [train_folder+i for i in os.listdir(train_folder)]
#train_labels = ['dog' in i for i in train_images]
#train_dogs =   [train_folder+i for i in os.listdir(train_folder) if 'dog' in i]
#train_cats =   [train_folder+i for i in os.listdir(train_folder) if 'cat' in i]
test_images =  [test_folder+i for i in os.listdir(test_folder)]

random_image=np.random.choice(train_images)
print (random_image)
image=Image(random_image)
display(image)

random_image=np.random.choice(test_images)
print (random_image)
display(Image(random_image))


train/cat.7590.jpg
test/5053.jpg

Now let's see what the images look like. Let's examin their shapes


In [5]:
from PIL import Image as image

dimensions_train = np.matrix([image.open(i).size for i in train_images],dtype=np.float32)
dimensions_test = np.matrix([image.open(i).size for i in test_images])

print(dimensions_train.shape)
print(dimensions_test.shape)


(25000, 2)
(12500, 2)

In [6]:
aspect_train = dimensions_train[:,0]/dimensions_train[:,1]
#print(aspect_train)

print ("Training set:")
print ("min: %s" % np.min(dimensions_train, axis=0))
print ("max: %s" % np.max(dimensions_train, axis=0))
print ("mean: %s" % np.mean(dimensions_train, axis=0))
print ("median: %s" % np.median(dimensions_train, axis=0))
print ("stdev: %s" % np.std(dimensions_train, axis=0))
print ("aspect min: %s" % np.min(aspect_train))
print ("aspect max: %s" % np.max(aspect_train))
print ("aspect mean: %s" % np.mean(aspect_train))
print ("aspect stdev: %s" % np.std(aspect_train))

print ("Test set:")
print ("min: %s" % np.min(dimensions_test, axis=0))
print ("max: %s" % np.max(dimensions_test, axis=0))
print ("mean: %s" % np.mean(dimensions_test, axis=0))
print ("median: %s" % np.median(dimensions_test, axis=0))
print ("stdev: %s" % np.std(dimensions_test, axis=0))


Training set:
min: [[ 42.  32.]]
max: [[ 1050.   768.]]
mean: [[ 404.09902954  360.47808838]]
median: [[ 447.  374.]]
stdev: [[ 109.03631592   97.01548767]]
aspect min: 0.306613
aspect max: 5.90909
aspect mean: 1.1572
aspect stdev: 0.291908
Test set:
min: [[37 44]]
max: [[500 500]]
mean: [[ 404.22448  359.93072]]
median: [[ 447.  374.]]
stdev: [[ 109.32650113   96.75354092]]

In [7]:
plt.hist(aspect_train, bins='auto', log=True) 
plt.title("Aspect ratio Histogram (log scale)")
plt.show()


Let's find images with extreme aspects.

When scaled such images can produce wiered output that can be misleading. Empirically set aspect cutoff to 1:2


In [8]:
low_pct_aspect=np.percentile(aspect_train,0.2)
high_pct_aspect=np.percentile(aspect_train,99.8)
# empirically set aspect cutoff to 1:2
low_pct_aspect=0.5
high_pct_aspect=2.0
low_pct_aspect_indices=[i for i in xrange(len(aspect_train)) if aspect_train[i]<low_pct_aspect]
high_pct_aspect_indices=[i for i in xrange(len(aspect_train)) if aspect_train[i]>high_pct_aspect]

In [9]:
print(low_pct_aspect_indices)

def display_train_image_by_idx(idx):
    display(Image(train_images[idx]))

for i in low_pct_aspect_indices:
    display_train_image_by_idx(i)
    print(aspect_train[i])
    print(train_images[i])


[270, 396, 1059, 2054, 2176, 2370, 2796, 2813, 2814, 3105, 3806, 4022, 4414, 4875, 5141, 5437, 5544, 5629, 6071, 6075, 7243, 7430, 7555, 7959, 8296, 8878, 9060, 9279, 9608, 9668, 10129, 10356, 11126, 11879, 11964, 12079, 12520, 12606, 12950, 13002, 13114, 13575, 13678, 14270, 14988, 15225, 15896, 15927, 15966, 15969, 16428, 17214, 17275, 17420, 17708, 18013, 18304, 18342, 18836, 18929, 18958, 19699, 19725, 20094, 21447, 21646, 21905, 22395, 22505, 23234, 23455, 23583, 24212, 24223, 24352, 24354, 24585]
[[ 0.42399999]]
train/dog.1741.jpg
[[ 0.49098197]]
train/dog.806.jpg
[[ 0.49899799]]
train/cat.7098.jpg
[[ 0.49000001]]
train/cat.3030.jpg
[[ 0.44800001]]
train/cat.9954.jpg
[[ 0.47389558]]
train/dog.5277.jpg
[[ 0.44419643]]
train/dog.3380.jpg
[[ 0.49000001]]
train/dog.1294.jpg
[[ 0.47477746]]
train/dog.7400.jpg
[[ 0.48605579]]
train/dog.7778.jpg
[[ 0.44360903]]
train/dog.8142.jpg
[[ 0.47695389]]
train/cat.9926.jpg
[[ 0.4729459]]
train/dog.1047.jpg
[[ 0.45691383]]
train/cat.5964.jpg
[[ 0.43486974]]
train/dog.5880.jpg
[[ 0.49735451]]
train/dog.12143.jpg
[[ 0.42399999]]
train/dog.1483.jpg
[[ 0.472]]
train/cat.8693.jpg
[[ 0.38660908]]
train/cat.10119.jpg
[[ 0.45691383]]
train/dog.3135.jpg
[[ 0.49498999]]
train/cat.1680.jpg
[[ 0.47695389]]
train/cat.10958.jpg
[[ 0.37593985]]
train/dog.7857.jpg
[[ 0.37089202]]
train/cat.8755.jpg
[[ 0.46245059]]
train/dog.10199.jpg
[[ 0.49399999]]
train/cat.5851.jpg
[[ 0.49653581]]
train/dog.12476.jpg
[[ 0.44999999]]
train/dog.8739.jpg
[[ 0.40681362]]
train/cat.5929.jpg
[[ 0.45535713]]
train/cat.188.jpg
[[ 0.35545024]]
train/cat.5981.jpg
[[ 0.41999999]]
train/cat.8902.jpg
[[ 0.47400001]]
train/dog.10249.jpg
[[ 0.44642857]]
train/dog.3330.jpg
[[ 0.43000001]]
train/cat.1723.jpg
[[ 0.37688443]]
train/cat.664.jpg
[[ 0.368]]
train/cat.11512.jpg
[[ 0.45222929]]
train/dog.7019.jpg
[[ 0.4474273]]
train/cat.12420.jpg
[[ 0.49200001]]
train/cat.1214.jpg
[[ 0.30661324]]
train/dog.10749.jpg
[[ 0.47987616]]
train/cat.3799.jpg
[[ 0.48096192]]
train/dog.418.jpg
[[ 0.37675351]]
train/cat.10988.jpg
[[ 0.47799999]]
train/dog.2011.jpg
[[ 0.48697394]]
train/dog.8635.jpg
[[ 0.48199999]]
train/cat.7855.jpg
[[ 0.44400001]]
train/dog.3139.jpg
[[ 0.45426831]]
train/dog.7294.jpg
[[ 0.45891783]]
train/cat.3370.jpg
[[ 0.46000001]]
train/dog.3863.jpg
[[ 0.46764091]]
train/dog.11945.jpg
[[ 0.4749499]]
train/cat.2193.jpg
[[ 0.48225468]]
train/dog.4331.jpg
[[ 0.42284569]]
train/dog.4712.jpg
[[ 0.48800001]]
train/dog.1286.jpg
[[ 0.49800798]]
train/dog.130.jpg
[[ 0.47999999]]
train/dog.7182.jpg
[[ 0.42484969]]
train/cat.11060.jpg
[[ 0.34999999]]
train/dog.9632.jpg
[[ 0.45089287]]
train/dog.4113.jpg
[[ 0.43799999]]
train/cat.11149.jpg
[[ 0.47600001]]
train/dog.6581.jpg
[[ 0.47682118]]
train/dog.10292.jpg
[[ 0.45673078]]
train/dog.2874.jpg
[[ 0.46399999]]
train/cat.7622.jpg
[[ 0.49794239]]
train/dog.2600.jpg
[[ 0.47999999]]
train/cat.11789.jpg
[[ 0.458]]
train/cat.6232.jpg
[[ 0.49599999]]
train/dog.11953.jpg
[[ 0.46226415]]
train/dog.1985.jpg
[[ 0.44499999]]
train/cat.3567.jpg
[[ 0.49399999]]
train/cat.3098.jpg
[[ 0.47799999]]
train/dog.9088.jpg
[[ 0.42430705]]
train/dog.2503.jpg
[[ 0.40200001]]
train/cat.712.jpg
[[ 0.43086171]]
train/dog.2478.jpg

In [10]:
print (high_pct_aspect_indices)
for i in high_pct_aspect_indices:
    display_train_image_by_idx(i)
    print(aspect_train[i])
    print(train_images[i])


[823, 979, 1164, 1222, 1884, 1998, 2007, 2117, 2446, 2447, 2829, 2832, 3024, 3073, 3451, 3582, 3657, 3788, 4086, 4344, 4418, 4469, 5015, 5353, 5355, 5888, 5931, 6128, 6191, 6588, 6646, 6670, 6731, 6819, 6922, 6971, 6989, 7034, 7452, 7521, 8131, 8235, 8337, 8505, 8540, 8544, 8863, 9038, 9250, 9421, 9499, 9708, 9770, 9847, 9886, 10078, 10090, 10141, 10203, 10423, 11297, 11347, 11636, 11846, 12006, 12104, 12334, 12403, 12429, 12834, 12976, 13082, 13446, 13515, 14576, 14884, 15538, 15543, 15727, 15802, 15838, 16196, 16316, 16371, 16499, 16628, 16772, 16816, 16993, 17046, 17166, 17181, 17274, 17317, 17494, 17633, 17826, 17869, 18213, 18458, 18516, 18671, 18756, 18887, 19339, 19742, 19815, 19998, 20286, 20351, 20376, 20465, 20626, 20664, 21354, 21537, 22173, 22276, 22489, 22617, 22749, 22784, 22822, 23085, 23278, 23454, 23960, 24173, 24176, 24322, 24375, 24540, 24684, 24732, 24990]
[[ 2.46305418]]
train/cat.8868.jpg
[[ 2.12765956]]
train/cat.5371.jpg
[[ 2.44607854]]
train/cat.2783.jpg
[[ 2.18340611]]
train/dog.5714.jpg
[[ 2.4545455]]
train/cat.11520.jpg
[[ 2.36585355]]
train/cat.2663.jpg
[[ 2.05240178]]
train/cat.11287.jpg
[[ 2.11453748]]
train/cat.6984.jpg
[[ 2.38121557]]
train/cat.3188.jpg
[[ 2.06611562]]
train/cat.2877.jpg
[[ 2.04918027]]
train/dog.6122.jpg
[[ 2.80898881]]
train/cat.11255.jpg
[[ 3.22580647]]
train/cat.5773.jpg
[[ 2.0999999]]
train/cat.3604.jpg
[[ 3.37837839]]
train/cat.5351.jpg
[[ 2.88461542]]
train/dog.11526.jpg
[[ 2.09663868]]
train/cat.7569.jpg
[[ 2.06611562]]
train/dog.1796.jpg
[[ 2.2516129]]
train/dog.11104.jpg
[[ 2.70270276]]
train/cat.8542.jpg
[[ 2.56451607]]
train/cat.3543.jpg
[[ 2.01600003]]
train/cat.10622.jpg
[[ 2.28915668]]
train/cat.3637.jpg
[[ 2.20796466]]
train/cat.11214.jpg
[[ 2.29357791]]
train/cat.4261.jpg
[[ 2.5]]
train/dog.9333.jpg
[[ 2.06896544]]
train/cat.4872.jpg
[[ 2.08542705]]
train/cat.10796.jpg
[[ 2.62573099]]
train/cat.9675.jpg
[[ 2.5]]
train/cat.12126.jpg
[[ 2.10970473]]
train/cat.11381.jpg
[[ 2.01010108]]
train/cat.1951.jpg
[[ 2.7472527]]
train/cat.9819.jpg
[[ 2.10084033]]
train/cat.2154.jpg
[[ 2.01209688]]
train/dog.11713.jpg
[[ 2.13247871]]
train/dog.10791.jpg
[[ 2.53299499]]
train/cat.9366.jpg
[[ 2.14857149]]
train/dog.6028.jpg
[[ 2.08333325]]
train/cat.2311.jpg
[[ 2.10526323]]
train/cat.11337.jpg
[[ 2.28310513]]
train/cat.5003.jpg
[[ 2.02150536]]
train/cat.4762.jpg
[[ 2.77777767]]
train/dog.12331.jpg
[[ 2.1144278]]
train/cat.958.jpg
[[ 2.15517235]]
train/cat.7971.jpg
[[ 2.05761313]]
train/cat.2881.jpg
[[ 2.1982379]]
train/dog.9984.jpg
[[ 2.91034484]]
train/cat.12243.jpg
[[ 2.30414748]]
train/cat.11968.jpg
[[ 2.11965823]]
train/cat.3396.jpg
[[ 2.195122]]
train/cat.2885.jpg
[[ 2.44607854]]
train/cat.6017.jpg
[[ 2.41414142]]
train/cat.5507.jpg
[[ 2.39520955]]
train/cat.2919.jpg
[[ 2.15568852]]
train/cat.2139.jpg
[[ 2.2681818]]
train/dog.8360.jpg
[[ 2.12340426]]
train/dog.11519.jpg
[[ 2.20796466]]
train/cat.5496.jpg
[[ 2.37373734]]
train/cat.9445.jpg
[[ 2.20588231]]
train/dog.5746.jpg
[[ 2.16017318]]
train/cat.6734.jpg
[[ 2.25980401]]
train/dog.4282.jpg
[[ 2.12222219]]
train/cat.8744.jpg
[[ 2.40601492]]
train/cat.5531.jpg
[[ 2.1982379]]
train/cat.505.jpg
[[ 2.10084033]]
train/cat.12298.jpg
[[ 3.81578946]]
train/cat.9171.jpg
[[ 2.0151515]]
train/cat.5240.jpg
[[ 2.4702971]]
train/dog.4275.jpg
[[ 2.12765956]]
train/cat.1841.jpg
[[ 2.05349803]]
train/dog.1994.jpg
[[ 2.28899074]]
train/cat.7280.jpg
[[ 2.99401188]]
train/cat.11349.jpg
[[ 2.06198359]]
train/cat.6308.jpg
[[ 2.06198359]]
train/cat.304.jpg
[[ 2.06198359]]
train/cat.4058.jpg
[[ 2.01612902]]
train/cat.1465.jpg
[[ 2.46305418]]
train/dog.6235.jpg
[[ 2.23766828]]
train/cat.424.jpg
[[ 2.7119565]]
train/cat.9552.jpg
[[ 2.01063824]]
train/cat.10867.jpg
[[ 2.53164554]]
train/cat.3054.jpg
[[ 2.63157892]]
train/cat.482.jpg
[[ 2.07100582]]
train/cat.4272.jpg
[[ 2.15086198]]
train/cat.9875.jpg
[[ 2.21777773]]
train/cat.3069.jpg
[[ 2.00803208]]
train/cat.5494.jpg
[[ 2.09663868]]
train/dog.10313.jpg
[[ 2.3300972]]
train/cat.595.jpg
[[ 2.62937069]]
train/cat.5111.jpg
[[ 2.03673458]]
train/cat.6205.jpg
[[ 2.63157892]]
train/cat.11062.jpg
[[ 5.909091]]
train/dog.4367.jpg
[[ 2.03208566]]
train/cat.9359.jpg
[[ 2.52525258]]
train/dog.2537.jpg
[[ 2.77777767]]
train/cat.10192.jpg
[[ 2.20994473]]
train/dog.11382.jpg
[[ 2.840909]]
train/cat.3324.jpg
[[ 2.04081631]]
train/cat.4731.jpg
[[ 2.29007626]]
train/cat.10432.jpg
[[ 2.06611562]]
train/cat.513.jpg
[[ 2.10691833]]
train/cat.3550.jpg
[[ 2.18859649]]
train/dog.6434.jpg
[[ 2.63157892]]
train/cat.11643.jpg
[[ 2.01149416]]
train/dog.3112.jpg
[[ 2.05761313]]
train/cat.1114.jpg
[[ 2.03252029]]
train/cat.6152.jpg
[[ 2.23717952]]
train/cat.744.jpg
[[ 2.02845526]]
train/cat.5921.jpg
[[ 2.05294108]]
train/dog.11819.jpg
[[ 2.28310513]]
train/cat.12391.jpg
[[ 2.2681818]]
train/cat.10754.jpg
[[ 2.12315273]]
train/dog.586.jpg
[[ 2.18681312]]
train/cat.7526.jpg
[[ 2.13571429]]
train/cat.7758.jpg
[[ 2.10526323]]
train/cat.8373.jpg
[[ 2.03673458]]
train/cat.10214.jpg
[[ 2.04081631]]
train/cat.283.jpg
[[ 2.34741783]]
train/cat.3010.jpg
[[ 2.22123885]]
train/dog.516.jpg
[[ 2.67567563]]
train/dog.11248.jpg
[[ 2.09205031]]
train/cat.7296.jpg
[[ 2.22222233]]
train/cat.7527.jpg
[[ 2.12765956]]
train/cat.12344.jpg
[[ 2.173913]]
train/dog.6340.jpg
[[ 2.36966825]]
train/cat.10975.jpg
[[ 2.02083325]]
train/cat.10952.jpg
[[ 2.2681818]]
train/cat.2735.jpg
[[ 2.05045867]]
train/cat.9467.jpg
[[ 2.3359375]]
train/cat.2227.jpg
[[ 2.14354062]]
train/cat.9761.jpg
[[ 2.08333325]]
train/cat.2959.jpg
[[ 2.15053773]]
train/cat.3250.jpg
[[ 2.06185555]]
train/dog.1243.jpg
[[ 2.77222228]]
train/cat.728.jpg

Let's find the smallest images.

When scaled such images produce blured images that can be misleading.


In [11]:
low_pct_dimension=np.percentile(dimensions_train,3,0)
# array([ 163.,  150.])

small_images_indices=[i for i in xrange(len(dimensions_train)) 
                     if dimensions_train[i,0]<low_pct_dimension[0] or dimensions_train[i,1]<low_pct_dimension[1]]

print (small_images_indices)
for i in small_images_indices:
    display_train_image_by_idx(i)
    print(dimensions_train[i])
    print(train_images[i])


[11, 50, 98, 163, 176, 202, 217, 220, 236, 273, 286, 304, 328, 338, 365, 369, 392, 416, 422, 468, 484, 490, 518, 553, 608, 611, 639, 651, 655, 732, 763, 766, 782, 796, 801, 864, 889, 928, 950, 955, 966, 971, 972, 976, 979, 999, 1032, 1044, 1092, 1107, 1111, 1123, 1177, 1221, 1241, 1261, 1294, 1354, 1360, 1383, 1438, 1448, 1455, 1460, 1464, 1466, 1470, 1488, 1498, 1543, 1590, 1616, 1638, 1716, 1740, 1765, 1778, 1804, 1805, 1837, 1869, 1872, 1875, 1877, 1880, 1887, 1937, 1994, 1998, 2036, 2079, 2084, 2089, 2103, 2156, 2164, 2190, 2202, 2243, 2268, 2297, 2303, 2333, 2370, 2422, 2434, 2491, 2544, 2574, 2585, 2608, 2621, 2652, 2657, 2673, 2695, 2710, 2720, 2729, 2736, 2751, 2760, 2764, 2782, 2814, 2890, 2903, 2911, 2919, 2928, 3016, 3024, 3040, 3062, 3072, 3073, 3081, 3082, 3105, 3106, 3111, 3157, 3191, 3201, 3234, 3235, 3287, 3314, 3382, 3389, 3394, 3414, 3429, 3431, 3451, 3461, 3480, 3484, 3530, 3545, 3558, 3582, 3584, 3603, 3623, 3641, 3708, 3743, 3748, 3751, 3821, 3822, 3826, 3838, 3862, 3894, 3916, 3948, 3974, 3986, 3993, 4018, 4081, 4117, 4138, 4148, 4190, 4223, 4226, 4269, 4306, 4314, 4327, 4398, 4418, 4424, 4447, 4469, 4478, 4487, 4537, 4538, 4544, 4596, 4603, 4607, 4622, 4648, 4660, 4696, 4775, 4778, 4815, 4834, 4895, 4955, 5015, 5023, 5029, 5045, 5063, 5128, 5183, 5236, 5248, 5265, 5272, 5306, 5373, 5394, 5420, 5461, 5463, 5499, 5551, 5561, 5619, 5717, 5752, 5773, 5782, 5791, 5801, 5816, 5826, 5837, 5846, 5861, 5862, 5888, 5890, 5901, 5906, 5909, 5931, 5946, 5983, 6010, 6014, 6022, 6050, 6105, 6106, 6110, 6148, 6166, 6178, 6181, 6202, 6219, 6229, 6292, 6323, 6408, 6409, 6420, 6427, 6453, 6501, 6510, 6519, 6521, 6523, 6532, 6538, 6561, 6565, 6588, 6624, 6627, 6635, 6642, 6663, 6667, 6701, 6725, 6733, 6807, 6834, 6849, 6964, 6990, 7047, 7056, 7081, 7089, 7100, 7128, 7148, 7192, 7203, 7227, 7229, 7299, 7360, 7402, 7423, 7431, 7444, 7462, 7521, 7524, 7555, 7563, 7578, 7604, 7629, 7650, 7659, 7709, 7730, 7764, 7765, 7770, 7831, 7843, 7851, 7857, 7886, 7889, 7894, 7927, 7931, 7953, 7959, 7965, 7970, 7994, 8027, 8042, 8106, 8149, 8156, 8175, 8235, 8258, 8266, 8296, 8314, 8337, 8363, 8405, 8414, 8474, 8503, 8540, 8548, 8570, 8572, 8627, 8629, 8634, 8715, 8722, 8725, 8794, 8801, 8814, 8816, 8832, 8875, 8880, 8883, 8920, 8937, 8940, 8960, 9029, 9038, 9041, 9048, 9058, 9066, 9070, 9101, 9110, 9111, 9127, 9188, 9242, 9260, 9279, 9280, 9301, 9315, 9321, 9322, 9329, 9338, 9350, 9397, 9488, 9495, 9519, 9552, 9565, 9574, 9600, 9636, 9663, 9706, 9770, 9782, 9796, 9810, 9820, 9884, 9887, 9896, 9951, 9962, 9971, 9995, 10034, 10119, 10121, 10129, 10176, 10203, 10210, 10211, 10217, 10232, 10240, 10253, 10280, 10355, 10412, 10423, 10463, 10499, 10503, 10518, 10550, 10569, 10631, 10640, 10642, 10686, 10782, 10829, 10833, 10835, 10934, 10997, 11051, 11061, 11161, 11200, 11210, 11223, 11237, 11264, 11265, 11316, 11341, 11415, 11435, 11440, 11443, 11446, 11481, 11505, 11578, 11601, 11615, 11636, 11729, 11838, 11840, 11846, 11898, 11915, 11928, 11929, 11952, 11959, 11998, 12002, 12004, 12010, 12011, 12032, 12036, 12039, 12044, 12050, 12071, 12079, 12083, 12104, 12112, 12117, 12162, 12165, 12194, 12201, 12222, 12261, 12264, 12315, 12334, 12347, 12381, 12383, 12395, 12400, 12402, 12445, 12480, 12508, 12514, 12522, 12634, 12652, 12656, 12661, 12886, 12904, 12927, 12933, 12947, 12974, 12975, 13018, 13030, 13036, 13054, 13087, 13099, 13109, 13111, 13114, 13123, 13151, 13245, 13289, 13293, 13323, 13337, 13350, 13364, 13411, 13414, 13433, 13509, 13575, 13579, 13589, 13597, 13718, 13735, 13741, 13746, 13772, 13874, 13886, 13899, 13912, 13929, 13949, 13955, 13972, 13979, 14031, 14118, 14173, 14174, 14311, 14315, 14345, 14356, 14366, 14408, 14412, 14417, 14418, 14442, 14447, 14501, 14506, 14511, 14529, 14537, 14538, 14541, 14543, 14562, 14563, 14569, 14599, 14647, 14685, 14742, 14744, 14812, 14835, 14836, 14845, 14859, 14888, 14892, 14937, 14944, 15009, 15010, 15017, 15042, 15090, 15093, 15104, 15172, 15201, 15212, 15219, 15252, 15261, 15263, 15308, 15359, 15393, 15405, 15431, 15449, 15461, 15464, 15516, 15537, 15548, 15567, 15635, 15682, 15688, 15692, 15694, 15699, 15711, 15723, 15750, 15753, 15756, 15771, 15777, 15801, 15823, 15833, 15843, 15875, 15935, 15966, 15967, 15982, 16005, 16008, 16010, 16016, 16030, 16034, 16055, 16063, 16089, 16094, 16095, 16119, 16196, 16198, 16265, 16295, 16301, 16324, 16331, 16340, 16357, 16367, 16376, 16391, 16406, 16412, 16423, 16434, 16435, 16446, 16448, 16459, 16466, 16487, 16489, 16557, 16623, 16676, 16688, 16689, 16693, 16717, 16720, 16750, 16763, 16774, 16788, 16815, 16930, 16956, 16967, 16973, 16993, 17046, 17049, 17052, 17073, 17087, 17152, 17168, 17213, 17218, 17242, 17271, 17274, 17287, 17372, 17391, 17407, 17432, 17435, 17469, 17473, 17535, 17632, 17633, 17675, 17679, 17712, 17733, 17783, 17805, 17811, 17813, 17852, 17872, 17926, 17972, 18039, 18071, 18075, 18077, 18148, 18157, 18177, 18207, 18208, 18218, 18229, 18257, 18266, 18304, 18314, 18327, 18353, 18377, 18385, 18430, 18452, 18458, 18474, 18504, 18530, 18547, 18586, 18604, 18613, 18663, 18673, 18719, 18778, 18779, 18799, 18817, 18832, 18899, 18908, 18914, 18958, 18967, 19002, 19019, 19021, 19054, 19065, 19094, 19109, 19110, 19135, 19167, 19178, 19207, 19216, 19229, 19241, 19308, 19325, 19343, 19405, 19407, 19466, 19469, 19470, 19489, 19537, 19558, 19602, 19693, 19696, 19741, 19786, 19789, 19846, 19863, 19878, 19910, 19931, 19959, 19972, 19981, 20034, 20037, 20083, 20094, 20096, 20154, 20172, 20296, 20301, 20304, 20328, 20330, 20340, 20346, 20397, 20408, 20434, 20444, 20460, 20466, 20485, 20504, 20527, 20554, 20601, 20664, 20690, 20723, 20778, 20810, 20823, 20866, 20896, 20910, 20938, 20951, 20952, 20957, 21004, 21019, 21034, 21048, 21194, 21200, 21227, 21237, 21250, 21254, 21278, 21280, 21308, 21319, 21326, 21340, 21351, 21354, 21362, 21409, 21413, 21447, 21473, 21491, 21500, 21530, 21535, 21539, 21561, 21591, 21597, 21628, 21633, 21641, 21665, 21681, 21684, 21829, 21893, 21905, 21906, 21924, 22008, 22015, 22028, 22030, 22077, 22095, 22116, 22197, 22202, 22204, 22210, 22213, 22229, 22280, 22329, 22377, 22530, 22582, 22617, 22631, 22689, 22696, 22718, 22722, 22749, 22767, 22769, 22906, 22971, 23024, 23033, 23035, 23077, 23081, 23091, 23124, 23198, 23228, 23238, 23240, 23270, 23271, 23307, 23322, 23349, 23443, 23455, 23462, 23466, 23517, 23519, 23528, 23540, 23583, 23596, 23608, 23613, 23652, 23661, 23690, 23752, 23762, 23770, 23807, 23859, 23905, 23910, 23948, 23966, 24020, 24028, 24043, 24140, 24149, 24196, 24197, 24203, 24210, 24214, 24264, 24317, 24322, 24331, 24392, 24446, 24454, 24516, 24565, 24574, 24676, 24684, 24688, 24695, 24708, 24709, 24715, 24766, 24791, 24817, 24858, 24872, 24898, 24901, 24904, 24907, 24926, 24969]
[[ 147.  153.]]
train/dog.11651.jpg
[[ 141.  172.]]
train/dog.2374.jpg
[[ 124.  124.]]
train/cat.7208.jpg
[[ 75.  79.]]
train/cat.2095.jpg
[[ 124.  108.]]
train/dog.5045.jpg
[[ 141.  109.]]
train/cat.11161.jpg
[[ 140.  200.]]
train/cat.2577.jpg
[[ 200.  111.]]
train/cat.5928.jpg
[[ 178.  133.]]
train/cat.3468.jpg
[[ 147.  143.]]
train/cat.5390.jpg
[[ 119.  139.]]
train/cat.3167.jpg
[[ 200.  149.]]
train/cat.8877.jpg
[[ 160.  119.]]
train/dog.4950.jpg
[[ 154.  101.]]
train/dog.6685.jpg
[[ 151.  189.]]
train/cat.6484.jpg
[[ 146.  145.]]
train/dog.6051.jpg
[[  98.  190.]]
train/cat.10418.jpg
[[ 150.  112.]]
train/dog.5427.jpg
[[ 149.  197.]]
train/dog.40.jpg
[[ 136.  181.]]
train/dog.8646.jpg
[[ 150.  112.]]
train/dog.1307.jpg
[[ 130.  100.]]
train/dog.3115.jpg
[[ 200.  123.]]
train/cat.11484.jpg
[[ 191.  149.]]
train/cat.3283.jpg
[[ 150.  149.]]
train/cat.11499.jpg
[[ 132.  125.]]
train/dog.6597.jpg
[[ 159.  200.]]
train/cat.1164.jpg
[[ 149.  140.]]
train/cat.1268.jpg
[[ 180.  134.]]
train/cat.4650.jpg
[[ 192.  123.]]
train/cat.4746.jpg
[[ 179.  113.]]
train/cat.8724.jpg
[[ 200.  143.]]
train/dog.11973.jpg
[[ 199.  123.]]
train/cat.6404.jpg
[[ 154.  121.]]
train/dog.6509.jpg
[[ 215.  131.]]
train/cat.9405.jpg
[[ 129.   89.]]
train/dog.5645.jpg
[[ 200.  116.]]
train/dog.1043.jpg
[[ 200.  149.]]
train/dog.3264.jpg
[[ 219.  144.]]
train/cat.5404.jpg
[[ 156.  199.]]
train/dog.1394.jpg
[[ 149.  146.]]
train/cat.10669.jpg
[[ 121.  197.]]
train/cat.950.jpg
[[ 124.  125.]]
train/dog.407.jpg
[[ 170.  126.]]
train/cat.11257.jpg
[[ 300.  141.]]
train/cat.5371.jpg
[[ 128.  199.]]
train/cat.4753.jpg
[[ 204.  116.]]
train/cat.4483.jpg
[[ 118.  182.]]
train/dog.10439.jpg
[[  99.  144.]]
train/dog.7795.jpg
[[ 169.  132.]]
train/cat.7559.jpg
[[ 59.  70.]]
train/dog.2068.jpg
[[ 112.  115.]]
train/cat.6263.jpg
[[ 263.  133.]]
train/cat.7353.jpg
[[ 140.  176.]]
train/dog.3716.jpg
[[ 165.  121.]]
train/dog.10726.jpg
[[ 119.  160.]]
train/dog.8070.jpg
[[ 139.  118.]]
train/cat.5750.jpg
[[ 100.   90.]]
train/dog.6473.jpg
[[ 191.  149.]]
train/cat.10586.jpg
[[ 119.  124.]]
train/dog.6755.jpg
[[ 144.  144.]]
train/dog.1966.jpg
[[ 228.  148.]]
train/cat.1309.jpg
[[ 170.  148.]]
train/cat.9408.jpg
[[ 112.  150.]]
train/cat.12349.jpg
[[ 101.  149.]]
train/dog.6650.jpg
[[ 139.  128.]]
train/dog.2991.jpg
[[ 149.  100.]]
train/cat.2088.jpg
[[ 123.  106.]]
train/cat.8807.jpg
[[ 133.  127.]]
train/cat.880.jpg
[[ 130.  150.]]
train/dog.4598.jpg
[[ 132.   88.]]
train/dog.10274.jpg
[[ 150.  101.]]
train/dog.3536.jpg
[[ 119.  142.]]
train/dog.9897.jpg
[[ 200.  148.]]
train/dog.1596.jpg
[[ 150.  139.]]
train/cat.8221.jpg
[[ 200.  149.]]
train/cat.10987.jpg
[[ 147.  221.]]
train/cat.10150.jpg
[[ 145.  200.]]
train/dog.2073.jpg
[[ 199.  134.]]
train/dog.8715.jpg
[[ 150.  149.]]
train/cat.9395.jpg
[[ 200.  149.]]
train/cat.782.jpg
[[ 84.  95.]]
train/cat.4833.jpg
[[  90.  111.]]
train/cat.1840.jpg
[[ 68.  50.]]
train/dog.3147.jpg
[[ 135.  101.]]
train/dog.11.jpg
[[ 59.  55.]]
train/dog.2188.jpg
[[ 180.  145.]]
train/cat.8191.jpg
[[ 167.  142.]]
train/dog.7544.jpg
[[ 194.   82.]]
train/cat.2663.jpg
[[ 159.  120.]]
train/cat.6900.jpg
[[ 99.  88.]]
train/cat.11094.jpg
[[ 100.   73.]]
train/dog.7893.jpg
[[ 192.  143.]]
train/cat.11193.jpg
[[ 115.  174.]]
train/cat.1986.jpg
[[ 199.  140.]]
train/cat.11229.jpg
[[ 128.  200.]]
train/dog.2689.jpg
[[ 105.  102.]]
train/dog.12265.jpg
[[ 185.  138.]]
train/cat.11172.jpg
[[ 188.  141.]]
train/cat.7358.jpg
[[ 148.  252.]]
train/dog.9890.jpg
[[ 134.  135.]]
train/dog.9871.jpg
[[ 160.  122.]]
train/dog.1820.jpg
[[ 116.  156.]]
train/dog.4274.jpg
[[ 118.  249.]]
train/dog.5277.jpg
[[ 185.  133.]]
train/cat.1789.jpg
[[  99.  193.]]
train/cat.10748.jpg
[[ 139.  137.]]
train/dog.86.jpg
[[ 150.  112.]]
train/dog.3298.jpg
[[ 200.  149.]]
train/cat.4839.jpg
[[ 50.  38.]]
train/dog.10747.jpg
[[ 132.  118.]]
train/dog.11252.jpg
[[ 130.  147.]]
train/cat.3753.jpg
[[ 184.  138.]]
train/dog.7685.jpg
[[ 184.   97.]]
train/dog.7077.jpg
[[ 160.  119.]]
train/cat.933.jpg
[[ 200.  149.]]
train/cat.4431.jpg
[[ 148.  192.]]
train/cat.9834.jpg
[[ 149.  200.]]
train/cat.8811.jpg
[[ 144.  143.]]
train/cat.889.jpg
[[ 180.  126.]]
train/cat.854.jpg
[[ 119.   90.]]
train/dog.4468.jpg
[[ 188.  125.]]
train/dog.7665.jpg
[[  99.  106.]]
train/dog.5152.jpg
[[ 162.  197.]]
train/dog.1957.jpg
[[ 160.  337.]]
train/dog.7400.jpg
[[ 150.  149.]]
train/cat.7196.jpg
[[ 149.  113.]]
train/cat.252.jpg
[[ 65.  46.]]
train/dog.9246.jpg
[[ 124.  200.]]
train/cat.10197.jpg
[[ 199.  148.]]
train/cat.5394.jpg
[[ 175.  144.]]
train/cat.8866.jpg
[[ 300.   93.]]
train/cat.5773.jpg
[[ 118.  139.]]
train/dog.4517.jpg
[[ 110.   96.]]
train/cat.2165.jpg
[[ 135.  134.]]
train/cat.4116.jpg
[[ 294.  140.]]
train/cat.3604.jpg
[[ 113.  149.]]
train/cat.9936.jpg
[[ 191.  142.]]
train/cat.11123.jpg
[[ 122.  251.]]
train/dog.7778.jpg
[[ 199.  103.]]
train/cat.9081.jpg
[[ 89.  90.]]
train/cat.4963.jpg
[[ 50.  49.]]
train/cat.6614.jpg
[[ 161.  184.]]
train/dog.5579.jpg
[[ 114.  149.]]
train/dog.9278.jpg
[[ 109.  125.]]
train/cat.5481.jpg
[[ 107.  102.]]
train/cat.44.jpg
[[ 199.  133.]]
train/cat.9442.jpg
[[ 200.  149.]]
train/dog.6480.jpg
[[ 200.  149.]]
train/cat.12278.jpg