initial upload
Browse files- train.ipynb +797 -0
- wheat_disease_model.h5 +3 -0
- wheat_indices.json +1 -0
train.ipynb
ADDED
|
@@ -0,0 +1,797 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {
|
| 6 |
+
"id": "c8VSns6fO6Pg"
|
| 7 |
+
},
|
| 8 |
+
"source": [
|
| 9 |
+
"**Seeding for reproducibility**"
|
| 10 |
+
]
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"cell_type": "code",
|
| 14 |
+
"execution_count": 20,
|
| 15 |
+
"metadata": {
|
| 16 |
+
"id": "JSu8kpnEHDPB"
|
| 17 |
+
},
|
| 18 |
+
"outputs": [],
|
| 19 |
+
"source": [
|
| 20 |
+
"# Set seeds for reproducibility\n",
|
| 21 |
+
"import random\n",
|
| 22 |
+
"random.seed(0)\n",
|
| 23 |
+
"\n",
|
| 24 |
+
"import numpy as np\n",
|
| 25 |
+
"np.random.seed(0)\n"
|
| 26 |
+
]
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"cell_type": "code",
|
| 30 |
+
"execution_count": 21,
|
| 31 |
+
"metadata": {
|
| 32 |
+
"id": "16dILovOOFy0"
|
| 33 |
+
},
|
| 34 |
+
"outputs": [],
|
| 35 |
+
"source": [
|
| 36 |
+
"import os\n",
|
| 37 |
+
"import json\n",
|
| 38 |
+
"from PIL import Image\n",
|
| 39 |
+
"\n",
|
| 40 |
+
"import tensorflow as tf\n",
|
| 41 |
+
"import cv2\n",
|
| 42 |
+
"import numpy as np\n",
|
| 43 |
+
"import matplotlib.pyplot as plt\n",
|
| 44 |
+
"import matplotlib.image as mpimg\n",
|
| 45 |
+
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
|
| 46 |
+
"from tensorflow.keras import layers, models"
|
| 47 |
+
]
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"cell_type": "markdown",
|
| 51 |
+
"metadata": {
|
| 52 |
+
"id": "7gAnTOlEPR8a"
|
| 53 |
+
},
|
| 54 |
+
"source": [
|
| 55 |
+
"**Data Curation**"
|
| 56 |
+
]
|
| 57 |
+
},
|
| 58 |
+
{
|
| 59 |
+
"cell_type": "markdown",
|
| 60 |
+
"metadata": {
|
| 61 |
+
"id": "GT4tQUqBs90l"
|
| 62 |
+
},
|
| 63 |
+
"source": [
|
| 64 |
+
"Upload the kaggle.json file"
|
| 65 |
+
]
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"cell_type": "code",
|
| 69 |
+
"execution_count": 5,
|
| 70 |
+
"metadata": {
|
| 71 |
+
"colab": {
|
| 72 |
+
"base_uri": "https://localhost:8080/"
|
| 73 |
+
},
|
| 74 |
+
"id": "FKWvyGVDtALx",
|
| 75 |
+
"outputId": "f565ec66-6b79-4d7f-ce6f-ecb12f388e37"
|
| 76 |
+
},
|
| 77 |
+
"outputs": [
|
| 78 |
+
{
|
| 79 |
+
"name": "stdout",
|
| 80 |
+
"output_type": "stream",
|
| 81 |
+
"text": [
|
| 82 |
+
"Requirement already satisfied: mpimg in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (0.0.1)\n",
|
| 83 |
+
"Requirement already satisfied: kaggle in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (1.6.14)\n",
|
| 84 |
+
"Requirement already satisfied: click in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from mpimg) (8.1.7)\n",
|
| 85 |
+
"Requirement already satisfied: pillow in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from mpimg) (10.2.0)\n",
|
| 86 |
+
"Requirement already satisfied: six>=1.10 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (1.16.0)\n",
|
| 87 |
+
"Requirement already satisfied: certifi>=2023.7.22 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (2023.7.22)\n",
|
| 88 |
+
"Requirement already satisfied: python-dateutil in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (2.8.2)\n",
|
| 89 |
+
"Requirement already satisfied: requests in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (2.31.0)\n",
|
| 90 |
+
"Requirement already satisfied: tqdm in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (4.66.2)\n",
|
| 91 |
+
"Requirement already satisfied: python-slugify in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (8.0.4)\n",
|
| 92 |
+
"Requirement already satisfied: urllib3 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (2.1.0)\n",
|
| 93 |
+
"Requirement already satisfied: bleach in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from kaggle) (6.1.0)\n",
|
| 94 |
+
"Requirement already satisfied: webencodings in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from bleach->kaggle) (0.5.1)\n",
|
| 95 |
+
"Requirement already satisfied: colorama in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from click->mpimg) (0.4.6)\n",
|
| 96 |
+
"Requirement already satisfied: text-unidecode>=1.3 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from python-slugify->kaggle) (1.3)\n",
|
| 97 |
+
"Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from requests->kaggle) (3.3.2)\n",
|
| 98 |
+
"Requirement already satisfied: idna<4,>=2.5 in c:\\users\\lenovo\\miniconda3\\envs\\tf\\lib\\site-packages (from requests->kaggle) (2.10)\n"
|
| 99 |
+
]
|
| 100 |
+
}
|
| 101 |
+
],
|
| 102 |
+
"source": [
|
| 103 |
+
"!pip install mpimg kaggle"
|
| 104 |
+
]
|
| 105 |
+
},
|
| 106 |
+
{
|
| 107 |
+
"cell_type": "code",
|
| 108 |
+
"execution_count": 3,
|
| 109 |
+
"metadata": {
|
| 110 |
+
"id": "ZM5gnAAVtH0s"
|
| 111 |
+
},
|
| 112 |
+
"outputs": [],
|
| 113 |
+
"source": [
|
| 114 |
+
"kaggle_credentails = json.load(open(\"kaggle.json\"))"
|
| 115 |
+
]
|
| 116 |
+
},
|
| 117 |
+
{
|
| 118 |
+
"cell_type": "code",
|
| 119 |
+
"execution_count": 22,
|
| 120 |
+
"metadata": {
|
| 121 |
+
"id": "xWS6H5mPtNa_"
|
| 122 |
+
},
|
| 123 |
+
"outputs": [],
|
| 124 |
+
"source": [
|
| 125 |
+
"# setup Kaggle API key as environment variables\n",
|
| 126 |
+
"os.environ['KAGGLE_USERNAME'] = kaggle_credentails[\"username\"]\n",
|
| 127 |
+
"os.environ['KAGGLE_KEY'] = kaggle_credentails[\"key\"]"
|
| 128 |
+
]
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"cell_type": "code",
|
| 132 |
+
"execution_count": 23,
|
| 133 |
+
"metadata": {
|
| 134 |
+
"colab": {
|
| 135 |
+
"base_uri": "https://localhost:8080/"
|
| 136 |
+
},
|
| 137 |
+
"id": "ypPVDLobtUr5",
|
| 138 |
+
"outputId": "53a70f81-a8ed-4287-f1f5-678b465142d0"
|
| 139 |
+
},
|
| 140 |
+
"outputs": [
|
| 141 |
+
{
|
| 142 |
+
"name": "stderr",
|
| 143 |
+
"output_type": "stream",
|
| 144 |
+
"text": [
|
| 145 |
+
"'kaggle' is not recognized as an internal or external command,\n",
|
| 146 |
+
"operable program or batch file.\n"
|
| 147 |
+
]
|
| 148 |
+
}
|
| 149 |
+
],
|
| 150 |
+
"source": [
|
| 151 |
+
"!kaggle datasets download -d abdallahalidev/plantvillage-dataset"
|
| 152 |
+
]
|
| 153 |
+
},
|
| 154 |
+
{
|
| 155 |
+
"cell_type": "code",
|
| 156 |
+
"execution_count": 24,
|
| 157 |
+
"metadata": {
|
| 158 |
+
"colab": {
|
| 159 |
+
"base_uri": "https://localhost:8080/"
|
| 160 |
+
},
|
| 161 |
+
"id": "20t7J2zctdou",
|
| 162 |
+
"outputId": "71e8ea49-eac0-4f1f-b13c-f59595733d41"
|
| 163 |
+
},
|
| 164 |
+
"outputs": [
|
| 165 |
+
{
|
| 166 |
+
"name": "stderr",
|
| 167 |
+
"output_type": "stream",
|
| 168 |
+
"text": [
|
| 169 |
+
"'ls' is not recognized as an internal or external command,\n",
|
| 170 |
+
"operable program or batch file.\n"
|
| 171 |
+
]
|
| 172 |
+
}
|
| 173 |
+
],
|
| 174 |
+
"source": [
|
| 175 |
+
"!ls"
|
| 176 |
+
]
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"cell_type": "code",
|
| 180 |
+
"execution_count": 25,
|
| 181 |
+
"metadata": {
|
| 182 |
+
"colab": {
|
| 183 |
+
"base_uri": "https://localhost:8080/"
|
| 184 |
+
},
|
| 185 |
+
"id": "A_5Oa9WPtfXr",
|
| 186 |
+
"outputId": "79a1b2c7-ca9c-4a89-febe-17abc7f399d3"
|
| 187 |
+
},
|
| 188 |
+
"outputs": [
|
| 189 |
+
{
|
| 190 |
+
"name": "stdout",
|
| 191 |
+
"output_type": "stream",
|
| 192 |
+
"text": [
|
| 193 |
+
"['color', 'grayscale', 'segmented']\n",
|
| 194 |
+
"['loh(1).JPG', 'loh(10).JPG', 'loh(100).JPG', 'loh(101).JPG', 'loh(102).JPG']\n"
|
| 195 |
+
]
|
| 196 |
+
}
|
| 197 |
+
],
|
| 198 |
+
"source": [
|
| 199 |
+
"print(os.listdir(\"plantvillage dataset\"))\n",
|
| 200 |
+
"\n",
|
| 201 |
+
"\n",
|
| 202 |
+
"#print(len(os.listdir(\"plantvillage dataset/segmented\")))\n",
|
| 203 |
+
"#print(os.listdir(\"plantvillage dataset/segmented\")[:5])\n",
|
| 204 |
+
"\n",
|
| 205 |
+
"#print(len(os.listdir(\"plantvillage dataset/color\")))\n",
|
| 206 |
+
"#print(os.listdir(\"plantvillage dataset/color\")[:5])\n",
|
| 207 |
+
"\n",
|
| 208 |
+
"#print(len(os.listdir(\"plantvillage dataset/grayscale\")))\n",
|
| 209 |
+
"#print(os.listdir(\"plantvillage dataset/grayscale\")[:5])\n",
|
| 210 |
+
"\n",
|
| 211 |
+
"print((os.listdir(\"wheat_dataset/Healthy\")[:5]))"
|
| 212 |
+
]
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"cell_type": "markdown",
|
| 216 |
+
"metadata": {
|
| 217 |
+
"id": "snyC_-2jt0z3"
|
| 218 |
+
},
|
| 219 |
+
"source": [
|
| 220 |
+
"**Number of Classes = 38**"
|
| 221 |
+
]
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"cell_type": "code",
|
| 225 |
+
"execution_count": 26,
|
| 226 |
+
"metadata": {
|
| 227 |
+
"colab": {
|
| 228 |
+
"base_uri": "https://localhost:8080/"
|
| 229 |
+
},
|
| 230 |
+
"id": "CFR52Pk6tp2U",
|
| 231 |
+
"outputId": "4917ce76-17f2-4103-85ca-14d2af84dc06"
|
| 232 |
+
},
|
| 233 |
+
"outputs": [
|
| 234 |
+
{
|
| 235 |
+
"name": "stdout",
|
| 236 |
+
"output_type": "stream",
|
| 237 |
+
"text": [
|
| 238 |
+
"423\n",
|
| 239 |
+
"['00e00912-bf75-4cf8-8b7d-ad64b73bea5f___Mt.N.V_HL 6067.JPG', '0163a6aa-fbf8-47c5-965f-59b6efe8bfe5___Mt.N.V_HL 6103.JPG', '0294ca65-4c29-44be-af28-501df9f715e8___Mt.N.V_HL 6176.JPG', '02f95acb-5d92-4f2a-b7ec-3af8709ee7c9___Mt.N.V_HL 9078.JPG', '03027791-26bb-4c46-960e-8df76e27042c___Mt.N.V_HL 6070.JPG']\n"
|
| 240 |
+
]
|
| 241 |
+
}
|
| 242 |
+
],
|
| 243 |
+
"source": [
|
| 244 |
+
"print(len(os.listdir(\"plantvillage dataset/color/Grape___healthy\")))\n",
|
| 245 |
+
"print(os.listdir(\"plantvillage dataset/color/Grape___healthy\")[:5])"
|
| 246 |
+
]
|
| 247 |
+
},
|
| 248 |
+
{
|
| 249 |
+
"cell_type": "markdown",
|
| 250 |
+
"metadata": {
|
| 251 |
+
"id": "JhEi6mbpt4aD"
|
| 252 |
+
},
|
| 253 |
+
"source": [
|
| 254 |
+
"**Data Preprocessing**"
|
| 255 |
+
]
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"cell_type": "code",
|
| 259 |
+
"execution_count": 27,
|
| 260 |
+
"metadata": {
|
| 261 |
+
"id": "WlqvsdtBttrh"
|
| 262 |
+
},
|
| 263 |
+
"outputs": [],
|
| 264 |
+
"source": [
|
| 265 |
+
"# Dataset Path\n",
|
| 266 |
+
"base_dir = 'wheat_dataset'"
|
| 267 |
+
]
|
| 268 |
+
},
|
| 269 |
+
{
|
| 270 |
+
"cell_type": "code",
|
| 271 |
+
"execution_count": 28,
|
| 272 |
+
"metadata": {
|
| 273 |
+
"id": "w6S1jYo0u5o-"
|
| 274 |
+
},
|
| 275 |
+
"outputs": [],
|
| 276 |
+
"source": [
|
| 277 |
+
"# Image Parameters\n",
|
| 278 |
+
"img_size = 224\n",
|
| 279 |
+
"batch_size = 32"
|
| 280 |
+
]
|
| 281 |
+
},
|
| 282 |
+
{
|
| 283 |
+
"cell_type": "markdown",
|
| 284 |
+
"metadata": {
|
| 285 |
+
"id": "Lcovy3vxvf31"
|
| 286 |
+
},
|
| 287 |
+
"source": [
|
| 288 |
+
"**Train Test Split**"
|
| 289 |
+
]
|
| 290 |
+
},
|
| 291 |
+
{
|
| 292 |
+
"cell_type": "code",
|
| 293 |
+
"execution_count": 29,
|
| 294 |
+
"metadata": {
|
| 295 |
+
"id": "zoJjajTcvTae"
|
| 296 |
+
},
|
| 297 |
+
"outputs": [],
|
| 298 |
+
"source": [
|
| 299 |
+
"# Image Data Generators\n",
|
| 300 |
+
"data_gen = ImageDataGenerator(\n",
|
| 301 |
+
" rescale=1./255,\n",
|
| 302 |
+
" validation_split=0.2 # Use 20% of data for validation\n",
|
| 303 |
+
")"
|
| 304 |
+
]
|
| 305 |
+
},
|
| 306 |
+
{
|
| 307 |
+
"cell_type": "code",
|
| 308 |
+
"execution_count": 30,
|
| 309 |
+
"metadata": {
|
| 310 |
+
"colab": {
|
| 311 |
+
"base_uri": "https://localhost:8080/"
|
| 312 |
+
},
|
| 313 |
+
"id": "pnwsA5IPvWNG",
|
| 314 |
+
"outputId": "be155ed6-aa77-4f28-c202-94fba6ea59bd"
|
| 315 |
+
},
|
| 316 |
+
"outputs": [
|
| 317 |
+
{
|
| 318 |
+
"name": "stdout",
|
| 319 |
+
"output_type": "stream",
|
| 320 |
+
"text": [
|
| 321 |
+
"Found 327 images belonging to 3 classes.\n"
|
| 322 |
+
]
|
| 323 |
+
}
|
| 324 |
+
],
|
| 325 |
+
"source": [
|
| 326 |
+
"# Train Generator\n",
|
| 327 |
+
"train_generator = data_gen.flow_from_directory(\n",
|
| 328 |
+
" base_dir,\n",
|
| 329 |
+
" target_size=(img_size, img_size),\n",
|
| 330 |
+
" batch_size=batch_size,\n",
|
| 331 |
+
" subset='training',\n",
|
| 332 |
+
" class_mode='categorical'\n",
|
| 333 |
+
")"
|
| 334 |
+
]
|
| 335 |
+
},
|
| 336 |
+
{
|
| 337 |
+
"cell_type": "code",
|
| 338 |
+
"execution_count": 31,
|
| 339 |
+
"metadata": {
|
| 340 |
+
"colab": {
|
| 341 |
+
"base_uri": "https://localhost:8080/"
|
| 342 |
+
},
|
| 343 |
+
"id": "RtxNLvmbvYNX",
|
| 344 |
+
"outputId": "a60d0b2a-bba4-4595-d5e1-e9f6978ddbab"
|
| 345 |
+
},
|
| 346 |
+
"outputs": [
|
| 347 |
+
{
|
| 348 |
+
"name": "stdout",
|
| 349 |
+
"output_type": "stream",
|
| 350 |
+
"text": [
|
| 351 |
+
"Found 80 images belonging to 3 classes.\n"
|
| 352 |
+
]
|
| 353 |
+
}
|
| 354 |
+
],
|
| 355 |
+
"source": [
|
| 356 |
+
"# Validation Generator\n",
|
| 357 |
+
"validation_generator = data_gen.flow_from_directory(\n",
|
| 358 |
+
" base_dir,\n",
|
| 359 |
+
" target_size=(img_size, img_size),\n",
|
| 360 |
+
" batch_size=batch_size,\n",
|
| 361 |
+
" subset='validation',\n",
|
| 362 |
+
" class_mode='categorical'\n",
|
| 363 |
+
")"
|
| 364 |
+
]
|
| 365 |
+
},
|
| 366 |
+
{
|
| 367 |
+
"cell_type": "markdown",
|
| 368 |
+
"metadata": {
|
| 369 |
+
"id": "fE4vUKMkviT8"
|
| 370 |
+
},
|
| 371 |
+
"source": [
|
| 372 |
+
"**Convolutional Neural Network**"
|
| 373 |
+
]
|
| 374 |
+
},
|
| 375 |
+
{
|
| 376 |
+
"cell_type": "code",
|
| 377 |
+
"execution_count": 32,
|
| 378 |
+
"metadata": {
|
| 379 |
+
"id": "VUsvwveevZ-m"
|
| 380 |
+
},
|
| 381 |
+
"outputs": [],
|
| 382 |
+
"source": [
|
| 383 |
+
"# Model Definition\n",
|
| 384 |
+
"model = models.Sequential()\n",
|
| 385 |
+
"\n",
|
| 386 |
+
"model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(img_size, img_size, 3)))\n",
|
| 387 |
+
"model.add(layers.MaxPooling2D(2, 2))\n",
|
| 388 |
+
"\n",
|
| 389 |
+
"model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n",
|
| 390 |
+
"model.add(layers.MaxPooling2D(2, 2))\n",
|
| 391 |
+
"\n",
|
| 392 |
+
"model.add(layers.Flatten())\n",
|
| 393 |
+
"model.add(layers.Dense(256, activation='relu'))\n",
|
| 394 |
+
"model.add(layers.Dense(train_generator.num_classes, activation='softmax'))"
|
| 395 |
+
]
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"cell_type": "code",
|
| 399 |
+
"execution_count": 33,
|
| 400 |
+
"metadata": {
|
| 401 |
+
"colab": {
|
| 402 |
+
"base_uri": "https://localhost:8080/"
|
| 403 |
+
},
|
| 404 |
+
"id": "T9qJo-GSvoIB",
|
| 405 |
+
"outputId": "56ed059c-85f2-4490-8dfc-63e25516d2ea"
|
| 406 |
+
},
|
| 407 |
+
"outputs": [
|
| 408 |
+
{
|
| 409 |
+
"name": "stdout",
|
| 410 |
+
"output_type": "stream",
|
| 411 |
+
"text": [
|
| 412 |
+
"Model: \"sequential_1\"\n",
|
| 413 |
+
"_________________________________________________________________\n",
|
| 414 |
+
" Layer (type) Output Shape Param # \n",
|
| 415 |
+
"=================================================================\n",
|
| 416 |
+
" conv2d_4 (Conv2D) (None, 222, 222, 32) 896 \n",
|
| 417 |
+
" \n",
|
| 418 |
+
" max_pooling2d_4 (MaxPooling (None, 111, 111, 32) 0 \n",
|
| 419 |
+
" 2D) \n",
|
| 420 |
+
" \n",
|
| 421 |
+
" conv2d_5 (Conv2D) (None, 109, 109, 64) 18496 \n",
|
| 422 |
+
" \n",
|
| 423 |
+
" max_pooling2d_5 (MaxPooling (None, 54, 54, 64) 0 \n",
|
| 424 |
+
" 2D) \n",
|
| 425 |
+
" \n",
|
| 426 |
+
" flatten_1 (Flatten) (None, 186624) 0 \n",
|
| 427 |
+
" \n",
|
| 428 |
+
" dense_2 (Dense) (None, 256) 47776000 \n",
|
| 429 |
+
" \n",
|
| 430 |
+
" dense_3 (Dense) (None, 3) 771 \n",
|
| 431 |
+
" \n",
|
| 432 |
+
"=================================================================\n",
|
| 433 |
+
"Total params: 47,796,163\n",
|
| 434 |
+
"Trainable params: 47,796,163\n",
|
| 435 |
+
"Non-trainable params: 0\n",
|
| 436 |
+
"_________________________________________________________________\n"
|
| 437 |
+
]
|
| 438 |
+
}
|
| 439 |
+
],
|
| 440 |
+
"source": [
|
| 441 |
+
"# model summary\n",
|
| 442 |
+
"model.summary()"
|
| 443 |
+
]
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"cell_type": "code",
|
| 447 |
+
"execution_count": 34,
|
| 448 |
+
"metadata": {
|
| 449 |
+
"id": "PKi-ot0xvpC8"
|
| 450 |
+
},
|
| 451 |
+
"outputs": [],
|
| 452 |
+
"source": [
|
| 453 |
+
"# Compile the Model\n",
|
| 454 |
+
"model.compile(optimizer='adam',\n",
|
| 455 |
+
" loss='categorical_crossentropy',\n",
|
| 456 |
+
" metrics=['accuracy'])\n",
|
| 457 |
+
"gpus = tf.config.experimental.list_physical_devices('GPU')\n",
|
| 458 |
+
"for gpu in gpus:\n",
|
| 459 |
+
" tf.config.experimental.set_memory_growth(gpu, False)"
|
| 460 |
+
]
|
| 461 |
+
},
|
| 462 |
+
{
|
| 463 |
+
"cell_type": "code",
|
| 464 |
+
"execution_count": 35,
|
| 465 |
+
"metadata": {
|
| 466 |
+
"colab": {
|
| 467 |
+
"base_uri": "https://localhost:8080/"
|
| 468 |
+
},
|
| 469 |
+
"id": "bSvHhJqevyjE",
|
| 470 |
+
"outputId": "51052757-e403-4ed0-87b0-42ff1ff6451b"
|
| 471 |
+
},
|
| 472 |
+
"outputs": [
|
| 473 |
+
{
|
| 474 |
+
"name": "stdout",
|
| 475 |
+
"output_type": "stream",
|
| 476 |
+
"text": [
|
| 477 |
+
"Physical devices cannot be modified after being initialized\n",
|
| 478 |
+
"Epoch 1/5\n",
|
| 479 |
+
"10/10 [==============================] - 30s 3s/step - loss: 4.1255 - accuracy: 0.4508 - val_loss: 0.7565 - val_accuracy: 0.6094\n",
|
| 480 |
+
"Epoch 2/5\n",
|
| 481 |
+
"10/10 [==============================] - 25s 3s/step - loss: 0.6521 - accuracy: 0.7153 - val_loss: 0.7675 - val_accuracy: 0.6094\n",
|
| 482 |
+
"Epoch 3/5\n",
|
| 483 |
+
"10/10 [==============================] - 31s 3s/step - loss: 0.3882 - accuracy: 0.8610 - val_loss: 0.5415 - val_accuracy: 0.8125\n",
|
| 484 |
+
"Epoch 4/5\n",
|
| 485 |
+
"10/10 [==============================] - 26s 3s/step - loss: 0.1780 - accuracy: 0.9390 - val_loss: 0.3293 - val_accuracy: 0.8438\n",
|
| 486 |
+
"Epoch 5/5\n",
|
| 487 |
+
"10/10 [==============================] - 25s 3s/step - loss: 0.1449 - accuracy: 0.9458 - val_loss: 0.5131 - val_accuracy: 0.7500\n"
|
| 488 |
+
]
|
| 489 |
+
}
|
| 490 |
+
],
|
| 491 |
+
"source": [
|
| 492 |
+
"import tensorflow as tf\n",
|
| 493 |
+
"\n",
|
| 494 |
+
"# Check if GPU is available\n",
|
| 495 |
+
"gpus = tf.config.list_physical_devices('GPU')\n",
|
| 496 |
+
"if gpus:\n",
|
| 497 |
+
" try:\n",
|
| 498 |
+
" # Enable memory growth for each GPU\n",
|
| 499 |
+
" for gpu in gpus:\n",
|
| 500 |
+
" tf.config.experimental.set_memory_growth(gpu, True)\n",
|
| 501 |
+
" print(\"GPU(s) found and memory growth enabled.\")\n",
|
| 502 |
+
" except RuntimeError as e:\n",
|
| 503 |
+
" print(e)\n",
|
| 504 |
+
"else:\n",
|
| 505 |
+
" print(\"No GPU(s) found.\")\n",
|
| 506 |
+
" \n",
|
| 507 |
+
"history = model.fit(\n",
|
| 508 |
+
" train_generator,\n",
|
| 509 |
+
" steps_per_epoch=train_generator.samples // batch_size,\n",
|
| 510 |
+
" epochs=5,\n",
|
| 511 |
+
" validation_data=validation_generator,\n",
|
| 512 |
+
" validation_steps=validation_generator.samples // batch_size\n",
|
| 513 |
+
")"
|
| 514 |
+
]
|
| 515 |
+
},
|
| 516 |
+
{
|
| 517 |
+
"cell_type": "markdown",
|
| 518 |
+
"metadata": {
|
| 519 |
+
"id": "RjQfNu7QwZjw"
|
| 520 |
+
},
|
| 521 |
+
"source": [
|
| 522 |
+
"**Model Evaluation**"
|
| 523 |
+
]
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"cell_type": "code",
|
| 527 |
+
"execution_count": 36,
|
| 528 |
+
"metadata": {
|
| 529 |
+
"colab": {
|
| 530 |
+
"base_uri": "https://localhost:8080/"
|
| 531 |
+
},
|
| 532 |
+
"id": "q9SRLiOMv3qm",
|
| 533 |
+
"outputId": "c5680df7-67df-41c9-84c7-bee0b17b7f0c"
|
| 534 |
+
},
|
| 535 |
+
"outputs": [
|
| 536 |
+
{
|
| 537 |
+
"name": "stdout",
|
| 538 |
+
"output_type": "stream",
|
| 539 |
+
"text": [
|
| 540 |
+
"Evaluating model...\n",
|
| 541 |
+
"2/2 [==============================] - 4s 2s/step - loss: 0.4480 - accuracy: 0.7812\n",
|
| 542 |
+
"Validation Accuracy: 78.12%\n"
|
| 543 |
+
]
|
| 544 |
+
}
|
| 545 |
+
],
|
| 546 |
+
"source": [
|
| 547 |
+
"# Model Evaluation\n",
|
| 548 |
+
"print(\"Evaluating model...\")\n",
|
| 549 |
+
"val_loss, val_accuracy = model.evaluate(validation_generator, steps=validation_generator.samples // batch_size)\n",
|
| 550 |
+
"print(f\"Validation Accuracy: {val_accuracy * 100:.2f}%\")"
|
| 551 |
+
]
|
| 552 |
+
},
|
| 553 |
+
{
|
| 554 |
+
"cell_type": "code",
|
| 555 |
+
"execution_count": 37,
|
| 556 |
+
"metadata": {
|
| 557 |
+
"colab": {
|
| 558 |
+
"base_uri": "https://localhost:8080/",
|
| 559 |
+
"height": 927
|
| 560 |
+
},
|
| 561 |
+
"id": "ZxP07UNywYPj",
|
| 562 |
+
"outputId": "228b5e7e-2a21-4cbb-931f-55708ed0cc34"
|
| 563 |
+
},
|
| 564 |
+
"outputs": [
|
| 565 |
+
{
|
| 566 |
+
"data": {
|
| 567 |
+
"image/png": "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",
|
| 568 |
+
"text/plain": [
|
| 569 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 570 |
+
]
|
| 571 |
+
},
|
| 572 |
+
"metadata": {},
|
| 573 |
+
"output_type": "display_data"
|
| 574 |
+
},
|
| 575 |
+
{
|
| 576 |
+
"data": {
|
| 577 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABT/ElEQVR4nO3deXhTZd4+8PskbdM1aUv3BSiLbdnKDsV5BRRlEwVREJkBHdRRwYFRZ174OYPbOMVR1HFQkHGgM6MOq6AvgliQZWQZWkq1ICA7BZoutiRdaNom5/dHmjRp09KWNCcnuT/Xda62J89JntNYc/M8zzlfQRRFEUREREQeQiF1B4iIiIicieGGiIiIPArDDREREXkUhhsiIiLyKAw3RERE5FEYboiIiMijMNwQERGRR2G4ISIiIo/CcENEREQeheGGiNyeIAh4+eWX233cxYsXIQgCMjMzW223d+9eCIKAvXv3dqh/ROReGG6IqE0yMzMhCAIEQcC3337b7HFRFJGYmAhBEHDvvfdK0EMiIjOGGyJqF39/f3z66afN9u/btw9XrlyBSqWSoFdERI0YboioXSZNmoSNGzeivr7ebv+nn36KIUOGICYmRqKeERGZMdwQUbvMmjULP/30E7Kysqz7amtrsWnTJjzyyCMOj6mqqsLzzz+PxMREqFQqJCcn46233oIoinbtDAYDfvOb3yAyMhIhISG47777cOXKFYfPefXqVfzyl79EdHQ0VCoV+vbtizVr1jjvRAFs3LgRQ4YMQUBAACIiIvDzn/8cV69etWuj1Wrx2GOPISEhASqVCrGxsbj//vtx8eJFa5ucnByMHz8eERERCAgIQFJSEn75y186ta9E1MhH6g4Qkbx0794d6enp+Pe//42JEycCAHbs2AGdToeHH34Y7733nl17URRx3333Yc+ePZg3bx4GDhyInTt34re//S2uXr2Kd955x9r28ccfx8cff4xHHnkEo0aNwjfffIPJkyc360NRURFGjhwJQRCwYMECREZGYseOHZg3bx70ej0WLVp0y+eZmZmJxx57DMOGDUNGRgaKiorwl7/8BQcOHMCxY8cQGhoKAJg+fTpOnDiBZ599Ft27d0dxcTGysrJw+fJl68/33HMPIiMjsXjxYoSGhuLixYv47LPPbrmPRNQCkYioDdauXSsCELOzs8UVK1aIISEhYnV1tSiKovjQQw+JY8eOFUVRFLt16yZOnjzZetzWrVtFAOIf//hHu+d78MEHRUEQxLNnz4qiKIp5eXkiAPGZZ56xa/fII4+IAMSXXnrJum/evHlibGysWFpaatf24YcfFjUajbVfFy5cEAGIa9eubfXc9uzZIwIQ9+zZI4qiKNbW1opRUVFiv379xBs3bljbbdu2TQQgLl26VBRFUSwvLxcBiG+++WaLz71lyxbr742IXIPTUkTUbjNmzMCNGzewbds2VFRUYNu2bS1OSW3fvh1KpRK//vWv7fY///zzEEURO3bssLYD0Kxd01EYURSxefNmTJkyBaIoorS01LqNHz8eOp0Oubm5t3R+OTk5KC4uxjPPPAN/f3/r/smTJyMlJQVffvklACAgIAB+fn7Yu3cvysvLHT6XZYRn27ZtqKuru6V+EVHbMNwQUbtFRkZi3Lhx+PTTT/HZZ5/BaDTiwQcfdNj20qVLiIuLQ0hIiN3+1NRU6+OWrwqFAj179rRrl5ycbPdzSUkJrl+/jtWrVyMyMtJue+yxxwAAxcXFt3R+lj41fW0ASElJsT6uUqnwxhtvYMeOHYiOjsYdd9yBP//5z9Bqtdb2o0ePxvTp0/HKK68gIiIC999/P9auXQuDwXBLfSSilnHNDRF1yCOPPIInnngCWq0WEydOtI5QdDaTyQQA+PnPf465c+c6bDNgwACX9AUwjyxNmTIFW7duxc6dO/GHP/wBGRkZ+OabbzBo0CAIgoBNmzbh8OHD+L//+z/s3LkTv/zlL7F8+XIcPnwYwcHBLusrkbfgyA0Rdci0adOgUChw+PDhFqekAKBbt264du0aKioq7PafOnXK+rjlq8lkwrlz5+zanT592u5ny5VURqMR48aNc7hFRUXd0rlZ+tT0tS37LI9b9OzZE88//zy+/vprHD9+HLW1tVi+fLldm5EjR+L1119HTk4OPvnkE5w4cQLr1q27pX4SkWMMN0TUIcHBwVi5ciVefvllTJkypcV2kyZNgtFoxIoVK+z2v/POOxAEwXrFleVr06ut3n33XbuflUolpk+fjs2bN+P48ePNXq+kpKQjp2Nn6NChiIqKwqpVq+ymj3bs2IGTJ09ar+Cqrq5GTU2N3bE9e/ZESEiI9bjy8vJml7wPHDgQADg1RdRJOC1FRB3W0rSQrSlTpmDs2LF48cUXcfHiRaSlpeHrr7/G559/jkWLFlnX2AwcOBCzZs3CBx98AJ1Oh1GjRmH37t04e/Zss+dctmwZ9uzZgxEjRuCJJ55Anz59UFZWhtzcXOzatQtlZWW3dF6+vr5444038Nhjj2H06NGYNWuW9VLw7t274ze/+Q0A4Mcff8Rdd92FGTNmoE+fPvDx8cGWLVtQVFSEhx9+GADwj3/8Ax988AGmTZuGnj17oqKiAn/729+gVqsxadKkW+onETnGcENEnUqhUOCLL77A0qVLsX79eqxduxbdu3fHm2++ieeff96u7Zo1axAZGYlPPvkEW7duxZ133okvv/wSiYmJdu2io6Nx5MgRvPrqq/jss8/wwQcfoEuXLujbty/eeOMNp/T70UcfRWBgIJYtW4b//d//RVBQEKZNm4Y33njDur4oMTERs2bNwu7du/Gvf/0LPj4+SElJwYYNGzB9+nQA5gXFR44cwbp161BUVASNRoPhw4fjk08+QVJSklP6SkT2BLHpeCkRERGRjHHNDREREXkUhhsiIiLyKAw3RERE5FEYboiIiMijMNwQERGRR2G4ISIiIo/idfe5MZlMuHbtGkJCQiAIgtTdISIiojYQRREVFRWIi4uDQtH62IzXhZtr1641uyEYERERyUNBQQESEhJabeN14SYkJASA+ZejVqsl7g0RERG1hV6vR2JiovVzvDVeF24sU1FqtZrhhoiISGbasqSEC4qJiIjIozDcEBERkUdhuCEiIiKP4nVrbtrKaDSirq5O6m7Ilq+vL5RKpdTdICIiL8Rw04QoitBqtbh+/brUXZG90NBQxMTE8H5CRETkUgw3TViCTVRUFAIDA/nB3AGiKKK6uhrFxcUAgNjYWIl7RERE3oThxobRaLQGmy5dukjdHVkLCAgAABQXFyMqKopTVERE5DJcUGzDssYmMDBQ4p54BsvvkWuXiIjIlRhuHOBUlHPw90hERFJguCEiIiKPwnBDLerevTveffddqbtBRETULgw3HkAQhFa3l19+uUPPm52djSeffNK5nSUiIupkvFrKieqMJtQbRQT4ufbKoMLCQuv369evx9KlS3H69GnrvuDgYOv3oijCaDTCx+fmb31kZKRzO0pEROQCHLlxEt2NWpwqrMDV6zdc/toxMTHWTaPRQBAE68+nTp1CSEgIduzYgSFDhkClUuHbb7/FuXPncP/99yM6OhrBwcEY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TE5ORl5eHnQ6HTZt2oS5c+di3759LQYAuWnP+cntvSsoKMDChQuRlZXl9gufGW7aKCIiAkqlEkVFRXb7i4qKEBMT4/CYmJiYdrWXUkfOrylfX18MGjQIZ8+e7YwuulxL759arUZAQIBEvepcw4cPd/vAsGDBAmzbtg379+9HQkJCq23l9Ddoqz3n2JS7/x36+fmhV69eAIAhQ4YgOzsbf/nLX/Dhhx82ayvH968959eUu793R48eRXFxMQYPHmzdZzQasX//fqxYsQIGgwFKpdLuGKneQ05LtZGfnx+GDBmC3bt3W/eZTCbs3r27xfnU9PR0u/YAkJWV1er8q1Q6cn5NGY1G5OfnIzY2trO66VJyev+cJS8vz23fP1EUsWDBAmzZsgXffPMNkpKSbnqM3N7DjpxjU3L7OzSZTDAYDA4fk9v750hr59eUu793d911F/Lz85GXl2fdhg4ditmzZyMvL69ZsAEkfA87dbmyh1m3bp2oUqnEzMxM8YcffhCffPJJMTQ0VNRqtaIoiuIvfvELcfHixdb2Bw4cEH18fMS33npLPHnypPjSSy+Jvr6+Yn5+vlSn0Kr2nt8rr7wi7ty5Uzx37px49OhR8eGHHxb9/f3FEydOSHUKraqoqBCPHTsmHjt2TAQgvv322+KxY8fES5cuiaIoiosXLxZ/8YtfWNufP39eDAwMFH/729+KJ0+eFN9//31RqVSKX331lVSn0Kr2nt8777wjbt26VTxz5oyYn58vLly4UFQoFOKuXbukOoVWPf3006JGoxH37t0rFhYWWrfq6mprG7n/DXbkHOX0d7h48WJx37594oULF8Tvv/9eXLx4sSgIgvj111+Loij/96+95yen964lTa+Wcpf3kOGmnf7617+KXbt2Ff38/MThw4eLhw8ftj42evRoce7cuXbtN2zYIN52222in5+f2LdvX/HLL790cY/bpz3nt2jRImvb6OhocdKkSWJubq4EvW4by6XPTTfLOc2dO1ccPXp0s2MGDhwo+vn5iT169BDXrl3r8n63VXvP74033hB79uwp+vv7i+Hh4eKYMWPEb775RprOt4GjcwNg957I/W+wI+cop7/DX/7yl2K3bt1EPz8/MTIyUrzrrrusH/yiKP/3r73nJ6f3riVNw427vIeCKIpi544NEREREbkO19wQERGRR2G4ISIiIo/CcENEREQeheGGiIiIPArDDREREXkUhhsiIiLyKAw3RERE5FEYbojI6wmCgK1bt0rdDSJyEoYbIpLUo48+CkEQmm0TJkyQumtEJFOsCk5EkpswYQLWrl1rt0+lUknUGyKSO47cEJHkVCoVYmJi7LawsDAA5imjlStXYuLEiQgICECPHj2wadMmu+Pz8/Nx5513IiAgAF26dMGTTz6JyspKuzZr1qxB3759oVKpEBsbiwULFtg9XlpaimnTpiEwMBC9e/fGF1980bknTUSdhuGGiNzeH/7wB0yfPh3fffcdZs+ejYcffhgnT54EAFRVVWH8+PEICwtDdnY2Nm7ciF27dtmFl5UrV2L+/Pl48sknkZ+fjy+++AK9evWye41XXnkFM2bMwPfff49JkyZh9uzZKCsrc+l5EpGTdHppTiKiVsydO1dUKpViUFCQ3fb666+LomiulP3UU0/ZHTNixAjx6aefFkVRFFevXi2GhYWJlZWV1se//PJLUaFQiFqtVhRFUYyLixNffPHFFvsAQPz9739v/bmyslIEIO7YscNp50lErsM1N0QkubFjx2LlypV2+8LDw63fp6en2z2Wnp6OvLw8AMDJkyeRlpaGoKAg6+O33347TCYTTp8+DUEQcO3aNdx1112t9mHAgAHW74OCgqBWq1FcXNzRUyIiCTHcEJHkgoKCmk0TOUtAQECb2vn6+tr9LAgCTCZTZ3SJiDoZ19wQkds7fPhws59TU1MBAKmpqfjuu+9QVVVlffzAgQNQKBRITk5GSEgIunfvjt27d7u0z0QkHY7cEJHkDAYDtFqt3T4fHx9EREQAADZu3IihQ4fiZz/7GT755BMcOXIEf//73wEAs2fPxksvvYS5c+fi5ZdfRklJCZ599ln84he/QHR0NADg5ZdfxlNPPYWoqChMnDgRFRUVOHDgAJ599lnXnigRuQTDDRFJ7quvvkJsbKzdvuTkZJw6dQqA+UqmdevW4ZlnnkFsbCz+/e9/o0+fPgCAwMBA7Ny5EwsXLsSwYcMQGBiI6dOn4+2337Y+19y5c1FTU4N33nkHL7zwAiIiIvDggw+67gSJyKUEURRFqTtBRNQSQRCwZcsWTJ06VequEJFMcM0NEREReRSGGyIiIvIoXHNDRG6NM+dE1F4cuSEiIiKPwnBDREREHoXhhoiIiDwKww0RERF5FIYbIiIi8igMN0RERORRGG6IiIjIozDcEBERkUdhuCEiIiKP8v8BK3axZXrNAGQAAAAASUVORK5CYII=",
|
| 578 |
+
"text/plain": [
|
| 579 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 580 |
+
]
|
| 581 |
+
},
|
| 582 |
+
"metadata": {},
|
| 583 |
+
"output_type": "display_data"
|
| 584 |
+
}
|
| 585 |
+
],
|
| 586 |
+
"source": [
|
| 587 |
+
"# Plot training & validation accuracy values\n",
|
| 588 |
+
"plt.plot(history.history['accuracy'])\n",
|
| 589 |
+
"plt.plot(history.history['val_accuracy'])\n",
|
| 590 |
+
"plt.title('Model accuracy')\n",
|
| 591 |
+
"plt.ylabel('Accuracy')\n",
|
| 592 |
+
"plt.xlabel('Epoch')\n",
|
| 593 |
+
"plt.legend(['Train', 'Test'], loc='upper left')\n",
|
| 594 |
+
"plt.show()\n",
|
| 595 |
+
"\n",
|
| 596 |
+
"# Plot training & validation loss values\n",
|
| 597 |
+
"plt.plot(history.history['loss'])\n",
|
| 598 |
+
"plt.plot(history.history['val_loss'])\n",
|
| 599 |
+
"plt.title('Model loss')\n",
|
| 600 |
+
"plt.ylabel('Loss')\n",
|
| 601 |
+
"plt.xlabel('Epoch')\n",
|
| 602 |
+
"plt.legend(['Train', 'Test'], loc='upper left')\n",
|
| 603 |
+
"plt.show()"
|
| 604 |
+
]
|
| 605 |
+
},
|
| 606 |
+
{
|
| 607 |
+
"cell_type": "markdown",
|
| 608 |
+
"metadata": {
|
| 609 |
+
"id": "zIeDSJa5xkpy"
|
| 610 |
+
},
|
| 611 |
+
"source": [
|
| 612 |
+
"**Building a Predictive System**"
|
| 613 |
+
]
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"cell_type": "code",
|
| 617 |
+
"execution_count": 38,
|
| 618 |
+
"metadata": {
|
| 619 |
+
"id": "0onhRrVkv9-M"
|
| 620 |
+
},
|
| 621 |
+
"outputs": [],
|
| 622 |
+
"source": [
|
| 623 |
+
"# Function to Load and Preprocess the Image using Pillow\n",
|
| 624 |
+
"def load_and_preprocess_image(image_path, target_size=(224, 224)):\n",
|
| 625 |
+
" # Load the image\n",
|
| 626 |
+
" img = Image.open(image_path)\n",
|
| 627 |
+
" # Resize the image\n",
|
| 628 |
+
" img = img.resize(target_size)\n",
|
| 629 |
+
" # Convert the image to a numpy array\n",
|
| 630 |
+
" img_array = np.array(img)\n",
|
| 631 |
+
" # Add batch dimension\n",
|
| 632 |
+
" img_array = np.expand_dims(img_array, axis=0)\n",
|
| 633 |
+
" # Scale the image values to [0, 1]\n",
|
| 634 |
+
" img_array = img_array.astype('float32') / 255.\n",
|
| 635 |
+
" return img_array\n",
|
| 636 |
+
"\n",
|
| 637 |
+
"# Function to Predict the Class of an Image\n",
|
| 638 |
+
"def predict_image_class(model, image_path, class_indices):\n",
|
| 639 |
+
" preprocessed_img = load_and_preprocess_image(image_path)\n",
|
| 640 |
+
" predictions = model.predict(preprocessed_img)\n",
|
| 641 |
+
" predicted_class_index = np.argmax(predictions, axis=1)[0]\n",
|
| 642 |
+
" predicted_class_name = class_indices[predicted_class_index]\n",
|
| 643 |
+
" return predicted_class_name"
|
| 644 |
+
]
|
| 645 |
+
},
|
| 646 |
+
{
|
| 647 |
+
"cell_type": "code",
|
| 648 |
+
"execution_count": 39,
|
| 649 |
+
"metadata": {
|
| 650 |
+
"id": "YZkE2k6gwgOR"
|
| 651 |
+
},
|
| 652 |
+
"outputs": [],
|
| 653 |
+
"source": [
|
| 654 |
+
"# Create a mapping from class indices to class names\n",
|
| 655 |
+
"class_indices = {v: k for k, v in train_generator.class_indices.items()}"
|
| 656 |
+
]
|
| 657 |
+
},
|
| 658 |
+
{
|
| 659 |
+
"cell_type": "code",
|
| 660 |
+
"execution_count": 40,
|
| 661 |
+
"metadata": {
|
| 662 |
+
"colab": {
|
| 663 |
+
"base_uri": "https://localhost:8080/"
|
| 664 |
+
},
|
| 665 |
+
"id": "3dja767dwzFH",
|
| 666 |
+
"outputId": "d0344da3-a583-459c-94dc-d63027b1f4a5"
|
| 667 |
+
},
|
| 668 |
+
"outputs": [
|
| 669 |
+
{
|
| 670 |
+
"data": {
|
| 671 |
+
"text/plain": [
|
| 672 |
+
"{0: 'Healthy', 1: 'septoria', 2: 'stripe_rust'}"
|
| 673 |
+
]
|
| 674 |
+
},
|
| 675 |
+
"execution_count": 40,
|
| 676 |
+
"metadata": {},
|
| 677 |
+
"output_type": "execute_result"
|
| 678 |
+
}
|
| 679 |
+
],
|
| 680 |
+
"source": [
|
| 681 |
+
"class_indices"
|
| 682 |
+
]
|
| 683 |
+
},
|
| 684 |
+
{
|
| 685 |
+
"cell_type": "code",
|
| 686 |
+
"execution_count": 41,
|
| 687 |
+
"metadata": {
|
| 688 |
+
"id": "StM3_I3UwjFV"
|
| 689 |
+
},
|
| 690 |
+
"outputs": [],
|
| 691 |
+
"source": [
|
| 692 |
+
"# saving the class names as json file\n",
|
| 693 |
+
"json.dump(class_indices, open('wheat_indices.json', 'w'))"
|
| 694 |
+
]
|
| 695 |
+
},
|
| 696 |
+
{
|
| 697 |
+
"cell_type": "code",
|
| 698 |
+
"execution_count": 42,
|
| 699 |
+
"metadata": {
|
| 700 |
+
"colab": {
|
| 701 |
+
"base_uri": "https://localhost:8080/"
|
| 702 |
+
},
|
| 703 |
+
"id": "kJb9gQGRw2Ln",
|
| 704 |
+
"outputId": "f329cc1c-2945-416a-f42d-174a433ff60c"
|
| 705 |
+
},
|
| 706 |
+
"outputs": [
|
| 707 |
+
{
|
| 708 |
+
"name": "stdout",
|
| 709 |
+
"output_type": "stream",
|
| 710 |
+
"text": [
|
| 711 |
+
"1/1 [==============================] - 0s 292ms/step\n",
|
| 712 |
+
"Predicted Class Name: septoria\n"
|
| 713 |
+
]
|
| 714 |
+
}
|
| 715 |
+
],
|
| 716 |
+
"source": [
|
| 717 |
+
"# Example Usage\n",
|
| 718 |
+
"#image_path = 'test_images/test_apple_black_rot.JPG'\n",
|
| 719 |
+
"#image_path = 'test_images/test_blueberry_healthy.jpg'\n",
|
| 720 |
+
"image_path = 'wheat_dataset/septoria/los(10).JPG'\n",
|
| 721 |
+
"predicted_class_name = predict_image_class(model, image_path, class_indices)\n",
|
| 722 |
+
"\n",
|
| 723 |
+
"# Output the result\n",
|
| 724 |
+
"print(\"Predicted Class Name:\", predicted_class_name)"
|
| 725 |
+
]
|
| 726 |
+
},
|
| 727 |
+
{
|
| 728 |
+
"cell_type": "markdown",
|
| 729 |
+
"metadata": {
|
| 730 |
+
"id": "QBkknsKMyDbs"
|
| 731 |
+
},
|
| 732 |
+
"source": [
|
| 733 |
+
"**Save the model to Google drive or local**"
|
| 734 |
+
]
|
| 735 |
+
},
|
| 736 |
+
{
|
| 737 |
+
"cell_type": "code",
|
| 738 |
+
"execution_count": 43,
|
| 739 |
+
"metadata": {
|
| 740 |
+
"id": "OfoTNemcxjk5"
|
| 741 |
+
},
|
| 742 |
+
"outputs": [],
|
| 743 |
+
"source": [
|
| 744 |
+
"model.save('plant_disease_prediction_model.h5')"
|
| 745 |
+
]
|
| 746 |
+
},
|
| 747 |
+
{
|
| 748 |
+
"cell_type": "code",
|
| 749 |
+
"execution_count": 44,
|
| 750 |
+
"metadata": {
|
| 751 |
+
"colab": {
|
| 752 |
+
"base_uri": "https://localhost:8080/"
|
| 753 |
+
},
|
| 754 |
+
"id": "J8ByAMH6ykbN",
|
| 755 |
+
"outputId": "8836c7a9-6d35-421f-b36c-f6fb50fd5cf7"
|
| 756 |
+
},
|
| 757 |
+
"outputs": [],
|
| 758 |
+
"source": [
|
| 759 |
+
"model.save('wheat_disease_model.h5')"
|
| 760 |
+
]
|
| 761 |
+
},
|
| 762 |
+
{
|
| 763 |
+
"cell_type": "code",
|
| 764 |
+
"execution_count": null,
|
| 765 |
+
"metadata": {
|
| 766 |
+
"id": "ln01Rmj0L8Hg"
|
| 767 |
+
},
|
| 768 |
+
"outputs": [],
|
| 769 |
+
"source": []
|
| 770 |
+
}
|
| 771 |
+
],
|
| 772 |
+
"metadata": {
|
| 773 |
+
"accelerator": "GPU",
|
| 774 |
+
"colab": {
|
| 775 |
+
"gpuType": "T4",
|
| 776 |
+
"provenance": []
|
| 777 |
+
},
|
| 778 |
+
"kernelspec": {
|
| 779 |
+
"display_name": "Python 3",
|
| 780 |
+
"name": "python3"
|
| 781 |
+
},
|
| 782 |
+
"language_info": {
|
| 783 |
+
"codemirror_mode": {
|
| 784 |
+
"name": "ipython",
|
| 785 |
+
"version": 3
|
| 786 |
+
},
|
| 787 |
+
"file_extension": ".py",
|
| 788 |
+
"mimetype": "text/x-python",
|
| 789 |
+
"name": "python",
|
| 790 |
+
"nbconvert_exporter": "python",
|
| 791 |
+
"pygments_lexer": "ipython3",
|
| 792 |
+
"version": "3.10.14"
|
| 793 |
+
}
|
| 794 |
+
},
|
| 795 |
+
"nbformat": 4,
|
| 796 |
+
"nbformat_minor": 0
|
| 797 |
+
}
|
wheat_disease_model.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:253be796611451854bb6104b11178971cfe11743d0fac6ee01f530a0837d76ff
|
| 3 |
+
size 573600752
|
wheat_indices.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"0": "Healthy", "1": "septoria", "2": "stripe_rust"}
|