{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from datasets import load_dataset\n", "from PIL import Image\n", "import os\n", "\n", "tf.random.set_seed(42)\n", "np.random.seed(42)" ], "metadata": { "id": "PmpwRxtW-EaZ" }, "execution_count": 5, "outputs": [] }, { "cell_type": "code", "source": [ "class BeanCNNClassifier:\n", " def __init__(self, img_size=(224, 224), num_classes=3):\n", " self.img_size = img_size\n", " self.num_classes = num_classes\n", " self.model = None\n", " self.history = None\n", "\n", " def load_and_preprocess_dataset(self):\n", " print(\"Loading beans dataset from Hugging Face...\")\n", "\n", " dataset = load_dataset(\"AI-Lab-Makerere/beans\")\n", "\n", " self.class_names = dataset['train'].features['labels'].names\n", " print(f\"Classes: {self.class_names}\")\n", "\n", " train_images, train_labels = self._process_split(dataset['train'])\n", " val_images, val_labels = self._process_split(dataset['validation'])\n", " test_images, test_labels = self._process_split(dataset['test'])\n", "\n", " print(f\"Training samples: {len(train_images)}\")\n", " print(f\"Validation samples: {len(val_images)}\")\n", " print(f\"Test samples: {len(test_images)}\")\n", "\n", " return (train_images, train_labels), (val_images, val_labels), (test_images, test_labels)\n", "\n", " def _process_split(self, split):\n", " images = []\n", " labels = []\n", "\n", " for item in split:\n", " img = item['image']\n", " if img.mode != 'RGB':\n", " img = img.convert('RGB')\n", "\n", " img = img.resize(self.img_size)\n", " img_array = np.array(img) / 255.0\n", "\n", " images.append(img_array)\n", " labels.append(item['labels'])\n", "\n", " return np.array(images), np.array(labels)\n", "\n", " def build_cnn_model(self):\n", " model = keras.Sequential([\n", " layers.Conv2D(32, (3, 3), activation='relu',\n", " input_shape=(*self.img_size, 3)),\n", " layers.MaxPooling2D((2, 2)),\n", " layers.Dropout(0.25),\n", "\n", " layers.Conv2D(64, (3, 3), activation='relu'),\n", " layers.MaxPooling2D((2, 2)),\n", " layers.Dropout(0.25),\n", "\n", " layers.Conv2D(128, (3, 3), activation='relu'),\n", " layers.MaxPooling2D((2, 2)),\n", " layers.Dropout(0.25),\n", "\n", " layers.Conv2D(256, (3, 3), activation='relu'),\n", " layers.MaxPooling2D((2, 2)),\n", " layers.Dropout(0.25),\n", "\n", " layers.Flatten(),\n", " layers.Dense(512, activation='relu'),\n", " layers.Dropout(0.5),\n", " layers.Dense(256, activation='relu'),\n", " layers.Dropout(0.5),\n", " layers.Dense(self.num_classes, activation='softmax')\n", " ])\n", "\n", " model.compile(\n", " optimizer='adam',\n", " loss='sparse_categorical_crossentropy',\n", " metrics=['accuracy']\n", " )\n", "\n", " self.model = model\n", " return model\n", "\n", " def train_model(self, train_data, val_data, epochs=50, batch_size=32):\n", " train_images, train_labels = train_data\n", " val_images, val_labels = val_data\n", "\n", " early_stopping = EarlyStopping(\n", " monitor='val_loss',\n", " patience=10,\n", " restore_best_weights=True,\n", " verbose=1\n", " )\n", "\n", " model_checkpoint = ModelCheckpoint(\n", " 'best_bean_cnn_model.h5',\n", " monitor='val_accuracy',\n", " save_best_only=True,\n", " verbose=1\n", " )\n", "\n", " callbacks = [early_stopping, model_checkpoint]\n", "\n", " print(\"Starting training...\")\n", " self.history = self.model.fit(\n", " train_images, train_labels,\n", " batch_size=batch_size,\n", " epochs=epochs,\n", " validation_data=(val_images, val_labels),\n", " callbacks=callbacks,\n", " verbose=1\n", " )\n", "\n", " return self.history\n", "\n", " def evaluate_model(self, test_data):\n", " test_images, test_labels = test_data\n", "\n", " test_loss, test_accuracy = self.model.evaluate(\n", " test_images, test_labels, verbose=0\n", " )\n", "\n", " print(f\"\\nTest Results:\")\n", " print(f\"Test Loss: {test_loss:.4f}\")\n", " print(f\"Test Accuracy: {test_accuracy:.4f}\")\n", "\n", " return test_loss, test_accuracy\n", "\n", " def plot_training_history(self):\n", " if self.history is None:\n", " print(\"No training history available. Train the model first.\")\n", " return\n", "\n", " fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))\n", "\n", " ax1.plot(self.history.history['accuracy'], label='Training Accuracy')\n", " ax1.plot(self.history.history['val_accuracy'], label='Validation Accuracy')\n", " ax1.set_title('Model Accuracy')\n", " ax1.set_xlabel('Epoch')\n", " ax1.set_ylabel('Accuracy')\n", " ax1.legend()\n", " ax1.grid(True)\n", "\n", " ax2.plot(self.history.history['loss'], label='Training Loss')\n", " ax2.plot(self.history.history['val_loss'], label='Validation Loss')\n", " ax2.set_title('Model Loss')\n", " ax2.set_xlabel('Epoch')\n", " ax2.set_ylabel('Loss')\n", " ax2.legend()\n", " ax2.grid(True)\n", "\n", " plt.tight_layout()\n", " plt.savefig('training_history.png', dpi=300, bbox_inches='tight')\n", " plt.show()\n", "\n", " def print_model_summary(self):\n", " if self.model is None:\n", " print(\"Model not built yet. Call build_cnn_model() first.\")\n", " return\n", "\n", " print(\"\\nModel Architecture:\")\n", " print(\"=\" * 50)\n", " self.model.summary()\n", "\n", " def get_training_report(self):\n", " if self.history is None:\n", " print(\"No training history available.\")\n", " return\n", "\n", " final_train_acc = self.history.history['accuracy'][-1]\n", " final_val_acc = self.history.history['val_accuracy'][-1]\n", " final_train_loss = self.history.history['loss'][-1]\n", " final_val_loss = self.history.history['val_loss'][-1]\n", "\n", " best_val_acc = max(self.history.history['val_accuracy'])\n", " best_val_acc_epoch = self.history.history['val_accuracy'].index(best_val_acc) + 1\n", "\n", " print(\"\\n\" + \"=\"*60)\n", " print(\"TRAINING REPORT\")\n", " print(\"=\"*60)\n", " print(f\"Total Epochs Trained: {len(self.history.history['accuracy'])}\")\n", " print(f\"Best Validation Accuracy: {best_val_acc:.4f} (Epoch {best_val_acc_epoch})\")\n", " print(\"\\nFinal Epoch Metrics:\")\n", " print(f\" Training Accuracy: {final_train_acc:.4f}\")\n", " print(f\" Validation Accuracy: {final_val_acc:.4f}\")\n", " print(f\" Training Loss: {final_train_loss:.4f}\")\n", " print(f\" Validation Loss: {final_val_loss:.4f}\")\n", " print(\"=\"*60)" ], "metadata": { "id": "4dsBhybF-i4n" }, "execution_count": 6, "outputs": [] }, { "cell_type": "code", "source": [ "!pip install --upgrade datasets" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "BAU9G1e5-8D9", "outputId": "a1d19a57-a8b1-46b0-bed1-ab44a3e5cce4" }, "execution_count": 7, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: datasets in /usr/local/lib/python3.11/dist-packages (3.6.0)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from datasets) (3.18.0)\n", "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from datasets) (2.0.2)\n", "Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (18.1.0)\n", "Requirement already satisfied: dill<0.3.9,>=0.3.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.3.7)\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from datasets) (2.2.2)\n", "Requirement already satisfied: requests>=2.32.2 in /usr/local/lib/python3.11/dist-packages (from datasets) (2.32.3)\n", "Requirement already satisfied: tqdm>=4.66.3 in /usr/local/lib/python3.11/dist-packages (from datasets) (4.67.1)\n", "Requirement already satisfied: xxhash in /usr/local/lib/python3.11/dist-packages (from datasets) (3.5.0)\n", "Requirement already satisfied: multiprocess<0.70.17 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.70.15)\n", "Requirement already satisfied: fsspec<=2025.3.0,>=2023.1.0 in /usr/local/lib/python3.11/dist-packages (from fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (2025.3.0)\n", "Requirement already satisfied: huggingface-hub>=0.24.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.32.2)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from datasets) (24.2)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from datasets) (6.0.2)\n", "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /usr/local/lib/python3.11/dist-packages (from fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (3.11.15)\n", "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.24.0->datasets) (4.13.2)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.24.0->datasets) (1.1.2)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests>=2.32.2->datasets) (3.4.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests>=2.32.2->datasets) (3.10)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests>=2.32.2->datasets) (2.4.0)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests>=2.32.2->datasets) (2025.4.26)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2.9.0.post0)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n", "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n", "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (2.6.1)\n", "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.3.2)\n", "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (25.3.0)\n", "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.6.0)\n", "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (6.4.4)\n", "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (0.3.1)\n", "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.20.0)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n" ] } ] }, { "cell_type": "code", "source": [ "def main():\n", " print(\"Bean Leaf Disease Classification - Baseline CNN\")\n", " print(\"=\"*50)\n", "\n", " classifier = BeanCNNClassifier(img_size=(224, 224), num_classes=3)\n", "\n", " train_data, val_data, test_data = classifier.load_and_preprocess_dataset()\n", "\n", " model = classifier.build_cnn_model()\n", " classifier.print_model_summary()\n", "\n", " history = classifier.train_model(\n", " train_data, val_data,\n", " epochs=50,\n", " batch_size=32\n", " )\n", "\n", " classifier.get_training_report()\n", "\n", " classifier.evaluate_model(test_data)\n", "\n", " classifier.plot_training_history()\n", "\n", " print(\"\\nTraining completed! Model saved as 'best_bean_cnn_model.h5'\")\n", " print(\"Training history plot saved as 'training_history.png'\")\n", "\n", "if __name__ == \"__main__\":\n", " main()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "EiVWQwc_-niU", "outputId": "470ea8f8-f327-4889-82c7-7f78c5dc4335" }, "execution_count": 8, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Bean Leaf Disease Classification - Baseline CNN\n", "==================================================\n", "Loading beans dataset from Hugging Face...\n", "Classes: ['angular_leaf_spot', 'bean_rust', 'healthy']\n", "Training samples: 1034\n", "Validation samples: 133\n", "Test samples: 128\n", "\n", "Model Architecture:\n", "==================================================\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" ], "text/html": [ "
Model: \"sequential_1\"\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m222\u001b[0m, \u001b[38;5;34m222\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m896\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_4 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m111\u001b[0m, \u001b[38;5;34m111\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_6 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m111\u001b[0m, \u001b[38;5;34m111\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m109\u001b[0m, \u001b[38;5;34m109\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_5 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m54\u001b[0m, \u001b[38;5;34m54\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_7 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m54\u001b[0m, \u001b[38;5;34m54\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m52\u001b[0m, \u001b[38;5;34m52\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m73,856\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_6 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_8 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ conv2d_7 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m24\u001b[0m, \u001b[38;5;34m24\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m295,168\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ max_pooling2d_7 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_9 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ flatten_1 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m36864\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m18,874,880\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_10 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m512\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m131,328\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_11 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3\u001b[0m) │ \u001b[38;5;34m771\u001b[0m │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" ], "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ conv2d_4 (Conv2D)               │ (None, 222, 222, 32)   │           896 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ max_pooling2d_4 (MaxPooling2D)  │ (None, 111, 111, 32)   │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_6 (Dropout)             │ (None, 111, 111, 32)   │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ conv2d_5 (Conv2D)               │ (None, 109, 109, 64)   │        18,496 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ max_pooling2d_5 (MaxPooling2D)  │ (None, 54, 54, 64)     │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_7 (Dropout)             │ (None, 54, 54, 64)     │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ conv2d_6 (Conv2D)               │ (None, 52, 52, 128)    │        73,856 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ max_pooling2d_6 (MaxPooling2D)  │ (None, 26, 26, 128)    │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_8 (Dropout)             │ (None, 26, 26, 128)    │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ conv2d_7 (Conv2D)               │ (None, 24, 24, 256)    │       295,168 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ max_pooling2d_7 (MaxPooling2D)  │ (None, 12, 12, 256)    │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_9 (Dropout)             │ (None, 12, 12, 256)    │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ flatten_1 (Flatten)             │ (None, 36864)          │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_3 (Dense)                 │ (None, 512)            │    18,874,880 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_10 (Dropout)            │ (None, 512)            │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_4 (Dense)                 │ (None, 256)            │       131,328 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_11 (Dropout)            │ (None, 256)            │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_5 (Dense)                 │ (None, 3)              │           771 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m19,395,395\u001b[0m (73.99 MB)\n" ], "text/html": [ "
 Total params: 19,395,395 (73.99 MB)\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m19,395,395\u001b[0m (73.99 MB)\n" ], "text/html": [ "
 Trainable params: 19,395,395 (73.99 MB)\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ], "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Starting training...\n", "Epoch 1/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.3158 - loss: 1.4492\n", "Epoch 1: val_accuracy improved from -inf to 0.39098, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m144s\u001b[0m 4s/step - accuracy: 0.3167 - loss: 1.4424 - val_accuracy: 0.3910 - val_loss: 1.0763\n", "Epoch 2/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.4567 - loss: 1.0373\n", "Epoch 2: val_accuracy improved from 0.39098 to 0.56391, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m139s\u001b[0m 4s/step - accuracy: 0.4581 - loss: 1.0355 - val_accuracy: 0.5639 - val_loss: 0.9554\n", "Epoch 3/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.5135 - loss: 0.9583\n", "Epoch 3: val_accuracy improved from 0.56391 to 0.63910, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m146s\u001b[0m 4s/step - accuracy: 0.5150 - loss: 0.9566 - val_accuracy: 0.6391 - val_loss: 0.7900\n", "Epoch 4/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6088 - loss: 0.8670\n", "Epoch 4: val_accuracy improved from 0.63910 to 0.71429, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m197s\u001b[0m 4s/step - accuracy: 0.6097 - loss: 0.8653 - val_accuracy: 0.7143 - val_loss: 0.6763\n", "Epoch 5/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6482 - loss: 0.8036\n", "Epoch 5: val_accuracy did not improve from 0.71429\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m140s\u001b[0m 4s/step - accuracy: 0.6494 - loss: 0.8019 - val_accuracy: 0.7143 - val_loss: 0.6661\n", "Epoch 6/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6738 - loss: 0.7581\n", "Epoch 6: val_accuracy improved from 0.71429 to 0.74436, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m138s\u001b[0m 4s/step - accuracy: 0.6748 - loss: 0.7563 - val_accuracy: 0.7444 - val_loss: 0.5999\n", "Epoch 7/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6801 - loss: 0.7127\n", "Epoch 7: val_accuracy improved from 0.74436 to 0.75188, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m149s\u001b[0m 4s/step - accuracy: 0.6807 - loss: 0.7117 - val_accuracy: 0.7519 - val_loss: 0.6230\n", "Epoch 8/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6962 - loss: 0.6683\n", "Epoch 8: val_accuracy did not improve from 0.75188\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m193s\u001b[0m 4s/step - accuracy: 0.6965 - loss: 0.6674 - val_accuracy: 0.7519 - val_loss: 0.5376\n", "Epoch 9/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.6868 - loss: 0.6531\n", "Epoch 9: val_accuracy improved from 0.75188 to 0.77444, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m148s\u001b[0m 4s/step - accuracy: 0.6873 - loss: 0.6522 - val_accuracy: 0.7744 - val_loss: 0.5254\n", "Epoch 10/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.7173 - loss: 0.6178\n", "Epoch 10: val_accuracy did not improve from 0.77444\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m195s\u001b[0m 4s/step - accuracy: 0.7184 - loss: 0.6162 - val_accuracy: 0.7519 - val_loss: 0.5039\n", "Epoch 11/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.7275 - loss: 0.5906\n", "Epoch 11: val_accuracy did not improve from 0.77444\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m151s\u001b[0m 4s/step - accuracy: 0.7282 - loss: 0.5895 - val_accuracy: 0.7368 - val_loss: 0.5171\n", "Epoch 12/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.7727 - loss: 0.5156\n", "Epoch 12: val_accuracy improved from 0.77444 to 0.78195, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m200s\u001b[0m 4s/step - accuracy: 0.7733 - loss: 0.5146 - val_accuracy: 0.7820 - val_loss: 0.5415\n", "Epoch 13/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.8030 - loss: 0.4460\n", "Epoch 13: val_accuracy did not improve from 0.78195\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m202s\u001b[0m 4s/step - accuracy: 0.8040 - loss: 0.4447 - val_accuracy: 0.7820 - val_loss: 0.5051\n", "Epoch 14/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.7861 - loss: 0.5163\n", "Epoch 14: val_accuracy improved from 0.78195 to 0.80451, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m156s\u001b[0m 5s/step - accuracy: 0.7871 - loss: 0.5137 - val_accuracy: 0.8045 - val_loss: 0.4885\n", "Epoch 15/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.8406 - loss: 0.3717\n", "Epoch 15: val_accuracy improved from 0.80451 to 0.82707, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m192s\u001b[0m 4s/step - accuracy: 0.8412 - loss: 0.3709 - val_accuracy: 0.8271 - val_loss: 0.4223\n", "Epoch 16/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.8246 - loss: 0.4097\n", "Epoch 16: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m193s\u001b[0m 4s/step - accuracy: 0.8252 - loss: 0.4087 - val_accuracy: 0.7895 - val_loss: 0.5063\n", "Epoch 17/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.8407 - loss: 0.3963\n", "Epoch 17: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m157s\u001b[0m 5s/step - accuracy: 0.8409 - loss: 0.3954 - val_accuracy: 0.7744 - val_loss: 0.5320\n", "Epoch 18/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.8572 - loss: 0.3609\n", "Epoch 18: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m189s\u001b[0m 4s/step - accuracy: 0.8583 - loss: 0.3590 - val_accuracy: 0.8271 - val_loss: 0.5313\n", "Epoch 19/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9287 - loss: 0.2286\n", "Epoch 19: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m140s\u001b[0m 4s/step - accuracy: 0.9290 - loss: 0.2271 - val_accuracy: 0.8271 - val_loss: 0.5223\n", "Epoch 20/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9172 - loss: 0.1756\n", "Epoch 20: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m147s\u001b[0m 4s/step - accuracy: 0.9174 - loss: 0.1757 - val_accuracy: 0.8045 - val_loss: 0.5673\n", "Epoch 21/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9025 - loss: 0.2481\n", "Epoch 21: val_accuracy did not improve from 0.82707\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m203s\u001b[0m 4s/step - accuracy: 0.9031 - loss: 0.2465 - val_accuracy: 0.8271 - val_loss: 0.4534\n", "Epoch 22/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9501 - loss: 0.1532\n", "Epoch 22: val_accuracy improved from 0.82707 to 0.86466, saving model to best_bean_cnn_model.h5\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m210s\u001b[0m 5s/step - accuracy: 0.9503 - loss: 0.1524 - val_accuracy: 0.8647 - val_loss: 0.5192\n", "Epoch 23/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9509 - loss: 0.1125\n", "Epoch 23: val_accuracy did not improve from 0.86466\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m150s\u001b[0m 4s/step - accuracy: 0.9511 - loss: 0.1125 - val_accuracy: 0.8271 - val_loss: 0.6103\n", "Epoch 24/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9465 - loss: 0.1388\n", "Epoch 24: val_accuracy did not improve from 0.86466\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m190s\u001b[0m 4s/step - accuracy: 0.9469 - loss: 0.1382 - val_accuracy: 0.8271 - val_loss: 0.6168\n", "Epoch 25/50\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4s/step - accuracy: 0.9642 - loss: 0.1108\n", "Epoch 25: val_accuracy did not improve from 0.86466\n", "\u001b[1m33/33\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m141s\u001b[0m 4s/step - accuracy: 0.9641 - loss: 0.1108 - val_accuracy: 0.7744 - val_loss: 0.7844\n", "Epoch 25: early stopping\n", "Restoring model weights from the end of the best epoch: 15.\n", "\n", "============================================================\n", "TRAINING REPORT\n", "============================================================\n", "Total Epochs Trained: 25\n", "Best Validation Accuracy: 0.8647 (Epoch 22)\n", "\n", "Final Epoch Metrics:\n", " Training Accuracy: 0.9623\n", " Validation Accuracy: 0.7744\n", " Training Loss: 0.1085\n", " Validation Loss: 0.7844\n", "============================================================\n", "\n", "Test Results:\n", "Test Loss: 0.3682\n", "Test Accuracy: 0.8281\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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S4z7Cm2liShbieOMsfp4mYkM9iUq2JeIYB+ign2JCvEl4njbiXZfq6Uyf2SVRkkpJ1u8Ix2Ayxtq1z0RERERERGRqiDEz0pCvTAS6oWVtpXYHew5ksvWQyeTVVtTssvMqvp1S6pT4/D3thDo44WtxM7RPBuFxXaSM/JIzsj72+fV8LcSFexLZLAvkceTV5EhvkQGGUmsqBBfwgN9nBqrMygp5UTZBTbW7jsGKCklIiIiIiIiUpVZzCYa1AqkQa1AereOLm0/lmdja8rxGVWHstmaYiz/8/f2IsDHiyAfLwJ9vQj0OX77+HHpxfcv18ePA7y9ytSvKiwuIS2rkJSsAlKzCkg5dvw6q5DUU9oKi+1k5tnIzLOxNSX7jO+ldqgfi5/6R6X/zMpLSSknOphZQN0wP7JycqkT6u/ucERERERERETEyUL8rSTWr0li/cqdjOLjZaFOmD91ws6eX3A4HBzLt5F6InlVmrg69bqQ6BDfSo31Qikp5URNooKY/ejlTP9hlrtDEREREREREZFqzmQyUcPfmxr+3jSJCjrr4+z2M9escjdV4q4Evkr1iYiIiIiIiIiHMJs9cwc/JaVERERERERERMTllJQSERERERERERGXU1JKRERERERERERcTkkpERERERERERFxOSWlRERERERERETE5ZSUEhERERERERERl1NSSkREREREREREXE5JKRERERERERERcTklpURERERERERExOWUlBIREREREREREZfzcncAruZwOADIysqqlP5tNht5eXlkZWVhtVor5TXk/GgsPIPGwXNoLDyDxsFz/HUsTpwbnDhXkLIq8xxKnwvPobHwHBoLz6Bx8BwaC89x6ljk5+cDF37+dNElpbKzswGoU6eOmyMRERERT5SdnU1ISIi7w/A4OocSERGRs7nQ8yeT4yL7OtBut3Pw4EGCgoIwmUxO7z8rK4s6deqwb98+goODnd6/nD+NhWfQOHgOjYVn0Dh4jr+OhcPhIDs7m5iYGMxmVTj4q8o8h9LnwnNoLDyHxsIzaBw8h8bCc5w6FkFBQRU6f7roZkqZzWZq165d6a8THBysD4qH0Fh4Bo2D59BYeAaNg+c4dSw0Q+rsXHEOpc+F59BYeA6NhWfQOHgOjYXnODEWFTl/0teAIiIiIiIiIiLickpKiYiIiIiIiIiIyykp5WQ+Pj6MHDkSHx8fd4dy0dNYeAaNg+fQWHgGjYPn0Fh4Do2F59BYeA6NhWfQOHgOjYXncOZYXHSFzkVERERERERExP00U0pERERERERERFxOSSkREREREREREXE5JaVERERERERERMTllJRyorFjxxIfH4+vry+JiYksX77c3SFddF566SVMJlOZS9OmTd0d1kVh0aJFXH/99cTExGAymfjuu+/K3O9wOHjxxReJjo7Gz8+Pbt26sX37dvcEW82dayzuueee0z4n11xzjXuCrcZGjx5Nhw4dCAoKIiIigj59+pCUlFTmMQUFBQwbNoyaNWsSGBjIzTffTGpqqpsirp7OZxyuvPLK0z4TDz74oJsivjjpHMr9dA7lHjp/8hw6f/IMOn/yHK46h1JSykmmTZvGiBEjGDlyJKtXr6ZNmzb07NmTtLQ0d4d20WnRogWHDh0qvSxevNjdIV0UcnNzadOmDWPHjj3j/W+88Qb/+9//GDduHH/++ScBAQH07NmTgoICF0da/Z1rLACuueaaMp+TKVOmuDDCi8Nvv/3GsGHDWLZsGXPnzsVms9GjRw9yc3NLH/P444/z448/8vXXX/Pbb79x8OBB+vbt68aoq5/zGQeAwYMHl/lMvPHGG26K+OKjcyjPoXMo19P5k+fQ+ZNn0PmT53DZOZRDnCIhIcExbNiw0tslJSWOmJgYx+jRo90Y1cVn5MiRjjZt2rg7jIse4JgxY0bpbbvd7oiKinK8+eabpW2ZmZkOHx8fx5QpU9wQ4cXjr2PhcDgcAwcOdNx4441uiedilpaW5gAcv/32m8PhMD4DVqvV8fXXX5c+ZsuWLQ7AsXTpUneFWe39dRwcDofjiiuucDz66KPuC+oip3Moz6BzKPfT+ZPn0PmT59D5k+eorHMozZRygqKiIlatWkW3bt1K28xmM926dWPp0qVujOzitH37dmJiYqhfvz79+/cnOTnZ3SFd9Hbv3k1KSkqZz0hISAiJiYn6jLjJwoULiYiIoEmTJgwdOpQjR464O6Rq79ixYwCEhYUBsGrVKmw2W5nPRdOmTalbt64+F5Xor+Nwwpdffkl4eDgtW7bkmWeeIS8vzx3hXXR0DuVZdA7lWXT+5Hl0/uR6On/yHJV1DuXltAgvYunp6ZSUlBAZGVmmPTIykq1bt7opqotTYmIikyZNokmTJhw6dIhRo0bRpUsXNm7cSFBQkLvDu2ilpKQAnPEzcuI+cZ1rrrmGvn37Uq9ePXbu3Mmzzz7Ltddey9KlS7FYLO4Or1qy2+089thjdO7cmZYtWwLG58Lb25saNWqUeaw+F5XnTOMAcOeddxIXF0dMTAzr16/nqaeeIikpienTp7sx2ouDzqE8h86hPI/OnzyLzp9cT+dPnqMyz6GUlJJq5dprry09bt26NYmJicTFxfHVV18xaNAgN0Ym4jluv/320uNWrVrRunVrGjRowMKFC7n66qvdGFn1NWzYMDZu3Kj6LG52tnEYMmRI6XGrVq2Ijo7m6quvZufOnTRo0MDVYYq4hc6hRP6ezp9cT+dPnqMyz6G0fM8JwsPDsVgsp1X8T01NJSoqyk1RCUCNGjVo3LgxO3bscHcoF7UTnwN9RjxT/fr1CQ8P1+ekkgwfPpyffvqJBQsWULt27dL2qKgoioqKyMzMLPN4fS4qx9nG4UwSExMB9JlwAZ1DeS6dQ7mfzp88m86fKpfOnzxHZZ9DKSnlBN7e3rRr14558+aVttntdubNm0enTp3cGJnk5OSwc+dOoqOj3R3KRa1evXpERUWV+YxkZWXx559/6jPiAfbv38+RI0f0OXEyh8PB8OHDmTFjBvPnz6devXpl7m/Xrh1Wq7XM5yIpKYnk5GR9LpzoXONwJmvXrgXQZ8IFdA7luXQO5X46f/JsOn+qHDp/8hyuOofS8j0nGTFiBAMHDqR9+/YkJCQwZswYcnNzuffee90d2kXlySef5PrrrycuLo6DBw8ycuRILBYLd9xxh7tDq/ZycnLKZMR3797N2rVrCQsLo27dujz22GO88sorNGrUiHr16vHCCy8QExNDnz593Bd0NfV3YxEWFsaoUaO4+eabiYqKYufOnfzrX/+iYcOG9OzZ041RVz/Dhg1j8uTJfP/99wQFBZXWOQgJCcHPz4+QkBAGDRrEiBEjCAsLIzg4mIcffphOnTrRsWNHN0dffZxrHHbu3MnkyZPp1asXNWvWZP369Tz++ON07dqV1q1buzn6i4POoTyDzqHcQ+dPnkPnT55B50+ew2XnUBXau0/KeO+99xx169Z1eHt7OxISEhzLli1zd0gXnX79+jmio6Md3t7ejtjYWEe/fv0cO3bscHdYF4UFCxY4gNMuAwcOdDgcxrbGL7zwgiMyMtLh4+PjuPrqqx1JSUnuDbqa+ruxyMvLc/To0cNRq1Yth9VqdcTFxTkGDx7sSElJcXfY1c6ZxgBwTJw4sfQx+fn5joceesgRGhrq8Pf3d9x0002OQ4cOuS/oauhc45CcnOzo2rWrIywszOHj4+No2LCh45///Kfj2LFj7g38IqNzKPfTOZR76PzJc+j8yTPo/MlzuOocynT8xURERERERERERFxGNaVERERERERERMTllJQSERERERERERGXU1JKRERERERERERcTkkpERERERERERFxOSWlRERERERERETE5ZSUEhERERERERERl1NSSkREREREREREXE5JKRERERERERERcTklpURELoDJZOK7775zdxgiIiIiVYbOn0Tkr5SUEpEq55577sFkMp12ueaaa9wdmoiIiIhH0vmTiHgiL3cHICJyIa655homTpxYps3Hx8dN0YiIiIh4Pp0/iYin0UwpEamSfHx8iIqKKnMJDQ0FjKnhH3zwAddeey1+fn7Ur1+fb775pszzN2zYwD/+8Q/8/PyoWbMmQ4YMIScnp8xjJkyYQIsWLfDx8SE6Oprhw4eXuT89PZ2bbroJf39/GjVqxA8//FC5b1pERESkAnT+JCKeRkkpEamWXnjhBW6++WbWrVtH//79uf3229myZQsAubm59OzZk9DQUFasWMHXX3/Nr7/+Wuak6YMPPmDYsGEMGTKEDRs28MMPP9CwYcMyrzFq1Chuu+021q9fT69evejfvz8ZGRkufZ8iIiIizqLzJxFxOYeISBUzcOBAh8VicQQEBJS5/Oc//3E4HA4H4HjwwQfLPCcxMdExdOhQh8PhcHz00UeO0NBQR05OTun9M2fOdJjNZkdKSorD4XA4YmJiHM8999xZYwAczz//fOntnJwcB+D4+eefnfY+RURERJxF508i4olUU0pEqqSrrrqKDz74oExbWFhY6XGnTp3K3NepUyfWrl0LwJYtW2jTpg0BAQGl93fu3Bm73U5SUhImk4mDBw9y9dVX/20MrVu3Lj0OCAggODiYtLS0C31LIiIiIpVK508i4mmUlBKRKikgIOC06eDO4ufnd16Ps1qtZW6bTCbsdntlhCQiIiJSYTp/EhFPo5pSIlItLVu27LTbzZo1A6BZs2asW7eO3Nzc0vv/+OMPzGYzTZo0ISgoiPj4eObNm+fSmEVERETcSedPIuJqmiklIlVSYWEhKSkpZdq8vLwIDw8H4Ouvv6Z9+/ZcfvnlfPnllyxfvpzx48cD0L9/f0aOHMnAgQN56aWXOHz4MA8//DB33303kZGRALz00ks8+OCDREREcO2115Kdnc0ff/zBww8/7No3KiIiIuIkOn8SEU+jpJSIVEm//PIL0dHRZdqaNGnC1q1bAWNnl6lTp/LQQw8RHR3NlClTaN68OQD+/v7Mnj2bRx99lA4dOuDv78/NN9/M22+/XdrXwIEDKSgo4J133uHJJ58kPDycW265xXVvUERERMTJdP4kIp7G5HA4HO4OQkTEmUwmEzNmzKBPnz7uDkVERESkStD5k4i4g2pKiYiIiIiIiIiIyykpJSIiIiIiIiIiLqfleyIiIiIiIiIi4nKaKSUiIiIiIiIiIi6npJSIiIiIiIiIiLicklIiIiIiIiIiIuJySkqJiIiIiIiIiIjLKSklIiIiIiIiIiIup6SUiIiIiIiIiIi4nJJSIiIiIiIiIiLickpKiYiIiIiIiIiIyykpJSIiIiIiIiIiLvf/pjVgWGSh9AwAAAAASUVORK5CYII=\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Training completed! Model saved as 'best_bean_cnn_model.h5'\n", "Training history plot saved as 'training_history.png'\n" ] } ] } ] }