{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import torch\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom matplotlib import style\nimport seaborn as sns\n%matplotlib inline  \nfrom sklearn.model_selection import StratifiedKFold\nfrom joblib import load, dump\nfrom sklearn.metrics import cohen_kappa_score\nfrom sklearn.metrics import confusion_matrix\nfrom fastai import *\nfrom fastai.vision import *\nfrom fastai.callbacks import *\nfrom torchvision import models as md\nfrom torch import nn\nfrom torch.nn import functional as F\nimport re\nimport math\nimport collections\nfrom functools import partial\nfrom torch.utils import model_zoo\nfrom sklearn import metrics\nfrom collections import Counter\nimport json\nimport torch.optim as optim\nfrom torchvision import transforms\nfrom torch.optim import lr_scheduler\nfrom torch import nn\nfrom torch.nn import functional as F\nfrom sklearn.model_selection import KFold\nfrom PIL import Image, ImageFile\nimport skimage.io\nfrom skimage.transform import resize\nfrom imgaug import augmenters as iaa\nfrom tqdm import tqdm\nimport PIL\nfrom PIL import Image, ImageOps\nimport cv2\nimport gc\nfrom statsmodels.stats.weightstats import zconfint\nfrom statsmodels.stats.weightstats import _zconfint_generic, _tconfint_generic\nfrom math import sqrt\nfrom scipy import stats\nimport random\nimport time\nimport torchvision","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"base_image_dir = os.path.join('..', 'input/aptos2019-blindness-detection/')\ntrain_dir = os.path.join(base_image_dir,'train_images/')\ndf = pd.read_csv(os.path.join(base_image_dir, 'train.csv'))\ndf['path'] = df['id_code'].map(lambda x: os.path.join(train_dir,'{}.png'.format(x)))\ndf = df.sample(frac=1).reset_index(drop=True) #shuffle dataframe","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# удаляем дубликаты\nduplicates = pd.read_csv('../input/duplicates/duplicates.csv', sep=';')\nfor j in duplicates['id_code']:\n    df = df.drop(df[df['id_code']==j].index)\n    \ndf = df.drop(columns=['id_code'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"DEBUG = False\n\n# TO DO: Random oversample / undersample for each fold (model)\n# TO DO: use old dataset for random oversample\n\n\nbase_image_dir2 = os.path.join('..', 'input/retinopathytrain2015/retinopathy-train-2015/')\ntrain_dir = os.path.join(base_image_dir2,'rescaled_train_896/')\ndf_2015 = pd.read_csv('../input/retinopathytrain2015/retinopathy-train-2015/trainLabels.csv')\ndf_2015['path'] = df_2015['image'].map(lambda x: os.path.join(train_dir,'{}.png'.format(x)))\ndf_2015 = df_2015.drop(columns=['image'])\ndf_2015 = df_2015.sample(frac=1).reset_index(drop=True) #shuffle dataframe\ndf_2015.columns = ['diagnosis', 'path']\ndf_2015_decr = df_2015.drop(df_2015.loc[df_2015['diagnosis']==0].sample(frac=0.9).index) #выкидываем 0.7 0 диагноза\n\nTrainData = df\nTrainData = TrainData.reset_index(drop=True)\n\nif DEBUG:\n    TrainData = TrainData[:100]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"delete = ['../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5178_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13222_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2107_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11855_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38478_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14410_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43339_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38324_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12329_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7788_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39130_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11910_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21345_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16581_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8681_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21297_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27519_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17221_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5803_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15387_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11734_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4043_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13254_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15631_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31327_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14467_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42106_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24881_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41445_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35861_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10131_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33174_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2804_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21529_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3307_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9752_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33646_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40341_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14511_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35704_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38518_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18325_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42498_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4593_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4583_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39106_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38447_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11023_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6833_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22568_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12735_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9831_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26863_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3838_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23248_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33287_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36539_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36006_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21443_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42832_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36856_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33832_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10567_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41301_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41032_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22048_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20842_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14915_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10844_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10645_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43802_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41031_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7378_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3797_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28772_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19600_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20878_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7853_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27452_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40163_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4688_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30658_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13923_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43921_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4773_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11249_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18213_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41903_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13588_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39574_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10976_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8363_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21345_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13051_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24227_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31945_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32674_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17221_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/378_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40727_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8588_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16085_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19663_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26486_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8652_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8677_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25083_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26929_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6337_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3381_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23814_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10043_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28569_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19285_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14139_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26877_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24437_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26863_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14129_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20742_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25765_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4300_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9608_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43694_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10427_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10321_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19467_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24207_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32422_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7869_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25608_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33832_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44247_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11750_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11050_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43694_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25428_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14724_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38325_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28086_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4086_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41519_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21511_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13180_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41485_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43839_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37813_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2516_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38831_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31659_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43339_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21345_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29139_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6785_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29139_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6785_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29492_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15408_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32993_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40523_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19177_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/326_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36627_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32401_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42570_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27885_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37611_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40499_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38083_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25077_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5296_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12872_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39999_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43074_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22906_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41342_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8470_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40447_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41201_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40405_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23648_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43560_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13251_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31497_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27960_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2810_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22048_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13901_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/375_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4831_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22048_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/375_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38507_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31183_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16448_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21297_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22767_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24980_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5250_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30354_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32541_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8744_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/54_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/54_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/79_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/172_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/184_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/184_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/219_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/283_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/283_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/378_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/391_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/466_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/466_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/670_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/670_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/679_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/679_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/766_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/766_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1037_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1119_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1138_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1138_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1178_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1362_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1362_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1496_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1496_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1636_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1640_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1640_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1675_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1675_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1776_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1776_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1893_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1893_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1926_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1926_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1933_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1965_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/1965_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2010_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2010_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2011_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2107_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2180_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2180_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2194_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2357_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2357_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2531_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2531_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2610_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2610_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2668_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2903_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/2903_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3029_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3029_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3194_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3213_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3213_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3267_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3267_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3271_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3271_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3275_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3303_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3371_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3379_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3379_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3397_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3397_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3501_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3525_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3554_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3554_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3562_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3570_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3570_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3587_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3587_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3611_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3636_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3738_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3780_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3780_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3829_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3993_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/3993_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4005_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4005_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4307_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4307_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4443_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4559_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4561_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4561_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4601_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4601_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4674_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4674_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4764_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4831_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4839_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4931_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4931_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4965_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/4965_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5019_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5100_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5156_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5156_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5178_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5185_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5185_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5258_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5258_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5275_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5406_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5410_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5410_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5441_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5530_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5632_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5632_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5795_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5877_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5877_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5927_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5927_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5947_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/5953_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6014_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6014_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6299_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6299_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6544_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6684_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6684_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6691_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/6707_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7383_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7383_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/7607_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8116_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8116_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8342_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8583_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8669_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8677_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8681_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8740_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8740_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/8825_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9116_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9205_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9205_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9353_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9353_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9450_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9450_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9590_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/9590_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10043_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10234_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/10853_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11101_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11196_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11647_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11647_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11648_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11649_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/11648_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12101_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12575_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12630_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12676_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12699_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/12861_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13022_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13022_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13534_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13534_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13584_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13584_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13627_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13627_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13780_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/13786_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14139_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14160_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14212_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14474_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14807_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/14807_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15038_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15038_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15222_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15302_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15590_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/15954_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16581_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16802_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/16937_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17139_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17139_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17411_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17426_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17555_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17555_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/17925_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18017_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18030_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18819_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18862_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18901_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/18972_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19047_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19278_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19347_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/19811_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20093_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20146_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20402_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20677_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20677_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20742_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/20824_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21297_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21345_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21373_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21444_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21513_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21720_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21757_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21788_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/21788_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22026_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22665_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22665_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22687_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22687_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22716_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22716_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22760_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22778_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22906_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/22978_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23284_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23284_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23325_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23325_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23433_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23433_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23451_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23540_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23692_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23761_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23761_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/23957_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24074_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24074_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24437_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24472_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24478_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24657_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24657_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24772_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/24780_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25154_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25154_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25166_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25166_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25181_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25181_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25198_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25198_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25291_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25385_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25385_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25588_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25620_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/25751_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26076_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26190_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26300_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26300_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26459_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26459_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26541_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26659_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/26863_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27081_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27081_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27100_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27452_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27506_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27506_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27581_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27597_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27597_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27674_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27674_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27727_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27727_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27803_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27838_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27838_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27850_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/27960_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28000_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28072_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28072_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28077_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28172_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28172_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28369_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28369_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28387_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28549_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28722_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28772_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/28976_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29018_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29018_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29020_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29020_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29027_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29027_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29418_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29418_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29514_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29560_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29599_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29705_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29762_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29960_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/29960_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30000_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30039_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30039_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30226_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30226_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30255_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30274_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30277_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30277_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30303_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30567_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30591_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30591_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30675_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30723_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30723_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30747_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/30747_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31034_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31160_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31183_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31202_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31421_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31421_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31497_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31635_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31635_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31647_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31647_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31659_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31837_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31837_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31924_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31924_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31945_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31994_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/31994_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32064_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32149_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32176_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32220_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32230_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32230_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32253_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32311_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32311_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32320_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32320_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32486_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32523_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32550_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32591_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32637_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32668_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32668_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32674_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32773_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32870_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32979_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/32979_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33080_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33287_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33304_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33319_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33319_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33337_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33337_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33414_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33414_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33646_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33820_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/33891_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34008_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34101_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34241_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34241_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34284_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34368_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34442_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34442_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34470_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34470_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34584_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34584_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34731_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34731_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34992_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34992_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34995_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/34995_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35067_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35092_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35112_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35112_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35215_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35394_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35621_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35637_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35637_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35668_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35766_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35766_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35863_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35863_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35962_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/35966_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36006_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36099_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36184_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36190_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36190_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36256_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36426_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36426_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36453_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36453_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36502_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36502_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36635_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36635_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36640_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36640_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36653_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36653_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36793_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36793_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36903_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/36903_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37035_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37064_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37079_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37117_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37192_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37192_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37345_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37354_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37354_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37422_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37422_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37611_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37636_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37636_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37773_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37773_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37783_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37834_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37834_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37846_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37867_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37868_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37962_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/37962_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38083_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38116_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38163_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38186_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38186_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38324_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38325_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38326_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38373_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38481_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38481_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38513_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38513_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38518_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38668_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38668_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38795_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38856_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38856_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/38907_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39044_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39044_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39081_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39081_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39106_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39134_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39134_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39353_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39353_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39365_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39365_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39459_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39505_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39505_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39530_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39530_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39588_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39632_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39741_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39741_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39757_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39757_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39772_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39983_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39994_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/39999_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40089_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40178_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40178_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40183_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40183_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40189_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40259_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40319_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40323_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40341_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40499_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40557_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40616_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40937_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40937_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40994_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/40994_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41021_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41201_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41301_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41387_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41387_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41419_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41419_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41440_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41445_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41499_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41499_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41561_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41566_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41566_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41746_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41746_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41761_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41761_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/41903_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42074_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42074_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42082_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42119_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42119_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42484_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42542_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/42891_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43025_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43062_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43062_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43119_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43166_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43379_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43379_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43457_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43490_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43563_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43589_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43589_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43593_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43593_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43594_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43688_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43929_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43932_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43985_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/43998_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44100_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44148_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44189_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44193_left.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44193_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44247_right.png',\n'../input/retinopathytrain2015/retinopathy-train-2015/rescaled_train_896/44249_right.png']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for path in df_2015_decr['path'].reset_index(drop=True):\n    for bad in delete:\n        if path == bad:\n            df_2015_decr = df_2015_decr.drop(df_2015_decr[df_2015_decr['path']==bad].index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_2015_decr = df_2015_decr.reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_random_df(df):\n    randomdf = df[df['diagnosis']==0][:2000].sample(frac=random.random())\n    randomdf = randomdf.append(df[df['diagnosis']==1].sample(frac=random.random()))\n    randomdf = randomdf.append(df[df['diagnosis']==2][:2000].sample(frac=random.random()))\n    randomdf = randomdf.append(df[df['diagnosis']==3].sample(frac=random.random()))\n    randomdf = randomdf.append(df[df['diagnosis']==4].sample(frac=random.random()))\n    randomdf = randomdf.sample(frac=1).reset_index(drop=True) \n    \n    return randomdf","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Get random sample\n#df_2015_decr = get_random_df(df_2015_decr)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def seed_everything(seed=1234):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.backends.cudnn.deterministic = True","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"IMAGE_SIZE = 256 # 224?\ndef info_image(im):\n    # Compute the center (cx, cy) and radius of the eye\n    cy = im.shape[0]//2\n    midline = im[cy,:]\n    midline = np.where(midline>midline.mean()/3)[0]\n    if len(midline)>im.shape[1]//2:\n        x_start, x_end = np.min(midline), np.max(midline)\n    else: # This actually rarely happens p~1/10000\n        x_start, x_end = im.shape[1]//10, 9*im.shape[1]//10\n    cx = (x_start + x_end)/2\n    r = (x_end - x_start)/2\n    return cx, cy, r\n\ndef resize_image(im, augmentation=True):\n    # Crops, resizes and potentially augments the image to IMAGE_SIZE\n    cx, cy, r = info_image(im)\n    scaling = IMAGE_SIZE/(2*r)\n    rotation = 0\n    if augmentation:\n        scaling *= 1 + 0.3 * (np.random.rand()-0.5)\n        rotation = 360 * np.random.rand()\n    M = cv2.getRotationMatrix2D((cx,cy), rotation, scaling)\n    M[0,2] -= cx - IMAGE_SIZE/2\n    M[1,2] -= cy - IMAGE_SIZE/2\n    return cv2.warpAffine(im,M,(IMAGE_SIZE,IMAGE_SIZE)) # This is the most important line\n\ndef subtract_median_bg_image(im):\n    k = np.max(im.shape)//20*2+1\n    bg = cv2.medianBlur(im, k)\n    return cv2.addWeighted (im, 4, bg, -4, 128)\n\ndef subtract_gaussian_bg_image(im):\n    k = np.max(im.shape)/10\n    bg = cv2.GaussianBlur(im ,(0,0) ,k)\n    return cv2.addWeighted (im, 4, bg, -4, 128)\n\ndef id_to_image(path, resize=True, augmentation=False, subtract_gaussian=False, subtract_median=False):\n    #path = '../input/train_images/{}.png'.format(id_code)\n    im = cv2.imread(path)\n    im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)\n    if resize_image:\n        im = resize_image(im, augmentation)\n        \n    randint = np.random.randint(1,4)\n    \n    if randint == 1:\n        im = subtract_gaussian_bg_image(im)\n    if randint == 2:\n        im = subtract_gaussian_bg_image(im)\n    if randint == 3:\n        pass\n        \n    return im","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def crop_image_from_gray(img,tol=7):\n    \"\"\"\n    Crop out black borders\n    https://www.kaggle.com/ratthachat/aptos-updated-preprocessing-ben-s-cropping\n    \"\"\"  \n    \n    if img.ndim ==2:\n        mask = img>tol\n        return img[np.ix_(mask.any(1),mask.any(0))]\n    elif img.ndim==3:\n        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n        mask = gray_img>tol        \n        check_shape = img[:,:,0][np.ix_(mask.any(1),mask.any(0))].shape[0]\n        if (check_shape == 0):\n            return img\n        else:\n            img1=img[:,:,0][np.ix_(mask.any(1),mask.any(0))]\n            img2=img[:,:,1][np.ix_(mask.any(1),mask.any(0))]\n            img3=img[:,:,2][np.ix_(mask.any(1),mask.any(0))]\n            img = np.stack([img1,img2,img3],axis=-1)\n        return img\n\n\ndef circle_crop(img):   \n    \"\"\"\n    Create circular crop around image centre    \n    \"\"\"    \n    \n    img = cv2.imread(img)\n    img = crop_image_from_gray(img)    \n    \n    height, width, depth = img.shape    \n    \n    x = int(width/2)\n    y = int(height/2)\n    r = np.amin((x,y))\n    \n    circle_img = np.zeros((height, width), np.uint8)\n    cv2.circle(circle_img, (x,y), int(r), 1, thickness=-1)\n    img = cv2.bitwise_and(img, img, mask=circle_img)\n    img = crop_image_from_gray(img)\n    \n    return img ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def crop_image1(img,tol=7):\n    # img is image data\n    # tol  is tolerance\n        \n    mask = img>tol\n    return img[np.ix_(mask.any(1),mask.any(0))]\n\ndef crop_image_from_gray(img,tol=7):\n    if img.ndim ==2:\n        mask = img>tol\n        return img[np.ix_(mask.any(1),mask.any(0))]\n    elif img.ndim==3:\n        gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)\n        mask = gray_img>tol\n        \n        check_shape = img[:,:,0][np.ix_(mask.any(1),mask.any(0))].shape[0]\n        if (check_shape == 0): # image is too dark so that we crop out everything,\n            return img # return original image\n        else:\n            img1=img[:,:,0][np.ix_(mask.any(1),mask.any(0))]\n            img2=img[:,:,1][np.ix_(mask.any(1),mask.any(0))]\n            img3=img[:,:,2][np.ix_(mask.any(1),mask.any(0))]\n    #         print(img1.shape,img2.shape,img3.shape)\n            img = np.stack([img1,img2,img3],axis=-1)\n    #         print(img.shape)\n        return img","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class RetinopathyDatasetTrain(Dataset):\n\n    def __init__(self, df, transform):\n\n        self.data = df\n        self.data = self.data.reset_index(drop=True)\n        self.transform = transform\n\n    def __len__(self):\n        return len(self.data)\n\n    def __getitem__(self, idx):\n        img_name = self.data.loc[idx, 'path']\n        image = id_to_image(img_name, resize=True, augmentation=True, subtract_gaussian=False, subtract_median=False)\n        transform_to_pil = torchvision.transforms.Compose([torchvision.transforms.ToPILImage(mode=None)])\n        image = transform_to_pil(image)\n\n#         image = cv2.imread(img_name)\n#         image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n#         image = crop_image_from_gray(image)\n#         #image = resize_image(image, augmentation=False)\n#         image = cv2.resize(image, (IMAGE_SIZE, IMAGE_SIZE))\n#         image = cv2.addWeighted( image,4, cv2.GaussianBlur( image , (0,0) , 30) ,-4 ,128)\n#         image = transforms.ToPILImage()(image)\n    \n        #image = Image.open(img_name)\n        #image = image.resize((IMAGE_SIZE, IMAGE_SIZE), resample=Image.BILINEAR)\n        \n        if self.transform != None:\n            image = self.transform(image)\n            \n        label = torch.tensor(self.data.loc[idx, 'diagnosis'])\n        return {#'image': transforms.ToTensor()(image),\n                'image': image,\n                'labels': label,\n               }","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import albumentations\nfrom albumentations import torch as AT\n\ndata_transform = transforms.Compose([\n    transforms.RandomHorizontalFlip(),\n    transforms.RandomRotation((-120, 120)),\n    transforms.ToTensor(),\n    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])\n\ndata_transform_test = transforms.Compose([\n    #transforms.RandomHorizontalFlip(),\n    #transforms.RandomRotation((-120, 120)),\n    transforms.ToTensor(),\n    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_model(model_type='resnext', out=1):\n    # TO DO: Add more models!\n    if model_type=='resnext':\n        model = torchvision.models.resnext101_32x8d(pretrained=True)\n        model.fc = nn.Linear(in_features=2048, out_features=out, bias=True)\n        return model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import cohen_kappa_score\ndef quadratic_kappa(y_hat, y):\n    return torch.tensor(cohen_kappa_score(np.around(y_hat), y, weights='quadratic'),device='cuda:0')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Использовать на рандомизированных предсказаниях, для подборки трешхолда\nimport scipy as sp\nfrom functools import partial\nfrom sklearn import metrics\nfrom collections import Counter\nimport json\n\nclass OptimizedRounder(object):\n    def __init__(self):\n        self.coef_ = [0.5, 1.5, 2.5, 3.5]\n\n    def _kappa_loss(self, coef, X, y):\n        X_p = np.copy(X)\n        for i, pred in enumerate(X_p):\n            if pred < coef[0]:\n                X_p[i] = 0\n            elif pred >= coef[0] and pred < coef[1]:\n                X_p[i] = 1\n            elif pred >= coef[1] and pred < coef[2]:\n                X_p[i] = 2\n            elif pred >= coef[2] and pred < coef[3]:\n                X_p[i] = 3\n            else:\n                X_p[i] = 4\n\n        ll = metrics.cohen_kappa_score(y, X_p, weights='quadratic')\n        return -ll\n\n    def fit(self, X, y):\n        loss_partial = partial(self._kappa_loss, X=X, y=y)\n        initial_coef = [0.5, 1.5, 2.5, 3.5]\n        self.coef_ = sp.optimize.minimize(loss_partial, initial_coef, method='nelder-mead')\n        print(-loss_partial(self.coef_['x']))\n\n    def predict(self, X, coef):\n        X_p = np.copy(X)\n        for i, pred in enumerate(X_p):\n            if pred < coef[0]:\n                X_p[i] = 0\n            elif pred >= coef[0] and pred < coef[1]:\n                X_p[i] = 1\n            elif pred >= coef[1] and pred < coef[2]:\n                X_p[i] = 2\n            elif pred >= coef[2] and pred < coef[3]:\n                X_p[i] = 3\n            else:\n                X_p[i] = 4\n        return X_p\n\n    def coefficients(self):\n        return self.coef_['x']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"num_epochs = 20\nbatch_size = 20 # 25\nkf = KFold(n_splits=5)\ndevice = torch.device(\"cuda:0\")\nImageFile.LOAD_TRUNCATED_IMAGES = True","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fold = 0\nNUM_FOLDS = 1\noptR = OptimizedRounder()\n\nTrainData = TrainData.append(df_2015_decr)\nTrainData = TrainData.sample(frac=1).reset_index(drop=True) #shuffle dataframe\n\nfor train_index, test_index in kf.split(TrainData):\n    if fold > 0 and fold > NUM_FOLDS-1:\n        print('Brake')\n        break\n    fold +=1\n    validation_kappa = []\n    validation_score = []\n    seed_everything(123+fold)\n\n    gc.collect()\n    print('=' * 10)\n    #model = EfficientNet.from_pretrained('efficientnet-b5', num_classes=1)\n    model = get_model(model_type='resnext')\n    model = model.to(device)\n    #plist = [{'params': model._fc.parameters(), 'lr': 1e-3}]\n    plist = [\n             {'params': model.layer4.parameters(), 'lr': 1e-3},\n             {'params': model.fc.parameters(), 'lr': 1e-3}\n             ]\n    criterion = nn.MSELoss()\n    optimizer = optim.Adam(plist, lr=0.0002)\n    scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=5, gamma=0.2)\n    #scheduler = lr_scheduler.ReduceLROnPlateau(optimizer,patience=2,verbose=1,factor=0.5)\n    \n    since = time.time()\n    \n    valid_dataset = RetinopathyDatasetTrain(TrainData.loc[test_index,:], transform=data_transform_test)\n    data_valid_loader = torch.utils.data.DataLoader(valid_dataset, batch_size=batch_size, shuffle=True, num_workers=4)\n    # TO DO: Random oversampling / undersampling for different folds, preferably on fly.\n    train_dataset = RetinopathyDatasetTrain(TrainData.loc[train_index,:], transform=data_transform)\n    data_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=4)\n    \n    epoch_kappa_es = 0 # initial values for early stopping\n    epoch_loss_eval_es = 10000 # initial values for early stopping\n    counter_es = 0\n    saving = False #initial value\n    \n    for epoch in range(num_epochs):\n        since_epoch = time.time()\n        print('-' * 10)\n        print('Epoch {}/{}'.format(epoch+1, num_epochs))\n        \n        ##################################################\n        #TRAIN\n        ##################################################\n        if epoch == 2:\n            print('Now training all layers')\n            optimizer = optim.Adam(model.parameters(), lr=0.0001)\n            #scheduler = lr_scheduler.ReduceLROnPlateau(optimizer,patience=2,verbose=1)\n            \n        model.train()\n        running_loss = 0.0\n        # TO DO: Early stoping\n        # TO DO: Random oversampling / undersampling for different folds ON FLY! To save evaluation data\n        for i, d in enumerate(data_loader):\n            inputs = d[\"image\"]\n            labels = d[\"labels\"].view(-1, 1)\n            inputs = inputs.to(device, dtype=torch.float)\n            labels = labels.to(device, dtype=torch.float)\n            optimizer.zero_grad()\n            with torch.set_grad_enabled(True):\n                outputs = model(inputs)\n                loss = criterion(outputs, labels)\n                # https://medium.com/huggingface/training-larger-batches-practical-tips-on-1-gpu-multi-gpu-distributed-setups-ec88c3e51255\n                #loss = loss / accumulation_steps                # Normalize our loss (if averaged)\n                loss.backward() ###\n#                 if (i+1) % accumulation_steps == 0:             # Wait for several backward steps\n#                     optimizer.step()                            # Now we can do an optimizer step\n#                     model.zero_grad()\n                optimizer.step() ###\n            running_loss += loss.item() * inputs.size(0)\n            gc.collect()\n            \n        epoch_loss = running_loss / len(train_index)\n        \n        ##################################################\n        #VALIDATION\n        ##################################################\n        # TO DO: TTA for Evaluation - low rank\n        model.eval()\n\n        test_preds = np.zeros(len(test_index)) # для предсказаний\n        labels_preds = np.zeros(len(test_index))  # для тру лейблов\n        running_loss = 0.0\n        for i, d in enumerate(data_valid_loader):\n            inputs = d[\"image\"]\n            labels = d[\"labels\"].view(-1, 1)\n            inputs = inputs.to(device, dtype=torch.float)\n            labels = labels.to(device, dtype=torch.float)\n            \n            with torch.set_grad_enabled(False):\n                outputs = model(inputs)\n                loss = criterion(outputs, labels)\n            running_loss += loss.item() * inputs.size(0)\n            test_preds[i * batch_size:(i + 1) * batch_size] = optR.predict(outputs.cpu().numpy().flatten(),[0.5, 1.5, 2.5, 3.5])\n            labels_preds[i * batch_size:(i + 1) * batch_size] = labels.cpu().numpy().flatten()\n\n        epoch_loss_eval = running_loss / len(test_index)\n        epoch_kappa = quadratic_kappa(test_preds, labels_preds)\n        \n        time_elapsed_epoch = time.time() - since_epoch\n        \n        print('time={:.2f}s Training Loss={:.4f} Test Loss={:.4f} Eval kappa={:.4f}'.format(time_elapsed_epoch, epoch_loss, epoch_loss_eval, epoch_kappa))\n        scheduler.step(epoch_loss_eval)\n        \n        if epoch == 5: \n            saving = True\n        \n        # Если лосс улучшился - сохраняем / перезаписываем\n        if epoch_loss_eval < epoch_loss_eval_es:\n            epoch_loss_eval_es = epoch_loss_eval\n            counter_es = 0\n            if saving:\n                print('saving model')\n                torch.save(model.state_dict(), \"model {}.bin\".format(fold))\n        \n        # Если лосс не улучшился, то увеличиваем счетчик на 1\n        if epoch_loss_eval > epoch_loss_eval_es:\n            counter_es += 1\n            print('counter={}'.format(counter_es))\n            \n        \n        # Если счетчик достигает 5, то прерываем обучение\n#         if counter_es == 10:\n#             print('early stoping,', counter_es, epoch_kappa_es)\n#             break\n            \n    validation_kappa.append(epoch_kappa)\n    validation_score.append(epoch_loss_eval)\n    \n    time_elapsed = time.time() - since\n    print('Training complete in {:.0f}m {:.0f}s'.format(time_elapsed // 60, time_elapsed % 60))\n    torch.save(model.state_dict(), \"model final {}.bin\".format(fold))\n    del model\n    gc.collect()\n\n# TO DO: Final evaluation using all models (especially with random oversampling/undersampling)\n# TO DO: использовать все фолды как выборку. провести перестановочный тест для определения лучше текущая модель,\n# чем предыдущая или нет","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from IPython.display import FileLinks\nFileLinks('.') # input argument is specified folder","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}