{ "cells": [ { "cell_type": "code", "execution_count": 28, "id": "comprehensive-talent", "metadata": {}, "outputs": [], "source": [ "import cv2\n", "import os\n", "import numpy as np\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense, Dropout, Flatten, Activation, Conv2D, MaxPooling2D\n", "from keras.preprocessing.image import ImageDataGenerator\n", "from sklearn.neural_network import MLPClassifier\n", "from sklearn.model_selection import train_test_split\n", "from tensorflow.keras.optimizers import RMSprop\n", "from sklearn.metrics import classification_report\n", "import re\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 15, "id": "macro-michigan", "metadata": {}, "outputs": [], "source": [ "train_data_dir=\"../Trees\"\n", "validation_data_dir=\"../Trees\"\n", "batch_size=14\n", "img_height, img_width = 60,80" ] }, { "cell_type": "code", "execution_count": 16, "id": "defined-briefing", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 428 images belonging to 3 classes.\n", "Found 105 images belonging to 3 classes.\n" ] } ], "source": [ "train_datagen = ImageDataGenerator(rescale=1./255,\n", " shear_range=0.2,\n", " zoom_range=0.2,\n", " horizontal_flip=True,\n", " validation_split=0.2) # set validation split\n", "\n", "train_generator = train_datagen.flow_from_directory(\n", " train_data_dir,\n", " target_size=(img_height, img_width),\n", " batch_size=batch_size,\n", " class_mode='categorical',\n", " subset='training') # set as training data\n", "\n", "validation_generator = train_datagen.flow_from_directory(\n", " validation_data_dir, # same directory as training data\n", " target_size=(img_height, img_width),\n", " batch_size=batch_size,\n", " class_mode='categorical',\n", " subset='validation')" ] }, { "cell_type": "code", "execution_count": 17, "id": "natural-cutting", "metadata": {}, "outputs": [], "source": [ "model = Sequential()" ] }, { "cell_type": "code", "execution_count": 18, "id": "conservative-hypothetical", "metadata": {}, "outputs": [], "source": [ "model.add(Conv2D(32, (3,3), activation='relu', input_shape=(60, 80, 3)))\n", "model.add(MaxPooling2D((2,2)))\n", "model.add(Conv2D(64, (3,3), activation='relu'))\n", "model.add(MaxPooling2D((2,2)))\n", "model.add(Conv2D(64, (3,3), activation='relu'))\n", "model.add(MaxPooling2D((2,2)))\n", "model.add(Flatten())\n", "model.add(Dense(512, activation='relu'))\n", "model.add(Dense(512, activation='relu'))\n", "\n", "model.add(Dense(3, activation='softmax'))" ] }, { "cell_type": "code", "execution_count": 23, "id": "irish-monitoring", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", "Requirement already satisfied: pydot in c:\\program files\\python39\\lib\\site-packages (1.4.2)\n", "Requirement already satisfied: pyparsing>=2.1.4 in c:\\users\\wbloc\\appdata\\roaming\\python\\python39\\site-packages (from pydot) (2.4.7)\n", "Defaulting to user installation because normal site-packages is not writeable\n", "Requirement already satisfied: graphviz in c:\\program files\\python39\\lib\\site-packages (0.19.1)\n", "('You must install pydot (`pip install pydot`) and install graphviz (see instructions at https://graphviz.gitlab.io/download/) ', 'for plot_model/model_to_dot to work.')\n" ] } ], "source": [ "from tensorflow.keras.utils import plot_model \n", "!pip install pydot\n", "!pip install graphviz\n", "plot_model(model, to_file='model1_plot.png', show_shapes=True,show_dtype=True, show_layer_names=True, expand_nested=True,)" ] }, { "cell_type": "code", "execution_count": 24, "id": "illegal-zoning", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_2\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d_6 (Conv2D) (None, 58, 78, 32) 896 \n", "_________________________________________________________________\n", "max_pooling2d_6 (MaxPooling2 (None, 29, 39, 32) 0 \n", "_________________________________________________________________\n", "conv2d_7 (Conv2D) (None, 27, 37, 64) 18496 \n", "_________________________________________________________________\n", "max_pooling2d_7 (MaxPooling2 (None, 13, 18, 64) 0 \n", "_________________________________________________________________\n", "conv2d_8 (Conv2D) (None, 11, 16, 64) 36928 \n", "_________________________________________________________________\n", "max_pooling2d_8 (MaxPooling2 (None, 5, 8, 64) 0 \n", "_________________________________________________________________\n", "flatten_2 (Flatten) (None, 2560) 0 \n", "_________________________________________________________________\n", "dense_6 (Dense) (None, 512) 1311232 \n", "_________________________________________________________________\n", "dense_7 (Dense) (None, 512) 262656 \n", "_________________________________________________________________\n", "dense_8 (Dense) (None, 3) 1539 \n", "=================================================================\n", "Total params: 1,631,747\n", "Trainable params: 1,631,747\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "code", "execution_count": 25, "id": "cardiac-highland", "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer=RMSprop(learning_rate=0.0001),\n", " loss=tf.keras.losses.CategoricalCrossentropy(),\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 26, "id": "informed-baker", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "6/6 [==============================] - 3s 393ms/step - loss: 0.9368 - accuracy: 0.5897 - val_loss: 0.7715 - val_accuracy: 0.6786\n", "Epoch 2/10\n", "6/6 [==============================] - 2s 352ms/step - loss: 0.8682 - accuracy: 0.6310 - val_loss: 0.7431 - val_accuracy: 0.6786\n", "Epoch 3/10\n", "6/6 [==============================] - 2s 352ms/step - loss: 0.7690 - accuracy: 0.6667 - val_loss: 0.6637 - val_accuracy: 0.7143\n", "Epoch 4/10\n", "6/6 [==============================] - 2s 351ms/step - loss: 0.7816 - accuracy: 0.6310 - val_loss: 0.6656 - val_accuracy: 0.6607\n", "Epoch 5/10\n", "6/6 [==============================] - 2s 346ms/step - loss: 0.7070 - accuracy: 0.6667 - val_loss: 0.7131 - val_accuracy: 0.5893\n", "Epoch 6/10\n", "6/6 [==============================] - 2s 351ms/step - loss: 0.6677 - accuracy: 0.6905 - val_loss: 0.5662 - val_accuracy: 0.7143\n", "Epoch 7/10\n", "6/6 [==============================] - 2s 350ms/step - loss: 0.6171 - accuracy: 0.7262 - val_loss: 0.7703 - val_accuracy: 0.5893\n", "Epoch 8/10\n", "6/6 [==============================] - 2s 351ms/step - loss: 0.6001 - accuracy: 0.7738 - val_loss: 0.4881 - val_accuracy: 0.8036\n", "Epoch 9/10\n", "6/6 [==============================] - 2s 362ms/step - loss: 0.4903 - accuracy: 0.7821 - val_loss: 0.4565 - val_accuracy: 0.9107\n", "Epoch 10/10\n", "6/6 [==============================] - 2s 351ms/step - loss: 0.5107 - accuracy: 0.7976 - val_loss: 0.5301 - val_accuracy: 0.8393\n" ] } ], "source": [ "history = model.fit(train_generator, steps_per_epoch=6, epochs=10, verbose=1,\n", " validation_data = validation_generator, validation_steps = 4)" ] }, { "cell_type": "code", "execution_count": 29, "id": "inclusive-chess", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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a9eujBw5kgkTJpCamkq5cuX45JNPaNasGVlZWfz73/9mwYIFeHl5MXbsWFq2bMnEiROZO3cuAIsWLeL9999nzpw5bv2OLpUmAqVUqTB16lSqVKnCqVOnuPzyyxk8eDBjx44lMjKSBg0acPToUQBefPFFAgMD2bhxIwDHjh276L5jY2NZuXIl3t7eJCcns2LFCnx8fFi8eDFPPvkks2fPJiIigt27d7N+/Xp8fHw4evQolStX5p577iE+Pp6goCA++eQT7rjjDlu/h8LQRKCUchtXrtztMnHixDNX2vv27SMiIoJu3bqdGU9fpYpVOmTx4sVMnz79zOcqV754peHhw4fj7e0NQFJSErfddht///03IkJGRsaZ/d511134+PicdbxbbrmFL774gtGjR7Nq1SqmTZvmpt/YfTQRKKVKvGXLlrF48WJWrVqFv78/PXr04LLLLmPr1q0u7yP3sMtzx+EHBAScefzMM8/Qs2dP5syZw+7du+nRo8cF9zt69GiuvfZa/Pz8GD58+JlEUZxoZ7FSqsRLSkqicuXK+Pv7s3XrVn7//XdSU1OJjIxk165dAGeahvr27cukSZPOfPZ001BwcDBbtmwhOzv7gm34SUlJ1K5treT26aefnnm9b9++TJ48+UyH8unj1apVi1q1avHSSy8xevRo9/3SbqSJQClV4vXr14/MzExatGjB448/TqdOnQgKCiIiIoLrr7+eNm3aMGKEVVDw6aef5tixY7Rq1Yo2bdqwdOlSAF5++WUGDhxIly5dqFmzZr7Heuyxx3jiiSdo27btWaOIxowZQ926dWndujVt2rThq6/+WYL9pptuok6dOrRo0cKmb+DSaK0hpdQl2bJlS7E9wRUX9913H23btuXOO+8skuPl9XdyoVpDxa+xSimlSpH27dsTEBDAG2+84XQo+dJEoJRSNlq7dq3TIVyU9hEopZSH00SglFIeThOBUkp5OE0ESinl4TQRKKWUh9NEoJTyKOXLl3c6hGJHh48qpdznp8fh4Eb37rNGGPR/2b37LAYyMzOLTd0hvSNQSpVojz/++Fm1g55//nleeuklevfuTbt27QgLC+O7775zaV8pKSn5fm7atGlnykfccsstABw6dIghQ4bQpk0b2rRpw8qVK9m9ezetWrU687nXX3+d559/HoAePXrw4IMPEh4ezjvvvMP3339Px44d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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(history.history['accuracy'], label='accuracy')\n", "plt.plot(history.history['val_accuracy'], label = 'val_accuracy')\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Accuracy')\n", "plt.ylim([0.5, 1])\n", "plt.legend(loc='lower right')" ] }, { "cell_type": "code", "execution_count": null, "id": "marine-satellite", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1" } }, "nbformat": 4, "nbformat_minor": 5 }