Dogs breeds

本实例我是在jupter上运行的
使用的是fastai

%reload_ext autoreload
%autoreload 2
%matplotlib inline
from fastai.imports import *
from fastai.torch_imports import *
from fastai.transforms import *
from fastai.conv_learner import *
from fastai.model import *
from fastai.dataset import *
from fastai.sgdr import *
from fastai.plots import *
#torch.cuda.set_device(0)
#这是在jupter的根目录下
PATH = "databreed/"
sz = 224
arch = resnext101_64
bs = 58
label_csv = f'{PATH}labels1.csv'
n = len(list(open(label_csv))) - 1 # header is not counted (-1)
val_idxs = get_cv_idxs(n) # random 20% data for validation set
n
10
len(val_idxs)
2
# If you haven't downloaded weights.tgz yet, download the file.
#     http://forums.fast.ai/t/error-when-trying-to-use-resnext50/7555
#     http://forums.fast.ai/t/lesson-2-in-class-discussion/7452/222
#!wget -O fastai/weights.tgz http://files.fast.ai/models/weights.tgz

#!tar xvfz fastai/weights.tgz -C fastai

Initial exploration

!ls {PATH}
labels1.csv  test
label_df = pd.read_csv(label_csv)
label_df.head()
idbreed
0000bec180eb18c7604dcecc8fe0dba07boston_bull
1001513dfcb2ffafc82cccf4d8bbaba97dingo
2001cdf01b096e06d78e9e5112d419397pekinese
300214f311d5d2247d5dfe4fe24b2303dbluetick
40021f9ceb3235effd7fcde7f7538ed62golden_retriever
label_df.pivot_table(index="breed", aggfunc=len).sort_values('id', ascending=False)
id
breed
basenji1
bedlington_terrier1
bluetick1
borzoi1
boston_bull1
dingo1
golden_retriever1
pekinese1
scottish_deerhound1
shetland_sheepdog1
tfms = tfms_from_model(arch, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_csv(PATH, 'train', f'{PATH}labels1.csv', test_name='test', # we need to specify where the test set is if you want to submit to Kaggle competitions
                                   val_idxs=val_idxs, suffix='.jpg', tfms=tfms, bs=bs)
fn = PATH + data.trn_ds.fnames[0]; fn
'databreed/train/000bec180eb18c7604dcecc8fe0dba07.jpg'
img = PIL.Image.open(fn); img

png

img.size
(500, 375)
size_d = {k: PIL.Image.open(PATH + k).size for k in data.trn_ds.fnames}
row_sz, col_sz = list(zip(*size_d.values()))
row_sz = np.array(row_sz); col_sz = np.array(col_sz)
row_sz[:5]
array([500, 500, 400, 500, 500])
plt.hist(row_sz);

png

plt.hist(row_sz[row_sz < 1000])
(array([1., 0., 0., 0., 0., 1., 1., 0., 0., 5.]),
 array([231. , 257.9, 284.8, 311.7, 338.6, 365.5, 392.4, 419.3, 446.2, 473.1, 500. ]),
 <a list of 10 Patch objects>)

png

plt.hist(col_sz);

png

plt.hist(col_sz[col_sz < 1000])
(array([1., 0., 0., 0., 1., 3., 0., 0., 0., 3.]),
 array([227. , 254.3, 281.6, 308.9, 336.2, 363.5, 390.8, 418.1, 445.4, 472.7, 500. ]),
 <a list of 10 Patch objects>)

png

len(data.trn_ds), len(data.test_ds)
(8, 4)
len(data.classes), data.classes[:5]
(10, ['basenji', 'bedlington_terrier', 'bluetick', 'borzoi', 'boston_bull'])

Initial model

def get_data(sz, bs): # sz: image size, bs: batch size
    tfms = tfms_from_model(arch, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
    data = ImageClassifierData.from_csv(PATH, 'train', f'{PATH}labels1.csv', test_name='test',
                                       val_idxs=val_idxs, suffix='.jpg', tfms=tfms, bs=bs)
    
    # http://forums.fast.ai/t/how-to-train-on-the-full-dataset-using-imageclassifierdata-from-csv/7761/13
    # http://forums.fast.ai/t/how-to-train-on-the-full-dataset-using-imageclassifierdata-from-csv/7761/37
    return data if sz > 300 else data.resize(340, 'tmp') # Reading the jpgs and resizing is slow for big images, so resizing them all to 340 first saves time

#Source:   
#    def resize(self, targ, new_path):
#        new_ds = []
#        dls = [self.trn_dl,self.val_dl,self.fix_dl,self.aug_dl]
#        if self.test_dl: dls += [self.test_dl, self.test_aug_dl]
#        else: dls += [None,None]
#        t = tqdm_notebook(dls)
#        for dl in t: new_ds.append(self.resized(dl, targ, new_path))
#        t.close()
#        return self.__class__(new_ds[0].path, new_ds, self.bs, self.num_workers, self.classes)
#File:      ~/fastai/courses/dl1/fastai/dataset.py

Precompute

data = get_data(sz, bs)
learn = ConvLearner.pretrained(arch, data, precompute=True)
learn.fit(1e-2, 5)

Augment

from sklearn import metrics
data = get_data(sz, bs)
learn = ConvLearner.pretrained(arch, data, precompute=True, ps=0.5)
learn.fit(1e-2, 2)
learn.precompute = False
learn.fit(1e-2, 5, cycle_len=1)
learn.save('224_pre')
learn.load('224_pre')

Increase size

# Starting training on small images for a few epochs, then switching to bigger images, and continuing training is an amazingly effective way to avoid overfitting.

# http://forums.fast.ai/t/planet-classification-challenge/7824/96
# set_data doesn’t change the model at all. It just gives it new data to train with.
learn.set_data(get_data(299, bs)) 
learn.freeze()

#Source:   
#    def set_data(self, data, precompute=False):
#        super().set_data(data)
#        if precompute:
#            self.unfreeze()
#            self.save_fc1()
#            self.freeze()
#            self.precompute = True
#        else:
#            self.freeze()
#File:      ~/fastai/courses/dl1/fastai/conv_learner.py
HBox(children=(IntProgress(value=0, max=6), HTML(value='')))
learn.summary()
OrderedDict([('Conv2d-1',
              OrderedDict([('input_shape', [-1, 3, 224, 224]),
                           ('output_shape', [-1, 64, 112, 112]),
                           ('trainable', False),
                           ('nb_params', 9408)])),
             ('BatchNorm2d-2',
              OrderedDict([('input_shape', [-1, 64, 112, 112]),
                           ('output_shape', [-1, 64, 112, 112]),
                           ('trainable', False),
                           ('nb_params', 128)])),
             ('ReLU-3',
              OrderedDict([('input_shape', [-1, 64, 112, 112]),
                           ('output_shape', [-1, 64, 112, 112]),
                           ('nb_params', 0)])),
             ('MaxPool2d-4',
              OrderedDict([('input_shape', [-1, 64, 112, 112]),
                           ('output_shape', [-1, 64, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-5',
              OrderedDict([('input_shape', [-1, 64, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 16384)])),
             ('BatchNorm2d-6',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-7',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-8',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 9216)])),
             ('BatchNorm2d-9',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-10',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-11',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 65536)])),
             ('BatchNorm2d-12',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('Conv2d-13',
              OrderedDict([('input_shape', [-1, 64, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 16384)])),
             ('BatchNorm2d-14',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-15',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-16',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 65536)])),
             ('BatchNorm2d-17',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-18',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-19',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 9216)])),
             ('BatchNorm2d-20',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-21',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-22',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 65536)])),
             ('BatchNorm2d-23',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-24',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-25',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 65536)])),
             ('BatchNorm2d-26',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-27',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-28',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 9216)])),
             ('BatchNorm2d-29',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-30',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-31',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 65536)])),
             ('BatchNorm2d-32',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 512)])),
             ('ReLU-33',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 256, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-34',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 512, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 131072)])),
             ('BatchNorm2d-35',
              OrderedDict([('input_shape', [-1, 512, 56, 56]),
                           ('output_shape', [-1, 512, 56, 56]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-36',
              OrderedDict([('input_shape', [-1, 512, 56, 56]),
                           ('output_shape', [-1, 512, 56, 56]),
                           ('nb_params', 0)])),
             ('Conv2d-37',
              OrderedDict([('input_shape', [-1, 512, 56, 56]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 36864)])),
             ('BatchNorm2d-38',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-39',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-40',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-41',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('Conv2d-42',
              OrderedDict([('input_shape', [-1, 256, 56, 56]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 131072)])),
             ('BatchNorm2d-43',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-44',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-45',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-46',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-47',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-48',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 36864)])),
             ('BatchNorm2d-49',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-50',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-51',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-52',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-53',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-54',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-55',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-56',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-57',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 36864)])),
             ('BatchNorm2d-58',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-59',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-60',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-61',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-62',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-63',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-64',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-65',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-66',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 36864)])),
             ('BatchNorm2d-67',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-68',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-69',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 262144)])),
             ('BatchNorm2d-70',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 1024)])),
             ('ReLU-71',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 512, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-72',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 1024, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 524288)])),
             ('BatchNorm2d-73',
              OrderedDict([('input_shape', [-1, 1024, 28, 28]),
                           ('output_shape', [-1, 1024, 28, 28]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-74',
              OrderedDict([('input_shape', [-1, 1024, 28, 28]),
                           ('output_shape', [-1, 1024, 28, 28]),
                           ('nb_params', 0)])),
             ('Conv2d-75',
              OrderedDict([('input_shape', [-1, 1024, 28, 28]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-76',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-77',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-78',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-79',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('Conv2d-80',
              OrderedDict([('input_shape', [-1, 512, 28, 28]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 524288)])),
             ('BatchNorm2d-81',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-82',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-83',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-84',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-85',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-86',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-87',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-88',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-89',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-90',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-91',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-92',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-93',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-94',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-95',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-96',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-97',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-98',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-99',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-100',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-101',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-102',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-103',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-104',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-105',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-106',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-107',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-108',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-109',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-110',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-111',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-112',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-113',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-114',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-115',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-116',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-117',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-118',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-119',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-120',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-121',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-122',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-123',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-124',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-125',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-126',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-127',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-128',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-129',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-130',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-131',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-132',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-133',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-134',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-135',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-136',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-137',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-138',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-139',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-140',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-141',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-142',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-143',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-144',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-145',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-146',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-147',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-148',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-149',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-150',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-151',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-152',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-153',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-154',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-155',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-156',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-157',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-158',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-159',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-160',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-161',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-162',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-163',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-164',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-165',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-166',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-167',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-168',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-169',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-170',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-171',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-172',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-173',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-174',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-175',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-176',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-177',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-178',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-179',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-180',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-181',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-182',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-183',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-184',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-185',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-186',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-187',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-188',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-189',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-190',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-191',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-192',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-193',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-194',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-195',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-196',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-197',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-198',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-199',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-200',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-201',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-202',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-203',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-204',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-205',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-206',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-207',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-208',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-209',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-210',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-211',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-212',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-213',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-214',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-215',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-216',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-217',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-218',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-219',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-220',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-221',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-222',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-223',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-224',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-225',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-226',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-227',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-228',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-229',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-230',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-231',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-232',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-233',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-234',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-235',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-236',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-237',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-238',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-239',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-240',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-241',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-242',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-243',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-244',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-245',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-246',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-247',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-248',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-249',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-250',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-251',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-252',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-253',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-254',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-255',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-256',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-257',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-258',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-259',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-260',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-261',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-262',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-263',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-264',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-265',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-266',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-267',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-268',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-269',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-270',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-271',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-272',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-273',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-274',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-275',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 147456)])),
             ('BatchNorm2d-276',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-277',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-278',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 1048576)])),
             ('BatchNorm2d-279',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2048)])),
             ('ReLU-280',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 1024, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-281',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 2048, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 2097152)])),
             ('BatchNorm2d-282',
              OrderedDict([('input_shape', [-1, 2048, 14, 14]),
                           ('output_shape', [-1, 2048, 14, 14]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-283',
              OrderedDict([('input_shape', [-1, 2048, 14, 14]),
                           ('output_shape', [-1, 2048, 14, 14]),
                           ('nb_params', 0)])),
             ('Conv2d-284',
              OrderedDict([('input_shape', [-1, 2048, 14, 14]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 589824)])),
             ('BatchNorm2d-285',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-286',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-287',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4194304)])),
             ('BatchNorm2d-288',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('Conv2d-289',
              OrderedDict([('input_shape', [-1, 1024, 14, 14]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 2097152)])),
             ('BatchNorm2d-290',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-291',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-292',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4194304)])),
             ('BatchNorm2d-293',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-294',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-295',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 589824)])),
             ('BatchNorm2d-296',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-297',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-298',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4194304)])),
             ('BatchNorm2d-299',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-300',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-301',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4194304)])),
             ('BatchNorm2d-302',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-303',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-304',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 589824)])),
             ('BatchNorm2d-305',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-306',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('Conv2d-307',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4194304)])),
             ('BatchNorm2d-308',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('trainable', False),
                           ('nb_params', 4096)])),
             ('ReLU-309',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 7, 7]),
                           ('nb_params', 0)])),
             ('AdaptiveMaxPool2d-310',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 1, 1]),
                           ('nb_params', 0)])),
             ('AdaptiveAvgPool2d-311',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 2048, 1, 1]),
                           ('nb_params', 0)])),
             ('AdaptiveConcatPool2d-312',
              OrderedDict([('input_shape', [-1, 2048, 7, 7]),
                           ('output_shape', [-1, 4096, 1, 1]),
                           ('nb_params', 0)])),
             ('Flatten-313',
              OrderedDict([('input_shape', [-1, 4096, 1, 1]),
                           ('output_shape', [-1, 4096]),
                           ('nb_params', 0)])),
             ('BatchNorm1d-314',
              OrderedDict([('input_shape', [-1, 4096]),
                           ('output_shape', [-1, 4096]),
                           ('trainable', True),
                           ('nb_params', 8192)])),
             ('Dropout-315',
              OrderedDict([('input_shape', [-1, 4096]),
                           ('output_shape', [-1, 4096]),
                           ('nb_params', 0)])),
             ('Linear-316',
              OrderedDict([('input_shape', [-1, 4096]),
                           ('output_shape', [-1, 512]),
                           ('trainable', True),
                           ('nb_params', 2097664)])),
             ('ReLU-317',
              OrderedDict([('input_shape', [-1, 512]),
                           ('output_shape', [-1, 512]),
                           ('nb_params', 0)])),
             ('BatchNorm1d-318',
              OrderedDict([('input_shape', [-1, 512]),
                           ('output_shape', [-1, 512]),
                           ('trainable', True),
                           ('nb_params', 1024)])),
             ('Dropout-319',
              OrderedDict([('input_shape', [-1, 512]),
                           ('output_shape', [-1, 512]),
                           ('nb_params', 0)])),
             ('Linear-320',
              OrderedDict([('input_shape', [-1, 512]),
                           ('output_shape', [-1, 120]),
                           ('trainable', True),
                           ('nb_params', 61560)])),
             ('LogSoftmax-321',
              OrderedDict([('input_shape', [-1, 120]),
                           ('output_shape', [-1, 120]),
                           ('nb_params', 0)]))])
