{"cells":[{"metadata":{},"cell_type":"markdown","source":"<h1 style=\"text-align:center;background-color:purple;color:yellow;\">Cassava Leaf Disease Classification:CNN Prediction</h1>\n<h2 style=\"text-align:center;background-color:purple;color:yellow;\">The first part of this notebook: <a href=\"https://www.kaggle.com/sanikamal/cassava-leaf-disease-cnn-starter\" target=\"_blank\">Cassava Leaf Disease: CNN Starter</a></h2>"},{"metadata":{},"cell_type":"markdown","source":"<h1 style=\"text-align:center;background-color:purple;color:yellow;\">Import packages</h1>"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import accuracy_score\nimport tensorflow as tf\nfrom tensorflow.keras import models, layers\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau\nfrom tensorflow.keras.applications import ResNet50, DenseNet121, EfficientNetB0\nfrom tensorflow.keras.optimizers import Adam\n\n\nimport os\nimport datetime\nimport cv2\nimport json\nfrom PIL import Image\n# ignoring warnings\nimport warnings\nwarnings.simplefilter(\"ignore\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"TARGET_SIZE = 224\n\nBASE_DIR = '/kaggle/input/cassava-leaf-disease-classification'\nos.listdir(BASE_DIR)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def create_model():\n    model = models.Sequential()\n    model.add(EfficientNetB0(include_top = False, weights = None,\n                             input_shape = (TARGET_SIZE, TARGET_SIZE, 3)))\n    \n    model.add(layers.GlobalAveragePooling2D())\n    model.add(layers.Dense(5, activation = \"softmax\"))\n\n    model.compile(optimizer = Adam(lr = 0.001),\n                  loss = \"sparse_categorical_crossentropy\",\n                  metrics = [\"acc\"])\n    return model\n\nmodel = create_model()\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.load_weights(\"/kaggle/input/efficientnetb0-models/best_baseline_model_30.h5\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h1 style=\"text-align:center;background-color:purple;color:yellow;\">Prediction and Submission File Creation</h1>"},{"metadata":{"trusted":true},"cell_type":"code","source":"sample = pd.read_csv(os.path.join(BASE_DIR, \"sample_submission.csv\"))\nsample","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"preds = []\n\nfor image_id in sample.image_id:\n    image = Image.open(os.path.join(BASE_DIR,  \"test_images\", image_id))\n    image = image.resize((TARGET_SIZE, TARGET_SIZE))\n    image = np.expand_dims(image, axis = 0)\n    preds.append(np.argmax(model.predict(image)))\n\nsample['label'] = preds\nsample","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample.to_csv('submission.csv', index = False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n<h1 style=\"text-align:center;background-color:purple;color:yellow;\">WORK IN PROGRESS...</h1>"}],"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}