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()
id breed
0 000bec180eb18c7604dcecc8fe0dba07 boston_bull
1 001513dfcb2ffafc82cccf4d8bbaba97 dingo
2 001cdf01b096e06d78e9e5112d419397 pekinese
3 00214f311d5d2247d5dfe4fe24b2303d bluetick
4 0021f9ceb3235effd7fcde7f7538ed62 golden_retriever
label_df.pivot_table(index="breed", aggfunc=len).sort_values('id', ascending=False)
id
breed
basenji 1
bedlington_terrier 1
bluetick 1
borzoi 1
boston_bull 1
dingo 1
golden_retriever 1
pekinese 1
scottish_deerhound 1
shetland_sheepdog 1
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 competitionsval_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

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);

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>)

plt.hist(col_sz);

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>)

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 sizetfms = 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/37return 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()
id affenpinscher afghan_hound african_hunting_dog airedale american_staffordshire_terrier appenzeller australian_terrier basenji basset ... toy_poodle toy_terrier vizsla walker_hound weimaraner welsh_springer_spaniel west_highland_white_terrier whippet wire-haired_fox_terrier yorkshire_terrier
0 ab2520c527e61f197be228208af48191 7.957505e-08 2.723862e-08 2.435847e-08 1.173262e-07 2.351215e-08 8.401931e-06 1.372760e-06 6.317406e-08 3.063393e-08 ... 2.080939e-08 2.456473e-07 2.722122e-07 5.030101e-08 1.900935e-07 6.053991e-07 3.839476e-08 5.778787e-08 1.575098e-07 1.075539e-08
1 8ffc8a83bb9ac7884a9420c97b23940c 9.668808e-08 2.355516e-08 2.087995e-07 6.298836e-08 3.269388e-08 2.796247e-07 2.439702e-08 2.535878e-06 1.824919e-06 ... 4.051576e-08 3.540100e-06 2.388073e-07 9.832689e-01 1.823956e-07 2.486797e-08 8.325348e-08 9.363868e-07 2.608415e-07 3.851193e-07
2 9f4bbcd8a5b189514d3098516983621a 4.214103e-05 2.804878e-04 4.817631e-05 7.178330e-03 1.471457e-06 1.140446e-05 1.950280e-04 7.519415e-06 1.821058e-06 ... 5.793181e-05 9.164357e-05 1.187949e-04 6.772134e-06 5.031822e-05 4.772470e-05 6.114125e-06 2.762433e-05 5.382648e-04 2.682866e-05
3 f77793be1597dd1ea50b22532b38bd23 2.568105e-07 2.491144e-07 7.142457e-07 1.466020e-06 3.212435e-05 8.274229e-08 3.600422e-08 6.044879e-08 1.201969e-07 ... 2.627351e-06 3.965855e-08 1.560448e-06 6.965169e-08 1.856623e-07 1.051336e-07 1.763770e-07 2.664481e-07 3.316928e-08 9.700193e-08
4 f719b425410b6eb3e3132702150affd6 6.095974e-06 2.696717e-06 4.131879e-06 6.457446e-05 1.191631e-03 3.560664e-05 3.274512e-06 2.229157e-06 1.317608e-06 ... 2.345266e-06 1.053057e-05 2.322353e-05 4.169483e-05 1.918868e-05 5.647749e-06 5.437289e-06 5.297930e-06 3.867970e-06 5.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))

# 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