learn.fit(1e-2, 3, cycle_len=1)
HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))


epoch      trn_loss   val_loss   accuracy                    
    0      0.303971   0.242417   0.921722  
    1      0.309993   0.239827   0.91683                     
    2      0.288534   0.23499    0.919276                    






[array([0.23499]), 0.9192759310662629]

Validation loss is much lower than training loss. This is a sign of underfitting. Cycle_len=1 may be too short. Let’s set cycle_mult=2 to find better parameter.

# When you are under fitting, it means cycle_len=1 is too short (learning rate is getting reset before it had the chance to zoom in properly).
learn.fit(1e-2, 3, cycle_len=1, cycle_mult=2) # 1+2+4 = 7 epochs
HBox(children=(IntProgress(value=0, description='Epoch', max=7), HTML(value='')))


epoch      trn_loss   val_loss   accuracy                    
    0      0.267461   0.235228   0.924168  
    1      0.270705   0.230974   0.922211                    
    2      0.240056   0.230974   0.923679                    
    3      0.238908   0.232905   0.926125                    
    4      0.223686   0.229831   0.923679                    
    5      0.212009   0.227405   0.924168                    
    6      0.199683   0.227282   0.926125                    






[array([0.22728]), 0.9261252481176895]

Training loss and validation loss are getting closer and smaller. We are on right track.

log_preds, y = learn.TTA() # (5, 2044, 120), (2044,)
probs = np.mean(np.exp(log_preds),0)
accuracy_np(probs, y), metrics.log_loss(y, probs)
(0.9315068493150684, 0.22650256548463946)
len(data.val_ds.y), data.val_ds.y[:5]
(2044, array([19, 15,  7, 99, 73]))
learn.save('299_pre')
learn.load('299_pre')
learn.fit(1e-2, 1, cycle_len=2) # 1+1 = 2 epochs
HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))


epoch      trn_loss   val_loss   accuracy                    
    0      0.215887   0.227493   0.926614  
    1      0.21398    0.224618   0.926614                    






[array([0.22462]), 0.9266144826337549]
learn.save('299_pre')
log_preds, y = learn.TTA()
probs = np.mean(np.exp(log_preds),0)
accuracy_np(probs, y), metrics.log_loss(y, probs)
(0.9334637964774951, 0.22243022015961378)

This dataset is so similar to ImageNet dataset. Training convolution layers doesn’t help much. We are not going to unfreeze.

Create submission

https://youtu.be/9C06ZPF8Uuc?t=1905

data.classes
['affenpinscher',
 'afghan_hound',
 'african_hunting_dog',
 'airedale',
 'american_staffordshire_terrier',
 'appenzeller',
 'australian_terrier',
 'basenji',
 'basset',
 'beagle',
 'bedlington_terrier',
 'bernese_mountain_dog',
 'black-and-tan_coonhound',
 'blenheim_spaniel',
 'bloodhound',
 'bluetick',
 'border_collie',
 'border_terrier',
 'borzoi',
 'boston_bull',
 'bouvier_des_flandres',
 'boxer',
 'brabancon_griffon',
 'briard',
 'brittany_spaniel',
 'bull_mastiff',
 'cairn',
 'cardigan',
 'chesapeake_bay_retriever',
 'chihuahua',
 'chow',
 'clumber',
 'cocker_spaniel',
 'collie',
 'curly-coated_retriever',
 'dandie_dinmont',
 'dhole',
 'dingo',
 'doberman',
 'english_foxhound',
 'english_setter',
 'english_springer',
 'entlebucher',
 'eskimo_dog',
 'flat-coated_retriever',
 'french_bulldog',
 'german_shepherd',
 'german_short-haired_pointer',
 'giant_schnauzer',
 'golden_retriever',
 'gordon_setter',
 'great_dane',
 'great_pyrenees',
 'greater_swiss_mountain_dog',
 'groenendael',
 'ibizan_hound',
 'irish_setter',
 'irish_terrier',
 'irish_water_spaniel',
 'irish_wolfhound',
 'italian_greyhound',
 'japanese_spaniel',
 'keeshond',
 'kelpie',
 'kerry_blue_terrier',
 'komondor',
 'kuvasz',
 'labrador_retriever',
 'lakeland_terrier',
 'leonberg',
 'lhasa',
 'malamute',
 'malinois',
 'maltese_dog',
 'mexican_hairless',
 'miniature_pinscher',
 'miniature_poodle',
 'miniature_schnauzer',
 'newfoundland',
 'norfolk_terrier',
 'norwegian_elkhound',
 'norwich_terrier',
 'old_english_sheepdog',
 'otterhound',
 'papillon',
 'pekinese',
 'pembroke',
 'pomeranian',
 'pug',
 'redbone',
 'rhodesian_ridgeback',
 'rottweiler',
 'saint_bernard',
 'saluki',
 'samoyed',
 'schipperke',
 'scotch_terrier',
 'scottish_deerhound',
 'sealyham_terrier',
 'shetland_sheepdog',
 'shih-tzu',
 'siberian_husky',
 'silky_terrier',
 'soft-coated_wheaten_terrier',
 'staffordshire_bullterrier',
 'standard_poodle',
 'standard_schnauzer',
 'sussex_spaniel',
 'tibetan_mastiff',
 'tibetan_terrier',
 'toy_poodle',
 'toy_terrier',
 'vizsla',
 'walker_hound',
 'weimaraner',
 'welsh_springer_spaniel',
 'west_highland_white_terrier',
 'whippet',
 'wire-haired_fox_terrier',
 'yorkshire_terrier']
