{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install ../input/efficientnet-install-files/Ker*.whl\n!pip install ../input/efficientnet-install-files/eff*.whl","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import os\nimport glob\nimport json\nimport numpy as np\nimport keras\nimport pandas as pd\nimport seaborn as sns\nimport tensorflow as tf\nimport tensorflow.keras as k\nfrom PIL import Image\nimport matplotlib.pyplot as plt\nfrom keras import backend as K \nimport efficientnet.keras as efn\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.optimizers import RMSprop, Adam\nfrom tensorflow.keras.applications import VGG16\nfrom tensorflow.keras.applications import ResNet50\nfrom tensorflow.keras.applications import EfficientNetB4\nfrom tensorflow.keras.applications import EfficientNetB0\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.layers import GlobalAveragePooling2D, Flatten, Dense, Dropout\nfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau\nfrom tensorflow.keras.mixed_precision import experimental as mixed_precision\npolicy = mixed_precision.Policy('mixed_float16')\nmixed_precision.set_policy(policy)\n\ncwd = os.getcwd()\nos.chdir('../input/bitempered-logistic-loss-direct-upload/')\nfrom tf_bi_tempered_loss import BiTemperedLogisticLoss\nos.chdir(cwd)\n\n# remove warnings (most of them are not critical and meant for debugging tensorflow)\nimport warnings\nwarnings.filterwarnings(\"ignore\")\nloss = BiTemperedLogisticLoss(t1=0.6, t2=1.4)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"models = []\nimage_size = 512\nn_splits=4\n# model_name = 'effnetb4'\n# fold_name = '-fold.h5'\n# cwd = os.getcwd()\n# os.chdir('../input/newcassavadataset')\n# for i in range(n_splits):\n#     effnetb4 = keras.models.load_model(model_name + str(i+1) + fold_name,compile=False)\n#     models.append(effnetb4)\n# os.chdir(cwd)\n\neff_models = os.listdir('../input/from-the-tpu-notebook')\nfor i in eff_models:\n    print(i)\n    models.append(keras.models.load_model(i))\n\n# models.append(keras.models.load_model('../input/newcassavadataset/effnetb01-fold.h5'))\nprint(models)\nTEST_DIR = '../input/cassava-leaf-disease-classification/test_images/'\ntest_images = os.listdir(TEST_DIR)\n\nresults = []\n\nfor image_id in test_images:\n    preds = []\n    image = Image.open(os.path.join('../input/cassava-leaf-disease-classification', \"test_images\", image_id))\n    image = image.resize((image_size, image_size))\n    image = np.expand_dims(image, axis = 0)\n    for model in models:\n        p = model.predict(image)\n        preds.append(np.argmax(p))\n        print(p)\n    res = max(set(preds), key = preds.count)\n    results.append(res)\n\nsub = pd.DataFrame({'image_id': test_images, 'label': results})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"display(sub)\nsub.to_csv('submission.csv', index = False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# results","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# TEST_DIR = '../input/cassava-leaf-disease-classification/test_images/'\n# image_size = 512\n# n_splits=3\n# test_images = os.listdir(TEST_DIR)\n# datagen = ImageDataGenerator(horizontal_flip=True)\n# final_model = keras.models.load_model('../input/newcassavadataset/effnetb41-fold.h5',compile=False)\n\n\n# for image in test_images:\n#     K.clear_session()\n#     img = Image.open(TEST_DIR + image)\n#     img = img.resize((image_size,image_size))\n#     samples = np.expand_dims(img, axis=0)\n#     it = datagen.flow(samples, batch_size=1)\n#     yhats = final_model.predict_generator(it, verbose=1)\n#     summed = np.sum(yhats, axis=0)\n# predictions = np.argmax(summed)\n\n# # predictions = pred(test_images)\n# sub = pd.DataFrame({'image_id': test_images, 'label': predictions})\n# display(sub)\n# sub.to_csv('submission.csv', index = False)\n\n# # tta_steps = 10\n# predictions = []\n\n# for i in tqdm(range(tta_steps)):\n#     preds = model.predict_generator(train_datagen.flow(x_val, batch_size=bs, shuffle=False), steps = len(x_val)/bs)\n#     predictions.append(preds)\n\n# pred = np.mean(predictions, axis=0)\n\n# np.mean(np.equal(np.argmax(y_val, axis=-1), np.argmax(pred, axis=-1)))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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":4}