From 918c7b1698c8c7e3402a0af48d4fbc04b9f2fa3e Mon Sep 17 00:00:00 2001
From: Lorenzo Verstraeten <48151022+ollol88@users.noreply.github.com>
Date: Sun, 20 Oct 2019 16:27:32 +0200
Subject: [PATCH 1/9] Created using Colaboratory
---
prediction.ipynb | 188 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 188 insertions(+)
create mode 100644 prediction.ipynb
diff --git a/prediction.ipynb b/prediction.ipynb
new file mode 100644
index 0000000..58401ae
--- /dev/null
+++ b/prediction.ipynb
@@ -0,0 +1,188 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "prediction.ipynb",
+ "provenance": [],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "57UqqJSWcOK6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from sklearn.metrics.pairwise import cosine_similarity\n",
+ "import numpy as np\n",
+ "import tensorflow.keras\n",
+ "import PIL\n",
+ "import tensorflow as tf\n",
+ "import os\n",
+ "\n",
+ "from tensorflow.keras import layers\n",
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications.vgg19 import VGG19\n",
+ "\n",
+ "#import model\n",
+ "model = VGG19(include_top=True, weights='imagenet')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "MMR9VMhefyyZ",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 122
+ },
+ "outputId": "a4adae79-2cfa-4bb0-be18-7627cf1bc942"
+ },
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/gdrive')"
+ ],
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
+ "\n",
+ "Enter your authorization code:\n",
+ "··········\n",
+ "Mounted at /gdrive\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "voj9IcJoczx6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# define images by providing path\n",
+ "image1_b = PIL.Image.open('../gdrive/My Drive/NASA/test/before/before_11.JPG')\n",
+ "image1_a = PIL.Image.open('../gdrive/My Drive/NASA/test/after/after_11.JPG')\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yYnswJ58c9p8",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "input_shape = model.layers[0].output_shape[0][1:3]\n",
+ "\n",
+ "# set specific layer to get the vectors\n",
+ "layer_name = 'fc2'\n",
+ "intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer_name).output)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gV7dy2PPfJdS",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# get cosine similarity\n",
+ "def flood_index(before, after):\n",
+ " #take two vectors from the last layer of neural network compute a transformation of cosine similarity \n",
+ " # and output an index of damages\n",
+ " \n",
+ " # resizing images\n",
+ " image1_b_resized = image1_b.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " image1_a_resized = image1_a.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " # transform images to numpy arrays\n",
+ " image1_b_array = np.expand_dims(np.array(image1_b_resized), axis=0)\n",
+ " image1_a_array = np.expand_dims(np.array(image1_a_resized), axis=0)\n",
+ " # prediction from model\n",
+ " intermediate_output_a = intermediate_layer_model.predict(image1_a_array)\n",
+ " intermediate_output_b = intermediate_layer_model.predict(image1_b_array)\n",
+ " \n",
+ " #compute similarity\n",
+ " cos_sim=np.sqrt((1-cosine_similarity(intermediate_output_a, intermediate_output_b))/2)*10\n",
+ " return cos_sim[0][0]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "LaNGZ96wfeBV",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "627fe633-6dc6-4883-900f-8d422c3b04d5"
+ },
+ "source": [
+ "flood_index(image1_b, image1_a)"
+ ],
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "3.7292957"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "vByAR1AVf9MQ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ ""
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 2a71cff6b4d07c51b6b808403a49381f14270c0b Mon Sep 17 00:00:00 2001
From: Lorenzo Verstraeten <48151022+ollol88@users.noreply.github.com>
Date: Sun, 20 Oct 2019 16:30:43 +0200
Subject: [PATCH 2/9] Created using Colaboratory
---
.../DataScience/prediction.ipynb | 188 ++++++++++++++++++
1 file changed, 188 insertions(+)
create mode 100644 Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
diff --git a/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb b/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
new file mode 100644
index 0000000..28808f4
--- /dev/null
+++ b/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
@@ -0,0 +1,188 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "prediction.ipynb",
+ "provenance": [],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "57UqqJSWcOK6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from sklearn.metrics.pairwise import cosine_similarity\n",
+ "import numpy as np\n",
+ "import tensorflow.keras\n",
+ "import PIL\n",
+ "import tensorflow as tf\n",
+ "import os\n",
+ "\n",
+ "from tensorflow.keras import layers\n",
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications.vgg19 import VGG19\n",
+ "\n",
+ "#import model\n",
+ "model = VGG19(include_top=True, weights='imagenet')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "MMR9VMhefyyZ",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 122
+ },
+ "outputId": "a4adae79-2cfa-4bb0-be18-7627cf1bc942"
+ },
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/gdrive')"
+ ],
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
+ "\n",
+ "Enter your authorization code:\n",
+ "··········\n",
+ "Mounted at /gdrive\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "voj9IcJoczx6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# define images by providing path\n",
+ "image1_b = PIL.Image.open('../gdrive/My Drive/NASA/test/before/before_11.JPG')\n",
+ "image1_a = PIL.Image.open('../gdrive/My Drive/NASA/test/after/after_11.JPG')\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yYnswJ58c9p8",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "input_shape = model.layers[0].output_shape[0][1:3]\n",
+ "\n",
+ "# set specific layer to get the vectors\n",
+ "layer_name = 'fc2'\n",
+ "intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer_name).output)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gV7dy2PPfJdS",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# get cosine similarity\n",
+ "def flood_index(before, after):\n",
+ " #take two vectors from the last layer of neural network compute a transformation of cosine similarity \n",
+ " # and output an index of damages\n",
+ " \n",
+ " # resizing images\n",
+ " image1_b_resized = image1_b.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " image1_a_resized = image1_a.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " # transform images to numpy arrays\n",
+ " image1_b_array = np.expand_dims(np.array(image1_b_resized), axis=0)\n",
+ " image1_a_array = np.expand_dims(np.array(image1_a_resized), axis=0)\n",
+ " # prediction from model\n",
+ " intermediate_output_a = intermediate_layer_model.predict(image1_a_array)\n",
+ " intermediate_output_b = intermediate_layer_model.predict(image1_b_array)\n",
+ " \n",
+ " #compute similarity\n",
+ " cos_sim=np.sqrt((1-cosine_similarity(intermediate_output_a, intermediate_output_b))/2)*10\n",
+ " return cos_sim[0][0]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "LaNGZ96wfeBV",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "627fe633-6dc6-4883-900f-8d422c3b04d5"
+ },
+ "source": [
+ "flood_index(image1_b, image1_a)"
+ ],
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "3.7292957"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "vByAR1AVf9MQ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ ""
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From bb4449f6ab409593ad83ae36a64b0d1162de775d Mon Sep 17 00:00:00 2001
From: Lorenzo Verstraeten <48151022+ollol88@users.noreply.github.com>
Date: Sun, 20 Oct 2019 16:31:33 +0200
Subject: [PATCH 3/9] Delete prediction.ipynb
---
.../DataScience/prediction.ipynb | 188 ------------------
1 file changed, 188 deletions(-)
delete mode 100644 Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
diff --git a/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb b/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
deleted file mode 100644
index 28808f4..0000000
--- a/Nasa-From-Curious-Minds-Come-Helping-Hands/DataScience/prediction.ipynb
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- "nbformat": 4,
- "nbformat_minor": 0,
- "metadata": {
- "colab": {
- "name": "prediction.ipynb",
- "provenance": [],
- "include_colab_link": true
- },
- "kernelspec": {
- "name": "python3",
- "display_name": "Python 3"
- }
- },
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "view-in-github",
- "colab_type": "text"
- },
- "source": [
- ""
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "57UqqJSWcOK6",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from sklearn.metrics.pairwise import cosine_similarity\n",
- "import numpy as np\n",
- "import tensorflow.keras\n",
- "import PIL\n",
- "import tensorflow as tf\n",
- "import os\n",
- "\n",
- "from tensorflow.keras import layers\n",
- "from tensorflow.keras.models import Model, Sequential\n",
- "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
- "from tensorflow.keras.applications.vgg19 import VGG19\n",
- "\n",
- "#import model\n",
- "model = VGG19(include_top=True, weights='imagenet')"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "MMR9VMhefyyZ",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 122
- },
- "outputId": "a4adae79-2cfa-4bb0-be18-7627cf1bc942"
- },
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/gdrive')"
- ],
- "execution_count": 5,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
- "\n",
- "Enter your authorization code:\n",
- "··········\n",
- "Mounted at /gdrive\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "voj9IcJoczx6",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "# define images by providing path\n",
- "image1_b = PIL.Image.open('../gdrive/My Drive/NASA/test/before/before_11.JPG')\n",
- "image1_a = PIL.Image.open('../gdrive/My Drive/NASA/test/after/after_11.JPG')\n"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "yYnswJ58c9p8",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "input_shape = model.layers[0].output_shape[0][1:3]\n",
- "\n",
- "# set specific layer to get the vectors\n",
- "layer_name = 'fc2'\n",
- "intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer_name).output)"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "gV7dy2PPfJdS",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "# get cosine similarity\n",
- "def flood_index(before, after):\n",
- " #take two vectors from the last layer of neural network compute a transformation of cosine similarity \n",
- " # and output an index of damages\n",
- " \n",
- " # resizing images\n",
- " image1_b_resized = image1_b.resize(input_shape, PIL.Image.LANCZOS)\n",
- " image1_a_resized = image1_a.resize(input_shape, PIL.Image.LANCZOS)\n",
- " # transform images to numpy arrays\n",
- " image1_b_array = np.expand_dims(np.array(image1_b_resized), axis=0)\n",
- " image1_a_array = np.expand_dims(np.array(image1_a_resized), axis=0)\n",
- " # prediction from model\n",
- " intermediate_output_a = intermediate_layer_model.predict(image1_a_array)\n",
- " intermediate_output_b = intermediate_layer_model.predict(image1_b_array)\n",
- " \n",
- " #compute similarity\n",
- " cos_sim=np.sqrt((1-cosine_similarity(intermediate_output_a, intermediate_output_b))/2)*10\n",
- " return cos_sim[0][0]"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "LaNGZ96wfeBV",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 34
- },
- "outputId": "627fe633-6dc6-4883-900f-8d422c3b04d5"
- },
- "source": [
- "flood_index(image1_b, image1_a)"
- ],
- "execution_count": 9,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "3.7292957"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 9
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "vByAR1AVf9MQ",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- ""
- ],
- "execution_count": 0,
- "outputs": []
- }
- ]
-}
\ No newline at end of file
From 6ac106e6f488089aa8703a4e790dad51ed40403c Mon Sep 17 00:00:00 2001
From: Lorenzo Verstraeten <48151022+ollol88@users.noreply.github.com>
Date: Sun, 20 Oct 2019 16:31:44 +0200
Subject: [PATCH 4/9] Delete prediction.ipynb
---
prediction.ipynb | 188 -----------------------------------------------
1 file changed, 188 deletions(-)
delete mode 100644 prediction.ipynb
diff --git a/prediction.ipynb b/prediction.ipynb
deleted file mode 100644
index 58401ae..0000000
--- a/prediction.ipynb
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- "nbformat": 4,
- "nbformat_minor": 0,
- "metadata": {
- "colab": {
- "name": "prediction.ipynb",
- "provenance": [],
- "include_colab_link": true
- },
- "kernelspec": {
- "name": "python3",
- "display_name": "Python 3"
- }
- },
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "view-in-github",
- "colab_type": "text"
- },
- "source": [
- ""
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "57UqqJSWcOK6",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from sklearn.metrics.pairwise import cosine_similarity\n",
- "import numpy as np\n",
- "import tensorflow.keras\n",
- "import PIL\n",
- "import tensorflow as tf\n",
- "import os\n",
- "\n",
- "from tensorflow.keras import layers\n",
- "from tensorflow.keras.models import Model, Sequential\n",
- "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
- "from tensorflow.keras.applications.vgg19 import VGG19\n",
- "\n",
- "#import model\n",
- "model = VGG19(include_top=True, weights='imagenet')"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "MMR9VMhefyyZ",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 122
- },
- "outputId": "a4adae79-2cfa-4bb0-be18-7627cf1bc942"
- },
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/gdrive')"
- ],
- "execution_count": 5,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
- "\n",
- "Enter your authorization code:\n",
- "··········\n",
- "Mounted at /gdrive\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "voj9IcJoczx6",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "# define images by providing path\n",
- "image1_b = PIL.Image.open('../gdrive/My Drive/NASA/test/before/before_11.JPG')\n",
- "image1_a = PIL.Image.open('../gdrive/My Drive/NASA/test/after/after_11.JPG')\n"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "yYnswJ58c9p8",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "input_shape = model.layers[0].output_shape[0][1:3]\n",
- "\n",
- "# set specific layer to get the vectors\n",
- "layer_name = 'fc2'\n",
- "intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer_name).output)"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "gV7dy2PPfJdS",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "# get cosine similarity\n",
- "def flood_index(before, after):\n",
- " #take two vectors from the last layer of neural network compute a transformation of cosine similarity \n",
- " # and output an index of damages\n",
- " \n",
- " # resizing images\n",
- " image1_b_resized = image1_b.resize(input_shape, PIL.Image.LANCZOS)\n",
- " image1_a_resized = image1_a.resize(input_shape, PIL.Image.LANCZOS)\n",
- " # transform images to numpy arrays\n",
- " image1_b_array = np.expand_dims(np.array(image1_b_resized), axis=0)\n",
- " image1_a_array = np.expand_dims(np.array(image1_a_resized), axis=0)\n",
- " # prediction from model\n",
- " intermediate_output_a = intermediate_layer_model.predict(image1_a_array)\n",
- " intermediate_output_b = intermediate_layer_model.predict(image1_b_array)\n",
- " \n",
- " #compute similarity\n",
- " cos_sim=np.sqrt((1-cosine_similarity(intermediate_output_a, intermediate_output_b))/2)*10\n",
- " return cos_sim[0][0]"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "LaNGZ96wfeBV",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 34
- },
- "outputId": "627fe633-6dc6-4883-900f-8d422c3b04d5"
- },
- "source": [
- "flood_index(image1_b, image1_a)"
- ],
- "execution_count": 9,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "3.7292957"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 9
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "vByAR1AVf9MQ",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- ""
- ],
- "execution_count": 0,
- "outputs": []
- }
- ]
-}
\ No newline at end of file
From 425a6750aa1197fbb49bdf375a6b2321c411e21f Mon Sep 17 00:00:00 2001
From: Lorenzo Verstraeten <48151022+ollol88@users.noreply.github.com>
Date: Sun, 20 Oct 2019 16:32:13 +0200
Subject: [PATCH 5/9] Created using Colaboratory
---
DataScience/prediction.ipynb | 188 +++++++++++++++++++++++++++++++++++
1 file changed, 188 insertions(+)
create mode 100644 DataScience/prediction.ipynb
diff --git a/DataScience/prediction.ipynb b/DataScience/prediction.ipynb
new file mode 100644
index 0000000..9b7a9e3
--- /dev/null
+++ b/DataScience/prediction.ipynb
@@ -0,0 +1,188 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "prediction.ipynb",
+ "provenance": [],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "57UqqJSWcOK6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from sklearn.metrics.pairwise import cosine_similarity\n",
+ "import numpy as np\n",
+ "import tensorflow.keras\n",
+ "import PIL\n",
+ "import tensorflow as tf\n",
+ "import os\n",
+ "\n",
+ "from tensorflow.keras import layers\n",
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications.vgg19 import VGG19\n",
+ "\n",
+ "#import model\n",
+ "model = VGG19(include_top=True, weights='imagenet')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "MMR9VMhefyyZ",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 122
+ },
+ "outputId": "a4adae79-2cfa-4bb0-be18-7627cf1bc942"
+ },
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/gdrive')"
+ ],
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
+ "\n",
+ "Enter your authorization code:\n",
+ "··········\n",
+ "Mounted at /gdrive\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "voj9IcJoczx6",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# define images by providing path\n",
+ "image1_b = PIL.Image.open('../gdrive/My Drive/NASA/test/before/before_11.JPG')\n",
+ "image1_a = PIL.Image.open('../gdrive/My Drive/NASA/test/after/after_11.JPG')\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "yYnswJ58c9p8",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "input_shape = model.layers[0].output_shape[0][1:3]\n",
+ "\n",
+ "# set specific layer to get the vectors\n",
+ "layer_name = 'fc2'\n",
+ "intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer_name).output)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gV7dy2PPfJdS",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "# get cosine similarity\n",
+ "def flood_index(before, after):\n",
+ " #take two vectors from the last layer of neural network compute a transformation of cosine similarity \n",
+ " # and output an index of damages\n",
+ " \n",
+ " # resizing images\n",
+ " image1_b_resized = image1_b.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " image1_a_resized = image1_a.resize(input_shape, PIL.Image.LANCZOS)\n",
+ " # transform images to numpy arrays\n",
+ " image1_b_array = np.expand_dims(np.array(image1_b_resized), axis=0)\n",
+ " image1_a_array = np.expand_dims(np.array(image1_a_resized), axis=0)\n",
+ " # prediction from model\n",
+ " intermediate_output_a = intermediate_layer_model.predict(image1_a_array)\n",
+ " intermediate_output_b = intermediate_layer_model.predict(image1_b_array)\n",
+ " \n",
+ " #compute similarity\n",
+ " cos_sim=np.sqrt((1-cosine_similarity(intermediate_output_a, intermediate_output_b))/2)*10\n",
+ " return cos_sim[0][0]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "LaNGZ96wfeBV",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "627fe633-6dc6-4883-900f-8d422c3b04d5"
+ },
+ "source": [
+ "flood_index(image1_b, image1_a)"
+ ],
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "3.7292957"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "vByAR1AVf9MQ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ ""
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 3e308ecb59568d1c6b00eb620acf148f8fb67409 Mon Sep 17 00:00:00 2001
From: cassandra-lehmann <56787279+cassandra-lehmann@users.noreply.github.com>
Date: Sun, 20 Oct 2019 19:18:17 +0200
Subject: [PATCH 6/9] Trained model added
---
DataScience/trained_model | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 DataScience/trained_model
diff --git a/DataScience/trained_model b/DataScience/trained_model
new file mode 100644
index 0000000..460debb
--- /dev/null
+++ b/DataScience/trained_model
@@ -0,0 +1,6 @@
+Model weights:
+https://drive.google.com/open?id=1-0GLnddtFgJzH7M8ETftkfNQlFfNp0t6
+
+
+Model architecture:
+https://drive.google.com/open?id=1hZgRPFG8Um08i0e6LHYaf8ibpzHIVOAk
From 202e823488fd94373c8a3d75dcc35b6e334d222c Mon Sep 17 00:00:00 2001
From: cassandra-lehmann <56787279+cassandra-lehmann@users.noreply.github.com>
Date: Mon, 21 Oct 2019 08:59:05 +0200
Subject: [PATCH 7/9] Created using Colaboratory
---
final_model.ipynb | 1066 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1066 insertions(+)
create mode 100644 final_model.ipynb
diff --git a/final_model.ipynb b/final_model.ipynb
new file mode 100644
index 0000000..b09d35c
--- /dev/null
+++ b/final_model.ipynb
@@ -0,0 +1,1066 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "Copy of vgg19.ipynb",
+ "provenance": [],
+ "collapsed_sections": [],
+ "toc_visible": true,
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "_HbB6dzHJLcx",
+ "colab_type": "code",
+ "outputId": "e0fc9c48-cc82-4f5d-b2b0-2f78480971b4",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/gdrive')"
+ ],
+ "execution_count": 110,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Mounted at /gdrive\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "NQa52OEFJMjf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "\n",
+ "%matplotlib inline\n",
+ "import tensorflow.keras\n",
+ "import matplotlib.pyplot as plt\n",
+ "import PIL\n",
+ "import tensorflow as tf\n",
+ "import numpy as np\n",
+ "import os"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "9G5MHX5xBCXL",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications import VGG16\n",
+ "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
+ "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
+ "from tensorflow.keras.optimizers import Adam, RMSprop"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gHX-JSDFJObT",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from __future__ import absolute_import, division, print_function, unicode_literals\n",
+ "#!pip install tensorflow-gpu==1.14.0"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Y6StOM3IJTpQ",
+ "colab_type": "code",
+ "outputId": "386554da-a5b9-42dd-9ae8-d2a260556d7f",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "#import tensorflow as tf\n",
+ "\n",
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications import VGG16\n",
+ "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
+ "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
+ "from tensorflow.keras.optimizers import Adam, RMSprop\n",
+ "from tensorflow.keras import layers\n",
+ "tf.__version__"
+ ],
+ "execution_count": 73,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'1.15.0-rc3'"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 73
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "65O8jYj_JXDT",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "def path_join(dirname, filenames):\n",
+ " return [os.path.join(dirname, filename) for filename in filenames]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "074RtdVSJY3z",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "def load_images(image_paths):\n",
+ " # Load the images from disk.\n",
+ " images = [plt.imread(path) for path in image_paths]\n",
+ "\n",
+ " # Convert to a numpy array and return it.\n",
+ " return np.asarray(images)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "3cLJN89CJcwU",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "train_dir = '../gdrive/My Drive/NASA/train'\n",
+ "test_dir = '../gdrive/My Drive/NASA/test'"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "l6wkPZiJJfss",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.applications.vgg19 import VGG19\n",
+ "from tensorflow.keras.applications.resnet50 import ResNet50\n",
+ "from tensorflow.keras.applications.vgg19 import preprocess_input\n",
+ "\n",
+ "from tensorflow.keras.preprocessing import image\n",
+ "from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions\n",
+ "import numpy as np"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "7fMgfqGdJiK3",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model = VGG19(include_top=True, weights='imagenet')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "dAcPk0D8aAH6",
+ "colab_type": "code",
+ "outputId": "2887579f-535a-49a5-d836-f0472d781342",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "input_shape = model.layers[0].output_shape[0][1:3]\n",
+ "input_shape"
+ ],
+ "execution_count": 79,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(224, 224)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 79
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "dn_VdJFuAfUF",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "###try one pic\n",
+ "def predict(image_path):\n",
+ " \n",
+ " # convert image to .jpg if it is .png\n",
+ " if image_path.lower().endswith('.png'):\n",
+ " img = PIL.Image.open(image_path)\n",
+ " rgb_im = img.convert('RGB')\n",
+ " image_path=image_path.replace(\"png\", \"jpg\").replace(\"PNG\",\"jpg\")\n",
+ " rgb_im.save(image_path, quality=95)\n",
+ "\n",
+ " # Load and resize the image using PIL.\n",
+ " img = PIL.Image.open(image_path)\n",
+ " print('input_shape')\n",
+ " img_resized = img.resize(input_shape, PIL.Image.LANCZOS)\n",
+ "\n",
+ " # Plot the image.\n",
+ " #plt.imshow(img_resized)\n",
+ " #plt.show()\n",
+ "\n",
+ " # Convert the PIL image to a numpy-array with the proper shape.\n",
+ " img_array = np.expand_dims(np.array(img_resized), axis=0)\n",
+ "\n",
+ " # Use the VGG16 model to make a prediction.\n",
+ " # This outputs an array with 1000 numbers corresponding to\n",
+ " # the classes of the ImageNet-dataset.\n",
+ " pred = model.predict(img_array)\n",
+ " \n",
+ " # Decode the output of the VGG16 model.\n",
+ " pred_decoded = decode_predictions(pred)[0]\n",
+ "\n",
+ " # Print the predictions.\n",
+ " for code, name, score in pred_decoded:\n",
+ " print(\"{0:>6.2%} : {1}\".format(score, name))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "MkUDIprBB_cJ",
+ "colab_type": "code",
+ "outputId": "0c7fe4dc-797b-4c5a-aa3e-0b694ec84264",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 126
+ }
+ },
+ "source": [
+ "predict(image_path= '../gdrive/My Drive/NASA/test/after/after_23.jpg')"
+ ],
+ "execution_count": 112,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "input_shape\n",
+ "46.63% : throne\n",
+ " 7.95% : breastplate\n",
+ " 6.50% : cuirass\n",
+ " 1.94% : vault\n",
+ " 1.62% : palace\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "PGujl-gkCLgv",
+ "colab_type": "code",
+ "outputId": "239af2ac-6022-4b82-a7f0-0cc2d46998af",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "source": [
+ "model.summary()"
+ ],
+ "execution_count": 82,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"vgg19\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
+ "_________________________________________________________________\n",
+ "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
+ "_________________________________________________________________\n",
+ "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
+ "_________________________________________________________________\n",
+ "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
+ "_________________________________________________________________\n",
+ "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
+ "_________________________________________________________________\n",
+ "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
+ "_________________________________________________________________\n",
+ "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
+ "_________________________________________________________________\n",
+ "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
+ "_________________________________________________________________\n",
+ "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
+ "_________________________________________________________________\n",
+ "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
+ "_________________________________________________________________\n",
+ "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "flatten (Flatten) (None, 25088) 0 \n",
+ "_________________________________________________________________\n",
+ "fc1 (Dense) (None, 4096) 102764544 \n",
+ "_________________________________________________________________\n",
+ "fc2 (Dense) (None, 4096) 16781312 \n",
+ "_________________________________________________________________\n",
+ "predictions (Dense) (None, 1000) 4097000 \n",
+ "=================================================================\n",
+ "Total params: 143,667,240\n",
+ "Trainable params: 143,667,240\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Tc8T4cLgKFHl",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "datagen_train = ImageDataGenerator(\n",
+ " rescale=1./255,\n",
+ " rotation_range=180,\n",
+ " width_shift_range=0.1,\n",
+ " height_shift_range=0.1,\n",
+ " shear_range=0.1,\n",
+ " zoom_range=[0.9, 1.5],\n",
+ " horizontal_flip=True,\n",
+ " vertical_flip=True,\n",
+ " fill_mode='nearest')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "zXrC28R1K7wC",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "datagen_test = ImageDataGenerator(rescale=1./255) "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "WXNmRdbDK9RZ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "batch_size = 10 "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "X9V5lIazK-yf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ " if True:\n",
+ " save_to_dir = None\n",
+ "else:\n",
+ " save_to_dir='augmented_images/'"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "fmbcsDFSLBJo",
+ "colab_type": "code",
+ "outputId": "162ebe89-0c7b-410c-aa72-69dccbf09e44",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "generator_train = datagen_train.flow_from_directory(directory=train_dir,\n",
+ " target_size=input_shape,\n",
+ " batch_size=batch_size,\n",
+ " shuffle=True,\n",
+ " save_to_dir=save_to_dir)"
+ ],
+ "execution_count": 117,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Found 77 images belonging to 2 classes.\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "FHxPc6ZfLk5I",
+ "colab_type": "code",
+ "outputId": "7ba59eca-5d13-4d29-a87c-37fde0b2e2f3",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "generator_test = datagen_test.flow_from_directory(directory=test_dir,\n",
+ " target_size=input_shape,\n",
+ " batch_size=batch_size,\n",
+ " shuffle=False)"
+ ],
+ "execution_count": 118,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Found 25 images belonging to 2 classes.\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "iiuwf1b8LCtQ",
+ "colab_type": "code",
+ "outputId": "833998cb-693f-4ead-d859-3806c2f50b38",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "steps_test = generator_test.n / batch_size\n",
+ "steps_test"
+ ],
+ "execution_count": 119,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "2.5"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 119
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "2n4GHiryLibd",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "image_paths_train = path_join(train_dir, generator_train.filenames)\n",
+ "image_paths_test = path_join(test_dir, generator_test.filenames)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "R_lL-p0ELpUu",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "cls_train = generator_train.classes\n",
+ "cls_test = generator_test.classes"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Q1iBUIH_Lq-x",
+ "colab_type": "code",
+ "outputId": "79770dd9-fd31-433a-8c17-a755bc471703",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "class_names = list(generator_train.class_indices.keys())\n",
+ "class_names"
+ ],
+ "execution_count": 122,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "['after', 'before']"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 122
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Xs4Btw7_LsWo",
+ "colab_type": "code",
+ "outputId": "9219135b-417b-4d4d-b940-50da8ca98715",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "num_classes = generator_train.num_classes\n",
+ "num_classes"
+ ],
+ "execution_count": 123,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 123
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "c8fHG74cLuPJ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from sklearn.utils.class_weight import compute_class_weight"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "EGBbkeObLxYX",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ " class_weight = compute_class_weight(class_weight='balanced',\n",
+ " classes=np.unique(cls_train),\n",
+ " y=cls_train)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "-_j8zDp5Lyjg",
+ "colab_type": "code",
+ "outputId": "a182ff72-3a55-4bd1-911b-877831a54d9a",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "class_weight "
+ ],
+ "execution_count": 126,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([0.9625 , 1.04054054])"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 126
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "clUZsgvbL4AF",
+ "colab_type": "code",
+ "outputId": "76338dfe-1b2b-41d4-98b2-005a05d74562",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "source": [
+ "model.summary() "
+ ],
+ "execution_count": 127,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"vgg19\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
+ "_________________________________________________________________\n",
+ "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
+ "_________________________________________________________________\n",
+ "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
+ "_________________________________________________________________\n",
+ "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
+ "_________________________________________________________________\n",
+ "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
+ "_________________________________________________________________\n",
+ "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
+ "_________________________________________________________________\n",
+ "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
+ "_________________________________________________________________\n",
+ "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
+ "_________________________________________________________________\n",
+ "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
+ "_________________________________________________________________\n",
+ "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
+ "_________________________________________________________________\n",
+ "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "flatten (Flatten) (None, 25088) 0 \n",
+ "_________________________________________________________________\n",
+ "fc1 (Dense) (None, 4096) 102764544 \n",
+ "_________________________________________________________________\n",
+ "fc2 (Dense) (None, 4096) 16781312 \n",
+ "_________________________________________________________________\n",
+ "predictions (Dense) (None, 1000) 4097000 \n",
+ "=================================================================\n",
+ "Total params: 143,667,240\n",
+ "Trainable params: 143,667,240\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "twgrpq5LL826",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "transfer_layer = model.get_layer('fc2') "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "FlczWAnrgrK1",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras import layers"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "u2-mbRUlO6zX",
+ "colab_type": "code",
+ "outputId": "7282dd8e-ca7b-402a-f185-0dcf91a3554c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "conv_model = Model(inputs=model.input, outputs=transfer_layer.output)\n",
+ "model.input"
+ ],
+ "execution_count": 130,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 130
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "rHPzx7m3hywg",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "new_model = Sequential()\n",
+ "new_model.add(conv_model)\n",
+ "\n",
+ "# Add the final layer for the actual classification.\n",
+ "new_model.add(Dense(num_classes, activation='softmax'))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "fJosDg-DlWYD",
+ "colab_type": "code",
+ "outputId": "a91f2595-3334-42e4-dea1-3e184357cd28",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 235
+ }
+ },
+ "source": [
+ "new_model.summary()"
+ ],
+ "execution_count": 132,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"sequential_3\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "model_5 (Model) (None, 4096) 139570240 \n",
+ "_________________________________________________________________\n",
+ "dense_3 (Dense) (None, 2) 8194 \n",
+ "=================================================================\n",
+ "Total params: 139,578,434\n",
+ "Trainable params: 139,578,434\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "6aL9iTi6V3jO",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "optimizer = Adam(lr=1e-5)\n",
+ "metrics = ['categorical_accuracy']\n",
+ "loss = 'categorical_crossentropy'\n",
+ "new_model.compile(optimizer = optimizer,loss=loss, metrics=metrics)\n",
+ "epochs = 10\n",
+ "steps_per_epoch = 100\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "bO1Im-0ixIDr",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.callbacks import TensorBoard, EarlyStopping"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "-e_3fmHqg6Yd",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 563
+ },
+ "outputId": "da054d4d-8e0d-4061-e04e-463753cd8fb0"
+ },
+ "source": [
+ "history = new_model.fit_generator(generator=generator_train,\n",
+ " epochs=epochs,\n",
+ " steps_per_epoch=steps_per_epoch,\n",
+ " class_weight=class_weight,\n",
+ " validation_data=generator_test,\n",
+ " validation_steps=steps_test)"
+ ],
+ "execution_count": 136,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.4232 - categorical_accuracy: 0.7834Epoch 1/10\n",
+ "100/100 [==============================] - 2196s 22s/step - loss: 0.4212 - categorical_accuracy: 0.7846 - val_loss: 1.0793 - val_categorical_accuracy: 0.6800\n",
+ "Epoch 2/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.2430 - categorical_accuracy: 0.8851Epoch 1/10\n",
+ "100/100 [==============================] - 2192s 22s/step - loss: 0.2419 - categorical_accuracy: 0.8859 - val_loss: 1.1584 - val_categorical_accuracy: 0.5600\n",
+ "Epoch 3/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.1296 - categorical_accuracy: 0.9476Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.1285 - categorical_accuracy: 0.9481 - val_loss: 0.9108 - val_categorical_accuracy: 0.6800\n",
+ "Epoch 4/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0360 - categorical_accuracy: 0.9874Epoch 1/10\n",
+ "100/100 [==============================] - 2169s 22s/step - loss: 0.0357 - categorical_accuracy: 0.9875 - val_loss: 1.1099 - val_categorical_accuracy: 0.7200\n",
+ "Epoch 5/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0323 - categorical_accuracy: 0.9916Epoch 1/10\n",
+ "100/100 [==============================] - 2174s 22s/step - loss: 0.0322 - categorical_accuracy: 0.9917 - val_loss: 1.1059 - val_categorical_accuracy: 0.6000\n",
+ "Epoch 6/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0049 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.0048 - categorical_accuracy: 1.0000 - val_loss: 1.6649 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 7/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0011 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.0011 - categorical_accuracy: 1.0000 - val_loss: 1.7248 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 8/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0174 - categorical_accuracy: 0.9916Epoch 1/10\n",
+ "100/100 [==============================] - 2187s 22s/step - loss: 0.0219 - categorical_accuracy: 0.9896 - val_loss: 1.9386 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 9/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0789 - categorical_accuracy: 0.9696Epoch 1/10\n",
+ "100/100 [==============================] - 2186s 22s/step - loss: 0.0782 - categorical_accuracy: 0.9699 - val_loss: 1.8128 - val_categorical_accuracy: 0.6000\n",
+ "Epoch 10/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0018 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2187s 22s/step - loss: 0.0018 - categorical_accuracy: 1.0000 - val_loss: 1.6079 - val_categorical_accuracy: 0.6000\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "5PfyXxlm9KSw",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 54
+ },
+ "outputId": "b85b1e7e-4821-4e54-ac1e-1817b26553aa"
+ },
+ "source": [
+ "from keras.models import load_model\n",
+ "\n",
+ "model_json = model.to_json()\n",
+ "with open(\"/../gdrive/My Drive/NASA/nasa_challenge_full.json\", \"w\") as json_file:\n",
+ " json_file.write(model_json)\n",
+ "# serialize weights to HDF5\n",
+ "model.save_weights(\"/gdrive/My Drive/NASA/nasa_challenge_full.h5\")\n",
+ "print(\"Saved model to disk\")\n",
+ " "
+ ],
+ "execution_count": 137,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Using TensorFlow backend.\n"
+ ],
+ "name": "stderr"
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Saved model to disk\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "jk3mFA-ldsoy",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model = load_model('/gdrive/My Drive/NASA_challenge_full.h5')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "zUI151RW7ObG",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "'''from keras.callbacks import EarlyStopping\n",
+ "early_stopping = EarlyStopping(monitor='val_loss', patience=2)\n",
+ "model.fit(x, y, validation_split=0.2, callbacks=[early_stopping])'''"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 9a841f53aa942efb834d79363c14029369da4ed4 Mon Sep 17 00:00:00 2001
From: cassandra-lehmann <56787279+cassandra-lehmann@users.noreply.github.com>
Date: Mon, 21 Oct 2019 09:00:33 +0200
Subject: [PATCH 8/9] Created using Colaboratory
---
DataScience/final_model.ipynb | 1066 +++++++++++++++++++++++++++++++++
1 file changed, 1066 insertions(+)
create mode 100644 DataScience/final_model.ipynb
diff --git a/DataScience/final_model.ipynb b/DataScience/final_model.ipynb
new file mode 100644
index 0000000..e9102b1
--- /dev/null
+++ b/DataScience/final_model.ipynb
@@ -0,0 +1,1066 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "Copy of vgg19.ipynb",
+ "provenance": [],
+ "collapsed_sections": [],
+ "toc_visible": true,
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "_HbB6dzHJLcx",
+ "colab_type": "code",
+ "outputId": "e0fc9c48-cc82-4f5d-b2b0-2f78480971b4",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/gdrive')"
+ ],
+ "execution_count": 110,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Mounted at /gdrive\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "NQa52OEFJMjf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "\n",
+ "%matplotlib inline\n",
+ "import tensorflow.keras\n",
+ "import matplotlib.pyplot as plt\n",
+ "import PIL\n",
+ "import tensorflow as tf\n",
+ "import numpy as np\n",
+ "import os"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "9G5MHX5xBCXL",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications import VGG16\n",
+ "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
+ "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
+ "from tensorflow.keras.optimizers import Adam, RMSprop"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gHX-JSDFJObT",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from __future__ import absolute_import, division, print_function, unicode_literals\n",
+ "#!pip install tensorflow-gpu==1.14.0"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Y6StOM3IJTpQ",
+ "colab_type": "code",
+ "outputId": "386554da-a5b9-42dd-9ae8-d2a260556d7f",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "#import tensorflow as tf\n",
+ "\n",
+ "from tensorflow.keras.models import Model, Sequential\n",
+ "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
+ "from tensorflow.keras.applications import VGG16\n",
+ "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
+ "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
+ "from tensorflow.keras.optimizers import Adam, RMSprop\n",
+ "from tensorflow.keras import layers\n",
+ "tf.__version__"
+ ],
+ "execution_count": 73,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'1.15.0-rc3'"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 73
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "65O8jYj_JXDT",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "def path_join(dirname, filenames):\n",
+ " return [os.path.join(dirname, filename) for filename in filenames]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "074RtdVSJY3z",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "def load_images(image_paths):\n",
+ " # Load the images from disk.\n",
+ " images = [plt.imread(path) for path in image_paths]\n",
+ "\n",
+ " # Convert to a numpy array and return it.\n",
+ " return np.asarray(images)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "3cLJN89CJcwU",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "train_dir = '../gdrive/My Drive/NASA/train'\n",
+ "test_dir = '../gdrive/My Drive/NASA/test'"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "l6wkPZiJJfss",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.applications.vgg19 import VGG19\n",
+ "from tensorflow.keras.applications.resnet50 import ResNet50\n",
+ "from tensorflow.keras.applications.vgg19 import preprocess_input\n",
+ "\n",
+ "from tensorflow.keras.preprocessing import image\n",
+ "from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions\n",
+ "import numpy as np"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "7fMgfqGdJiK3",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model = VGG19(include_top=True, weights='imagenet')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "dAcPk0D8aAH6",
+ "colab_type": "code",
+ "outputId": "2887579f-535a-49a5-d836-f0472d781342",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "input_shape = model.layers[0].output_shape[0][1:3]\n",
+ "input_shape"
+ ],
+ "execution_count": 79,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(224, 224)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 79
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "dn_VdJFuAfUF",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "###try one pic\n",
+ "def predict(image_path):\n",
+ " \n",
+ " # convert image to .jpg if it is .png\n",
+ " if image_path.lower().endswith('.png'):\n",
+ " img = PIL.Image.open(image_path)\n",
+ " rgb_im = img.convert('RGB')\n",
+ " image_path=image_path.replace(\"png\", \"jpg\").replace(\"PNG\",\"jpg\")\n",
+ " rgb_im.save(image_path, quality=95)\n",
+ "\n",
+ " # Load and resize the image using PIL.\n",
+ " img = PIL.Image.open(image_path)\n",
+ " print('input_shape')\n",
+ " img_resized = img.resize(input_shape, PIL.Image.LANCZOS)\n",
+ "\n",
+ " # Plot the image.\n",
+ " #plt.imshow(img_resized)\n",
+ " #plt.show()\n",
+ "\n",
+ " # Convert the PIL image to a numpy-array with the proper shape.\n",
+ " img_array = np.expand_dims(np.array(img_resized), axis=0)\n",
+ "\n",
+ " # Use the VGG16 model to make a prediction.\n",
+ " # This outputs an array with 1000 numbers corresponding to\n",
+ " # the classes of the ImageNet-dataset.\n",
+ " pred = model.predict(img_array)\n",
+ " \n",
+ " # Decode the output of the VGG16 model.\n",
+ " pred_decoded = decode_predictions(pred)[0]\n",
+ "\n",
+ " # Print the predictions.\n",
+ " for code, name, score in pred_decoded:\n",
+ " print(\"{0:>6.2%} : {1}\".format(score, name))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "MkUDIprBB_cJ",
+ "colab_type": "code",
+ "outputId": "0c7fe4dc-797b-4c5a-aa3e-0b694ec84264",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 126
+ }
+ },
+ "source": [
+ "predict(image_path= '../gdrive/My Drive/NASA/test/after/after_23.jpg')"
+ ],
+ "execution_count": 112,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "input_shape\n",
+ "46.63% : throne\n",
+ " 7.95% : breastplate\n",
+ " 6.50% : cuirass\n",
+ " 1.94% : vault\n",
+ " 1.62% : palace\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "PGujl-gkCLgv",
+ "colab_type": "code",
+ "outputId": "239af2ac-6022-4b82-a7f0-0cc2d46998af",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "source": [
+ "model.summary()"
+ ],
+ "execution_count": 82,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"vgg19\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
+ "_________________________________________________________________\n",
+ "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
+ "_________________________________________________________________\n",
+ "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
+ "_________________________________________________________________\n",
+ "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
+ "_________________________________________________________________\n",
+ "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
+ "_________________________________________________________________\n",
+ "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
+ "_________________________________________________________________\n",
+ "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
+ "_________________________________________________________________\n",
+ "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
+ "_________________________________________________________________\n",
+ "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
+ "_________________________________________________________________\n",
+ "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
+ "_________________________________________________________________\n",
+ "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "flatten (Flatten) (None, 25088) 0 \n",
+ "_________________________________________________________________\n",
+ "fc1 (Dense) (None, 4096) 102764544 \n",
+ "_________________________________________________________________\n",
+ "fc2 (Dense) (None, 4096) 16781312 \n",
+ "_________________________________________________________________\n",
+ "predictions (Dense) (None, 1000) 4097000 \n",
+ "=================================================================\n",
+ "Total params: 143,667,240\n",
+ "Trainable params: 143,667,240\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Tc8T4cLgKFHl",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "datagen_train = ImageDataGenerator(\n",
+ " rescale=1./255,\n",
+ " rotation_range=180,\n",
+ " width_shift_range=0.1,\n",
+ " height_shift_range=0.1,\n",
+ " shear_range=0.1,\n",
+ " zoom_range=[0.9, 1.5],\n",
+ " horizontal_flip=True,\n",
+ " vertical_flip=True,\n",
+ " fill_mode='nearest')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "zXrC28R1K7wC",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "datagen_test = ImageDataGenerator(rescale=1./255) "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "WXNmRdbDK9RZ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "batch_size = 10 "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "X9V5lIazK-yf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ " if True:\n",
+ " save_to_dir = None\n",
+ "else:\n",
+ " save_to_dir='augmented_images/'"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "fmbcsDFSLBJo",
+ "colab_type": "code",
+ "outputId": "162ebe89-0c7b-410c-aa72-69dccbf09e44",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "generator_train = datagen_train.flow_from_directory(directory=train_dir,\n",
+ " target_size=input_shape,\n",
+ " batch_size=batch_size,\n",
+ " shuffle=True,\n",
+ " save_to_dir=save_to_dir)"
+ ],
+ "execution_count": 117,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Found 77 images belonging to 2 classes.\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "FHxPc6ZfLk5I",
+ "colab_type": "code",
+ "outputId": "7ba59eca-5d13-4d29-a87c-37fde0b2e2f3",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "generator_test = datagen_test.flow_from_directory(directory=test_dir,\n",
+ " target_size=input_shape,\n",
+ " batch_size=batch_size,\n",
+ " shuffle=False)"
+ ],
+ "execution_count": 118,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Found 25 images belonging to 2 classes.\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "iiuwf1b8LCtQ",
+ "colab_type": "code",
+ "outputId": "833998cb-693f-4ead-d859-3806c2f50b38",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "steps_test = generator_test.n / batch_size\n",
+ "steps_test"
+ ],
+ "execution_count": 119,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "2.5"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 119
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "2n4GHiryLibd",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "image_paths_train = path_join(train_dir, generator_train.filenames)\n",
+ "image_paths_test = path_join(test_dir, generator_test.filenames)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "R_lL-p0ELpUu",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "cls_train = generator_train.classes\n",
+ "cls_test = generator_test.classes"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Q1iBUIH_Lq-x",
+ "colab_type": "code",
+ "outputId": "79770dd9-fd31-433a-8c17-a755bc471703",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "class_names = list(generator_train.class_indices.keys())\n",
+ "class_names"
+ ],
+ "execution_count": 122,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "['after', 'before']"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 122
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Xs4Btw7_LsWo",
+ "colab_type": "code",
+ "outputId": "9219135b-417b-4d4d-b940-50da8ca98715",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "num_classes = generator_train.num_classes\n",
+ "num_classes"
+ ],
+ "execution_count": 123,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 123
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "c8fHG74cLuPJ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from sklearn.utils.class_weight import compute_class_weight"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "EGBbkeObLxYX",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ " class_weight = compute_class_weight(class_weight='balanced',\n",
+ " classes=np.unique(cls_train),\n",
+ " y=cls_train)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "-_j8zDp5Lyjg",
+ "colab_type": "code",
+ "outputId": "a182ff72-3a55-4bd1-911b-877831a54d9a",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "class_weight "
+ ],
+ "execution_count": 126,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([0.9625 , 1.04054054])"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 126
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "clUZsgvbL4AF",
+ "colab_type": "code",
+ "outputId": "76338dfe-1b2b-41d4-98b2-005a05d74562",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "source": [
+ "model.summary() "
+ ],
+ "execution_count": 127,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"vgg19\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
+ "_________________________________________________________________\n",
+ "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
+ "_________________________________________________________________\n",
+ "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
+ "_________________________________________________________________\n",
+ "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
+ "_________________________________________________________________\n",
+ "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
+ "_________________________________________________________________\n",
+ "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
+ "_________________________________________________________________\n",
+ "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
+ "_________________________________________________________________\n",
+ "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
+ "_________________________________________________________________\n",
+ "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
+ "_________________________________________________________________\n",
+ "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
+ "_________________________________________________________________\n",
+ "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
+ "_________________________________________________________________\n",
+ "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
+ "_________________________________________________________________\n",
+ "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
+ "_________________________________________________________________\n",
+ "flatten (Flatten) (None, 25088) 0 \n",
+ "_________________________________________________________________\n",
+ "fc1 (Dense) (None, 4096) 102764544 \n",
+ "_________________________________________________________________\n",
+ "fc2 (Dense) (None, 4096) 16781312 \n",
+ "_________________________________________________________________\n",
+ "predictions (Dense) (None, 1000) 4097000 \n",
+ "=================================================================\n",
+ "Total params: 143,667,240\n",
+ "Trainable params: 143,667,240\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "twgrpq5LL826",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "transfer_layer = model.get_layer('fc2') "
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "FlczWAnrgrK1",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras import layers"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "u2-mbRUlO6zX",
+ "colab_type": "code",
+ "outputId": "7282dd8e-ca7b-402a-f185-0dcf91a3554c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "source": [
+ "conv_model = Model(inputs=model.input, outputs=transfer_layer.output)\n",
+ "model.input"
+ ],
+ "execution_count": 130,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 130
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "rHPzx7m3hywg",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "new_model = Sequential()\n",
+ "new_model.add(conv_model)\n",
+ "\n",
+ "# Add the final layer for the actual classification.\n",
+ "new_model.add(Dense(num_classes, activation='softmax'))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "fJosDg-DlWYD",
+ "colab_type": "code",
+ "outputId": "a91f2595-3334-42e4-dea1-3e184357cd28",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 235
+ }
+ },
+ "source": [
+ "new_model.summary()"
+ ],
+ "execution_count": 132,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Model: \"sequential_3\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "model_5 (Model) (None, 4096) 139570240 \n",
+ "_________________________________________________________________\n",
+ "dense_3 (Dense) (None, 2) 8194 \n",
+ "=================================================================\n",
+ "Total params: 139,578,434\n",
+ "Trainable params: 139,578,434\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "6aL9iTi6V3jO",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "optimizer = Adam(lr=1e-5)\n",
+ "metrics = ['categorical_accuracy']\n",
+ "loss = 'categorical_crossentropy'\n",
+ "new_model.compile(optimizer = optimizer,loss=loss, metrics=metrics)\n",
+ "epochs = 10\n",
+ "steps_per_epoch = 100\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "bO1Im-0ixIDr",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "from tensorflow.keras.callbacks import TensorBoard, EarlyStopping"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "-e_3fmHqg6Yd",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 563
+ },
+ "outputId": "da054d4d-8e0d-4061-e04e-463753cd8fb0"
+ },
+ "source": [
+ "history = new_model.fit_generator(generator=generator_train,\n",
+ " epochs=epochs,\n",
+ " steps_per_epoch=steps_per_epoch,\n",
+ " class_weight=class_weight,\n",
+ " validation_data=generator_test,\n",
+ " validation_steps=steps_test)"
+ ],
+ "execution_count": 136,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.4232 - categorical_accuracy: 0.7834Epoch 1/10\n",
+ "100/100 [==============================] - 2196s 22s/step - loss: 0.4212 - categorical_accuracy: 0.7846 - val_loss: 1.0793 - val_categorical_accuracy: 0.6800\n",
+ "Epoch 2/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.2430 - categorical_accuracy: 0.8851Epoch 1/10\n",
+ "100/100 [==============================] - 2192s 22s/step - loss: 0.2419 - categorical_accuracy: 0.8859 - val_loss: 1.1584 - val_categorical_accuracy: 0.5600\n",
+ "Epoch 3/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.1296 - categorical_accuracy: 0.9476Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.1285 - categorical_accuracy: 0.9481 - val_loss: 0.9108 - val_categorical_accuracy: 0.6800\n",
+ "Epoch 4/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0360 - categorical_accuracy: 0.9874Epoch 1/10\n",
+ "100/100 [==============================] - 2169s 22s/step - loss: 0.0357 - categorical_accuracy: 0.9875 - val_loss: 1.1099 - val_categorical_accuracy: 0.7200\n",
+ "Epoch 5/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0323 - categorical_accuracy: 0.9916Epoch 1/10\n",
+ "100/100 [==============================] - 2174s 22s/step - loss: 0.0322 - categorical_accuracy: 0.9917 - val_loss: 1.1059 - val_categorical_accuracy: 0.6000\n",
+ "Epoch 6/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0049 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.0048 - categorical_accuracy: 1.0000 - val_loss: 1.6649 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 7/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0011 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2177s 22s/step - loss: 0.0011 - categorical_accuracy: 1.0000 - val_loss: 1.7248 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 8/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0174 - categorical_accuracy: 0.9916Epoch 1/10\n",
+ "100/100 [==============================] - 2187s 22s/step - loss: 0.0219 - categorical_accuracy: 0.9896 - val_loss: 1.9386 - val_categorical_accuracy: 0.6400\n",
+ "Epoch 9/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0789 - categorical_accuracy: 0.9696Epoch 1/10\n",
+ "100/100 [==============================] - 2186s 22s/step - loss: 0.0782 - categorical_accuracy: 0.9699 - val_loss: 1.8128 - val_categorical_accuracy: 0.6000\n",
+ "Epoch 10/10\n",
+ " 99/100 [============================>.] - ETA: 21s - loss: 0.0018 - categorical_accuracy: 1.0000Epoch 1/10\n",
+ "100/100 [==============================] - 2187s 22s/step - loss: 0.0018 - categorical_accuracy: 1.0000 - val_loss: 1.6079 - val_categorical_accuracy: 0.6000\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "5PfyXxlm9KSw",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 54
+ },
+ "outputId": "b85b1e7e-4821-4e54-ac1e-1817b26553aa"
+ },
+ "source": [
+ "from keras.models import load_model\n",
+ "\n",
+ "model_json = model.to_json()\n",
+ "with open(\"/../gdrive/My Drive/NASA/nasa_challenge_full.json\", \"w\") as json_file:\n",
+ " json_file.write(model_json)\n",
+ "# serialize weights to HDF5\n",
+ "model.save_weights(\"/gdrive/My Drive/NASA/nasa_challenge_full.h5\")\n",
+ "print(\"Saved model to disk\")\n",
+ " "
+ ],
+ "execution_count": 137,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Using TensorFlow backend.\n"
+ ],
+ "name": "stderr"
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Saved model to disk\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "jk3mFA-ldsoy",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "model = load_model('/gdrive/My Drive/NASA_challenge_full.h5')"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "zUI151RW7ObG",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "'''from keras.callbacks import EarlyStopping\n",
+ "early_stopping = EarlyStopping(monitor='val_loss', patience=2)\n",
+ "model.fit(x, y, validation_split=0.2, callbacks=[early_stopping])'''"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 6de62af009d4167ad07b165311e332051e8adc36 Mon Sep 17 00:00:00 2001
From: cassandra-lehmann <56787279+cassandra-lehmann@users.noreply.github.com>
Date: Mon, 21 Oct 2019 09:00:53 +0200
Subject: [PATCH 9/9] Delete final_model.ipynb
---
final_model.ipynb | 1066 ---------------------------------------------
1 file changed, 1066 deletions(-)
delete mode 100644 final_model.ipynb
diff --git a/final_model.ipynb b/final_model.ipynb
deleted file mode 100644
index b09d35c..0000000
--- a/final_model.ipynb
+++ /dev/null
@@ -1,1066 +0,0 @@
-{
- "nbformat": 4,
- "nbformat_minor": 0,
- "metadata": {
- "colab": {
- "name": "Copy of vgg19.ipynb",
- "provenance": [],
- "collapsed_sections": [],
- "toc_visible": true,
- "include_colab_link": true
- },
- "kernelspec": {
- "name": "python3",
- "display_name": "Python 3"
- }
- },
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "view-in-github",
- "colab_type": "text"
- },
- "source": [
- ""
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "_HbB6dzHJLcx",
- "colab_type": "code",
- "outputId": "e0fc9c48-cc82-4f5d-b2b0-2f78480971b4",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/gdrive')"
- ],
- "execution_count": 110,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Mounted at /gdrive\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "NQa52OEFJMjf",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "\n",
- "%matplotlib inline\n",
- "import tensorflow.keras\n",
- "import matplotlib.pyplot as plt\n",
- "import PIL\n",
- "import tensorflow as tf\n",
- "import numpy as np\n",
- "import os"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "9G5MHX5xBCXL",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from tensorflow.keras.models import Model, Sequential\n",
- "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
- "from tensorflow.keras.applications import VGG16\n",
- "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
- "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
- "from tensorflow.keras.optimizers import Adam, RMSprop"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "gHX-JSDFJObT",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from __future__ import absolute_import, division, print_function, unicode_literals\n",
- "#!pip install tensorflow-gpu==1.14.0"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "Y6StOM3IJTpQ",
- "colab_type": "code",
- "outputId": "386554da-a5b9-42dd-9ae8-d2a260556d7f",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "#import tensorflow as tf\n",
- "\n",
- "from tensorflow.keras.models import Model, Sequential\n",
- "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
- "from tensorflow.keras.applications import VGG16\n",
- "from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions\n",
- "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
- "from tensorflow.keras.optimizers import Adam, RMSprop\n",
- "from tensorflow.keras import layers\n",
- "tf.__version__"
- ],
- "execution_count": 73,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "'1.15.0-rc3'"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 73
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "65O8jYj_JXDT",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "def path_join(dirname, filenames):\n",
- " return [os.path.join(dirname, filename) for filename in filenames]"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "074RtdVSJY3z",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "def load_images(image_paths):\n",
- " # Load the images from disk.\n",
- " images = [plt.imread(path) for path in image_paths]\n",
- "\n",
- " # Convert to a numpy array and return it.\n",
- " return np.asarray(images)"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "3cLJN89CJcwU",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "train_dir = '../gdrive/My Drive/NASA/train'\n",
- "test_dir = '../gdrive/My Drive/NASA/test'"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "l6wkPZiJJfss",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from tensorflow.keras.applications.vgg19 import VGG19\n",
- "from tensorflow.keras.applications.resnet50 import ResNet50\n",
- "from tensorflow.keras.applications.vgg19 import preprocess_input\n",
- "\n",
- "from tensorflow.keras.preprocessing import image\n",
- "from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions\n",
- "import numpy as np"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "7fMgfqGdJiK3",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "model = VGG19(include_top=True, weights='imagenet')"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "dAcPk0D8aAH6",
- "colab_type": "code",
- "outputId": "2887579f-535a-49a5-d836-f0472d781342",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "input_shape = model.layers[0].output_shape[0][1:3]\n",
- "input_shape"
- ],
- "execution_count": 79,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(224, 224)"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 79
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "dn_VdJFuAfUF",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "###try one pic\n",
- "def predict(image_path):\n",
- " \n",
- " # convert image to .jpg if it is .png\n",
- " if image_path.lower().endswith('.png'):\n",
- " img = PIL.Image.open(image_path)\n",
- " rgb_im = img.convert('RGB')\n",
- " image_path=image_path.replace(\"png\", \"jpg\").replace(\"PNG\",\"jpg\")\n",
- " rgb_im.save(image_path, quality=95)\n",
- "\n",
- " # Load and resize the image using PIL.\n",
- " img = PIL.Image.open(image_path)\n",
- " print('input_shape')\n",
- " img_resized = img.resize(input_shape, PIL.Image.LANCZOS)\n",
- "\n",
- " # Plot the image.\n",
- " #plt.imshow(img_resized)\n",
- " #plt.show()\n",
- "\n",
- " # Convert the PIL image to a numpy-array with the proper shape.\n",
- " img_array = np.expand_dims(np.array(img_resized), axis=0)\n",
- "\n",
- " # Use the VGG16 model to make a prediction.\n",
- " # This outputs an array with 1000 numbers corresponding to\n",
- " # the classes of the ImageNet-dataset.\n",
- " pred = model.predict(img_array)\n",
- " \n",
- " # Decode the output of the VGG16 model.\n",
- " pred_decoded = decode_predictions(pred)[0]\n",
- "\n",
- " # Print the predictions.\n",
- " for code, name, score in pred_decoded:\n",
- " print(\"{0:>6.2%} : {1}\".format(score, name))"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "MkUDIprBB_cJ",
- "colab_type": "code",
- "outputId": "0c7fe4dc-797b-4c5a-aa3e-0b694ec84264",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 126
- }
- },
- "source": [
- "predict(image_path= '../gdrive/My Drive/NASA/test/after/after_23.jpg')"
- ],
- "execution_count": 112,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "input_shape\n",
- "46.63% : throne\n",
- " 7.95% : breastplate\n",
- " 6.50% : cuirass\n",
- " 1.94% : vault\n",
- " 1.62% : palace\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "PGujl-gkCLgv",
- "colab_type": "code",
- "outputId": "239af2ac-6022-4b82-a7f0-0cc2d46998af",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 1000
- }
- },
- "source": [
- "model.summary()"
- ],
- "execution_count": 82,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Model: \"vgg19\"\n",
- "_________________________________________________________________\n",
- "Layer (type) Output Shape Param # \n",
- "=================================================================\n",
- "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
- "_________________________________________________________________\n",
- "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
- "_________________________________________________________________\n",
- "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
- "_________________________________________________________________\n",
- "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
- "_________________________________________________________________\n",
- "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
- "_________________________________________________________________\n",
- "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
- "_________________________________________________________________\n",
- "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
- "_________________________________________________________________\n",
- "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
- "_________________________________________________________________\n",
- "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
- "_________________________________________________________________\n",
- "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
- "_________________________________________________________________\n",
- "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
- "_________________________________________________________________\n",
- "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
- "_________________________________________________________________\n",
- "flatten (Flatten) (None, 25088) 0 \n",
- "_________________________________________________________________\n",
- "fc1 (Dense) (None, 4096) 102764544 \n",
- "_________________________________________________________________\n",
- "fc2 (Dense) (None, 4096) 16781312 \n",
- "_________________________________________________________________\n",
- "predictions (Dense) (None, 1000) 4097000 \n",
- "=================================================================\n",
- "Total params: 143,667,240\n",
- "Trainable params: 143,667,240\n",
- "Non-trainable params: 0\n",
- "_________________________________________________________________\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "Tc8T4cLgKFHl",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "datagen_train = ImageDataGenerator(\n",
- " rescale=1./255,\n",
- " rotation_range=180,\n",
- " width_shift_range=0.1,\n",
- " height_shift_range=0.1,\n",
- " shear_range=0.1,\n",
- " zoom_range=[0.9, 1.5],\n",
- " horizontal_flip=True,\n",
- " vertical_flip=True,\n",
- " fill_mode='nearest')"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "zXrC28R1K7wC",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "datagen_test = ImageDataGenerator(rescale=1./255) "
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "WXNmRdbDK9RZ",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "batch_size = 10 "
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "X9V5lIazK-yf",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- " if True:\n",
- " save_to_dir = None\n",
- "else:\n",
- " save_to_dir='augmented_images/'"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "fmbcsDFSLBJo",
- "colab_type": "code",
- "outputId": "162ebe89-0c7b-410c-aa72-69dccbf09e44",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "generator_train = datagen_train.flow_from_directory(directory=train_dir,\n",
- " target_size=input_shape,\n",
- " batch_size=batch_size,\n",
- " shuffle=True,\n",
- " save_to_dir=save_to_dir)"
- ],
- "execution_count": 117,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Found 77 images belonging to 2 classes.\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "FHxPc6ZfLk5I",
- "colab_type": "code",
- "outputId": "7ba59eca-5d13-4d29-a87c-37fde0b2e2f3",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "generator_test = datagen_test.flow_from_directory(directory=test_dir,\n",
- " target_size=input_shape,\n",
- " batch_size=batch_size,\n",
- " shuffle=False)"
- ],
- "execution_count": 118,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Found 25 images belonging to 2 classes.\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "iiuwf1b8LCtQ",
- "colab_type": "code",
- "outputId": "833998cb-693f-4ead-d859-3806c2f50b38",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "steps_test = generator_test.n / batch_size\n",
- "steps_test"
- ],
- "execution_count": 119,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "2.5"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 119
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "2n4GHiryLibd",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "image_paths_train = path_join(train_dir, generator_train.filenames)\n",
- "image_paths_test = path_join(test_dir, generator_test.filenames)"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "R_lL-p0ELpUu",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "cls_train = generator_train.classes\n",
- "cls_test = generator_test.classes"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "Q1iBUIH_Lq-x",
- "colab_type": "code",
- "outputId": "79770dd9-fd31-433a-8c17-a755bc471703",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "class_names = list(generator_train.class_indices.keys())\n",
- "class_names"
- ],
- "execution_count": 122,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "['after', 'before']"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 122
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "Xs4Btw7_LsWo",
- "colab_type": "code",
- "outputId": "9219135b-417b-4d4d-b940-50da8ca98715",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "num_classes = generator_train.num_classes\n",
- "num_classes"
- ],
- "execution_count": 123,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "2"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 123
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "c8fHG74cLuPJ",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from sklearn.utils.class_weight import compute_class_weight"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "EGBbkeObLxYX",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- " class_weight = compute_class_weight(class_weight='balanced',\n",
- " classes=np.unique(cls_train),\n",
- " y=cls_train)"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "-_j8zDp5Lyjg",
- "colab_type": "code",
- "outputId": "a182ff72-3a55-4bd1-911b-877831a54d9a",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "class_weight "
- ],
- "execution_count": 126,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "array([0.9625 , 1.04054054])"
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 126
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "clUZsgvbL4AF",
- "colab_type": "code",
- "outputId": "76338dfe-1b2b-41d4-98b2-005a05d74562",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 1000
- }
- },
- "source": [
- "model.summary() "
- ],
- "execution_count": 127,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Model: \"vgg19\"\n",
- "_________________________________________________________________\n",
- "Layer (type) Output Shape Param # \n",
- "=================================================================\n",
- "input_3 (InputLayer) [(None, 224, 224, 3)] 0 \n",
- "_________________________________________________________________\n",
- "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n",
- "_________________________________________________________________\n",
- "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n",
- "_________________________________________________________________\n",
- "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n",
- "_________________________________________________________________\n",
- "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n",
- "_________________________________________________________________\n",
- "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n",
- "_________________________________________________________________\n",
- "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n",
- "_________________________________________________________________\n",
- "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n",
- "_________________________________________________________________\n",
- "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_conv4 (Conv2D) (None, 56, 56, 256) 590080 \n",
- "_________________________________________________________________\n",
- "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n",
- "_________________________________________________________________\n",
- "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n",
- "_________________________________________________________________\n",
- "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n",
- "_________________________________________________________________\n",
- "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808 \n",
- "_________________________________________________________________\n",
- "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n",
- "_________________________________________________________________\n",
- "flatten (Flatten) (None, 25088) 0 \n",
- "_________________________________________________________________\n",
- "fc1 (Dense) (None, 4096) 102764544 \n",
- "_________________________________________________________________\n",
- "fc2 (Dense) (None, 4096) 16781312 \n",
- "_________________________________________________________________\n",
- "predictions (Dense) (None, 1000) 4097000 \n",
- "=================================================================\n",
- "Total params: 143,667,240\n",
- "Trainable params: 143,667,240\n",
- "Non-trainable params: 0\n",
- "_________________________________________________________________\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "twgrpq5LL826",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "transfer_layer = model.get_layer('fc2') "
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "FlczWAnrgrK1",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from tensorflow.keras import layers"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "u2-mbRUlO6zX",
- "colab_type": "code",
- "outputId": "7282dd8e-ca7b-402a-f185-0dcf91a3554c",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 35
- }
- },
- "source": [
- "conv_model = Model(inputs=model.input, outputs=transfer_layer.output)\n",
- "model.input"
- ],
- "execution_count": 130,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "tags": []
- },
- "execution_count": 130
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "rHPzx7m3hywg",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "new_model = Sequential()\n",
- "new_model.add(conv_model)\n",
- "\n",
- "# Add the final layer for the actual classification.\n",
- "new_model.add(Dense(num_classes, activation='softmax'))"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "fJosDg-DlWYD",
- "colab_type": "code",
- "outputId": "a91f2595-3334-42e4-dea1-3e184357cd28",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 235
- }
- },
- "source": [
- "new_model.summary()"
- ],
- "execution_count": 132,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Model: \"sequential_3\"\n",
- "_________________________________________________________________\n",
- "Layer (type) Output Shape Param # \n",
- "=================================================================\n",
- "model_5 (Model) (None, 4096) 139570240 \n",
- "_________________________________________________________________\n",
- "dense_3 (Dense) (None, 2) 8194 \n",
- "=================================================================\n",
- "Total params: 139,578,434\n",
- "Trainable params: 139,578,434\n",
- "Non-trainable params: 0\n",
- "_________________________________________________________________\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "6aL9iTi6V3jO",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "optimizer = Adam(lr=1e-5)\n",
- "metrics = ['categorical_accuracy']\n",
- "loss = 'categorical_crossentropy'\n",
- "new_model.compile(optimizer = optimizer,loss=loss, metrics=metrics)\n",
- "epochs = 10\n",
- "steps_per_epoch = 100\n"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "bO1Im-0ixIDr",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "from tensorflow.keras.callbacks import TensorBoard, EarlyStopping"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "-e_3fmHqg6Yd",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 563
- },
- "outputId": "da054d4d-8e0d-4061-e04e-463753cd8fb0"
- },
- "source": [
- "history = new_model.fit_generator(generator=generator_train,\n",
- " epochs=epochs,\n",
- " steps_per_epoch=steps_per_epoch,\n",
- " class_weight=class_weight,\n",
- " validation_data=generator_test,\n",
- " validation_steps=steps_test)"
- ],
- "execution_count": 136,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Epoch 1/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.4232 - categorical_accuracy: 0.7834Epoch 1/10\n",
- "100/100 [==============================] - 2196s 22s/step - loss: 0.4212 - categorical_accuracy: 0.7846 - val_loss: 1.0793 - val_categorical_accuracy: 0.6800\n",
- "Epoch 2/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.2430 - categorical_accuracy: 0.8851Epoch 1/10\n",
- "100/100 [==============================] - 2192s 22s/step - loss: 0.2419 - categorical_accuracy: 0.8859 - val_loss: 1.1584 - val_categorical_accuracy: 0.5600\n",
- "Epoch 3/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.1296 - categorical_accuracy: 0.9476Epoch 1/10\n",
- "100/100 [==============================] - 2177s 22s/step - loss: 0.1285 - categorical_accuracy: 0.9481 - val_loss: 0.9108 - val_categorical_accuracy: 0.6800\n",
- "Epoch 4/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0360 - categorical_accuracy: 0.9874Epoch 1/10\n",
- "100/100 [==============================] - 2169s 22s/step - loss: 0.0357 - categorical_accuracy: 0.9875 - val_loss: 1.1099 - val_categorical_accuracy: 0.7200\n",
- "Epoch 5/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0323 - categorical_accuracy: 0.9916Epoch 1/10\n",
- "100/100 [==============================] - 2174s 22s/step - loss: 0.0322 - categorical_accuracy: 0.9917 - val_loss: 1.1059 - val_categorical_accuracy: 0.6000\n",
- "Epoch 6/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0049 - categorical_accuracy: 1.0000Epoch 1/10\n",
- "100/100 [==============================] - 2177s 22s/step - loss: 0.0048 - categorical_accuracy: 1.0000 - val_loss: 1.6649 - val_categorical_accuracy: 0.6400\n",
- "Epoch 7/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0011 - categorical_accuracy: 1.0000Epoch 1/10\n",
- "100/100 [==============================] - 2177s 22s/step - loss: 0.0011 - categorical_accuracy: 1.0000 - val_loss: 1.7248 - val_categorical_accuracy: 0.6400\n",
- "Epoch 8/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0174 - categorical_accuracy: 0.9916Epoch 1/10\n",
- "100/100 [==============================] - 2187s 22s/step - loss: 0.0219 - categorical_accuracy: 0.9896 - val_loss: 1.9386 - val_categorical_accuracy: 0.6400\n",
- "Epoch 9/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0789 - categorical_accuracy: 0.9696Epoch 1/10\n",
- "100/100 [==============================] - 2186s 22s/step - loss: 0.0782 - categorical_accuracy: 0.9699 - val_loss: 1.8128 - val_categorical_accuracy: 0.6000\n",
- "Epoch 10/10\n",
- " 99/100 [============================>.] - ETA: 21s - loss: 0.0018 - categorical_accuracy: 1.0000Epoch 1/10\n",
- "100/100 [==============================] - 2187s 22s/step - loss: 0.0018 - categorical_accuracy: 1.0000 - val_loss: 1.6079 - val_categorical_accuracy: 0.6000\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "5PfyXxlm9KSw",
- "colab_type": "code",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 54
- },
- "outputId": "b85b1e7e-4821-4e54-ac1e-1817b26553aa"
- },
- "source": [
- "from keras.models import load_model\n",
- "\n",
- "model_json = model.to_json()\n",
- "with open(\"/../gdrive/My Drive/NASA/nasa_challenge_full.json\", \"w\") as json_file:\n",
- " json_file.write(model_json)\n",
- "# serialize weights to HDF5\n",
- "model.save_weights(\"/gdrive/My Drive/NASA/nasa_challenge_full.h5\")\n",
- "print(\"Saved model to disk\")\n",
- " "
- ],
- "execution_count": 137,
- "outputs": [
- {
- "output_type": "stream",
- "text": [
- "Using TensorFlow backend.\n"
- ],
- "name": "stderr"
- },
- {
- "output_type": "stream",
- "text": [
- "Saved model to disk\n"
- ],
- "name": "stdout"
- }
- ]
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "jk3mFA-ldsoy",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "model = load_model('/gdrive/My Drive/NASA_challenge_full.h5')"
- ],
- "execution_count": 0,
- "outputs": []
- },
- {
- "cell_type": "code",
- "metadata": {
- "id": "zUI151RW7ObG",
- "colab_type": "code",
- "colab": {}
- },
- "source": [
- "'''from keras.callbacks import EarlyStopping\n",
- "early_stopping = EarlyStopping(monitor='val_loss', patience=2)\n",
- "model.fit(x, y, validation_split=0.2, callbacks=[early_stopping])'''"
- ],
- "execution_count": 0,
- "outputs": []
- }
- ]
-}
\ No newline at end of file