data.test_ds.fnames
['test/ab2520c527e61f197be228208af48191.jpg',
 'test/8ffc8a83bb9ac7884a9420c97b23940c.jpg',
 'test/9f4bbcd8a5b189514d3098516983621a.jpg',
 'test/f77793be1597dd1ea50b22532b38bd23.jpg',
 'test/f719b425410b6eb3e3132702150affd6.jpg',
 'test/adfe7237864e2c4e28a0627f97527fa2.jpg',
 'test/7fec33e194124a985167075c40af7702.jpg',
 'test/2ee0a2da17019b2c95f5283c15a692ff.jpg',
 'test/c6d49ce66e3fdae87e2be8ad8fd402b8.jpg',
 'test/b6d38beff7efbd38934e383eecf063be.jpg',
 'test/0829420985a1d5b647b969d44af3e844.jpg',
 'test/07ad25df7e380e29aa4a5788a96cef73.jpg',
 'test/ab3242753d5b6a79985112a3cd63908a.jpg',
 'test/e9b105a5b7873f33477f777d5a9447f8.jpg',
 'test/d0d7f99b88dab4f9fc97be9af2cffde2.jpg',
 'test/59f8e54314ff4f560d615af6476c69cd.jpg',
 'test/af01e814dd0a625042c1abda80671bf1.jpg',
 'test/05fba1b035d12542ad00a38461b10c17.jpg',
 'test/a4116ec18c342040855024b6940a234b.jpg',
 'test/0bb63e30692f00bc7bf0ab5ac787b162.jpg',
 'test/e2f853c8345758faf5d9b2075f196fd3.jpg',
 'test/e66e1f3be08028cc17ea788657e014fa.jpg',
 'test/f1b2c118e65c95ba1a00d102787d19a6.jpg',
 'test/da23c55978faa8bd88db953c1f264549.jpg',
 'test/0e826c710afd789f8db9ff522a7a04c0.jpg',
 'test/1ba6e093c8af25d01a3602382312c339.jpg',
 'test/1c647b0875674bd1aba3153e6fc951c6.jpg',
 'test/1acbf4637bcce746291d39e8147efaa3.jpg',
 'test/9d876a62e20c672a72f8212c022f55d1.jpg',
 'test/f6244044c1433c7067e3129486612ee1.jpg',
 'test/cb8323065d4827069d53e0ffba2f0c84.jpg',
 'test/d8a6e8ffcba849cedc4c186eef224c65.jpg',
 'test/8594ae6003221de99ffbc5d9fa357e34.jpg',
 'test/e9615e7f30ffcf6d705ce9cbcb6d688c.jpg',
 'test/3728d6b1b7c0ebd9e4722ae7e709ec45.jpg',
 'test/b3346fab09a796c121e0dffe84268e73.jpg',
 'test/7478402a790ae8a04b5f3c4e2768c4cf.jpg',
 'test/c5e43e81eb8a4fd5a455898b9a858d18.jpg',
 'test/b3bcc2a3a94c70497779eadaef668d3c.jpg',
 'test/0328ce0d5f48e3dbaef86e830e2e9241.jpg',
 'test/6ae186b904e3cc8528591a3e50a48f20.jpg',
 'test/a8aa29593077a6407c7834eb6fef3c7c.jpg',
 'test/2269b48ab82d6b6feeb462c5f867819d.jpg',
 'test/f90ac8934d1349d115a4961c20ee447b.jpg',
 'test/7b37af62f102cef63ee44361b2a4bb2d.jpg',
 'test/d14bc7e00b69187953e6ac38209ab19d.jpg',
 'test/551ce3484383dc77bd5cb563a50bad46.jpg',
 'test/42feb15909b1a7da5d85bc1a2baafe47.jpg',
 'test/8646d62c1e40c6a1806b472508200b89.jpg',
 'test/c81cfe1f3434bb984f43cfb74600ecff.jpg',
 'test/2f90d005ca7d718be9377b94091849ba.jpg',
 'test/34a6fa4ebc327fc03164793636b1bfbe.jpg',
 'test/29e85e7dd33b3d55c72ff8cf8878a3fb.jpg',
 'test/5fedefbcfd02cc6570cc2a4dbc0c0c13.jpg',
 'test/a309c2637a49acc6accfda9eb230803f.jpg',
 'test/7937d9e90e6960aaccd74675d26d90a7.jpg',
 'test/2162f28a3151f4ca907a8a9d79492618.jpg',
 'test/291956adf955ac9e9776a8fe0db8745b.jpg',
 'test/b52c5200163243ef1aec04f34a68050d.jpg',
 'test/4d2c5271ca71c95234b78bc0910f3d04.jpg',
 'test/657459acdc17b85c06af605c1ab723ca.jpg',
 'test/025156133d8d8700f6c7027371b1b8e0.jpg',
 'test/29548de9a7435fccdcf228afe5fd221f.jpg',
 'test/5e193ae2c366405e230a53daa4fb7721.jpg',
 'test/b44cbb609e863c0aa906322507df3e3c.jpg',
 'test/21174614214935ba20a7be058b29033e.jpg',
 'test/d21a8021f66adc2ea042290d5e1d97ca.jpg',
 'test/eeffe08e577ad8dda81bbfe12bf8faea.jpg',
 'test/a97fbce11cf35df434835888150ceae6.jpg',
 'test/9bc5701373a8e4cb3d64d75322a19f9b.jpg',
 'test/8e38a2da3dc51eedac2153c37b9b2ad6.jpg',
 'test/0e8d997db26798c7c1612847319973e5.jpg',
 'test/8eb4d197b67a2ee9670ab5576d568328.jpg',
 'test/69e231ddd06ed66f4517f695908c7e6e.jpg',
 'test/d049461a887cfddf49953b3e56d89b9e.jpg',
 'test/3740097cc690e3a0ef05e078cc6a37c5.jpg',
 'test/3b2642968aa7fd5883577aca00ad1458.jpg',
 'test/aaae20eed76f8015d6994955bc30076c.jpg',
 'test/72470246b6d48c951cbc8c853c5a6bba.jpg',
 'test/42c10d2fdabe41a8d0f3120025737fab.jpg',
 'test/2f7b43f07134ad69bf36ada8d90939ef.jpg',
 'test/3a6122ad0c4f104d1d36b3cf644896da.jpg',
 'test/db3b5c710e99f6a5d09b8fda8eeff5a7.jpg',
 'test/1b220f74609a8f2015ea898471c0674d.jpg',
 'test/bac5e3f6454352aec23245bff7a10612.jpg',
 'test/d7cbc532e819d760ab9e418654cef03f.jpg',
 'test/3ee1025997b782f6eb2ddd20cd0965c1.jpg',
 'test/322543f668826f158650c94714a832db.jpg',
 'test/b9005a0f449a339ff21a3bfc0068cf45.jpg',
 'test/87e316f956ffcd34bda2dc49d84a9739.jpg',
 'test/ef1710d5cb79a5e0b46f7b9a101a25b4.jpg',
 'test/0d5b801bfeff4eefb3994b8fc59bc2ff.jpg',
 'test/eab189c5274b79b36dd566fea4e9847e.jpg',
 'test/ed67681e7935d75f9ce011dbf8474fe4.jpg',
 'test/7b3a9c2f5f01acd4846bdc65f4190ece.jpg',
 'test/2e87338a89f13b429485cedf8ee89206.jpg',
 'test/6f5b716569f463d9a0519f3d8ce0d33b.jpg',
 'test/8341f50a86c819b3cb8828740a97e7ef.jpg',
 'test/940d587d69cafcbc7bdd88ecc5c82829.jpg',
 'test/c2c9364fa0fb2347fef08f172bcfecd8.jpg',
 'test/3a98899438c614970758846618857045.jpg',
 'test/87f26de902396e2db022e604ae91f15e.jpg',
 'test/ddd7f84a932ec7213b9c1f6de8c09262.jpg',
 'test/2a83319c4aacda676534a6b77b2ceb20.jpg',
 'test/2f1b46804087ade2b6c210125f34323f.jpg',
 'test/de327414ced20d4e6f786a68bff82e10.jpg',
 'test/2753689addaba82e4a90e51dd832d11c.jpg',
 'test/978860f8b3fc9f0af9041d1285179206.jpg',
 'test/87e67ad3d0620a61ea7cc95a3e17f123.jpg',
 'test/5c451b205045be2ba89e5308e0ab505c.jpg',
 'test/1b176552396034ed1c864c3adb6cd16e.jpg',
 'test/4252288f9a9b3d363b17060ef0f5f99e.jpg',
 'test/7ec8e254a7a22d7302c101b814cb48b4.jpg',
 'test/667c969a3a1d19c86ca7e6ab2f877832.jpg',
 'test/0684c3415499ddfd78e945c725066034.jpg',
 'test/6479fb9f458435d91d0d066004c2fc33.jpg',
 'test/53cb184b5e5ce7ef5488fc21f6c32ec2.jpg',
 'test/902b5ce26b286ed9883a9b6a5cc814d8.jpg',
 'test/e47bc25097050ba689b64de02c725837.jpg',
 'test/9810389b3ae0ecc305e4fde32397874f.jpg',
 'test/fefafa1c1b5877561330d0a0fd4d5440.jpg',
 'test/3b48fe220307f1b42003918b0fb48a84.jpg',
 'test/515e5d592804cbf2b8a5d446eb194468.jpg',
 'test/32d1d7ac227098b3f964705d5f651236.jpg',
 'test/d2dec608053c1cf80cae8116cd470cda.jpg',
 'test/13557ec58aad7410efbc8f843754988b.jpg',
 'test/9eb06361f4acb2c2213e5ae32e640653.jpg',
 'test/4777d63bb8201678d8de585843272ff5.jpg',
 'test/463ffe453648a5cf157f2d24551b2b1f.jpg',
 'test/725eb0f0b9b1cd56bc1715b8d86fa845.jpg',
 'test/9bcde951cb5d820636881a8e81eb7951.jpg',
 'test/65c792d01f8d25d7f6aa45a679261340.jpg',
 'test/fc28e20d3e3ef312a15b2255e0ba77a6.jpg',
 'test/459ae8de71479f5bcc14ffef240dfead.jpg',
 'test/4909fc5b89f974fa007c12ba62ecf785.jpg',
 'test/197b591a10fe82030b1db2c3bdee8102.jpg',
 'test/40bed16bb4157c6d9a2fe340d563ff35.jpg',
 'test/61dd794deb9841564d9643dd5737370a.jpg',
 'test/4f0b2dbc23fdef5f939144f456a62140.jpg',
 'test/85624000301b28c675b431de0b67a98a.jpg',
 'test/8e7ca18f952999b5f678f7f7843d9b6d.jpg',
 'test/e3a55cc9c91da472abbced51d98d6ff6.jpg',
 'test/03205e3e568c87e1568a8415272a8da4.jpg',
 'test/084585fd8a9fcef3c7261669cacbc1be.jpg',
 'test/d2f9fbdaa33d1bc99a4366b350022994.jpg',
 'test/905267bd815441ff829cce3be24c6d71.jpg',
 'test/3836dac7313ba15526cd031b72af37f1.jpg',
 'test/4a346ac767ff900e8cc4c4352b57d6ee.jpg',
 'test/5d10fc611701eb7d1fb8bf2cf4df7aed.jpg',
 'test/e15513ca7ebb4730731f34c25e906502.jpg',
 'test/71d8ea950f6312b766d75d6ad8ac3ba2.jpg',
 'test/57c8db20a559e22dcbd7b7363c378287.jpg',
 'test/e1b0cbcf3235fe9a7b35c1652081ff8d.jpg',
 'test/7613042504cd73273ab2607cf518ba92.jpg',
 'test/b49d77d44fff249f62118af19f3468c2.jpg',
 'test/58657786baaa98ea777000c3a3b4e899.jpg',
 'test/5489187518477ed3110942da76c30f91.jpg',
 'test/57ff0f64f17597e00f58aa6db0392f83.jpg',
 'test/00225dcd3e4d2410dd53239f95c0352f.jpg',
 'test/c90109fe5971384b82dc9d4085609d5b.jpg',
 'test/3e764ad13028326c980cdb1263e70ef0.jpg',
 'test/69be99b844287176383f857ee406df75.jpg',
 'test/9cccecca16c742f03c63da72b19e4d0b.jpg',
 'test/214e5c3f441c8608c29eb76182b3f66a.jpg',
 'test/aa8175f0fd2d1a16d75dbb339b372a5b.jpg',
 'test/b9e8990b15b719aba1e1621cfa63f636.jpg',
 'test/4e06ab5e4129cd603e8a5df22ae9dcfc.jpg',
 'test/0e0ba1c25d4f30cd8a6b87ecc54f38b6.jpg',
 'test/2dca1e75b099224d925c3512a8bf252b.jpg',
 'test/7d48bba12b3f425324b987bfc3fef74f.jpg',
 'test/d6434ecc4fcc7c8fe4b463e956481de1.jpg',
 'test/d9d9c99f2c03d23f178441f8713798b6.jpg',
 'test/05eb4d66296f21bc9782688414fdbe17.jpg',
 'test/8f7822c77aa8149639490731c09b478a.jpg',
 'test/61307a91fa0311f071c568faf1a372c3.jpg',
 'test/452e58a7cfc482391e5ed7a25201f446.jpg',
 'test/844a8bc3ae10f267e8838fecfa5871fd.jpg',
 'test/9a9f274697e2d195724c3e9f466eef25.jpg',
 'test/dd2228d2fbb3ddc8fb350106c2d989ef.jpg',
 'test/ed0c3f827519441d3d542944978aedad.jpg',
 'test/d354419a80463739ce343ad80c3a906b.jpg',
 'test/70b9453812ebb5a91dc7860b2b26ab87.jpg',
 'test/e4b7ff61849485992246c0f2ab7e8804.jpg',
 'test/1439e842cb9f8b2c3fcc64806cf82728.jpg',
 'test/8ea913fc454a2628a5012d0dde92678c.jpg',
 'test/98ab98e40fc6786a5441eb6a1ef628ca.jpg',
 'test/84706e80023d20f30f1cf4f69741f9dc.jpg',
 'test/dce8d03553ab29570f67a28bf0ee0709.jpg',
 'test/45d5e4a25b7fc78c4439f6be2ffd4540.jpg',
 'test/df9ee3c663b1f2ca84781c09fa8c31f8.jpg',
 'test/762c598988525da91610c46e7a690343.jpg',
 'test/969b6b76b1e57682cb66eb18d24918c9.jpg',
 'test/7ebdd13f29a86637dffab6a2bf6945a4.jpg',
 'test/3bf061e6985f4b74f622cc54bb1cd5fd.jpg',
 'test/e43f6e621469f438f351d31d889b839f.jpg',
 'test/94e6990e098745b875219aa29b53e05f.jpg',
 'test/61a2bf4fc6f35bff211a298b6fc23d8d.jpg',
 'test/fcef727e767ef68b3973bfd25ad41305.jpg',
 'test/4c7fc253026fa9f6bc8583123692633b.jpg',
 'test/c9f781b5b98e347b854fb8cfaf0328d2.jpg',
 'test/693f2b472f62bfb69ef2a443175df06d.jpg',
 'test/ca8bf19cb287abbbf9cd8e1d8ea41355.jpg',
 'test/61e105759437e35bcb9630bca0e6bc7d.jpg',
 'test/23a849cf21f4a759477f1013997af060.jpg',
 'test/615499312d797d41a24a386cf7049b31.jpg',
 'test/dcddc9135d0a138bb83a55bbc06adacc.jpg',
 'test/bcd3f3f8402b5b476ca6d6c5fe1661bd.jpg',
 'test/d16cf4793e35e275e539cadfa7d1196d.jpg',
 'test/bd324712e1758b65a450dd065b384b1b.jpg',
 'test/fc0f848abb459c9dc98c455356788516.jpg',
 'test/e1e6d180a31b0a9c0d741d0f142ea6af.jpg',
 'test/90e3c749b540a5399091d9aa79c6498f.jpg',
 'test/10c4c824396380cbc41c36f28b1b9baf.jpg',
 'test/4e5db847af4d184dfc7a2ccee550432a.jpg',
 'test/bc7fbe41176e246289fed59d47af17d7.jpg',
 'test/4692b7d214fafbff4266a3a8678a1fd6.jpg',
 'test/2cc09f27c6e1e8e88172367cea8c3780.jpg',
 'test/6d1f9d9b9da664c396aef5cad54a8ed8.jpg',
 'test/e35b90290702042d17ceee2aaf2d1475.jpg',
 'test/90a3e77e8802823f857c32d281f3397b.jpg',
 'test/5bdecbb70e574f7427bfc869a7311ff3.jpg',
 'test/d4084988b2bc28dcc901be3666bee7f5.jpg',
 'test/7ba0334452749bbb7c49cf75c8a5e949.jpg',
 'test/988d031d16dbc136432726cb3bb53294.jpg',
 'test/9cc2fe1b331667444eb25b60deebf645.jpg',
 'test/436905a18153b169c71cc3ab7fb2091c.jpg',
 'test/36ad4269f38b87653eb7aeb70101f0ae.jpg',
 'test/9eaa7a13f259e77cd0b57e824ac7cd8f.jpg',
 'test/77c922894ce01be17d3016a377f985d1.jpg',
 'test/9a5d178c8e74fcd1363759ff679989ae.jpg',
 'test/f9c1fec06778d69677c24dacfb9f4840.jpg',
 'test/32c9cfccb110a85a09a1f5ad73bedaf4.jpg',
 'test/97d4ed796a33f67ebbec96b7ecc2dc22.jpg',
 'test/4d306cc7f5b127fe31f6094c0f3fbc09.jpg',
 'test/426dfd819da9c855bc00123b2cb2aa09.jpg',
 'test/29ee32e55ed89846115db9088e4cbada.jpg',
 'test/2972fed195a90795186fabc9ff7e409c.jpg',
 'test/a0b7a24c1fa6ddbb4a648ea7b8fc4eb0.jpg',
 'test/d18faeca0980bb364e31d69e662b3511.jpg',
 'test/0a0b97441050bba8e733506de4655ea1.jpg',
 'test/c01ef8dd3edaaa5cd03cab3b9a4a7fd2.jpg',
 'test/78eca7a75e7f42a5699e5801eb56a46f.jpg',
 'test/3ed792220e96f6c5eddbc4681da9b2a5.jpg',
 'test/f681821203c5ff0a675b6f998767e4ab.jpg',
 'test/3e45415cd08b2cef738fe2e373123daf.jpg',
 'test/890bf4dfb17c971e1303d7f57577c841.jpg',
 'test/522b3f3f94bb5deebebe2c43fb2e70c2.jpg',
 'test/6d41ac100737f33db95996bdae59bad1.jpg',
 'test/6d68a6ba3914c95014efc8dbb1bc2c72.jpg',
 'test/a3dbbb37c62f7cfd4e1b4d2795aaf7de.jpg',
 'test/3a43689ad0c3a2a3989cd670697fb7de.jpg',
 'test/5ba6afea1f5e415f5a6e762f4fed0344.jpg',
 'test/42d47502a728ebb752db63871329f09a.jpg',
 'test/129107cbe7b96bdd10d61811c8f70686.jpg',
 'test/283109fef09eb536e61f334e6945c7eb.jpg',
 'test/f7fda1184e21dcd0cb94086cac9ee762.jpg',
 'test/cbf2d65fae046a5aa45bb3ed58f838f6.jpg',
 'test/35a0b143e2927ad5d6125e6b33312c9a.jpg',
 'test/6236d7ce8173737bf3caf7270184bc76.jpg',
 'test/02804190c4ffc82b073d9f0036f66bc6.jpg',
 'test/9bdee231306efbac04ef1280c2ab2fa0.jpg',
 'test/7015592b41f682ee0604ab1024fde5ab.jpg',
 'test/8ffb64ee0970306a0b01f7a2a8da73eb.jpg',
 'test/0656e4606d4a98f2e8c8452416ac1ea0.jpg',
 'test/58c35fe95f8466c8136550467d5121a7.jpg',
 'test/578bd79f99ac25b93362847a6e505e21.jpg',
 'test/6c750aa0f0f37f89d942b674279b3bac.jpg',
 'test/61bca8b109157bcd0bbcc083b6590e3b.jpg',
 'test/e0d51afc60c25eb2205be1644af09cc5.jpg',
 'test/15e1e7f0c942bc77e04097abcf18f6e3.jpg',
 'test/93102b5b9f01ffcf30ddf0fe2cb17a59.jpg',
 'test/4068db24e52f8d67c667d6b035036b19.jpg',
 'test/d5292fc676d046dac6c1d29e2a03e3a2.jpg',
 'test/fdf6e6be8630044c6d14df570849cf44.jpg',
 'test/37e091359191cf82e1d2adc38d5f0c64.jpg',
 'test/e65d6492c026c925660d80543664b8a7.jpg',
 'test/3f999cf1693fa903bf7dd6164dd46e59.jpg',
 'test/8e25febdc662f5e500efe8ba2cf44cae.jpg',
 'test/4ef2b99d3028844d067feda58dc5f1f0.jpg',
 'test/feb308ce2a7ad3d84e84807efae21518.jpg',
 'test/ca97512cc0f458942025ee480023bc95.jpg',
 'test/14c184c41c90fdcca3411e730ae4737c.jpg',
 'test/8c543f881fbed3b143f8eef96968514e.jpg',
 'test/8aa49bb2a9dddc1b22b98c31689f9e38.jpg',
 'test/b7b0553cd3215f530ee06bd126630c3a.jpg',
 'test/8e649b689c5f156ac0c0d0a7ebadf965.jpg',
 'test/fa717a1532249d9c0532378c80c46c8e.jpg',
 'test/37f91f5de2d6ecedb6abebff33d7fa17.jpg',
 'test/52c2021a5ec2aa05e841df52b6a97d41.jpg',
 'test/a04ec5d3e358109699247c1d60dd6d2e.jpg',
 'test/83b3a854863d6e7047bee089969663ff.jpg',
 'test/59f49b780e38528b3234abc5842eff67.jpg',
 'test/379c3539bed019806f08b52163cbc2d2.jpg',
 'test/3c12e379d2378cd7a996bdeb825e3c10.jpg',
 'test/065e0b70a690e06a826885b454622928.jpg',
 'test/53d336cdfe574e917155b300ae3e5cca.jpg',
 'test/95e14fef6ed902998eac129ec69fb805.jpg',
 'test/2775e3092b56166daec6df4a38a14368.jpg',
 'test/50f60661565a02c5b96f446f089832e6.jpg',
 'test/c4e5a86214f9ac9b28c7381009b708ca.jpg',
 'test/496e85b1192c522cae8b0a7919ff6ae9.jpg',
 'test/4384fc6887440d1d46dafbd0a6bdad71.jpg',
 'test/ef9432cc6dc7ab7ba38d18abffe6d1a0.jpg',
 'test/7cb70171e113b88bf215260c25f55d2b.jpg',
 'test/35aaea679a279ceec46f649f0590f325.jpg',
 'test/4a5d85b5525bf424f90a2928a13b047d.jpg',
 'test/d00a9cb79ee6edbdb0e683de51a8f50a.jpg',
 'test/20d1255f2c5c32baa6c0a6cbb659a184.jpg',
 'test/4d99cb036a4b902a121201ffaba48965.jpg',
 'test/f73c6b6891b3e40a6bc9dd26f4e65767.jpg',
 'test/174e1bc31c5da607dda786cc43eeaa50.jpg',
 'test/38727f56b82312db412d2df2ef718bb6.jpg',
 'test/d6cad6b7f0a8a36e58a1f98d71e823ce.jpg',
 'test/ef4c9b0875ec51068b2720a01fa36b65.jpg',
 'test/6063fa5fef88446f86b8081bdf12d9e6.jpg',
 'test/09cbd98c55f58ad0535b5066c72e6e42.jpg',
 'test/f4a2ee1dd5542da8b0150fe8f7a2b7c3.jpg',
 'test/09612c47e84bcdf06c8e5a99ac1a8bd2.jpg',
 'test/6cd1a9cbd3d52ed1fd1c07630dd77505.jpg',
 'test/6d15ae3e88e32472a777752502f5ef61.jpg',
 'test/afb7f1305285c47c360c2a21284425cb.jpg',
 'test/4ea0130ffbe06871063bc51d23894b12.jpg',
 'test/18c3a6f7569d115f3663e75677565550.jpg',
 'test/63f945388f3013dc10f8e2c740ad9552.jpg',
 'test/e06fdea86b416e992137ad52bb5da5a8.jpg',
 'test/22dfa94e131e840a76e4961c3455004b.jpg',
 'test/ad889aca15b6168db4dd7133ac5a8ba4.jpg',
 'test/51dc2e213c35d513d9759a29eb652472.jpg',
 'test/da7be6ae218a4e5addcaa34cfb2d4fa3.jpg',
 'test/0854e34e53c9dd84579d4c37086dbdf5.jpg',
 'test/fb0416a56859decbc1f5f6994687b16b.jpg',
 'test/d4b35622d0df5814f4056812d7507e50.jpg',
 'test/f56b4140707da82fe91cb9e5df4ce68c.jpg',
 'test/ef413ae9b0de80605bc95de2d12a4082.jpg',
 'test/2bf6d0177046ba8936973513f3eafce0.jpg',
 'test/6dde5ecd74b830cab77c57dad4f39024.jpg',
 'test/f10c58048410333d9c4156046b0ea54f.jpg',
 'test/b1040aa860eed1715e03883b94764c4a.jpg',
 'test/3304bb6f7dba8b14fb7ff61bef70cea9.jpg',
 'test/e55534e27f92b4c8177ed2beb1cbba7b.jpg',
 'test/eb8473f9fc102c45e0c0abd07de20a2a.jpg',
 'test/f90ace46a8ccf051f6f7ec783ad8e258.jpg',
 'test/33d4943b93b8c14459ec8a7c5d35cc25.jpg',
 'test/420ca2f011341d6e70558c6e2b46b258.jpg',
 'test/ff357aadc868c7b38e17bd5b87de31be.jpg',
 'test/06e9d34793f7cb6915f3f2b2e6f7fabe.jpg',
 'test/5ef10a9edd5c5bb11c1cc4d5a4df566f.jpg',
 'test/429003ca7c11f0dca8153c427316baeb.jpg',
 'test/9e1198eb00e2bb4cf66dffdc0abfdcec.jpg',
 'test/3fed2e25badf7b5e8c12a4b71098e132.jpg',
 'test/cd0a8261be06236f76518a976d38c071.jpg',
 'test/0954e09deca15b755d04a7826264da61.jpg',
 'test/c4011f49046784b517ce9e0a47ed3013.jpg',
 'test/c6866b837d54f3f136250e02a79976a0.jpg',
 'test/eeb73a13b70170c416aab67eac15fdfb.jpg',
 'test/9f57531651e9b35af426537ad10fbc57.jpg',
 'test/77fbc571d85238151072c9ef7d0f4c9e.jpg',
 'test/6c4a4565e1d0906cb370d01efe64ac16.jpg',
 'test/9d6923ebe18f316321de8b27da18ed5a.jpg',
 'test/5bad43e776606caab0912c9e7f0e75ff.jpg',
 'test/89838ed67f3fed8e3c66a2d697de47d8.jpg',
 'test/d90cc1b8fe0ac4fddc6241579378103c.jpg',
 'test/e91ffd67dd303f59029d041ff4fb65b8.jpg',
 'test/6dc95536e52a5b170b7ae72b6a1fee58.jpg',
 'test/f45014f665123584d3588802ee020bce.jpg',
 'test/518e16d098116b14a9ce2fdc4b80c06e.jpg',
 'test/b7389c527b5ba629b036d30bd74a49ec.jpg',
 'test/82ec6bdf968a14923340179515ce5546.jpg',
 'test/88acf79ce25c72f682e272e658725726.jpg',
 'test/7f55af43e287c09bf1b1b2423c1942ed.jpg',
 'test/364c84967c6ecf534c54cf06e20fc3fc.jpg',
 'test/cb54c8c517dc12da27e5a3b72f1a1411.jpg',
 'test/1cc56ea149a97f5c3b7844bdfda095d0.jpg',
 'test/c55000d37452394e64cd05c99a645e4c.jpg',
 'test/7edf77f00dcc7151013e71828cded079.jpg',
 'test/5f571aa094aff976ca384870f58f21ae.jpg',
 'test/6423e27d0255a4e237adb4993c229d26.jpg',
 'test/e3f04efb648b110b2eb04b9c041504d8.jpg',
 'test/3bbdb72ff6a0ad3b87077ff38b3ec468.jpg',
 'test/1b6828700205a5552e8ab2464647021f.jpg',
 'test/afdf981978119904e3303015913f4a79.jpg',
 'test/01cb4c4d181a23e157429168e948fe5a.jpg',
 'test/069f97f28c811705453d84528a7af240.jpg',
 'test/df86ba50c4d0b597af0d23bda37eb10e.jpg',
 'test/9d5350d6dddfb91fd8929607358de3a3.jpg',
 'test/d6312b7f6caf8db9d5fc88bba505813c.jpg',
 'test/c22ae24c27a5cc9096f25f1fe438259f.jpg',
 'test/22f8e7b687205a4a6a6f0ffd3bc507e1.jpg',
 'test/e71d9f32ea6eb1c2d944e8f4e811c209.jpg',
 'test/7328b1eee0be05c80f119753aa4623de.jpg',
 'test/f928a71d3356833e8c46734938c04cd7.jpg',
 'test/df577444ba8b7733f42c49e9d42111a9.jpg',
 'test/e4729bf465eac43afb6b04687d4703c3.jpg',
 'test/4d87c82f9698058f80a90e55e6376c3f.jpg',
 'test/1fdcbe1bcd80c118461512790a250e67.jpg',
 'test/3b81256ebf571a6af1f7be482b50cc7f.jpg',
 'test/c8a02332902fb932af7edb0675ccbf75.jpg',
 'test/0c6176b396e31ce7666185aa435be7e0.jpg',
 'test/6afa4800e25bf15e88599895e90b67b4.jpg',
 'test/3d1a15fec91e3648daaf273373a1c03d.jpg',
 'test/32df03ced7bcadd5594e95c2f461c05f.jpg',
 'test/2a23d2cc0635ee44798c5a0497927ac6.jpg',
 'test/722f83aa7a932ed3d8b3f7dade17a456.jpg',
 'test/86ca8cf0f5a914825f88d62908d5cb55.jpg',
 'test/ce28dda9cd9cd616d38527b263bc292a.jpg',
 'test/b19f7853f6b2b84a99fc3b7c8a8eaa64.jpg',
 'test/7852e7963247e079c2df5b542ba5db89.jpg',
 'test/4df248dcad4b6629b1a830070900d321.jpg',
 'test/9b348ce9f36574e99cc664f5aa8cf5f7.jpg',
 'test/fc50b817f059dbfff5fa1857d7769cc2.jpg',
 'test/f0ceb5eb780eba366f9a077486fe003d.jpg',
 'test/43333944508ef210c0a8dc5c3700a90c.jpg',
 'test/e440ec011c3c7ea94838ab5fc466159c.jpg',
 'test/08b34271d7d196d13bbeeea99504e099.jpg',
 'test/8b842f121c77fc2ca1eaac41fea241cf.jpg',
 'test/3d47c7d4b52c2d609d318dfcc416f839.jpg',
 'test/3b4bb3f2db01a65beee775a04313b25c.jpg',
 'test/255a2dcc7259be7f3591dad9c9043366.jpg',
 'test/92d8c1fd586f6565c82d6828335cac14.jpg',
 'test/6a44393dbb58504bd749db6cc825255d.jpg',
 'test/92c5cb90c59782ec6b87ddad45216295.jpg',
 'test/8d243d285e72a16d8c266866f5e6738e.jpg',
 'test/f83d03d1949ebedbbe8bb49debac8af9.jpg',
 'test/d07116a8e1777f6d360aa434377f32f1.jpg',
 'test/1cb17b18aeb47d13e7bec401cc42e79e.jpg',
 'test/5e071adbfa8d739c1fa3d5015ec6028f.jpg',
 'test/09d5118c848bc579eff8cfb669fd7aa1.jpg',
 'test/6a7c935d30ed7694422f5e74093082ca.jpg',
 'test/6f789dbed826fd84e76b697730f6e70c.jpg',
 'test/c2cfcfebb375fde437807ded4c172460.jpg',
 'test/7b1883b3c99c234dc623b842ce5cfb63.jpg',
 'test/e9b16b4bdf5b0561fc7c69b2f36e1a7e.jpg',
 'test/75eb74a82c3dfd4d8b20c8165f273707.jpg',
 'test/94cd0c3d8776791a957b9c8e53bbdf6b.jpg',
 'test/78e0d148de61ae803d373c5a7e65a228.jpg',
 'test/ec25ce11616bda2e8b7669c415128768.jpg',
 'test/c10d6f9e470ee1be933d81f8388c92fb.jpg',
 'test/dd3eb4338145e614d325a917a35e5a1e.jpg',
 'test/2f1ce585a580daa2d3ccdc51bc8b66ad.jpg',
 'test/d9ad7f21c3efa2f7a9bf39835214b5a5.jpg',
 'test/05bb6919c2dc679ea70ffc632f68ee2b.jpg',
 'test/3839723ca994957060885ee8e69c97c6.jpg',
 'test/1a38ab01d6a18a4693a57125fb7f0370.jpg',
 'test/6951fc251261f1c8148a518bee464126.jpg',
 'test/a562ab222aa5c4ea685da464c74ec8ba.jpg',
 'test/fb0aa9d598d54e50963be105661944dc.jpg',
 'test/1aa65d339d033885cabcd9ea067cf4f1.jpg',
 'test/950618805a891d92ba13229d237a0b86.jpg',
 'test/5a87f43ce9ff04627459d1caddd8c36d.jpg',
 'test/86584e58605edfc9ef50fef65beac0e2.jpg',
 'test/f86aa3a7e56a78d9931710865d05632d.jpg',
 'test/8d4c922dc3b59b2ad867ebeeca0d187f.jpg',
 'test/e4c743b9aaf615dd5fe162bf25f82fb5.jpg',
 'test/176db83947685a07cd11fa338bc629d6.jpg',
 'test/e411a1b3681604f6321af7cb8e8f2de7.jpg',
 'test/28e205cf6a6ff6f12b261eef8305766f.jpg',
 'test/3a438bd21a911c958c26351f8c65863c.jpg',
 'test/f37106dba00385993428e7c557b15805.jpg',
 'test/926655bc5ed1284e29fbc8d6e232757a.jpg',
 'test/32079b3920b2060221ea265401d93b62.jpg',
 'test/8a8dda8d9a2747ebfeaedb7bfcd38e19.jpg',
 'test/1be3650327dcff01488a0764353215ee.jpg',
 'test/6ae629d5ce69859d99f19646b9480910.jpg',
 'test/9dcd7b11a8912762da46d5f69732e505.jpg',
 'test/5f341ee24ded57979d4cd6a0839de824.jpg',
 'test/1eaa414c22931039f4e8b9502f88daf9.jpg',
 'test/4c2d4c51a554a781b69adae6f7c27643.jpg',
 'test/1ae26ef205f733fbb084c8aeae253b25.jpg',
 'test/cd3a666d082b6cb9a44ddb1dca5eedc9.jpg',
 'test/d8e7a8dd3d639116edfad1a9d1463130.jpg',
 'test/0dc570ec7086bab004a7e357164c04b8.jpg',
 'test/24f3f3e9af7ab0f4aea5b1b9cb0c0ab5.jpg',
 'test/55cffce6ffb1167881fdefe1615dee87.jpg',
 'test/4ec9d65e78c1c468ce371c4141d0d301.jpg',
 'test/b3076a6451bc471a6e2f05961de08aee.jpg',
 'test/f1fdf296d0252b3dfb46f1bfc37bcb63.jpg',
 'test/df2ce797bf398414aac7e20119c17cb6.jpg',
 'test/4cf0fcba95a9fbadc5a7ca4d7d01bbe7.jpg',
 'test/6f7c713bd7dec32b0a8d07dd4822d256.jpg',
 'test/e3982348ad8b974cef2298f741bc3c99.jpg',
 'test/223d756d28558360245944689cc2a988.jpg',
 'test/79829c383cbbf0aafafc5baefabd69ea.jpg',
 'test/d15e9804516670c47818f0f8258192eb.jpg',
 'test/525fd146a1434d54b38e75ca89e7c066.jpg',
 'test/dcdffa00518844bd21499db49979f9c8.jpg',
 'test/c24dd508285cd0484772e5a1abd87d3a.jpg',
 'test/bc6fc592b894e75a837a9c31bfec8655.jpg',
 'test/eaa65260eb9a2f7d3b5484ac97962788.jpg',
 'test/2fe3402ae5732b553ee6cb6076544fec.jpg',
 'test/a561fb8f5db3f033a2d01fefd097c94e.jpg',
 'test/c69c44572a5df3b7a9ac93e9071453dc.jpg',
 'test/d6d08fe634318194555a9419180d4ab0.jpg',
 'test/16c99eae8d1d81d632d5a76fa9448a68.jpg',
 'test/5cad010642dd82c686e4b8415eeaf347.jpg',
 'test/151b1e8efd6f63184058b983e10ff829.jpg',
 'test/70ef7f40159718bfb3683dec7c125b4b.jpg',
 'test/13b6f9b3dcbab9a4ba4b5c3de3cd5f6f.jpg',
 'test/4ec6fe076b150ca77641a4bf676d89c4.jpg',
 'test/329d3d6fea50b2ce65c611fd5b31d1d2.jpg',
 'test/bb0c7d7af4bdc0d3646afaf1339a15f2.jpg',
 'test/0110fb82ad93572bd6f5dae4b048037d.jpg',
 'test/e2888231cedd08540816e629c0733922.jpg',
 'test/cc8599c4a791441bd97a511a9474403d.jpg',
 'test/f407f19970c6d8d516722e899adc599c.jpg',
 'test/85c78df191958f1751aa118e6d3021aa.jpg',
 'test/f96722fdd8a6a0e9ff86eee619cec34d.jpg',
 'test/faf757243722ea255b9b190cd251b9d6.jpg',
 'test/db11b427fa998df38056fb050debd8eb.jpg',
 'test/565205413fb320b9387a99d344545b2b.jpg',
 'test/9dc6dbeed6a6cfc487456999acd35ae6.jpg',
 'test/25ba0484e0c90b93cefc170e5489c2f0.jpg',
 'test/768d51ef6eaa0b1ecf85b59f0fb832ab.jpg',
 'test/e2b4d6b6590fa2941e74238248093eb3.jpg',
 'test/574953f707e8c12b0349ca4c6fea9e3a.jpg',
 'test/b370ddfbcc1d5f3f694d424a3a9d096f.jpg',
 'test/74a50646dfd99459faf8c1a626c53795.jpg',
 'test/000621fb3cbb32d8935728e48679680e.jpg',
 'test/a1cb6364a59b4820943d1b4ff58800ec.jpg',
 'test/3a81b80e36c91964a3f01e5813a22a79.jpg',
 'test/610555087abc35e584044750d7154609.jpg',
 'test/56d6c58aa719ec8d4f8f513800578f8c.jpg',
 'test/67d17625287f1a4b64124f6065ec8701.jpg',
 'test/517ecc5a496cfff2b6372c26abe4c91b.jpg',
 'test/91faba2e7bd694aec44c6d91e386445b.jpg',
 'test/1228d5ff93a39830f6c36012a106f4c5.jpg',
 'test/9e72af813948e3349bc6b3454b4a6e52.jpg',
 'test/5c4503ac01840e7a9307b5e33acae248.jpg',
 'test/7b1fddc813adcb2b3519cb590d82f62e.jpg',
 'test/982457d7157c74ceeef40725a8412002.jpg',
 'test/7b4a5c0a390fc553a71bf4fddb4b05aa.jpg',
 'test/a0d9fe41fcaae599e8e133cd8a0ee688.jpg',
 'test/ff8f9a768544fda79ffad62576f4d129.jpg',
 'test/5325c84dafeec70d457b992795294317.jpg',
 'test/4de2ba963d28c9ade288ec40ba54afb9.jpg',
 'test/ae9b177d97d0d08bc6f1fd5a592ccc13.jpg',
 'test/538e7a043f4435bb7b4be8fbdc73f2d9.jpg',
 'test/9041d7c2bd1af2418962950cd8a2b885.jpg',
 'test/3fbeb111e0468e8c23f5746738054efa.jpg',
 'test/93f5a3810fde3ddc40ccccab4dc0487b.jpg',
 'test/48a865b32601a719b6748c194c8351bf.jpg',
 'test/dd7bf84df93991b7c15ec739c82acc04.jpg',
 'test/a2e03e4bca79b6858bdc707142dd8391.jpg',
 'test/6a393de9df49d1e313f0a3dd42aa2815.jpg',
 'test/7ca5580d25264b2454908b5346ff3281.jpg',
 'test/0a51fbac72fac75df279e18e4b1c042f.jpg',
 'test/e3c97ed588b32f49c7aae65cf91f17ba.jpg',
 'test/03af64f714d918ca61ba22d011816beb.jpg',
 'test/71cd1ef653a545062093510ab36004b7.jpg',
 'test/900c2fdffec1ca6956208ff7a236926e.jpg',
 'test/e17512584de423da7fc17bfb2c7548ae.jpg',
 'test/7cf2350be70ed2d335a54952fc6bb30e.jpg',
 'test/10dbf30635323f90703abc5d76493902.jpg',
 'test/1bf8b6d0b362943130a9fd6b2751913c.jpg',
 'test/0ae4367c7f7149a43b0e5b1c07ce7ed9.jpg',
 'test/d5029b3d5fb11beb988ea56e0f19e2e1.jpg',
 'test/7ee7bb563c55c1e40edc29928a5c0162.jpg',
 'test/65bd5879ec1bd32bd87a1c1ab54a0014.jpg',
 'test/c2d87315df1b02017edd04f30f8b60fa.jpg',
 'test/7490f284d304412d3641a67d298a094a.jpg',
 'test/7046540577c4b66cf19936231d391b8e.jpg',
 'test/dff6d0e5746812e0e5808c0e69a20574.jpg',
 'test/cedd6b0da3b4070ff7c7a185b85c7504.jpg',
 'test/49c5c75c9477167654a1c41937a866b7.jpg',
 'test/201bdc6f7a8b0fde297d1291fcd31380.jpg',
 'test/9bf93ac268122f8985cd9dcafa2e3a85.jpg',
 'test/3affbc524a54d1dcdf58bf0c3b96153f.jpg',
 'test/1c082570531b3fb68e82f06695d89de8.jpg',
 'test/067e053858f0cdbc2417c0ce58cdfafe.jpg',
 'test/c72a0bdabba7a8c21f04683e98794a23.jpg',
 'test/683036e204cc9f8ddfbe56c3d63ffe01.jpg',
 'test/b9aecb05c7f833a31f5e7e9399812332.jpg',
 'test/d9ff293c85c9263083b0369b9bad654e.jpg',
 'test/86c2d71776b76d0c7acdf34a87b7f9c7.jpg',
 'test/6544e8463854c7d6ed90258bd413ef63.jpg',
 'test/73bd84ab7916a285734b4a89a50ee247.jpg',
 'test/6e6a470bdb033d53a5c997833d86c6f2.jpg',
 'test/6ddb1d1a49efa4b83d83f30ffc409458.jpg',
 'test/52154f155ae6ba4b812cd18113ad7453.jpg',
 'test/e4ba350279796ff15c3a634037a6f88e.jpg',
 'test/c5120a58c8b044f3968bb8bf8c281ac0.jpg',
 'test/53ef70b153e67576e282924876d3f27b.jpg',
 'test/e427b9e1ab1b7f09cfb02ac073f56f2d.jpg',
 'test/204c040a1ddbc2aec6d5e4b4d0e03c7e.jpg',
 'test/b0362cd1e195639de7b1fcf70324d40e.jpg',
 'test/8d7be90433c849873a2917b4cd0b9885.jpg',
 'test/769f02384fbd98f2963699b8cd891572.jpg',
 'test/15eb91d38d13be03d41639899e923053.jpg',
 'test/77cebfd9254b131e6d25ec7ba5195276.jpg',
 'test/4c4cc4c7b3fa4f5b1567ecfce59bf34f.jpg',
 'test/c17f8c8203cb68424ae67a010c354924.jpg',
 'test/bdebc49101b9af7ba9e46182661dc4b5.jpg',
 'test/a354ad4e3e240da15462005e40b4583c.jpg',
 'test/c156f32e908a46a6b4bbef72f6223905.jpg',
 'test/ae323e40a7e64968fdb2650078de7cd7.jpg',
 'test/d472bed5237cc2cce18007ea5ab43d4b.jpg',
 'test/3e2c021f8d38b7e434b926e12424a016.jpg',
 'test/65bd007dd322ac49c62bb86195e529ed.jpg',
 'test/4beff00d6b5285d5dff491a494da0220.jpg',
 'test/d4bf6045e3453d9a2cc117d3e86a1e00.jpg',
 'test/52b0846e26f28f8f1a1899ad98481782.jpg',
 'test/30ef42c5c84b11fa3052524706687bcd.jpg',
 'test/cace8abb5880d8042cc79832eedbbc8b.jpg',
 'test/46782af314bc08de257d893c3128ac4a.jpg',
 'test/d814acb8ca7e3288d8ac5ed47407f662.jpg',
 'test/89262d9a1f00dc5aa300905f58cbde69.jpg',
 'test/5b3c30550768b2ad4a53fcd023e8cbb4.jpg',
 'test/4bf924974410498a1d52d9eb45eb0703.jpg',
 'test/5028d2d148171673158c6ec80c03d8e7.jpg',
 'test/df47feaaf3dfb33cf712cccdddc8060e.jpg',
 'test/1c84ca95720f4b60129fd44085fdaa40.jpg',
 'test/3a7d676acddfbd7f5cb3fceab8cd3aa4.jpg',
 'test/8356f99f79e539a97028b1e4af918c43.jpg',
 'test/bddd379859e4fa187b1874b9e061597d.jpg',
 'test/75f8a13ae05b56eed204a33bf99287ed.jpg',
 'test/f7d150e11c972c850159603843939b28.jpg',
 'test/8bc098fd981ba69ebb346b6a1608b0b5.jpg',
 'test/a78056d00ebb14a104a5d7438319e81d.jpg',
 'test/28f7fbb3750d3256de932c58000a4c33.jpg',
 'test/0db3f774655ada5d6f78f2a3c31fd295.jpg',
 'test/3707f315aececfd4d4bf7953b75bc68a.jpg',
 'test/d7759e463e93114b57e12c56e7a13289.jpg',
 'test/c627411dae091af961dab2988c35923e.jpg',
 'test/9d97ca8c85b481e7b1245cd65ec8bd5f.jpg',
 'test/0cfa9ee8a8e0912bb06bfd575f70bfb7.jpg',
 'test/9ace4c5cced4fb88678a5b0a9b3f3cf1.jpg',
 'test/0cc2a9144cd3a2292a108a28d68c17fe.jpg',
 'test/d9cc62cf60266f824731f8a4e70ba718.jpg',
 'test/ff766d48f0804590391df24f73cb2118.jpg',
 'test/959bc1618cb81e9aa244a52db1246076.jpg',
 'test/54c746a1470981b3e80893a0c8a5f973.jpg',
 'test/f10241d199251db359961e814733efc5.jpg',
 'test/5dac8f13467994de6ba778df1cdba3fd.jpg',
 'test/da18208afba4420b0333c7fef7642ec7.jpg',
 'test/0f21800e7f10cc35725b82d34da94ce8.jpg',
 'test/58885a79643c3a480aa9dc2ebef7672c.jpg',
 'test/32b4850ac87ed096cfe5d583ed95f156.jpg',
 'test/5cf394488058748c8bf816140dd02107.jpg',
 'test/04fc2616e5e491538a989b7eb80d7860.jpg',
 'test/d16f5acab90d41f1ac0014944027d490.jpg',
 'test/1b3f21283d424bf4034571b58b9530bf.jpg',
 'test/c52df09d15f0e89580a937fb49e01a6d.jpg',
 'test/2de3603e679bd3174a0a2464611bf21e.jpg',
 'test/0630bc53549c1169cb9c081907a8cb05.jpg',
 'test/8584099bbb10d51cc5b88ef5c8645198.jpg',
 'test/ffd06687c72445b0c6e8a130a0a8711a.jpg',
 'test/0298eb3d74444d2c405639d51c220bc2.jpg',
 'test/1cd2f85ce25710e78d9531ac24f46746.jpg',
 'test/fbf4abbd32d544ff9b5df6af25eec3e3.jpg',
 'test/f603da0e3cfff2ea4d792c96fe5ebac6.jpg',
 'test/957379d51e207de4885b41d0b1758d8c.jpg',
 'test/0169ed6715e26c0c5fb460941c8d3bee.jpg',
 'test/74e40c5277dc098324dfba2ae27c4b22.jpg',
 'test/5e1940d82de5036864fb3a44fa49bd7c.jpg',
 'test/8534fce6132c02ccb01f71ff64a80b16.jpg',
 'test/4e3440f75b37f3d13c0d8c025b30d337.jpg',
 'test/f28b4d5899f9db2a2caa7a3361c847f1.jpg',
 'test/f2e4e4f1ab9d156443682dc4653f23e5.jpg',
 'test/fde6a7af1944348eb4ecd1268f49a549.jpg',
 'test/545c3279db44dc7c00ccded6eb2ccaa3.jpg',
 'test/9f6611b8dc4ef5b77e18135f713f8a4d.jpg',
 'test/9b5ff522c48a66c4a85eb418ad4a0ed0.jpg',
 'test/4dc316028cd0fa65ba6bf0f65f40c62b.jpg',
 'test/f1167eabf53759dad015f0abb813a451.jpg',
 'test/56e9e806e409775f6d292b66b8855b1e.jpg',
 'test/534c23db9b723108381515a30c3ccb6f.jpg',
 'test/581b48f1991aa16b4a365716fd4f03ff.jpg',
 'test/8217c57f3ce8505a6a262a0583720f13.jpg',
 'test/e806fbb5ca4dd3a094f7819bd810cc65.jpg',
 'test/3006a0d7c9e93709001323cccda8998c.jpg',
 'test/3510f5450c79d0ba4083a1b92195fd80.jpg',
 'test/341bd8a802798866f6fc1d13bfe53a34.jpg',
 'test/a4086a730b6c5011be6eee3bb3b92463.jpg',
 'test/cd20118a162237be1423e800a6e5094e.jpg',
 'test/ff1ed16edf355507ee740a67a6391d48.jpg',
 'test/12c3287c880cb83dfbc9cbce3d2952be.jpg',
 'test/e2a9a7580a1424bc6531b2b7375338db.jpg',
 'test/4f7ec53fb020dfd90ac36227ab8233dc.jpg',
 'test/66d14166c9c17b9915c8b8bd515c04a3.jpg',
 'test/2046b1decc5a575e3a48b42c88adcd62.jpg',
 'test/831ef824af939f9754e3593638933b64.jpg',
 'test/03a6a4c713d657d53a804ebe1fb2b02c.jpg',
 'test/c0d45b04b7b427c973c71ad23b6a77f4.jpg',
 'test/7261882b948e7bd67aa9bc550bf02b18.jpg',
 'test/0fe91bc1fe542f04aaf9a010ef37c2b6.jpg',
 'test/699dcd6bebbdc49511b62dfc6facc779.jpg',
 'test/2f8ea7b3242838538dba2a258b3a24fe.jpg',
 'test/1509e27988119ea9293c2df2fc1b4b45.jpg',
 'test/6548529f17b333f7db091b2f181a64c6.jpg',
 'test/193f80c24606fdca6179eff987fdab9b.jpg',
 'test/3feace6790ba6eea2aef34f198e43025.jpg',
 'test/37d4c66da9bd8843fa926df8c62ae26d.jpg',
 'test/48b28d4c1e91b59599d38edb646b9d0a.jpg',
 'test/f7b0596d6f3a5fe9006f04de9cf4ab0f.jpg',
 'test/70cc4624a1eb9b0f0587045819143b62.jpg',
 'test/f13011a399f175d88c17d2bd1785625e.jpg',
 'test/e0806e5049519130d459dd7bd640a092.jpg',
 'test/ac606d827479c6635a287e7af1b7d434.jpg',
 'test/84e3a6a1d53e886d97f65411489969f0.jpg',
 'test/af3bb35fbb65c50b2e707ff686f98f9d.jpg',
 'test/768f4beef760032a8808c6a84ac03d77.jpg',
 'test/27ccf0e035abc33fb6a1e8bdf23c5f86.jpg',
 'test/3dd28f8e10a898adef51f60755f87091.jpg',
 'test/4afd081346193226bab3dc456d80bd3e.jpg',
 'test/e85291fc6ba44e39defc7769fa020646.jpg',
 'test/dcbe4226672aa4af80c1e52a9bb78268.jpg',
 'test/9ec7ae3455863d4df0a46f4cf597a574.jpg',
 'test/34394cdd71e596d6e80f565e98201cf8.jpg',
 'test/a139581faa6b04f7d4c0e87107e33a01.jpg',
 'test/d5c2ce713cfdb56cfbb9aac676aabbab.jpg',
 'test/1cf32e9b62b2f1a60a5d009dd57cfe5e.jpg',
 'test/798219c15b8a5ba54fa5d09772e9e1ea.jpg',
 'test/967898f6705e9c4dd97ec7c8f8b1956e.jpg',
 'test/0dd0c324a6f4a599756b3b750165c41a.jpg',
 'test/2072d74918f4fe253aaa75388822d81b.jpg',
 'test/7d9da7c2bba40fde7997ce09bd2737dc.jpg',
 'test/8d18204baf2bb27dc39b00aa763c784d.jpg',
 'test/f51f6aeea8a23b6bd62728fde8f04ad8.jpg',
 'test/7dde52cb616a94fbadd8b077c8e8d920.jpg',
 'test/4969b10897e61fd900c75460de04d6ed.jpg',
 'test/9c4b7039ae06959859cb1369d6450079.jpg',
 'test/b65bf33d0e0f70e3fb54e6868d800842.jpg',
 'test/3968abbce18a685b3e5089dc6e212f12.jpg',
 'test/b6198ed26acdf1a18797f6f0403217cb.jpg',
 'test/f3ea1d71874433a4fe775deb9e95923a.jpg',
 'test/0c84d273699cada291a635c6edd33390.jpg',
 'test/11a126ba3ccaed35f95547b5f787ea61.jpg',
 'test/04d36eed15fe648c54a88e0b5c49deb2.jpg',
 'test/c7f10024f9092537b1601bd02980fb83.jpg',
 'test/b1caee92d84ce6c100413a1f5cc32460.jpg',
 'test/f8bfe5da20567378b885109a0c1f1483.jpg',
 'test/40f82d80552497163082195b42365163.jpg',
 'test/bf9a109dd391229fa06b3a34bc1470bf.jpg',
 'test/c0871a1b55afad116c7e5bf1d1cd0906.jpg',
 'test/f15527e7a063275291e469b4e5db751c.jpg',
 'test/5ab0a6516922e1cdb1091f054fbefff0.jpg',
 'test/4caa48ba96c55c71aa0edeeb738bc080.jpg',
 'test/3a111de3db21bfd37e6a6e0089f794c6.jpg',
 'test/01d333d5c288be97bffd76005f559f41.jpg',
 'test/1f77317084a554666f37473a8a95d91a.jpg',
 'test/b117274991d2dc1ffa0ac863f16f11a2.jpg',
 'test/983a02132f38c20bc351b99ed83eca64.jpg',
 'test/02b9adaa40397a4977b9646cc6c939dc.jpg',
 'test/83a8010c4b5ab0747059400f473ac668.jpg',
 'test/ba57c17dae7055ef1c54c479262fee4d.jpg',
 'test/2cc021273be838847ed66f9bafc21cca.jpg',
 'test/af0a63ceff8e64c65e48ccd7e9500499.jpg',
 'test/81fcf88f635727bce89a31142c8a4007.jpg',
 'test/180f2e2e8067fe2213130b1fdc469b26.jpg',
 'test/17a4665e63f73d0f01089a4e153c33c4.jpg',
 'test/a6359b148d774fe2b542e4c1b9369c02.jpg',
 'test/6cdff5325cb35cfd44447b9e4f6cb7b4.jpg',
 'test/c87b574003ac9568970b70f29702bf85.jpg',
 'test/5310f15815c30b6c5b337356b36cb454.jpg',
 'test/97a0a4b27e8f12596482e4f6487786cb.jpg',
 'test/8dc7ff54ae077a63cd489faa94684709.jpg',
 'test/c0b5a7f03d80626d3c13d37ab78544af.jpg',
 'test/fa541fc080cdeffb4dd98da99f673a59.jpg',
 'test/985ae7fc271ac4a0d131e546c0f95bb6.jpg',
 'test/d4b63ba8b6558b29f55bff96af795d09.jpg',
 'test/9ec769e34bc902bd9de458103e9347c8.jpg',
 'test/62cc5d37bc91403eae2561975c414579.jpg',
 'test/6a9316ea62029983934dac25c7cfe48e.jpg',
 'test/2a1c9159aa46a15c749c1013e733adc0.jpg',
 'test/6715a492eda68acd37e28a54218c2504.jpg',
 'test/391ec9ea882a52642e078ca64df2563d.jpg',
 'test/02efe659755a4c9d2da69035c43fa5fb.jpg',
 'test/e12731c30619c3fa4b0d9d9a76fb9d60.jpg',
 'test/5711e271dfb897a1a13d2d94ecada80e.jpg',
 'test/223a2071464f05c2ae405762b9ca3af6.jpg',
 'test/836aa8b45420e8bd70b9cf2eb4f9e093.jpg',
 'test/b52332e896a5a47cc4d2c0dc15af0359.jpg',
 'test/74d2b7992b831108009f6aeb36fb9181.jpg',
 'test/36edf3ddc4934b2d84cc940d4f6e8c99.jpg',
 'test/e246de79e4efd1145698d9c21466bbaf.jpg',
 'test/cff15c13208f1b99912a8a5aa7e4b96f.jpg',
 'test/cb2c1164402b5dbbb3eac54d3a4dfc49.jpg',
 'test/9a2e6ecc4f7bd1578d8c55f8eae0dad7.jpg',
 'test/aac5caab05224706d9c24f294a71f247.jpg',
 'test/2d7c2ac3fe912d9545ba692490b45d00.jpg',
 'test/f57f8ce3fe1d928828e37a9bd78574d9.jpg',
 'test/60a1d91ee68cef5501a0d692cf43a7f9.jpg',
 'test/b3bdba23a9105fe502fc2b661f215cd8.jpg',
 'test/c52405e4e5afb93a6ca775008480a41e.jpg',
 'test/cc91dc262bbc0c73241ecec6ed53449a.jpg',
 'test/463dc2054f543877c4225543ccc16a4a.jpg',
 'test/f6bed54631ef1691d12509f5516ce979.jpg',
 'test/fab7c38522b8bb9e71626f6f1a384d8c.jpg',
 'test/2e3ccd5230893d0e07e9ecf6d58be3d1.jpg',
 'test/09db0bb220cdbbc0adca63e38e64ab38.jpg',
 'test/324c9e2d778e15146858832009999fbc.jpg',
 'test/4bddac4bf91f5b45dc8104db791deb97.jpg',
 'test/4b3f79ad4f44d990cc7456b2d50309e6.jpg',
 'test/3c70bfb583de9c18043aa1f33765521e.jpg',
 'test/a87389ccf3e82e66fcbab9426d4f50ab.jpg',
 'test/d51d2d0962d57067d5ec9415a5af46a1.jpg',
 'test/6da8dcfeceb87b99ea1426189512c2de.jpg',
 'test/2fa13e03954dee3e1816a5b4ee1bb75b.jpg',
 'test/04c7f6600b20b9255b04a76fe6e55023.jpg',
 'test/ec363521d5ebd5260944823f86dc5a8c.jpg',
 'test/69e9ebfeb9dff1365e790a3c71c484ea.jpg',
 'test/9306ca2491832795f90dd0cfe4e54e4a.jpg',
 'test/8f87f0bac19b72a9919681fe3d4922e9.jpg',
 'test/ba0875164edc17285ffebaaefbfa030f.jpg',
 'test/ab3c567523ef87f50bfb41c1308732af.jpg',
 'test/b3ce3ccf5096e1c894595bb1f3b467ed.jpg',
 'test/b5f8d1f0aaad28634e56139bd630de97.jpg',
 'test/64081b6b6635b3a772e3b8252d67ec08.jpg',
 'test/6a04011c7f2dd08d455247ccb8ee7ab8.jpg',
 'test/bd80f2d9d300a2162291270312312980.jpg',
 'test/6d311b0eb375237cf49c7918600019ec.jpg',
 'test/0c82ccebd8e7cf9b232fe9b294863c69.jpg',
 'test/0a28fe94aa27ebd0fa587c8a474117a1.jpg',
 'test/07e4edc428816ffe6b8dd1024bed2782.jpg',
 'test/f7ee03c39d8a094c75de991e24e4ea55.jpg',
 'test/add5d56a7c6f2691ae9df6e79851d404.jpg',
 'test/735325a42aca71ebe25d7e9b7d86fc91.jpg',
 'test/218af675b2c2ca9b86f1362c32705930.jpg',
 'test/63d381a8b806b56e3c155dd458a66646.jpg',
 'test/f5dcef15272a806b4f0824e9199e9dd5.jpg',
 'test/e96fd30110107e506de94d81af346238.jpg',
 'test/744f9a2330a9a44c500905a4dfdeb377.jpg',
 'test/01cb83d33e905e825df41b88dd4ef277.jpg',
 'test/2ac416c42469d263085206aa28509a2d.jpg',
 'test/e6a544a538088cc3f73b432a2da90134.jpg',
 'test/9049b9691e1712142a78812d1b70fc08.jpg',
 'test/c60d1576b160e11ec84cd1009e275485.jpg',
 'test/667b068c74813ece3880ba1a1253f9bb.jpg',
 'test/ffbcda9eb84339cc5be15fd9900596a2.jpg',
 'test/d730341f7447906720fbf47286796f7a.jpg',
 'test/0467770f34410f3fafd2482342d69f77.jpg',
 'test/f6b8af035c42b6836bbf90d0a457bcb4.jpg',
 'test/dc2b0a19e725d1a257411433277f4d89.jpg',
 'test/7ed71c10cced08b6b069a5b7b5785932.jpg',
 'test/d6b0ead1d782826364fe2f6a149ab372.jpg',
 'test/388edf10377674a40c25915d64f4f377.jpg',
 'test/82d61a26d714398bea3d82e5ace7538a.jpg',
 'test/99bd95316f9796c59072e84932ad33f9.jpg',
 'test/995839654892fb3ec7b8d98529bd43ba.jpg',
 'test/ddf0164ab3a269b179051bdecaea34b0.jpg',
 'test/49a13d472605473ef3f9b2e4f638d700.jpg',
 'test/94a681f65f37fb3666c07b89d4d7a071.jpg',
 'test/528f88ec0b2777c70694d7c776733e56.jpg',
 'test/25d0ef34c87dbdf118fb714f0bc3e59b.jpg',
 'test/5b0e3a9551edcca11fcf565bb78d8c49.jpg',
 'test/beeaa698e9965aee5ec860c59af3faee.jpg',
 'test/c67c132d99386fba1e1884a850d1ea98.jpg',
 'test/416085f568b12844c1f53173f9343396.jpg',
 'test/ffd304c521f43819f3824177fd9efeb0.jpg',
 'test/283a2612ccccf684b2796dd8e4a5ba13.jpg',
 'test/b2193a53c04ea9192860fece3f4c2d99.jpg',
 'test/a408e776f8b93ce22a3542a89218820f.jpg',
 'test/992e80ea2cd1549a5f71b04e4430e529.jpg',
 'test/606aef954ca30806168d0d08e52a4dbf.jpg',
 'test/59fa36da3bd77c415052d8f88ccaa309.jpg',
 'test/077b4c62007a362be52711169abfa4fd.jpg',
 'test/ea057ca7f831d161d456091bf293e4b1.jpg',
 'test/f1f42942df460f38181e12ebce695b5e.jpg',
 'test/f09826fc9cb9aa425caae5f8aaaa8bef.jpg',
 'test/ae5309aba5975d0829624bdced152bd3.jpg',
 'test/e97a63b529b7b274eeb605391366b576.jpg',
 'test/dcfd3463e1d23d51b309b0385292870b.jpg',
 'test/62f0755b86cceef4244c9bcbce1b68e5.jpg',
 'test/68ec9cf5b73b91f6506ed9e44e8260af.jpg',
 'test/4f5f35204ad2b401c1d00557a1dec1c3.jpg',
 'test/b47d3815322795664fe4b6dbef27b6dc.jpg',
 'test/6d1eb0d0f02a3cfabf08e5b84ed54eca.jpg',
 'test/1e2dee5f2da505e30bfdfcc7eb89797a.jpg',
 'test/2630ca901a4718100cdf780996c13da7.jpg',
 'test/6969c077141fec2c23f4b0857056fc9c.jpg',
 'test/3a1c97e85aaaf6810c1f5a8c9250a6a7.jpg',
 'test/bba293dd06d11a8b7dc78bfca28059be.jpg',
 'test/796cc4fe56597d3e8cfc9595ca1454de.jpg',
 'test/023c0a9675c4e09e7de76be0fad3d52f.jpg',
 'test/bfc8e5fe6c364c4aaec8d053047f0449.jpg',
 'test/09ef5442c370eb7eeb08e6796c5ff5b5.jpg',
 'test/cc5a5b9075877cdbd4b8466baf984eca.jpg',
 'test/89d11c210c761b3a76b8eecc307b5610.jpg',
 'test/4645835f6bf0933136a1b1cd0f6bfc76.jpg',
 'test/dacf001ddba61650b7cc587b8db2f50e.jpg',
 'test/b4e2d6ecbe6598c745494980f97a02bb.jpg',
 'test/03a6fb1fa2d7812587004a60ade66fed.jpg',
 'test/f1af835a9146d6ec0da8059b3a55c030.jpg',
 'test/ab065f522488afe09494c124342957bd.jpg',
 'test/7ac0624c677fdd6a38956d720c27b0a2.jpg',
 'test/2fdbbd37a896ffa757fedce3c3816aca.jpg',
 'test/7155718b5d167587c440f5f0ecccb872.jpg',
 'test/38374ec73cff11ea2be55ab8b4c54dac.jpg',
 'test/387a2439a7a65ea7ae52a2029339d55d.jpg',
 'test/de3fbd6fb5444fcf14390ac90545c2f1.jpg',
 'test/b1aeb449e903e417bb1a0cc677912336.jpg',
 'test/8a90cb35ebeb872781026fc3e28a3dc5.jpg',
 'test/c970c9cf57b8ff9eccea685bfd6f240e.jpg',
 'test/b89095325ba8d3d588834e35f65ca99c.jpg',
 'test/fdedb2f8f3687f8e51e84236c65b65c3.jpg',
 'test/ad57aa30eb969a3a70acc9504a73a82c.jpg',
 'test/1638e407075b037a3f024fedaaa0953d.jpg',
 'test/5d1e83adfaac47f754f16021615fc8bf.jpg',
 'test/207d0a7a27d3e4d9ab33860a18b78383.jpg',
 'test/42541eeab49c96ed08d45d209644d72f.jpg',
 'test/f863758735a6cc504d4a80477591eaf6.jpg',
 'test/93fa4194758960a2fffec91162579467.jpg',
 'test/b19a8a426fe7b91c890e33f5622fcced.jpg',
 'test/7603a1e5ec7825b354d3d9f2dc0f6059.jpg',
 'test/8a6f0c3be55e8f27fe5bc3b45562fc90.jpg',
 'test/cff0b4780b519e569f3478550504b02f.jpg',
 'test/9f04a42304ebbc558a5cf0c3f46541b3.jpg',
 'test/4ead408f81b09e617882bcad28bf7593.jpg',
 'test/5b31ecb5b59db8f507a274b00346065d.jpg',
 'test/4a692ed4c770d44d6ad825b7f43b31ca.jpg',
 'test/b964a6ca60f81c19e84ad0aaa9ed6f88.jpg',
 'test/8c5d04891180854184b470daf88efb96.jpg',
 'test/401536ed0da2548536a4d27ff1c0a463.jpg',
 'test/1119c5511941dd992da0f8f66b34e55c.jpg',
 'test/6038406f41bc0e669f4226c5e85dbcd0.jpg',
 'test/38ecc3fe3e67ea1b84f57148e9d0a7b6.jpg',
 'test/16816a9d4db979b3abc8c92404ab67e3.jpg',
 'test/35dacad1732794561c26e1fbf41aae8a.jpg',
 'test/bcf559a914a8fa20ebd5375c48edd8cf.jpg',
 'test/54b9c175a57ae7c7e6882a7528c621b9.jpg',
 'test/e090f0f0ebc83ddf5f649a841493868b.jpg',
 'test/f90b4f4adae580c4a2ec4fd9abad05da.jpg',
 'test/4338b655b34c0548b089958e1574d7f1.jpg',
 'test/00c610a43b661e4fc612d06db96ce258.jpg',
 'test/55df5326067d640b519c4378142b7509.jpg',
 'test/a62f5e5d7278699eefc195d747d71b7a.jpg',
 'test/86ca62033ae44453b422ebac07cc5678.jpg',
 'test/cb1ce9f296f8f6674a580209897ee2b6.jpg',
 'test/a72f76609d31cdc67067eadcae0c25cc.jpg',
 'test/9de87aba130f43ecffe870790873e219.jpg',
 'test/fce0949968f07d3aa97fe09c9a8829b5.jpg',
 'test/c909aced4dfea056bfdefd302aacdb84.jpg',
 'test/fc9f45447f2f2bd82a6072afbddfd78d.jpg',
 'test/5f96e33cb76a8432116d5ebdc0ea82cc.jpg',
 'test/87023197f17451a7e2a4bff944933f3c.jpg',
 'test/2dede0cbedc90b1f8cebd7fa22860536.jpg',
 'test/329b1ef3e91e807eb6135475ee947e30.jpg',
 'test/e6999e18a8e98f7fc33cf520d26ec521.jpg',
 'test/c769a926643b01af05e875ac984fd581.jpg',
 'test/12e5137dc606e09c78c9b27a1891ea87.jpg',
 'test/80da6ae51731dc301360a3b59e061fa1.jpg',
 'test/91d861224055c595b63e569d41426637.jpg',
 'test/b62ddfd5351da8588789b51fd8536e03.jpg',
 'test/36939316bd5dc74df7e0c33e76074408.jpg',
 'test/614ce0f96addee018f3a67a1353b17ef.jpg',
 'test/a51d3e5b0a81f025f424fa4e8b107b4d.jpg',
 'test/8e78fefe5b7612a131e66a7fe616309a.jpg',
 'test/f409b8113b2c2ab861131c4bd1c0b029.jpg',
 'test/40f063eb33c657c5acf19d7de03a77f2.jpg',
 'test/d9b0c0bc4de8b19e3452fc477ebdf5a6.jpg',
 'test/138a5ce524f0ef30818208492eb169e3.jpg',
 'test/81826a3ca9365bed0cad9483709b8ede.jpg',
 'test/2b560c80aaede000ebb101ffee26bf14.jpg',
 'test/51372c1a40ee47e4377de1c2b6a6a250.jpg',
 'test/fa85d9951d7996c4c92ce5dc41d87dcd.jpg',
 'test/28dd9823c2208e68fd2f93c152e2a627.jpg',
 'test/4b2467c1983c45f0805f2b7e3d0ffc39.jpg',
 'test/75102525aca966cdf5d1dbaf0a3f8ee7.jpg',
 'test/c7232f1365c363c18453cda2063f59a9.jpg',
 'test/e78d3997b4e7f4abc1299f81b8e3b2d9.jpg',
 'test/74b133bbc2d4ece626394bdec13d702a.jpg',
 'test/0e7c2ef54e84c8d021e1c0ea96cad523.jpg',
 'test/45668507c4840614dcb05e8b894aa6c8.jpg',
 'test/59c8495a3ce67b86d473f57e29078ec1.jpg',
 'test/0609652d9cc0aa749ec8995ca35fd370.jpg',
 'test/ffb55dbaa32939c109ef42df0668e077.jpg',
 'test/70c49ddddd138d434b33d1e2a1331a5d.jpg',
 'test/18b7dd028d5537cf5e02885bb18ae82d.jpg',
 'test/1432736589ff3278a536203f0725fcba.jpg',
 'test/c7de91df0ee7f9e871deefb4de110201.jpg',
 'test/70efe451ba9832194a9fb10d577914f9.jpg',
 'test/cfff42adc2db5fe6d452d17d13163e87.jpg',
 'test/6b7c98326b6a8ab0c0d0210a36f25246.jpg',
 'test/fa98e0dd02c4fcc5b5155a1fdaa2cb13.jpg',
 'test/8e0d7d2c224de1d5716d7a69d7854d06.jpg',
 'test/f20017c781603ca2d286361592b12dc4.jpg',
 'test/f5fb580dfd19890f200eed7010cedc3a.jpg',
 'test/443245a5bba869e596fb05d2d0eb63e1.jpg',
 'test/e24877545b682257ca77ae600df1fe37.jpg',
 'test/b79c8019e5558042de2fd1105defec28.jpg',
 'test/812b49cbbf51b0088b0a0c5b3f87958d.jpg',
 'test/2a6a5308f9d82b7d881cc02e13ebb41a.jpg',
 'test/e061b8d24e7b1324a6ac92ae81fdda19.jpg',
 'test/6aa7ea7a603a49723643c2fcf923dc1f.jpg',
 'test/fa9f99318fc70441c150beb46013e63c.jpg',
 'test/8b0bb138f43faaeafd1c52ed79ce0067.jpg',
 'test/9b0551f43a078d038a235b928cff6134.jpg',
 'test/1bc84bac2727d3f657e923df00a7bfef.jpg',
 'test/899205b9082a382bcf11ddffd0799c41.jpg',
 'test/2126c54600e6166617024e79e99b98c0.jpg',
 'test/81d8b3e2791c6ec14f67b7069874ac60.jpg',
 'test/2106ac37944c94f7c1392030bc5160b3.jpg',
 'test/c0135fc7aa154a17bfe4f626e9dd88a8.jpg',
 'test/e1f7ec4bd372612f53411026aaabf233.jpg',
 'test/dd7867245d5c104fffb5afe027e41cd1.jpg',
 'test/b7651433f6a59fa4032e0e689714c65b.jpg',
 'test/6fdc2563e0d2f4a2bb3dfd173740503d.jpg',
 'test/3e28214a2703c23fea7489ef20810dfb.jpg',
 'test/e4e57083c3b68e91760ce6f5fcd0a2f9.jpg',
 'test/8de2344aa5abe9737fa484afaac5d4c4.jpg',
 'test/dd9d222a481e6cbea922a1b601a55a38.jpg',
 ...]
