{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\nfrom PIL import Image\nimport pandas as pd\n\nimport os\n#print(os.listdir(\"../input/vgg19\"))\n\ntrain = pd.read_csv(\"../input/aptos2019-blindness-detection/train.csv\") #.sample(200)\ntest = pd.read_csv(\"../input/aptos2019-blindness-detection/test.csv\") #.sample(200)\nsubmit = pd.read_csv(\"../input/aptos2019-blindness-detection/sample_submission.csv\") #.sample(200)\ndiagnosis_encoded = pd.get_dummies(train.diagnosis)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.applications.vgg19 import VGG19\nfrom keras.preprocessing import image\nfrom keras.preprocessing.image import img_to_array\nfrom keras.applications.vgg19 import preprocess_input\nfrom keras.models import Model, Sequential\nfrom keras.layers import GlobalAveragePooling2D, Dropout, Dense, Conv2D\nfrom keras.layers import MaxPooling2D, Flatten, Dense\n\nvgg19 = VGG19(weights='../input/vgg19/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5',include_top=False,input_shape=(224,224,3))\nfor l in vgg19.layers: \n    if l is not None: l.trainable = False \n        \nx = vgg19.output\nx = Conv2D(filters=128, kernel_size=(3, 3), activation='relu')(x)\nx = MaxPooling2D(pool_size=(2, 2))(x)\nx = Flatten()(x)\nx = Dense(256, activation='relu')(x)\npredictions = Dense(5, activation='softmax')(x)\n\nmodel = Model(inputs=vgg19.input, outputs=predictions)        \nmodel.summary()\nmodel.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train_list=[]\ny_train_list=[]\n# -------------------------------------------\nfor index, row in train.iterrows():\n    my_pic_name = row.id_code\n    im = Image.open(\"../input/aptos2019-blindness-detection/train_images/\"+my_pic_name+\".png\")\n    im_224 = im.resize((224,224), Image.ANTIALIAS)\n    \n    image = img_to_array(im_224)\n    # image = image.reshape((image.shape[0], image.shape[1], image.shape[2]))    \n    #image = np.expand_dims(image, axis=0)\n    image = preprocess_input(image)  \n    \n    x_train_list.append(image)\n    y_train_list.append(diagnosis_encoded.loc[index])\n    \n    #print(index)\n    #print(diagnosis_encoded.loc[index])\n    #print(np.array(x_train_list).shape)\n    #print(np.array(y_train_list).shape)\n\n    x_train_raw = np.array(x_train_list, np.float32) / 255.    \n    y_train_raw = np.array(y_train_list, np.uint8)\n    \n    if len(x_train_list)%200==0:   \n        model.train_on_batch(x_train_raw, y_train_raw)\n        x_train_list=[]\n        y_train_list=[]\n        print('train on batch ...')\n# -------------------------------------------","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_class = []\nfor index, row in test.iterrows():\n    my_pic_name = row.id_code\n    im = Image.open(\"../input/aptos2019-blindness-detection/test_images/\"+my_pic_name+\".png\")\n    im_224 = im.resize((224,224), Image.ANTIALIAS)\n    \n    image = img_to_array(im_224)\n    image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))    \n    #image = np.expand_dims(image, axis=0)\n    image = preprocess_input(image)  \n    \n    y_class.append(np.argmax(model.predict(image), axis=1)[0])\n# -------------------------------------------","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"submit.diagnosis = y_class\nsubmit.to_csv('submission.csv',index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.6"}},"nbformat":4,"nbformat_minor":1}