{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"\nimport pandas as pd\nimport os, sys\nimport glob\nimport cv2\nfrom keras.utils import to_categorical\nimport keras\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom matplotlib import style\nimport seaborn as sns\nimport cv2                  \nimport numpy as np  \nfrom tqdm import tqdm, tqdm_notebook\nimport os, random\nfrom random import shuffle  \nfrom zipfile import ZipFile\nfrom PIL import Image\nfrom sklearn.utils import shuffle\nfrom sklearn.metrics import confusion_matrix\nimport fastai\nfrom fastai import *\nfrom fastai.vision import *\nfrom fastai.callbacks import *\nfrom fastai.basic_train import *\nfrom fastai.vision.learner import *\ndef is_interactive():\n   return 'runtime' in get_ipython().config.IPKernelApp.connection_file\n\ndef seed_everything(seed):\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\n    \nseed_everything(42)\n\nPath('/tmp/.cache/torch/checkpoints/').mkdir(exist_ok=True, parents=True)\nPATH = Path('../input/aptos2019-blindness-detection')\n\ndf_train = pd.read_csv(PATH/'train.csv')\ndf_test = pd.read_csv(PATH/'test.csv')\n\n\naptos19_stats = ([0.42, 0.22, 0.075], [0.27, 0.15, 0.081])\ndata = ImageDataBunch.from_df(df=df_train,\n                              path=PATH, folder='train_images', suffix='.png',\n                              valid_pct=0.1,\n                              ds_tfms=get_transforms(flip_vert=True, max_warp=0.1, max_zoom=1.15, max_rotate=45.),\n                              size=224,\n                              bs=32, \n                              num_workers=os.cpu_count()\n                             ).normalize(aptos19_stats)\ndata.show_batch(rows=3, figsize=(7,6))\nos.listdir('../input/')\ntrain = pd.read_csv('../input/aptos2019-blindness-detection/train.csv')\ntrain_list = [[PIL.Image.open('../input/aptos2019-blindness-detection/train_images/'+i+'.png'),j] for i,j in zip(train.id_code[:5],train.diagnosis[:5])]\ntrain_list\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i,j in train_list:\n    plt.figure(figsize=(5,3))\n    i = cv2.resize(np.asarray(i),(256,256))\n    plt.title(j)\n    plt.imshow(i)\n    plt.show","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = [cv2.resize(np.asarray(PIL.Image.open('../input/aptos2019-blindness-detection/train_images/'+i+'.png')),(256,256)) for i in train.id_code]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = np.array(x_train)\ny_train = train.diagnosis\ny_train = to_categorical(y_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = keras.applications.densenet.DenseNet121(input_shape=(256,256,3),include_top=True,weights=None)\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x = model.layers[-2].output\nd = keras.layers.Dense(512,activation='relu')(x)\ne = keras.layers.Dense(5,activation='softmax')(d)\nmodel1 = keras.models.Model(model.input,e)\nmodel1.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])\nmodel1.fit(x_train,y_train,validation_split=0.20,epochs=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_df = pd.read_csv('../input/aptos2019-blindness-detection/test.csv')\ntest = []\nfor i in test_df.id_code:\n    temp = np.array(cv2.resize(np.array(PIL.Image.open('../input/aptos2019-blindness-detection/test_images/'+i+'.png')),(256,256)))\n    test.append(temp)\ntest = np.array(test)\n\nnp.random.seed(42)\nresult = model1.predict(test)\nres = []\nfor i in result:\n    res.append(np.argmax(i))\ndf_test = pd.DataFrame({\"id_code\": test_df[\"id_code\"].values, \"diagnosis\": res})\ndf_test.head(30)\n\n\n\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":1}