log_preds, y = learn.TTA(is_test=True) # use test dataset rather than validation dataset
probs = np.mean(np.exp(log_preds),0)
#accuracy_np(probs, y), metrcs.log_loss(y, probs) # This does not make sense since test dataset has no labels
probs.shape # (n_images, n_classes)
(10357, 120)
df = pd.DataFrame(probs)
df.columns = data.classes
df.insert(0, 'id', [o[5:-4] for o in data.test_ds.fnames])
df.head()
idaffenpinscherafghan_houndafrican_hunting_dogairedaleamerican_staffordshire_terrierappenzelleraustralian_terrierbasenjibasset...toy_poodletoy_terriervizslawalker_houndweimaranerwelsh_springer_spanielwest_highland_white_terrierwhippetwire-haired_fox_terrieryorkshire_terrier
0ab2520c527e61f197be228208af481917.957505e-082.723862e-082.435847e-081.173262e-072.351215e-088.401931e-061.372760e-066.317406e-083.063393e-08...2.080939e-082.456473e-072.722122e-075.030101e-081.900935e-076.053991e-073.839476e-085.778787e-081.575098e-071.075539e-08
18ffc8a83bb9ac7884a9420c97b23940c9.668808e-082.355516e-082.087995e-076.298836e-083.269388e-082.796247e-072.439702e-082.535878e-061.824919e-06...4.051576e-083.540100e-062.388073e-079.832689e-011.823956e-072.486797e-088.325348e-089.363868e-072.608415e-073.851193e-07
29f4bbcd8a5b189514d3098516983621a4.214103e-052.804878e-044.817631e-057.178330e-031.471457e-061.140446e-051.950280e-047.519415e-061.821058e-06...5.793181e-059.164357e-051.187949e-046.772134e-065.031822e-054.772470e-056.114125e-062.762433e-055.382648e-042.682866e-05
3f77793be1597dd1ea50b22532b38bd232.568105e-072.491144e-077.142457e-071.466020e-063.212435e-058.274229e-083.600422e-086.044879e-081.201969e-07...2.627351e-063.965855e-081.560448e-066.965169e-081.856623e-071.051336e-071.763770e-072.664481e-073.316928e-089.700193e-08
4f719b425410b6eb3e3132702150affd66.095974e-062.696717e-064.131879e-066.457446e-051.191631e-033.560664e-053.274512e-062.229157e-061.317608e-06...2.345266e-061.053057e-052.322353e-054.169483e-051.918868e-055.647749e-065.437289e-065.297930e-063.867970e-065.011518e-06

5 rows × 121 columns

SUBM = f'{PATH}/subm/'
os.makedirs(SUBM, exist_ok=True)
df.to_csv(f'{SUBM}subm.gz', compression='gzip', index=False)
FileLink(f'{SUBM}subm.gz')

data/dogbreed//subm/subm.gz

Individual prediction

fn = data.val_ds.fnames[0]
fn
'train/000bec180eb18c7604dcecc8fe0dba07.jpg'
Image.open(PATH + fn).resize((150, 150))

png

# Method 1.
trn_tfms, val_tfms = tfms_from_model(arch, sz)
ds = FilesIndexArrayDataset([fn], np.array([0]), val_tfms, PATH)
dl = DataLoader(ds)
preds = learn.predict_dl(dl)
np.argmax(preds)
19
learn.data.classes[np.argmax(preds)]
'boston_bull'
# Method 2.
trn_tfms, val_tfms = tfms_from_model(arch, sz)
im = val_tfms(open_image(PATH + fn)) # open_image() returns numpy.ndarray
preds = learn.predict_array(im[None])
np.argmax(preds)
19
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