lesson1-breeds相关推荐

  1. 2021春季学期-创新设计与实践-Lesson1

    ▌01 课程综述 1.课程背景 在 2021春季学期教学记录 包括有 2021春季学期-创新设计与实践-高级下 课程.这个班的课程同学与 信号与系统-CDIE班级 相同. 根据 2021春季学期-创新 ...

  2. Ubuntu学习日记--Lesson1:Linux基础和常用命令

    版权生命:文章系原创,转载请注明出处,多谢! 为了在Linux系统下用深度学习框架caffe,系统补习了一下Linux操作的知识,做些笔记,以备复习,或随时查看. Lesson1:Linux基础和常用 ...

  3. English马力-Lesson1(MY MYSELF,IRENE)

    Lesson1   MY & MYSELF,IRENE(一个头两个大)   注解: 1.         narrate/narrator/relate/describe/recount : ...

  4. 计算机专业英语张勇课后答案,专业英语lesson1”.ppt

    专业英语lesson1" 自我介绍 姓名:何红洲 研究方向:数据挖掘和复杂网络 电话Email: zmoonmoonlhm@ QQ:690321521 Mianyang Normal Uni ...

  5. 【Lesson1】「ALOS数据」SAR土地利用分类41

    [Lesson1]SAR土地利用分类41 ARSET 学习目标 数据 数据处理 软件:SNAP 添加数据 RGB可视化 散斑过滤 Linear to dB 直方图均衡化 Band math 分类 Fi ...

  6. 01 -Python入门- Lesson1 为何要学习 Python 编程

    01 Python入门 Lesson1 为何要学习 Python 编程 文章目录 01 Python入门 Lesson1 为何要学习 Python 编程 1.欢迎学习这门课程! 2.课程概述 Less ...

  7. English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二

    English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二 引言

  8. English Learning - L3 作业打卡 Lesson1 Day4 2023.5.8 周一

    English Learning - L3 作业打卡 Lesson1 Day4 2023.5.8 周一 引言

  9. 庄懂的技术美术入门课(美术向) Lesson1

    庄懂的技术美术入门课(美术向) Lesson1 一.关于结构和渲染管 1.1 结构 1.2 渲染管线 模型到输入结构的过程是选取.采集模型文件中的信息,可以提供给后续渲染用的相关信息 顶点Shader ...

  10. 专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1

    中断概念 1.中断生命周期 串口先产生一个事件,该事件传送到中断控制器里面,中断控制器会进行相应过滤,能通过过滤,那么就交给CPU去处理. 2.中断源 2440芯片手册 6410芯片手册 3.中断过滤 ...

最新文章

  1. tensorflow教程 开始——数据集:快速了解 tf.data
  2. 手动命令行编译APK
  3. cf1526E. Oolimry and Suffix Array(未解决)
  4. Android add external jar
  5. 软件系统架构~软件架构概念
  6. 嘘,这是手淘双11 GMV 暴涨的秘密
  7. PowerDesigner(三)-企业架构模型
  8. LeetCode-26 删除排序数组中的重复项
  9. 路由:vue-router
  10. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_17maven工程运行环境修改...
  11. 基于51单片机的简易计算器设计
  12. 史上超强图像处理开源工具包--ImageMagick
  13. Mac搭建Airtest iOS自动化测试环境
  14. 二元置信椭圆r语言_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  15. win7无法自动检测修复计算机,无法启动,启动修复正在检查系统问题
  16. 程序员也要学英语——数词攻略
  17. 天地孤影任我行(东邪西毒电影原声曲)铃声 天地孤影任我行(...
  18. 【推荐算法 学习与复现】-- 深度学习系列 -- NFM
  19. ADS 常见问题及解决方法
  20. java火车票订票系统 论文_毕业设计(论文)-基于JAVA的火车票售票系统.doc

热门文章

  1. Java快车读书笔记
  2. MoveIT和KDL中进行机械臂位置和姿态插值
  3. 嵌入式之linux入门篇
  4. python opencv人脸识别考勤系统的完整源码
  5. 计算机三级 计算机三级网络技术 如何两天内通过考试
  6. 给SwipeRefreshLayout添加上拉加载更多功能
  7. vue3 +Element-puls ,table 中使用$refs修改scrollTop 到顶部
  8. org.springframework.scheduling.quartz.CronTriggerBean 配置
  9. mysql 数字中文混排序
  10. 怎样规划自己的研究生生活?